You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Koodi<br />
Älykkäämpää virheiden etsintää<br />
Voikolla<br />
Tietokonepohjainen oikoluku on virtuaalinen punakynä, joka auttaa löytämään<br />
kirjoitusvirheitä. Perinteisesti ne tutkivat vain yksittäisiä sanoja, mutta tässä<br />
artikkelissa otamme askeleen eteenpäin.<br />
Teksti: Harri Pitkänen Kuva: Mikko Rasa<br />
Automaattinen oikoluku on jo pitkään<br />
kuulunut tekstinkäsittelyohjelmien<br />
perustoimintoihin. Sittemmin<br />
ominaisuus on yleistynyt myös<br />
muihin kirjoittamiseen käytettäviin ohjelmistoihin<br />
kuten nettiselaimiin ja sähköpostiohjelmiin.<br />
Hyvin toteutettu oikoluku<br />
onkin mainio apu tekstintarkistuksessa,<br />
ja siitä hyötyvät lähes kaikki kirjoittajat<br />
alakoululaisista ammattilaisiin.<br />
Perinteisen oikoluvun toiminta-ajatus<br />
on yksinkertainen: Tekstissä olevat yksittäiset<br />
sanat analysoidaan sanaston ja<br />
muun logiikan avulla. Mikäli sananmuoto<br />
on oikolukujärjestelmälle tuttu, se katsotaan<br />
oikein kirjoitetuksi. Tuntemattomat<br />
sanat luokitellaan väärin kirjoitetuiksi ja<br />
merkitään tekstiin esimerkiksi punaisella<br />
alleviivauksella. Vuosien saatossa tämä<br />
perusidea ei ole juuri muuttunut.<br />
Oikoluvun haasteita<br />
Tekstin mekaaniseen tarkistukseen ja sanojen<br />
luokitteluun liittyy monia haasteita<br />
ja perustavanlaatuisiakin rajoituksia.<br />
Osa niistä on ratkaistu kauan sitten, mutta<br />
kaikkia ongelmia ei voi kiertää ohjelmallisesti.<br />
Yksi vaikeus liittyy oikean ja väärän<br />
määritelmään, sillä ihmiselle ja koneelle<br />
ne ovat vähän eri asioita. Kone ei ymmärrä<br />
kirjoittajan ajatuksia, eikä tyypillinen<br />
oikoluku tutki tarkistettavan sanan asiayhteyttä.<br />
Sana vain hyväksytään, jos se<br />
löytyy ohjelman sanastosta. Käytännössä<br />
on kuitenkin mahdollista, että sana on<br />
muodollisesti oikein mutta asiayhteyden<br />
kannalta väärin. Tällaisen virheen voi<br />
yleensä huomata vain tekstin kokonaisuuden<br />
ymmärtävä ihminen.<br />
Toisaalta oikolukuohjelmat tuomitsevat<br />
virheiksi myös oikein kirjoitettuja<br />
sanoja, koska ohjelma ei tunne kaikkia<br />
mahdollisia sanoja. Olisi kyllä mahdollista<br />
kartuttaa laaja sanavarasto, jonka<br />
avulla tekstin punaiset alleviivaukset<br />
katoavat. Niin ei kuitenkaan kannata<br />
tehdä, koska hyvin suuresta sanastosta<br />
on enemmän haittaa kuin hyötyä. Mitä<br />
enemmän sanoja ohjelma tunnistaa, sitä<br />
todennäköisemmin joidenkin sanojen<br />
taivutusmuodot tai yhdyssanatilanteet<br />
muistuttavat joitakin toisia sanoja. Tästä<br />
seuraa tilanteita, joissa lyöntivirheen<br />
seurauksena sanasta tulee jokin toinen<br />
sana, eli oikoluku ei havaitse kirjoittajan<br />
virhettä.<br />
Oikolukuohjelman tekijälle erityisen<br />
haastavia ovat suomen kaltaiset kielet,<br />
joissa sanojen johtaminen ja taivutus<br />
on monipuolista ja joissa muodostetaan<br />
yhdyssanoja monin eri tavoin. Pelkästään<br />
näitä kieliopillisia ilmiöitä koskevan<br />
säännöstön kuvaaminen tietokoneohjelmalla<br />
voi olla erittäin työlästä.<br />
Eikä se vielä riitä, että kerätään sanasto<br />
ja ohjelmoidaan sananmuodostusta<br />
säätelevä kielioppi. Oikolukuohjelman tekijä<br />
joutuu myös tutkimaan tekstejä, sanojen<br />
yleisyyttä ja tekemään monenlaisia<br />
valintoja. Välillä joudutaan punnitsemaan<br />
sanan tunnistamisen hyötyjä ja haittoja.<br />
Esimerkiksi suomen kielessä sana<br />
mangorove on kieliopillisesti täysin oikein<br />
ja voisi tarkoittaa tuohesta valmistettua,<br />
mangohedelmien säilyttämiseen<br />
Mikä on Voikko?<br />
Voikko on vapaa oikolukuohjelma suomen kielelle.<br />
Se on käytännössä ohjelmakirjasto, joka<br />
tarjoaa oikoluvun, tavutuksen, morfologisen<br />
analyysin ja lauserakenteen tarkistustoimintoja.<br />
Muut ohjelmat voivat hyödyntää Voikkokirjaston<br />
ominaisuuksia. Voikolle on olemassa<br />
ohjelmointirajapinta C-, C++-, Python-, Java-,<br />
C#- ja Common Lisp -kielille.<br />
Kehittäjä: Harri Pitkänen<br />
Lisenssi: GNU General Public License<br />
Kotisivu: http://voikko.puimula.org/<br />
tarkoitettua rasiaa. Kuitenkin lähes<br />
varmasti sen kirjoittaja on tarkoittanut<br />
tropiikin rannikoilla esiintyvää mangrovekasvustoa<br />
mutta on kirjoittanut yhden<br />
o-kirjaimen liikaa. Koska jälkimmäinen<br />
vaihtoehto on todennäköisempi, oikolukuun<br />
ehkä kannattaa ohjelmoida poikkeus,<br />
jossa harvinaisen rove-sanan yhdyssanakäyttöä<br />
rajoitetaan. Samalla ehkä<br />
jotkin hyödylliset oikein kirjoitetut sanat<br />
tulevat hylätyksi. Kyse on kompromissien<br />
tekemisestä.<br />
Tietokonepohjaiset oikoluvut eivät<br />
siis ole täysin luotettavia, ja laadukkaissa<br />
painojulkaisuissa tarvitaan edelleenkin<br />
huolellista ihmisen tekemää oikolukua ja<br />
kielenhuoltoa. Haasteet eivät tietenkään<br />
estä kehittämästä tekniikkaa paremmaksi.<br />
Voikko<br />
Avoimen lähdekoodin Voikko-oikolukuohjelmistoa<br />
on kehitetty aktiivisesti jo<br />
8 2014.2