perjantai 5. syyskuuta 2008

Tarkennan hieman vaiheita

Tuon edellisen tekstin kommenttikirjoittelun pohjalta tarkennan hieman kahta ensimmäistä projektin vaihetta.

Ensimmäisen vaiheen tarkoitus on oikeastaan vain osata parsia lojban-kielinen lause kerrallaan. Lauseet riippuvat toisistaan vain selkeästi määriteltyjen prosumtien kautta, mutta lauseiden kokonaissemantiikkaa ei integroida. Tulostettavan XML-tiedoston ainoa tarkoitus on tässä vaiheessa vain olla verifiontia varten, että parsinta on tehty oikein. Tiedostoa ei ole tarkoitus käyttää mihinkään muuhun erityiseen, eikä esim lukea sisään uudestaan.

Toisen vaiheen tarkoitus on tuoda mukaan lauseiden yhteisen semanttisen sisällön integrointi. Semanttinen sisältö rakennetaan sisäiseksi olioesitystavaksi, joka vastaa tarkoin tulostettavaa XML-tiedoistoa. Tämä toisen vaiheen XML-tiedosto siis sisältää koko luetun tekstin kaikkien lauseiden ja mahdollisen pohjalla olevan semanttisen rakenteen yhteisen, integroidun kuvauksen. Tätä tiedostoa käytetään esinnäkin tallennettaessa tietämys levylle suljettaessa ohjelma ja ohjelman uudelleenkäynnistyksessä luettaessa vanha tietämys ajonaikaiseksi oliorakenteeksi.

Toinen erittäin mahdollinen käyttötapa on jokin muu hyötykäyttö, tiedosto on ohjelman tärkein tuloste. Tässä tulevat kyseeseen muut XML-työkalut.

Mutta muuten ohjelmalle ei ole tarkoitus syöttää mitään uutta XML-tietoa sen (tai sen muiden kopioiden) tallentamia tietämysrakennelmia lukuunottamatta. Uutta tietoa syötetään sisään vain "puhtaina lojban-lauseina", ei XML-muodossa.

Parserin on tarkoitus olla PEG-parseri. Syntaksi esiintyy lähinnä .h-tiedoston tasolla. Jokainen säännöistä on oma olionsa, joka alustetaan .h-tiedoston parametreilla.

6 kommenttia:

Memeist kirjoitti...

Projektisi vaikuttaa kiinnostavalta - oma lojbanin opiskeluni on ollut jumissa jonkin aikaa - taidan olla jo unohtanut suuren osan siitä vähästä mitä koskaan opinkaan.

JuSa kirjoitti...

No nyt on hyvä tilaisuus jatkaa. Autetaan toisiamme.

Anonyymi kirjoitti...

XML:n edut

XML-keskeisyyden etu on mielestäni siinä että XML-ilmaisu muodostaa tavallisille olio-ohjelmille yhteisen laajemman olioverkon.

Fiksua jos ohjelman oliokannan voi viedä kokonaan XML-tiedostoon, mutta XML:ssa voisi olla paljon muutakin.

Itselleni tuollaista 200kt olio-ohjelmaa koodaavana on tällainen XML-keskeisyys tullut pakolliseksi.

Ohjelmaluokan on oltava eksakti kun taas XML-esitys on vähän vapaampaa, kuten ihmiskieli.

Ainakin Jukka Korpelan ajatus HTML-kielestä on, että kieli tarjoaa jokaiselle ohjelmalle jotain luettavaa. Koko merkkauskielihän tarjoaa jonkinlaisen luettavuuden jo pelkkänä tekstinä. Alkeellinen selain ymmärtää sivuista ainakin otsikkotagit vaikka tyyliohjeet jää pois. HTML:n oikeaoppisuutta ei vaan aina noudateta, vaikka se on joustava formaatti. Näin mielestäni myös XML.

Vaikka bottisi ei onnistuisi kokonaan ymmärtämään semantiikkaa, voisi toinen ohjelma jatkaa siitä eikä suuri työ menisi hukkaan.

Anonyymi kirjoitti...

Voisin kiteyttää oman mielipiteeni näin:

Tietokoneohjelma tarvitsee sisäisen puheen, jotta se voisi ymmärtää lojban-tekstin semantiikan. XML on se kieli jolla ohjelma puhuu. Kielellä ei sinällään ole väliä, kuhan ohjelma voi sillä ilmaista tarvitsemansa asiat. Tietokonemurre riittää aluksi.

Anonyymi kirjoitti...

Tietysti loogisen kielen semantiikka voi yrittää mallintaa oliokielellä. Epäilen tässä vain sitä että olisi 100% eksakti tapa tehdä sellaista. Ongelmat ovat enemmänkin sumeita ja näyttäytyvät hahmoina tai sumeudella saadaan ainakin suurta lisäarvoa.

Sellainen ilmaisu kuin vaikka 'lähellä' on helpompi ilmaista hahmona ja muotona. XML on hyvä tapa esittää sumeaa tietoa: "Kuinka lähellä on 100 metrin päässä tilanteessa A tai B?".

Toisaalta voidaan kysyä että mitä siitäkin seuraa jos kaikki asiat esitetään mielivaltaisesti XML-hahmoina matematiikan sijaan. En osaa siihen vastata.

Tietotekniikka näyttää kuitenkin "ihmistyvän" toisin päin kuin kehitys tapahtui ihmisellä.

1. Matematiikka ja logiikka
2. Tietokoneen kapulakieli
3. Tietokoneen kirjakieli
4. Tietokoneen murre ja puhekieli
5. Tietokoneen "hahmoajattelu"

JuSa kirjoitti...

Kommentteja.

"Vaikka bottisi ei onnistuisi kokonaan ymmärtämään semantiikkaa, voisi toinen ohjelma jatkaa siitä eikä suuri työ menisi hukkaan."

Ensimmäisessä vaiheessa ei todellakaan ole kysymys minkäänlaisesta ymmärtämisestä. Syntaksin "ymmärtäminen" ei ole ymmärtämistä. Ensimmäisessä vaiheessa riittää, kun ohjelma osaa parsia lause kerrallaan irrallisiksi oliorakenteiksi.

Toisessa vaiheessa, kun parsittujen lauseiden sisältö yhdistetään ja tuloksena muodostuu semanttinen verkko, silloin kysymys on jo rajoitetusta "ymmärtämisestä", vaikka sisältöä ei olekaan "maadoitettu" esim. aistihavaintokokemukseen tai "konefenomenologiaan".

"Sellainen ilmaisu kuin vaikka 'lähellä' on helpompi ilmaista hahmona ja muotona. XML on hyvä tapa esittää sumeaa tietoa: "Kuinka lähellä on 100 metrin päässä tilanteessa A tai B?"."

"Lähellä" on kahden objektin suhde. Lojbanissa on gismu, jota voi tähän käyttää: jibni . Se voi tarkoittaa paikallista, ajallista, tai jotakin muuta läheisyyttä X3 sumtin määrittelemällä tavalla, tarvittaessa hyvinkin sumeasti.
Tarkoitus on, että ohjelmani sisäisesti käyttää nimenomaan lojbanin tapaa mallintaa maailmaa ja lojban on ohjelman "sisäinen kieli".

Ensimmäisessä ja toisessa vaiheessa XML on ohjelman, ei sisäinen, vaan ulkoinen kieli, tulostuskieli. Sen jälkeen lojbanistakin on tavoitteena tulla tulostuskieli. Oletan, että yksinkertaisiin kysymyksiin (ma-kysymykset: mikä, kuka, missä, minkälainen.. sekä xu-kysymykset: onko totta, että..). Oletan, että tällaisten vastauslauseiden muodostaminen ei ole kohtuuttoman vaativaa vastausen perustuessa kysymyslauseeseen ja sisäiseen semanttiseen esitystapaan.
Sen sijaan keskustelu tyyppiä "kerro viime viikon ongelmista" tai syötettyjen lojban-lauseiden ristiriitojen analysointi ja selventäminen muodostamalla lisäkysymyksiä, on haastavaa. Mutta en mieti näitä enempää lähiaikoina.

Julkaisen kohta esimerkkimaailman XML-esityksen ja koko maailman uudestaan hieman korjattuna. (Lauseissa on ainakin muutama syntaksivirhe). Sitten ryhdyn koodin toteutukseen. Sitten toisessa vaiheessa julkaisen myös sisäisen semanttisen verkon XML-esityksen XML-schema-syntaksin. Se kai mahdollistaa muiden sovellusten joustavan liittämisen bottiin.