sunnuntaina 30. elokuuta 2009

Työkaluja ja oppimateriaalia

Innostuin kertaamaan uudelleen alusta pänttäysskriptilläni tuota 500:n gismun joukkoa alusta alkaen. Samalla pohdiskelin kokemuksia ja alla käytyä keskustelua. On varmasti totta, miten laadukkaasti tahansa sanojen pänttäys on ohjelmoitu ja tuettu, että sanat, lojbanin käsitteet, niiden merkitys ja todellinen käyttö ei tällä metodilla voi painua mieleen todelliseksi kielen osaamiseksi. Tarvitaan vielä jotakin muuta.

Jospa tässä tilanteessa olisi asiallisinta, että palaisin aikaisemmin kesällä aloittamaani "satunnais-bridi-generaattori" -työkalun pariin. Sain siihen jo "toiminnanoireita", mutta se jäi kesken. Työkalu muodostuu kahdesta osasta: (1) suoritettavasta koodista ja (2) isosta tekstiedostosta, joka määrittelee kullekin brivlalle mahdollisia sumteja ja niiden yhdistelmiä. Koitan tutkia, olisiko mielekästä tässä vaiheessa urakalla koota kaikki nuo aikaisemmin mainitut runsaat 500 gismua työkalun tasolla toistensa suhteen määritteleväksi mammuttirakenteeksi. Tein jo yhden sellaisen, joka määritteli n. 50 tavallisinta "oppikirjatason" gismua, joita alkeisopetuksessa käytetään. Tähän kai meni muutamia päiviä (ei "työpäiviä" sentään). 500 brivlaa on ehkä enemmän kuin kymmenkertainen urakka: minusta tuntuu, että hommassa on jonkinlainen eksponentiaalisuus mukana, vaikka mukaan otettavat sumti-mahdollisuudet ovat mielivaltainen osajoukko kaikista teoreettisesti mahdollisista.

Datarakenne sisältää periaatteessa jonkinlaisen semanttisen "maailmankuvan" komponentin. Rakenne luettelee erään ontologian mahdolliset muodot, ei ne, jotka jossakin todellisuudessa, jossakin ajassa ja paikassa vallitsevat, vaan osan niistä, ne mitkä semanttisesti ristiriidattomasti voivat vallita, esiintyä yhdessä lauserakenteessa.

Voisin kuvitella, että rakenteen laatiminen jo sellaisenaan opettaa minulle jotakin näistä gismuista. Sitten jää vielä mietittäväksi, mitä muodostettavia satunnais-brideillä voi pedagogisesti hyödyntää: opetella niitä vastavalla tavalla kuin irrallisia sanoja?

sunnuntaina 9. elokuuta 2009

NLP ponnisteluita

Viime vuonna ja vielä isomman julkisuuden saavuttaneena, tänä vuonna on loppukäyttäjille ilmestynyt useita palveluita, joita mainostetaan siitä, että ne ymmärtävät luonnollisella kielellä esitettyjä, vapaamuotoisia kysymyksiä tai tehtävän asetuksia. Näistä merkittävimpiä ovat WolframAlpha ja Siri

Luonnollisen kielen todellinen ymmärtäminen, NLP (Natural Language Processing) on hyvin haastava tavoite ja tuntuisi hämmästyttävältä, jos ihan lähivuosina todella tämä päämäärä tavoitettaisiin. Eikä näiden sinänsä kahden kiinnostavan tuotteen suhteenkaan tämä käsitykseni ole horjunut. WolframAlpha ymmärtää rajoitettua "Wolfram-Tiede-Englantia": kysymystä tai tehtävää ei voi esittää mitenkään vapaamuotoisesti vaan rajoitettua "slangia" käyttäen, tähän tulokseen olen itse tullut kokeilemalla. En silti mitenkään vähättele saavutusta ja uskon tuotteen paranevan vähitellen.

Siri on älypuhelimiin tarkoitettu "virtuaalinen sihteeri", joka on erikoistunut suhteelliseen kapeaan erikoisalaan: ottamaan vastaan kaupallisia tehtäviä viihteen, kulttuurin, sekä majoitus- ja ravintolapalveluiden hankkimiseksi ja varaamiseksi. Ilmeisesti tämäkin alue laajenee vähitellen, jos ei Sirin, niin kilpailevien palveluiden toimesta.

Sinänsä olen täsmälleen samaa mieltä Sirin kehittäjien kanssa: matkapuhelimien luonnollinen kehityssuunta on henkilökohtaisen viestinnän sekä multimedia- ja navigaattoritoimintojen ohella kehittyä lopulta jonkinlaiseksi aivojemme ulkoiseksi jatkeeksi, jota "digitaalinen assistentti" pyrkii olemaan. Toivon, että myös Nokia on ottanut tämän suunnan vakavasti (itse en ole erityisen tietoinen asian tilasta).

Luonnollisen kielen koneellinen ymmärtäminen on siis lähivuosina tosiasiaa vain erityistapauksissa: hyvin yksinkertaisia lauserakenteita käyttäen ja/tai kapean erikoisalan ilmaisuja ja sanastoja käyttäen (joka sallii monimutkaisetkin ilmaukset, kunhan ne ovat "formaaleja"). Minun näkökohtani mukaan ainoa oikotie ihmisen ja koneen vapaamuotoiseen keskustelluun on lojban (tai joku siihen verrattavissa oleva kieli). Tämä tilanne todennäköisesti on voimassa arviolta seuraavan 5-15v ajan. Siispä ainakin minä olen motivoitunut jatkamaan lojban-harrastusta.

torstaina 6. elokuuta 2009

Päntätty sanoja

Kesäni on kulunut lojbanin osalta päntätessä sanoja tuossa alla aikaisemmin esittelemälläni python-pohjaisella sanastonopiskelutyökalulla. Olen käynyt läpi nuo laatimani 7 x 53 eli n. 500 gismua. Ainakin vähän aikaa olen siis jokaisen näistä osannut, mutta nyt olisi aika kerrata koko joukko taas uudelleen. Uusi kertaus aivan ilmeisesti olisi paljon sujuvampaa.

Samalla olen arvioinut opiskeluskriptin laatua ja löytänyt luonnollisesti parannettavaa. Suurin ongelma skriptissä on nojautuminen suoraviivaisesti pythontulkin satunnaisvalitsimeen, joka listasta poimii sanoja. Seurauksena on se, että eri sanaparit (lojban/suomi) etenevät prosessin läpi kovin vaihtelevalla nopeudella. Nopeuserosta johtuu, että vauhdilla etenevät parit tarttuvat aivokuoreni neuroneihin paljon helpommin kuin harvakseen toistuvat hitaasti etenevät, joiden kanssa tulee usein virheitä. Tätä algoritmia pitäisi parantaa.

Toinen parannusidea on lisätä prosessiin kaksi uutta vaihetta. Ensimminen niistä tulee kolmannen vaiheen jälkeen. Kolmas vaihe on monivalinta suomesta lojbaniin. Uusi neljäs vaihe laajentaisi kolmatta siten, että valittu sana on pakko kirjoittaa, siis kopioida esitetyistä vaihtoehdoista. Kirjoittaessa uusi lojbankielinen sana tarttuisi mieleen oleellisesti helpommin, kuin esittämällä vain numeron ja lausumalla sana mielessä.

Toinen uusi vaihe tulisi viimeiseksi. Siinä jo opittuja sanoja kertailtaisiin suhteellisen harvakseen, estäen niiden pikaisen unohtumisen nopean perusoppimisvaiheen jälkeen. Oppimisprosessista tulisi siis seitsenvaiheinen. Uskon prosessin olevan stressitön, innostava ja tehokas: vielä parempi kuin vanha viisivaiheinen, jota jo olen pitänyt jossakin määrin "koukuttavana".

Aikomukseni on siis kirjoittaa tämä mielestäni tärkeä työkalu uusiksi, tällä kertaa C++:lla ja Qt-kirjastoja käyttäen. Täällä tavalla saisin nytkin aikaan sekä linux- että windows-versiot samalla vaivalla.

Mutta minulla on vielä uusi taka-ajatus! Minua kiehtoo "Mindforth"-sivujen AGI-Milestones malli.
Siinä esitetään Yleisen Tekoälyn saavuttamista seuraavien vaiheiden kautta:
1. Quickening
2. Generation of Thought
3. Cognitive Chain Reaction
4. Meanderin Chain of Thought
5. Selfreferential Thought.

En selitä muita kuin ensimmäisen vaiheen. "Quickening" on vaihe, jossa SW-toteutus on taukoamatta aktiivinen, työskennellen luupissa sisäisen tilansa ja syöttömateriaalin parissa pyrkien saavuttamaan asetetun tavoitteen mukaisesti yhä paremman "kognition tason". Ohjelma ei siis ole esim. reaktiivinen: reagoi ärsykkeisiin ja toimenpiteiden jälkeen pysähtyy odottamaan uusia ärsykkeitä, vaan hellittämättä yrittää reaktiivisen käyttäytymisen lisäksi parantaa sisäistä tilaansa.

Ajattelin kokeilla sanastonopiskeluohjelmassa "quickening" -periaatetta. Opiskeluohjelmasta tulee siis jatkuvasti pyörivä, suunnitellen kokoajan uusia tehtäviä oppilaalle, analysoiden edistymistä. Kyseessä ei tietenkään ole mikään AI-sovellus, vaan AI:n pohjalla oleva ohjelmointi- "patterni".

No, olen tehnyt muutakin, josta kerron enemmän vastaisuudessa. Mutta sen verran, että olen pythonilla tehnyt "satunnaislausegeneraattoria" joka näennäisälykkäällä tavalla generoi satunnaisia, mihinkään asiayhteyteen kuulumattomia bridejä, jotka sisäisesti kuitenkin ovat mielekkäitä lauseita. Työkalua on tarkoitus käyttää opiskeluvälineenä, sanojen opiskelussa ja semanttisena kokeiluna.

perjantaina 22. toukokuuta 2009

Merkittävä NLP-hanke pian nettiin

Wolfram Alpha on saanut paljon julkisuutta. Minäkin kokeilin, mutta en ollut kovin myyty, vielä. N. kuukauden päästä on toinen, pienempi, mutta jännittävämpi projekti, "the Texai bootstrap dialog system" tulossa nettiin. Sen tarkoitus on chatbot- periaattella harjoittaa ja kehittää Texai-hankkeen englanninkielen taitoja.

Luonnollisen kielen hallinta on paljon vaativampaa kuin lojbanin hallinta. En odota vakuuttavaa suoritusta vielä vuosiin, ja siksi odotan erittäin suurella mielenkiinnolla Texain julkaisuversiota, joka siis on "vain" "bootstrap dialog system".

Mutta on todettava, että alueella tapahtuu paljon. Kerron lähiaikoina taas lisää omista lojbanissa pysyvissä kokeiluistani.

sunnuntaina 10. toukokuuta 2009

Monimuotoisuutta lojbaniin

Blogissaan Ben Goertzel ehdottaa ihmisen ja delfiinien välikieleksi "Delphic-Lojban" -kieltä, joka noudattaisi virallisen lojbanin syntaksia, mutta jonka foneettinen rakenne olisi toteutettu delfiinien äänenmuodostuksen ehdoilla.

Koska ihminen aivan ilmeisesti ei pystyisi tuottamaan "Delphic-Lojban" lauseita omalla äänenmuodostuksellaan, ihmisen olisi syntetisoitava oma keskusteluosuutensa tietokonetta käyttäen. Jos synteesin lähdekielenä olisi varsinainen lojban, tehtävä oli kohtuullisen suoraviivainen. Kaikille kielen rakenteen yksityiskohdille olisi suorat vastineensa. Samoin olisi tehtävä tulkittaessa delfiinin lausumia ilmauksia, todennäköisesti tietokonekäännös välissä olisi välttämätön.

Tätä samaa ajatusta voisi edelleen kehittää toteuttamalla virallisen, "ylikultturellisen lojbanin" lisäksi muita, suppean kielialueen lojbaneita, joissa lojbanin fonetiikka ja ehkä myös gismujen rakenteet ym. olisi korvattu kielialueelle paremmin sopivilla muoto- ja foneettisilla valinnoilla. Tällaisten lojbanin variaatioiden etuna olisi madaltaa oppimiskynnystä, mutta säilyttää lojabnin korvaamattomat ominaisuudet, sekä suora, helppo koneellinen, jopa reaaliaikainen käännettävyys lojban-variaatiosta toiseen. Tällaisia variaatiota voisivat olla:
- Euro-Lojban, Euroopan pääkielistä
- Latin-Lojban, lähteinä: italia, romania, ranska, espanja, portugali
- Slavo-Lojban, slaavilaisista kielistä
- Uralic-Lojban, omille kielisukulaisillemme
- Hindic-Lojban, Intian alueen monista kielistä yhdistettynä
- African-Lojban, Afrikan pääkielistä
- Kiina-Lojban, kiinan kielen eri versioista koottuna
- Viittoma-Lojban?

ym. Näille kielille säilysi etuna suoraviivainen käännettävyys ja siten kaikkien yhteisten resulssien käyttö, jolloin kokonaisresulssit ja lojbanin käyttäjien määrä voisi moninkertaistua.

lauantaina 9. toukokuuta 2009

Uudet sanalistat

Lisäsin alla mainittulle työkalulle seitsemän uutta sanalistaa. Kävin läpi Lojban-Englanti-Lojban-sanakirjan (jonka myös lisäsin mukaan) gismut ja poimin niistä runsaat 500 itseäni miellyttävää käsitettä. Miellyttävyyden kriteerinä ovat: (1) käsitteen hyvä tuki opetuksellisille esimerkkilauseille, (2) käsitteiden kuvauskyky käytettäessä lojban-ilmaisuja "harjoitusmaailmojen" kuvaamiseen.

Jaoin nuo runsaat 500 sanaparia seitsemään runsaat 70 käsitettä sisältävään "opiskeluerään" ohjelmallisesti "korttienjakelualgoritmilla" siten, että jokainen lista käsittää tasaisesti sanoja koko lojbanin aakkosalueelta. Listojen sisällöllä ei siis ole mitään loogista rakennetta tai merkityksellistä yhteyttä, päinvastoin.

Listoja käytetään siten kuin skriptin ohjeissa kerrotaan, ajetaan ensin "init" komento jne.

Sanojen opiskelu

lauantaina 25. huhtikuuta 2009

Lojban leviää Suomessa

Lambda ry järjesti keväällä lojban-kielen alkeiskurssin Helsingissä. Kurssi käsitti seitsemän oppituntia, kokeet, ja pari lisäluentoa. Kurssimateriaali, joka muodostaa selkeän alkeiskokonaisuuden lojbanista, löytyy osoitteesta Käytännön lojbania matkailijoille.

Olisi ollut mukava itsekin osallistua kurssille, mutta huomasin tilanteen kurssin jo alettua ja olihan minulla keväällä aika tiukalla. Toivottavasti osallistujat nauttivat kursista ja jatkavat lojbanin opintoja muodossa tai toisessa. Lisäksi muidenkin kannattaa ehdottomasti tutustua kurssin materiaaliin. Ja toivottavasti kurssi saa myös jatkoa.