Suomenkielinen versio kuuluisasta Eliza-ohjelmasta.
Käännä libvoikko-kirjasto JavaScriptiksi näiden ohjeiden avulla.
Tiedostot libvoikko.js
ja libvoikko.data
(sekä libvoikko.wasm
jos käänsit WebAssemblyksi)
pitää sijoittaa samaan kansioon muiden tiedostojen kanssa.
Tiedosto eliza.json
sisältää käsikirjoituksen, jota ohjelma noudattaa.
Käsikirjoitusta noudatetaan seuraavasti:
- Käyttäjä antaa syötteenä lauseen.
- Lauseen sanajoukko muodostetaan perusmuotoistamalla sanat. Sanajoukkoon lisätään myös synonyymisääntöjen perusteella oikeat avainsanat.
- Käydään läpi avainsanojen tärkeysjärjestyksessä sanoja vastaavat säännöt.
- Jokaisen säännön kohdalla yritetään sovittaa säännön hahmoa syötteeseen.
- Palautetaan ensimmäsen sopivan säännön seuraavana jonossa oleva vastaus.
Hahmonsovitus toimii sanekohtaisesti. Käytössä on seuraavat hahmot (missä sana
on merkkijono ja a
sekä b
ovat hahmoja):
*
täsmää mihin tahansa tyhjään tai ei-tyhjään joukkoon saneita.sana
täsmää kirjaimellisesti samaan merkkijonoon.sana%
täsmää kaikkiin saneisiin, joiden perusmuoto on "sana".a|b
täsmää joko a:han tai b:hen.@a
täsmää a:han.
Hahmonsovituksen lopputuloksena on lista syötteen alimerkkijonoja jokaista *
- ja @
-sääntöä kohden.
Ohjelma ei tällä hetkellä sisällä kunnollista tekstin jäsentämistä, joten sanojen perusmuotoistaminen on välillä melko satunnaista. Ohjelma ei esimerkiksi luulee usein, että "minä" on mikä-sanan essiivi ja "sinä" on se-sanan essiivi, vaikka sanat ovat useammin pronomineja. Ratkaisu tähän olisi jäsentää teksti siten, että jokaista sanetta vastaava lekseemi selviää oikein. En ole kuitenkaan löytänyt sopivaa JavaScriptillä tehtyä kirjastoa tätä varten.
Vastausten laatiminen suomenkielisele Elizalle on haastavampaa kuin englanninkieliselle, sillä käyttäjän antamaa syöteestä ei voi yhtä helposti leikata ja liimata uusia lauseita. Tämä johtuu siitä, että uusissa lauseissa syötteen sanoja pitäisi ehkä taivuttaa eri tavalla kuin käyttäjän syötteessä, mitä on vaikea tehdä oikein ilman lauseen kunnollista jäsentämistä (ja se on silloinkin vaikeaa).
Suomenkielinen Eliza on lisensoitu GNU GPLv3 -lisenssillä (tai myöhemmällä versiolla).