[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