maanantai 1. syyskuuta 2008

Softaprojekti alkaa

Oppikirjaprojekti on ollut puoliksi itselleni, lojbanin opiskelun runko, puoliksi tarkoitettu avuksi muille, suomenkielisille, lojbanista kiinnostuneille. Vaikka oppikirjan loppuun sattaminen jatkuukin, oletan olevani nyt valmis lojban-ohjelmani seuraavaan projektiin.
Nyt aion aloittaa pitkän hankkeen, jonka lopullisena tavoitteena on lojbaniksi interaktiivisesti kommunikoiva botti. Botti hallitsee laajan ontologian, ymmärtää ainakin lojban-kielen suurta osajoukkoa, ellei koko kieltä, osaa vastata järkevästi lojbankielisiin kysymyksiin sekä esittää omia kommentteja ja kysymyksiä esimerkiksi inkonsistenttisen tiedon suhteen. Botti ylläpitää laajaa tietämyskantaa, jota se keskustelun kuluessa kasvattaa ja päivittää.
Ei ole tässä vaiheessa tarpeen esittää yksityiskohtaista roadmappia ja aikataulua tavoitteeseen, mutta esittelen kolme ensimmäistä vaihetta.
  1. Parseri, jäsentelijä, joka osaa lukea rajoitettua syntaksia käyttävän lojban-kieleisen tekstitiedoston. Tiedosto kuvaa yksinkertaisen "harjoitusmaailman". Siis tiedoston kaikki lauseet liittyvät konsistentisti toisiinsa, täydentävät yhteistä verbaalista harjoitustodellisuuden kuvausta. Kukin lause erikseen parsitaan omaksi osakseen kokonaisutta esittäväksi XML-tedostoksi.
  2. Hieman laajempi harjoitusmaailma ja laajempi syntaktinen pelivara. Yksittäiset lauseet yhdisteään yhdeksi konsistententiksi harjoitusmaailman XML-kuvaukseksi. XML-kuvauksen takana on luonnollisesti ajonaikainen oliorakenne. Ohjelma osaa lukea sisään tallentamansa kuvauksen ja täydentää sitä lisälauseilla, joiden konsistenttisuus tarkastetaan.
  3. Lisätään vastauskyky yksinkertaisiin harjoitusmaailmaa koskeviin kysymyksiin.
Seuraavaksi esittelen ensimmäisen harjoitusmaailman. Se käsittää vain 20 lausetta.

Ensin suomeksi:

  1. Islalojbanis on meren ympäröimä saari.

  2. Meren nimi on Atlantis.

  3. Saari on muodostunut kalliosta.

  4. Saarella on metsää.

  5. Metsä on muodostunut puista.

  6. Ihmiset tulevat Islalojbanikselle mantereelta meren yli laivalla.

  7. Islalojbanikseksella asuu ihmisiä ja kaneja

  8. Meressä on kaloja.

  9. Saaren kanit syövät kasveja.

  10. Puut ja ruoho ovat kasveja, joita kanit syövät.

  11. Ihmiset syövät kasveja, kaloja ja kaneja.

  12. Ihmiset pyydystävät kaloja merestä ja kaneja saarelta.

  13. Ihmiset viljelevät kasveja, joita he syövät.

  14. Kasveja, joita ihmiset syövät, ovat peruna, riisi, olivi ja sipuli

  15. Ihmiset asuvat taloissa.

  16. Kanit asuvat koloissa.

  17. Mantereen ihmiset vierailevat Islalojbanikseksella ja Islalojbanikseksen ihmiset mantereella.

  18. Islalojbanis on kaunis, silloin kun sen metsät ovat vihreitä.

  19. Talvella metsät eivät ole vihreitä koska puiden lehdet putoavat.

  20. Kesällä meri on rauhallinen, mutta talvella meri on myrskyinen.




Sitten sama lojbaniksi:

ni'o la .islalojbanis. goi ko'i cu daplu fi le xamsi

.i la .atlantis. goi ko'a cu cmene le xamsi

.i ko'i rocki

.i ko'i vasru lei ricfoi

.i le ricfoi cu gunma lei tricu

.i loi remna cu klama ko'i le braplu mu'o ko'a le bloti

.i ko'i se xabju lo'i remna goi ko'e .e lo'i ractu goi fo'a

.i lo'i finpe cu nenri ko'a

.i fo'a pe ko'i cu citka le'i spati

.i le'i tricu .e le blaci cu cmima le'i spati poi se citka fo'a

.i ko'e cu citka le'i spati .e le'i finpe .e fo'a

.i ko'e se purdi fi lei spati poi lei ko'e cu citka ke'a

.i lo patlu .e lo rismi .e lo alzaidu .e lo sluni cu spati poi ko'e citka ko'e

.i ko'e xabju le zdani

.i fo'a xabju le kevna

.i le remna pe le braplu cu vitke ko'a .ije le remna pe ko'a cu vitke le braplu

.i ko'a melbi lenu lei ricfoi pe le daplu cu grino

.i lei ricfoi na cu crino lenu le dunra kei ri'a loi pezli pe loi trizu pu cu farlu

.i lenu le crisa fa le xamsi cu smaji ki'i ri to'e smaji lenu le dunra


Valitettavasti blogin asetukset sotkevat yrityksen lisätä tähän loppuun pätkä tavoitteena olevaa XML-koodia, jota minulla on valmiina. Mutta luonnollisesti laadin tavoite-XML-koodin valmiiksi ennenkuin kirjoitan riviääkään C++ -koodia.


3 kommenttia:

Anonyymi kirjoitti...

"Mutta luonnollisesti laadin tavoite-XML-koodin valmiiksi ennenkuin kirjoitan riviäkään C++ -koodia."

Ilmeisesti hyvä tapa niin. Minä en ole ikinä aloittanut koodaamista datasta, mutta olen ehkä nyt siirtymässä siihen ajanhallintaohjelman vuoksi.

Tällä Liquidilla voi tehdä hienosti kaikkea XML:n liittyvää mutta se toimii vain Windowsissa.

http://www.tietokone.fi/softa/tiedosto.asp?id=13471

JuSa kirjoitti...

Harjoitusesimerkkini XML-versio, viisi ensimmäistä bridiä, meni hyvin läpi Firefoxin syntaksitarkistuksesta. Katsotaan nyt sitten, käytänkö jotakin valmista XML-parseria toisessa vaiheessa pohjana, voi teenkö sen from scratch, jotta saan sen kiinteämmin sulautettua semanttisen datarakenteen tuottamiseen. Muuten voi olla tarpeen tehdä turha wrapperi lainatun parserin ja tietämyskannan väliin. Katsotaan.

Laitan aikanaan jotakin ohjelmadokumenttejä tuonne samaan paikkaan kuin oppikirjakin.
Itse valmiin koodin kohtalo on vielä avoin. Julkaisenko sen GPL-lisenssillä vai voinko hyödyttää sitä ensin muuten rahallisesti.. riippuu monesta asiasta.
Yksi koodin käyttötarkoituksista on joka tapauksessa toimia opetusohjelmana. Toisaalta olisi kiva löytää joku, joka erikoistuisi vaikka noiden XML-tulosteiden muuntamiseen RDF-muotoon.

Anonyymi kirjoitti...

Tarkoitin ehdottaa että Liquid Studiota tai vastaavia voisi käyttää xml-kielelle käännetyn lojban-kielen muodolliseen tutkimiseen.

Kokeilin nopeasti kuvata ohjelmalla xml-sanastoa gismuille xml-schemalla tässä.

Oikeellisuustarkastukset voisi tehdä ensin xml-skeeman avulla ja sen jälkeen lojban-botti jatkaisi siitä vaativampaan päättelyyn. Mutta bottisi osaisi myös XML Scheman.

Ohjelmassa on mm. XPath ja regular expression -tarkastus valmiina.