[voikko] Muutoksia libvoikkoon ja suomi-malagaan
Harri Pitkänen
hatapitk at iki.fi
Mon Jul 27 21:11:12 EEST 2009
Tein äsken libvoikkoon ja suomi-malagaan muutoksia, joista kehittäjien (Linux-
paketteja kehittävät mukaan lukien) on hyvä olla tietoisia.
Morfologisen sanaston muotoa on muutettu
========================================
SVN:ssä oleva suomi-malaga muodostaa nyt Voikkoa varten uudentyyppisen
sanaston (Voikko-Dictionary-Format: 2). Tämä sanasto toimii vain SVN:ssä
olevan libvoikon kanssa, ja vastaavasti uusi libvoikko vaatii toimiakseen
uudentyyppisen sanaston.
Samalla suomi-malagaa on muutettu niin, että "make voikko-install" lisää
asennuspolkuun automaattisesti oikeaa sanastoversiota vastaavat polun osat.
Toisin sanoen komento
make voikko-install DESTDIR=/usr/lib/voikko
asentaa sanaston hakemistoon /usr/lib/voikko/2/mor-standard. Tämän johdosta
asennuskomentoa ei tarvitse jatkossa muuttaa sanaston muodon muuttuessa.
Muutos sanaston muotoon on tehty, jotta alempana kuvatut uudet ja parannetut
ominaisuudet voidaan toteuttaa. On mahdollista, että vastaavia muutoksia
joudutaan tekemään myös myöhemmissä versioissa. Myös versioon 2 tulee
todennäköisesti vielä muutoksia, ennen kuin seuraava libvoikko/suomi-malaga
julkaistaan, joten SVN:stä koodia kääntävien kannattaa lähikuukausien ajan
päivittää molempia komponentteja suunnilleen samanaikaisesti.
API morfologista analyysia varten on lisätty
============================================
Olen viime aikoina saanut silloin tällöin postia, jossa kehittäjät ovat
toivoneet libvoikkoon mahdollisuutta analysoida sanoja muutenkin kuin
oikoluvun avulla. Koska tätä tarvitaan myös kieliopin tarkistimen
jatkokehitystä varten, on pyydetty ominaisuus nyt toteutettu. Siihen liittyen
tiedostoon voikko.h on lisätty seuraavat funktiot:
struct voikko_mor_analysis ** voikko_analyze_word_ucs4(
int handle, const wchar_t * word);
void voikko_free_mor_analysis(struct voikko_mor_analysis ** analysis);
const char ** voikko_mor_analysis_keys(
const struct voikko_mor_analysis * analysis);
const wchar_t * voikko_mor_analysis_value_ucs4(
const struct voikko_mor_analysis * analysis,
const char * key);
Toimintoon pääsee käsiksi myös voikkospell-testiohjelman kautta:
$ voikkospell -m
alusta
C: alusta
A(alusta):1:CLASS=nimisana
A(alusta):1:SIJAMUOTO=nimento
A(alusta):1:STRUCTURE==pppppp
A(alusta):2:CLASS=teonsana
A(alusta):2:SIJAMUOTO=none
A(alusta):2:STRUCTURE==pppppp
A(alusta):3:CLASS=nimisana
A(alusta):3:SIJAMUOTO=sisaeronto
A(alusta):3:STRUCTURE==pppppp
A(alusta):4:CLASS=nimisana
A(alusta):4:SIJAMUOTO=osanto
A(alusta):4:STRUCTURE==pppppp
Seuraavat morfologiseen analyysiin liittyvät toiminnot on tarkoitus vielä
toteuttaa ennen seuraavaa libvoikon julkaisua:
- UTF-8-versiot API-funktioista
- Sanan palauttaminen perusmuotoon (vaatii suomi-malagan debug-version)
- Viittaukset Joukahaiseen (vaatii suomi-malagtan debug-version)
Parannuksia oikoluvun korjausehdotuksiin
========================================
Oikoluvun korjausehdotuksiin on tehty useita parannuksia, jotka mm.
helpottavat koodin ylläpitämistä ja mahdollistavat joidenkin aikaisemmin
löytämättä jääneiden ehdotusten löytämisen. Teemun vuonna 2006 esittämä toive
harvinaisten sijamuotojen pudottamisesta pois tai siirtämisestä ehdotuslistan
loppuun on tarkoitus vielä toteuttaa tulevaan versioon.
Malaga-riippuvuus
=================
Toistaiseksi libvoikko käyttää vielä malaga-kirjastoa. Koodin rakennetta on
kuitenkin muutettu niin, että malagan/suomi-malaga-yhdistelmän tilalle voi
melko helposti vaihtaa toisen komponentin morfologista analyysia varten.
Uskoisin, että esimerkiksi SFST/Omorfi-pohjainen Voikko olisi toteutettavissa
päivässä, mikäli tällaiseen on kiinnostusta.
Pyrin vielä siihen, että seuraava versio libvoikosta sisältää oman karsitun
malaga-toteutuksensa, jotta ongelmallisesta malaga-kirjastosta päästäisiin
eroon ja samalla koodia saataisiin hiukan nopeammaksi.
Harri
More information about the voikko
mailing list