[hunspell-fi-devel] fi-spesifisen koodin lisääminen hunspell:iin itseensä
Harri Pitkänen
hatapitk at cc.jyu.fi
Tue Jan 17 15:33:11 EET 2006
On Tuesday 17 January 2006 14:45, Tor Lillqvist wrote:
> hf-testaa -skriptissä (tai siis hunspellfi.py:ssä) on toiminnallisuutta
> joka pitäisi varmaan siirtää suoraan hunspell:in lähdekoodiin. Tarkoitan
> siis sitä vokaalisointuun ja liitepartikkeleihin liittyvää koodia. Onko
> kukaan tekemässä tätä vai teenkö itse? hunspell:issahan on muutenkin
> kielispesifistä koodia (lähinnä unkaria varten, siitähän sen nimikin
> tulee), joten ei sen koodi paljon rumemmaksi tulisi vaikka siihen
> lisäisi myös suomelle erikoiskäsittelyä...
Joo, olet oikeassa. Tuo Pythonilla kirjoitettu osuus onkin lähinnä
prototyyppikoodia, tarkoitukseni olikin, että kunhan aikanaan saamme kaikki
palaset toimimaan niin sitten ryhdytään siirtämään toiminnallisuutta
Hunspellin sisään. Pythonilla vain on paljon helpompi työskennellä näin
alkuvaiheessa kuin C++:lla. Mutta jos haluat jo nyt ryhtyä tätä tekemään,
niin se olisi kyllä hienoa ja hyvinkin hyödyllistä.
> (Sinänsähän on aika rumaa että hunspell:in lähdekoodissa nimenomaan on
> kielispesifisiä koodinpätkiä, paljon elegantimpaahan olisi lisätä
> abstraktiota ja käsitellä vain "ominaisuuksia", joita sitten eri
> kielissä on eri osajoukko. Todennäköisesti esimerkiksi virossa ja
> suomessa olisi joukko yhteisiä tällaisia ominaisuuksia, muttei
> kuitenkaan niin että molemmissa olisi täsmälleen samat.)
Noita ongelmia on muutamassa viimeisessä Hunspellin versiossa korjailtukin
jonkin verran ja pyritty pääsemään eroon kielispesifisistä ominaisuuksista.
> Entäs sitten astevaihtelut, eikö olisi suoraviivaisempaa jos
> suhteellisen selvät säännönmukaisuudet hoidettaisiin suoraan
> hunspell:issa eikä affiksisäännöilä. En tarkkaan itsekään tiedä mitä
> tarkoitan ;-) enkä todellakaan ole kielitieteilija, mutta toivottavasti
> ymmärrätte suurinpiirtein mihin pyrin...
Olisi periaatteessa. Mutta tässä minua vähän epäilyttää, että kuinka helposti
tuollaisen mekanismin pystyy toteuttamaan. Nuo liitepartikkelit ovat
periaatteessa helppoja, kun ne ovat vain päätteitä jotka voidaan poistaa ja
sitten oikolukea jäljelle jäävä osuus. Mutta astevaihtelut tapahtuvat sanan
sisällä, jolloin jouduttaisiin muuttamaan aivan Hunspellin ytimessä olevia
algoritmeja. Tämä saattaa olla helppoa tai sitten ei, en totta puhuen ole
uskaltanut edes selvittää koko asiaa :) Nykyinen mekanismi johtaa sanaston
tilankäytön kasvuun muutamalla kymmenellä prosentilla, mutta siitä ei ole
muuta haittaa. Tätä kyllä kannattaa jatkossa selvittää paremmin.
> Olenko muuten ymmärtänyt hunspell:in toimintaa yhdyssanojen suhteen
> oikein, että sille pitää tosiaan kertoa erikseen mitkä sanat voivat
> muodostaa yhdyssanojen alku- ja loppuosia? Tämähän ei suomeen sovi
> kovinkaan hyvin koska yhdyssanoja voi (ja pitää) muodostaa aika
> vapaasti, vai mitä?
Olet ymmärtänyt oikein. Tästä syystä en ole yhdyssanojen tunnistamista ottanut
vielä käyttöön. Uudemmissa Hunspellin versioissa on COMPOUNDRULE -ominaisuus,
joka pääsee jo lähelle sitä mitä tarvitsisimme, mutta ei kuitenkaan ihan
riittävän pitkälle (viimeisintä versiota en ole vielä ehtinyt asentamaan,
mutta tuskinpa siinä on mitään uutta tämän suhteen). Ajatuksenani oli
toteuttaa tähänkin Pyhtonilla semmoinen kikka, että otetaan Hunspellissä
käyttöön sanojen vapaa yhdistely, ja morph-funktiolla haetaan tutkittavalle
sanalle sen kaikki mahdolliset morfologiset rakenteet. Sitten käydään ne läpi
ja katsotaan, onko yksikään niistä järkevä kieliopin kannalta. Esimerkiksi
"koiratarha" on oikein koska se antaisi
"koira[SUBST]+NOMINATIIVI+tarha[SUBST]+NOMINATIIVI" ja kahden
nominatiivimuotoisen substantiivin yhdistelmä on sallittu. Mutta
"koirastatarha" antaa "koira[SUBST]+ELATIIVI+tarha[SUBST]+NOMINATIIVI" ja
"koiras[SUBST]+PARTITIIVI+tarha[SUBST]+NOMINATIIVI" jotka molemmat ovat
väärin, koska paikallissija+nominatiivi tai partitiivi+nominatiivi ei
(ainakaan normaalisti) ole oikein.
Jos tämä strategia toimisi, niin senkin voisi sitten myöhemmin toteuttaa
Hunspellin sisällä.
> Siihen liittyen, olisi varmaan kiva jos hunspell
> joskus tarjoaisi mahdollisuuden löytää myös hyvin yleisen Lappeen Ranta
> -taudin ilmentymiä. Hmm, toisaalta se kai voi olla aika vaikeata,
> riippuu kai usein yhteydestä pitääkö sanat kirjoittaa yhteen vai ei,
> vrt. "kaikki vieraat saivat eteensä Dominot, koiran keksi laitettiin sen
> kulhoon" vs. "ota koirankeksi paketista ja anna hurtalle". No tuo ehkä
> oli kaukaa haettu esimerkki.
Tämä voisi olla mahdollista, mutta käytännössä se ei toimisi olemassa olevien
oikolukua käyttävien sovellusten kanssa. Esimerkiksi OpenOffice.org (ja
kaikki muutkin ohjelmat joiden lähdekoodia olen tutkiskellut) antavat
tarkistettavan tekstin oikolukumoduulille sana kerrallaan, eli
oikolukuohjelma ei tiedä mitään sanan kontekstista. Eikä siis voi havaita
tällaisia virheitä. Paitsi toiseen suuntaan, eli jos kaksi sanaa on
vahingossa mennyt yhteen, voi ne ehdottaa kirjoitettaviksi erilleen.
> Entäs pitäisikö hunspell:in osata korjata linjaauto -sanaa
> linja-auto:ksi? (Tehdäänköhän oikeasti paljon sellaisia
> kirjoitusvirheitä?)
Tämä on kai aika yleistä ja kyllä, tuollaiset virheet pitäisi pystyä
tunnistamaan ja ehdottamaan oikeaa kirjoitusasua.
Harri
More information about the devel
mailing list