Kieliteknologian oppiaine

Ctl256: Äärellistilaiset jäsennysmenetelmät, 2003 syksy

- KIT-verkosto | Yleisen kielitieteen laitos | Helsingin Yliopisto -
Kurssin kalenteri
Kurssin kuvaus
Luennoija
MATERIAALI
3. viikko (21.11.)
4. viikko (30.11.)
5. viikko (5.12.)
Harjoitustyöt
Ääkkösten palauttaminen
Materiaaliluettelo
Xeroxin ohjelmien käyttöohjeita
XRCE:n FS Networks
Beesleyn ja Karttusen kirjan luonnos

Esimerkki: Ääkkösten palauttaminen

Ajatellaan tilanteita, joissa suomen kieltä joudutaan esimerkiksi sähköpostitse kirjoittamaan ja lähettämään käyttäen näppäimistöä, jossa on vain amerikkalaiset aakkoset "a" - "z", mutta ei kansallisia suomalais-ruotsalaisia loppupään aakkosia eli ääkkösiä "å", "ä" eikä "ö". Näissä tilanteissa on usein käytetty suoraan vastaavia pilkuttomia kirjaimia pilkullisten sijasta, siis "a":ta "ä":n sijasta jne. Tällaista tekstiä on suomen kielen taitoisen suhteellisen helppo oppia kirjoittamaan ja sen lukeminenkin sujuu ihan kohtuullisesti. (Monet ruotsalaiset käyttävät yhdistelmiä "ae" "ä":n sijasta, "oe" "ö":n sijasta ja "aa" "å":n sijasta, mutta tätä pidetään suomen kielelle huonompana.)

Tarkastellaan esimerkkiä äärellistilaisista menetelmien käytöstä, jossa tehtävänä olisi palauttaa näin yksinkertaistettuun viestiin pääosa siihen kuuluvista ääkkösistä eli kirjaimista "å", "ä" ja "ö".

Ratkaisun pääpiirteet

Tekstin yksinkertaistaminen ääkkösettömään muotoon on kovin yksinkertaista verrattuna ääkkösten palauttamiseen. Palauttaminen ei onnistu vain muuttamalla "a"-kirjaimiä "ä":ksi, sillä osa "a"-kirjaimista on kaiken aikaa ollut "a"-kirjaimia, eikä sitä osaa saa muutta. Tarvitsemme siis jonkinlaisen sanakirjan tai sanaston, jonka mukaisissa sanoissa muunnos suoritetaan, mutta muualla ei.

Olettakaamme, että käytettävissä olisi tekstikorpuksia, joista voisimme eristää niissä esiintyvät erilaiset suomenkieliset sananmuodot. Yksinkertaisella Perl-ohjelmalla voisimme poimia tästä listasta erilleen sellaiset sananmuodot, joissa on ääkkösiä ja edelleen poistaa tästä listasta sellaiset sananmuodot, joiden em. tavalla yksinkertaistettu muotoa ei kyseisessä aineistossa esiinny. Aineiston perusteella juuri nämä sananmuodot voisi turvallisesti palauttaa.

Transduktoreiksi ja automaateiksi muunnettuna tämä olisi suunnilleen seuraavaa:

  1. Olkoon W äärellinen automaatti, joka vastaa yllä mainittuja ääkkösellisiä sananmuotoja
  2. Olkoon R transduktio, joka muuttaa kaikki "ä":t "a":ksi ja kaikki "ö":t "o"ksi.
  3. Tällöin WR = W .o. R on transduktori, joka muuntaa kaikki kyseiset ääkköselliset sananmuodot W vastaaviksi ääkkösettömiksi sananmuodoiksi. Muita sanamuotoja tämä WR ei muunna miksikään, vaan hylkää kaikki muut. Toisaalta WR palauttaa ylöspäin sovellettaessa juuri oikeat ääkköset, esim. jos W:ssä olisi sananmuoto "pääoma", niin WR palauttaisi sananmuodon "paaoma" juuri alkuperäiseen asuunsa, eikä esim. muotoon "pääömä".
  4. Jotta saadaan yksiselitteinen mutta yleinen transduktio, tähän pitää lisätä oletuksena transduktio ? (eli mikä tahansa merkki vastaa itseään). Xeroxin kalkyylissä tätä varten on nimenomainen ns. prioriteettiunioni eli WP = WR .p. ?

Ratkaisun yksityiskohdat

Seuraava tiedosto on kurssilaisten saatavilla nimellä /ling/edu/courses/ctl256/2003s/pilkutpaalla.script .

#
# Ctl256 syksy 2003
#
# transduktoridemo ääkkösten kanssa
#
# sääntö, joka pudottaa ääkkösten pilkut pois:
define pilkutpois [ä -> a, ö -> o] ;

# luetaan tiedostosta tavallisia sananmuotoja,
# jotka sisältävät ääkkösiä:
read text < pilkutpaalla.words
define pilkkusanat

# transduktori, joka hoitaa lueteltujen sananmuotojen
# pilkkujen lisäämisen, mutta ei muuta:
define pilkutettavat pilkkusanat .o. pilkutpois ;

# lisätään oletukseksi, että muut sananmuodot
# säilyvät ennallan, mutta oletus ei koske pilkutettavia:
define pilkuta pilkutettavat .p. ?* ;

quit

Tämä Xfst-ohjelmalle tarkoitettu skripti määrittelee transduktorina "pilkutpois" säännön, joka muuttaa kaikki ääkköset vastaaviksi pilkuttomiksi aakkosiksi (ylempänä automaatti R).

Tiedostossa "pilkutpaalla.words" on luettelo parista ääkkösellisestä sananmuodosta. Ne luetaan ensin automaatiksi, joka hyväksyy kunkin sananmuodon kirjainjonon, muttei muuta. Lukemisen ja automaatiksi muuntamisen tulos menee Xfst:n pinon päälle, josta se otetaan määrittelykäskyllä pois "pilkkusanat" -nimiseksi automaatiksi (eli yllä W).

Pelkällä kompositiolla yhdistämällä saadaan ylempänä mainittu WR

Prioriteettiunionilla saadaan lopullinen vastaus "pilkuta", (joka vastaa yllä transduktoria P.

Alkuun