[voikko] Tulevia muutoksia sanastotiedostojen hallintaan

Harri Pitkänen hatapitk at iki.fi
Sun Sep 28 17:27:59 EEST 2008


Tässä viestissä on ennakkotietoa muutoksista, jotka koskettavat sekä 
libvoikkoa omissa ohjelmissaan käyttäviä että Voikkoa Linux-jakeluihin ja 
muualle paketoivia henkilöitä. Lisäksi tämä koskee myös niitä käyttäjiä, 
jotka ovat asennelleet itselleen erikoissanastoja. Muille käyttäjille 
muutokset näkyvät toivon mukaan ainoastaan uusina ominaisuuksina.

Mitään tässä viestissä mainituista asioista ei ole päätetty lopullisesti, 
joten mahdollisesti ongelmallisista suunnitelmista voidaan vielä keskustella.


 == "make voikko-preprocessed-l-gzip" poistuu Suomi-malagasta ==

Tällä komennolla on tehty osittain käännettyjä sanastopaketteja, joiden avulla 
on ollut mahdollista rakentaa omia mukautettuja sanastoja järjestelmissä, 
joissa ei ole GNU Makea tai Pythonia asennettuna (ts. Windowsissa). Tätä 
toimintoa ei juurikaan ole käytetty, ja se onkin ollut rikki monissa 
julkaistuissa Suomi-malagan versioissa. Viime aikojen muutokset sanaston 
generoinnissa ovat tehneet toiminnosta käytännössä käyttökelvottoman siinäkin 
tapauksessa, että se olisi ylipäätään toiminut. Poistin maininnan tästä 
ominaisuudesta Suomi-malagan README-tiedostosta, ja Makefilestä poistan tähän 
liittyvän koodin version 1.2 julkaisun jälkeen.

Korvaavana palveluna olen harkinnut tarjoavani www-liittymää, jonka kautta 
mukautettuja sanastoja saisi generoitua omien mieltymystensä mukaisilla 
asetuksilla. Tuossa voisi sallia myös omien sanalistojen liittämisen sanaston 
osaksi. Mutta käytännössä en tätä varmaankaan toteuta ihan 
lähitulevaisuudessa.


 == Parannuksia mukautettujen sanastojen generointiin ==

Suomi-malagan versiossa 1.2 on mahdollista vaikuttaa monin tavoin generoitavan 
sanaston sisältöön make-komennolle annettavien muuttujien kautta. Tarkempaa 
tietoa löytyy README-tiedostosta. Olen tehnyt Python-skriptin 
(/trunk/tools/bin/voikko-build-dicts), jonka suorittaminen Suomi-malagan 
lähdekoodipaketin päähakemistossa muodostaa sivulla
  http://www.puimula.org/htp/ooo/voikko.html
mainitut kolme sanastoversiota alihakemistoon build. Lisäksi jos hakemistoon 
build/oxt-template on purettu Windows- tai OS X -versio 
openoffice.org-voikko-lisäosasta, rakentaa skripti automaattisesti myös 
valmiit lisäosatiedostot kustakin sanastoversiosta.

Sanaston muodostamisessa käytetyt parametrit tallennetaan nyt automaattisesti 
tiedostoon voikko-fi_FI.pro, jolloin on helppo tarkistaa, mitä jokin 
binäärisansto pitää sisällään.

Linux-versioita lisäsanastoista en ole vielä laittanut saataville. Noille 
Windows-versioille näyttää kuitenkin olevan melko paljon käyttöä 
(teknis-tieteellistä versiota ladataan noin 50 kertaa vuorokaudessa, 
perussanastoa 100 kertaa ja murresanastoa 10 kertaa), joten ainakin 
teknis-tieteellisen sanaston tarjoaminen myös Linuxille olisi jossain 
muodossa järkevää. Tosin noita Windows-lisäosapaketeissa olevia sanastoja voi 
käyttää myös Linuxissa, jos vain löytää ohjeet oikeasta paikasta.


 == Sanastojen hallinta libvoikossa (hakemistot) ==

Jotta erikoissanastojen käyttö saataisiin toimimaan käyttäjäystävällisellä ja 
luotettavalla tavalla kaikissa käyttöjärjestelmissä, aion muuttaa libvoikon 
toimintaa seuraavasti:

- Perussanasto sijoitetaan nykyisen libvoikon datahakemiston (/usr/lib/voikko, 
~/.voikko tms.) alahakemistoon mor-standard. Erikoissanastot sijoitetaan 
puolestaan hakemistoihin mor-murre, mor-atk jne. Hakemiston nimen loppuosan 
tulee siis olla sama kuin tiedostosta voikko-fi_FI.pro löytyvä 
Language-Variant.

- Oletussanaston voi asettaa tekemällä symbolisen linkin mor-default, joka 
osoittaa haluttuun sanastohakemistoon. Jos linkkiä ei ole, käytetään 
oletussanastona sanastoa mor-standard.

- Linux ja OS X -järjestelmissä libvoikon datahakemistoa etsitään jatkossa 
myös hakemistosta /etc/voikko. Tätä hakemistoa kokeillaan sen jälkeen, kun on 
kokeiltu hakemistoa ~/.voikko, mutta ennen käännösaikana asetettua 
hakemistoa /usr/lib/voikko. Näin atk-sanastosta voi tehdä 
järjestelmänlaajuisen oletussanaston tekemällä symbolisen linkin
  /etc/voikko/mor-default -> /usr/lib/voikko/mor-atk

- Tähän saakka datahakemistoa on etsitty vain siihen saakka kunnes on löydetty 
tiedosto voikko-fi_FI.pro. Jos tuo tiedosto on ollut viallinen tai väärää 
versiota, on palautettu virheilmoitus.
  * Jatkossa vialliset (tai väärää versiota olevat) tiedostot ohitetaan kuin
    niitä ei olisi olemassa. Vain jos käy niin, että löydetään pelkästään
    viallisia tiedostoja, mainitaan tämä kirjaston palauttamassa
    virheilmoituksessa.
  * Jatkossa haku ulotetaan myös jäljempänä tuleviin datahakemistoihin, vaikka
    aiemmista olisikin löytynyt kelvollisia sanastoja. Tämä mahdollistaa sen,
    että esimerkiksi järjestelmän tarjoama murresanasto löydetään siinäkin
    tilanteessa, että käyttäjä on asentanut itselleen atk-sanaston.


 == Sanastojen hallinta libvoikossa (API) ==

Funktoiden voikko_init ja voikko_init_with_path langcode-parametrin sallittuja 
arvoja tulee lisää. Tähän saakka ainoa hyväksytty arvo on ollut "fi_FI", 
kaikilla muilla arvoilla on palautettu virheilmoitus. Jatkossa sallitaan 
seuraavat arvot:
 - Arvot "standard" tai jonkin erikoissanaston tunniste alustavat kirjaston
   kyseisen sanaston käyttöön, jos se on saatavissa. Muutoin palautetaan
   virhe.
 - Arvot "default", "", ja "fi_FI" alustavat kirjaston käyttämään
   oletussanastoa, siis linkin mor-default määrättämää sanastoa tai
   standard-sanastoa, jos default-linkkiä ei ole. Jos oletussanastoa ei ole
   saatavissa, palautetaan virhe.
 - Arvo NULL alustaa kirjaston avaamatta mitään sanastoa. Tällöin yritykset
   käyttää mitä tahansa funktiota, joka vaatii toimiakseen morfologista
   informaatiota, johtavat virheeseen. Osa funktioista on kuitenkin
   käytettävissä myös tässä tilassa.
Tällaisenaan muutos ei riko yhteensopivuutta vanhempien versioiden kanssa, 
sillä ainoa aikaisemmin hyväksytty parametrin arvo tulkitaan kuten tähänkin 
asti.

Käytettävissä olevien sanastojen listaamiseksi tarjotaan uusi funktio. Tämä 
funktio toimii, vaikka kirjasto olisi alustettu ilman sanastoa 
(langcode=NULL). Funktio palauttaa sanastot jonkinlaisena tietorakenteena, 
joka sisältää ainakin sanaston tunnisteen ja lyhyen selkokielisen kuvauksen.

Huomatkaa, että on tarkoituksellista, ettei langcode-parametriin jätetä mukaan 
kielikoodia. Tämän ratkaisun tarkoituksena on selventää sitä, ettei Voikko 
nykyisessä muodossaan ole yleiskäyttöinen kielityökalukirjasto kaikille 
kielille. Jos muita kieliä halutaan joskus tukea, tulee kirjastoa kehittää 
huomattavasti nykyistä modulaarisemmaksi, ja siinä vaiheessa myös rajapinnat 
on syytä miettiä kokonaan uusiksi.


 == Käyttöliittymä ==

Openoffice.org-voikon asetusvalintaikkunaan tulee pudotusvalikko sanaston 
valitsemiseksi. Muissa sovelluksissa joudutaan ainakin alkuvaiheessa 
nähtävästi tyytymään ympäristömuuttujien käyttöön.


 == Aikataulu ==

Tässä esitetyt muutokset on tarkoitus toteuttaa libvoikon seuraavaan versioon 
2.1 ja openoffice.org-voikon versioon 3.1, jotka todennäköisesti julkaistaan 
ensi vuoden alkupuolella. Tämä aikataulu voi muuttua.

Harri



More information about the voikko mailing list