[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