28.10.2014 Views

1tgD67B

1tgD67B

1tgD67B

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!