[voikko] vvfst ja taivutusmuotojen generointi
Harri Pitkänen
hatapitk at iki.fi
Thu Jan 24 16:48:03 EET 2013
On Thursday 24 January 2013, Hannu Väisänen wrote:
> Mikäli olen ymmärtänyt oikein, Harri tekee vvfst-morfologiaa
> ohjelmalla, jota voi ajaa molempiin suuntiin. Se voi siis muuttaa
> sanat perusmuotoon, kuten (Suomi-)Malaga, mutta myös generoida
> taivutusmuodot perusmuodoista, jota (Suomi-)Malaga ei osaa tehdä,
> koska Malagaa ei voi ajaa niin sanoakseni takaperin.
>
> Kysymys kuuluu: voiko tällaisen tehdä vvfst:hen/Voikkoon?
Onnistuu kyllä. Sanojen generoinnin toteutus libvoikkoon on tosin minulla
suunnitelmissa vasta ehkä ensi vuonna, mutta jo nyt tämä onnistuu Foman
avulla, jos transduktoria ensin muokkaa tarkoitukseen sopivaksi.
Tein juuri äsken Suomi-malagan koodiin muutoksen, jonka johdosta Joukahaiseen
tallennetut paikannimien taivutusta koskevat tiedot tulevat nyt mukaan Voikon
VFST-transduktoriin. Tähän pääsee käsiksi seuraavasti:
- Käännä uusin versio Voikon VFST-morfologiasta komennolla
$ make vvfst
- Siirry vvfst-hakemistoon ja käynnistä Foma
$ cd vvfst
$ foma
- Lue transduktoritiedosto Fomaan komennolla "read att all.att":
foma[0]: read att all.att
Reading AT&T file: all.att
5.4 MB. 319215 states, 354740 arcs, Cyclic.
- Nyt voit katsoa komennolla "apply down joku_sana", mitä tietoja sanasta on
transduktorissa. Huomaa, että sanat ovat transduktorissa aina pelkästään
pienillä kirjaimilla:
foma[1]: apply down rasinojalla
[Lep][Xp]Rasinoja[X][Xr]ipppp=[X][Ipu]rasinoja[Sade][Ny]lla
Tiedostossa vvfst/root.lexc on selitetty symbolien merkitykset:
[Lep] = paikannimi
[Ipu] = paikannimi taipuu ulkopaikallissijoissa
[Sade] = adessiivi
[Ny] = yksikkö
[Xp]...[X] = sanan perusmuoto
[Xr]...[X] = sanan rakenneattribuutti Voikkoa varten
- Generointi tapahtuu komennolla "apply up":
foma[1]: apply up [Lep][Xp]Rasinoja[X][Xr]ipppp=[X][Ipu]rasinoja[Sade][Ny]lla
rasinojalla
Nyt ongelmaksi muodostuu tietysti se, että Voikon VFST-morfologiassa molemmat
kerrokset sisältävät sanan pintamuodon, jolloin tätä generointia ei
mielekkäästi voi tehdä tietämättä jo etukäteen, mitä haluaa lopputulokseksi.
Eli transduktoria olisi muokattava niin, että attribuuttiesityksestä
poistetaan tarpeeton/haitallinen informaatio. Tälle esimerkkisanalle
lopputuloksen pitäisi siis olla jotain tyyliin
[Lep][Xp]Rasinoja[X][Ipu][Sade][Ny]
Tällainen muunnos on transduktorille mahdollista tehdä käyttämällä Foman
korvaussääntöjä:
http://code.google.com/p/foma/wiki/MorphologicalAnalysisTutorial
Harri
More information about the voikko
mailing list