Suopuhe-projekti
Asennus
Sääntötiedostot
Funktiolista
NSW-laventimen käyttöohje
Lavennin tyypillisesti lukee saamaansa kantasyötettä (standard input).
Peruskäyttöön riittää pelkkä
$ lavennin < syötetiedosto
Windows-käyttjieen täytyy eksplisiittisesti kertoa mitä komentotulkkia
käytetään. Dos-tilassa käsky olisi käsittäkseni muotoa:
perl lavennin syötetiedosto
Tässä tietenkin oletaan, että Perl-komentotulkki on asennettuna
ja että se löytyy polusta.
Windows-tukea testattiin viimeksi joskus vuosi sitten, joten
siltä suunnalta saattaa löytyä bugeja...
Käyttö Suopuheen syntitisaattorin kanssa suopuhe-moodissa:
lavennin --output=xml < foo.txt > bar.suo
festival --tts bar.suo
Syntetisaattori tunnistaa tiedostopäätteet suo ja suopuhe
ja osaa näin ollen valita oikean moodin puheelle.
Lisäksi tämä vaatii toimiakseen ainakin suomenkielisen äänen.
Käytössä on lisäksi joukko valitsimia:
- --debug
- Asettaa debuggaus-moodin päälle. Tulostaa enemmän kuin runsaasti tietoja
ohjelman ajon etenemistä STDERRiin. Turha peruskäyttäjälle ja hidastaa
ohjelmaa julmetusti.
- --dialect=murre
- Muuttaa tekstin halutun murteen mukaiseen kirjoitusasuun.
Hömppä kevennys, jonka tuki ontuu toistaiseksi pahasti.
Laillisia murteita ovat tällä hetkellä savo ja turku.
Tuntemattoman murrenimen yhteydessä käytetään kirjakieltä.
Tuki puutteellinen, älä käytä!
- --force
- Vanhentunut optio. Nykyään oletusarvoisesti päällä. Kumotaan
--safe-optiolla.
- --language=language
- Kielen nimi ISO 839-2/T -standardin mukaisesti.
http://lcweb.loc.gov/standards/iso639-2/englangn_ascii.html
Oletusarvoisesti fin. Vähemmän yllättäen muiden kielten tukea
ei ole implementoitu.
- --mode=(line|run)
- Vastaanotettavan syötteen tyyppi. Kertoo tokenisoijalle
onko syöte lause/rivi-muotoista (line) vaiko tuleeko lauserajoja
etsiä juoksevasta tekstistä myös rivin keskeltä (run). Oletusarvona
on run.
- --output=(plain-text|sapi4|xml)
-
Määrittää millaisessa muodossa ohjelma palauttaa tulosteensa.
Oletusarvoisesti ohjelma palauttaa raakatekstiä (plain-text).
sapi4-tilassa mukana voi olla
Microsoftin
sapin nelosversion mukaisia tageja.
(suopuhe-syntetisaattori ei näitä tue, ja ainakin Mikropuheen SAPI-tuki ei
ole täydellinen.) Lisäksi ainakaan minä en ole kirjoittanut kuin muutamat
sapi4-specifin lavennussäännön.
Moodi xml tarkoittaa projektin omaa suopuhe-moodia,
joka on eräänlainen TTS -merkintäkieli.
- --safe
-
Oletusarvoisesti lavennin yrittää pakottaa kaikki numerot ja lyhenteinä
pitämänsä sanat edes joten kuten luottavaan muotoon. (Entinen
--force optio.) --safe option avulla lavennetaan
vain ne saneet, joihin jokin lavennussääntö osuu, eli jotka
olisivat näin, ainakin teoriassa, turvallisesti lavennettavissa oikein.
Option käyttäminen voi jättää tekstiin asioita, jotka saavat Festivalin
suopuhe-moodin polvilleen, joten en suosittele sen käyttöä.
- --tagger=(none|fdg|twol)
-
Kertoo ohjelmalle, mitä kolmannen osapuolen lingvististä työkalua
sen tulee hyödyntää lavennuksen yhteydessä.
Oletusarvoisesti ei käyetä mitään (none), jolloin
käytetään vain ohjelman itsensa generoimia sanalistoja. Vaihtoehdot
ovat 'fdg' (silloisen Conexorin FDG-jäsennin,
nykyisin kai Connexorin Machinese Syntax
olis vastaava tuote).
ja 'twol' (Lingsoftin FINTWOL,
morfologinen analyysiohjelma, esihistoriallinen versio vuodelta 1992).
FDG-jäsentimestä on käytetty versioita 2.0 ja 3.7 (jälkimmäinen --text-optiolla).
- --verbose
- Tulostaa erinäisiä "väliaikatietoja", kuten tehdyt lavennukset
STDERR:iin. Hidastaa lavennusta huomattavasti
.
Laventimen toiminnan kuvaus
Ohjelman toimintamalli on seuraava:
- Syöte talletetaan välitiedostoon tmp/input.txt
-
Tämän jälkeen syöte "tokenisoidaan", käytännössä pisteet ja välimerkit
erotataan sanoista, sanat laitetaan kukin omilla rivilleen.
plain-text- ja twol-moodeissa preprosessointi
on kaksivaiheinen. fdg-moodissa käytetään vain ensimmäistä
vaihetta, jonka jälkeen teksti muutetaan lause-per-rivi -muotoon
sillä FDG-jäsennin sisältää oman preprosessorinsa.
Käytetyt tilapäistiedostot:
plain-text: plain-a, plain-aa
twol: tmp/twol-b, tmp/twol-c
fdg: tmp/fdg-a, tmp/fdg-b
-
Seuraavaksi ohjelma menee lingvistiselle analyysiohjelmalle, jos
sellainen on asetettu käytettäväksi. FDG-jäsennin tulostus on
text-moodissa, ei xml-formaatissa.
Lisäksi Twolissa suoritetaan kirjainkoon palautus.
FDG-jäsennyksen jälkeen tehdään sen syötteen jälkiprosessointia,
jossa muutettaan syntaktiset viittaussuhteet absoluuttisista suhteelisiksi
Käytetyt tilapäistiedostot:
plain-text: -
twol: tmp/twol-d, tmp/twol-f
fdg: tmp/fdg-c, tmp/fdg-d
-
Lopuksi saadut tiedot jaetaan omiin lokeroihinsa. Eli pintamuoto,
perusmuoto, morf. analyysi(t) ja pintasyntaktinen analyysi
talletetaan kukin omaan lokeroonsa. Tekstimuodossa täytetään
(tässä kohtaa) vain pintamuotolokero, Twol-pohjaisesta puuttuu
luonnollisesti syntaktinen tieto. Muista ohjelman aina hyödyllisistä
"lokeroista" lisää tietoa myöhemmin.
-
Ohjelma yrittää laventaa tekstiä säännöstönsä avulla.
Säännöstön laventamatta jättämät, lukukelvottomat saneet
pakkolavennetaan luettavaan muotoon, jos --safe optio
ei ole päällö.
kannattaa tutustua
sääntöjen teko-ohjeeseen,
varsinkin kun ohjelman kehitystyö on päättynyt.
Lavennin uskoo aina saavansa oikeaa tietoa
ulkoisilta lingvistisiltä apuohjelmilta, eli niiden tekemät
virheanalyysit vaikuttavat luonnollisesti myös laventimen tekemiin
analyyseihin. Pääsääntöisesti apuohjelmien käyttö kuitenkin parantaa
lavennuksen laatua. Twol-ohjelmalta saatua syötettä disambiguoidaan
hieman, eli heitetään pois analyysejä, jotka tiedetään vääriksi:
"noin" ei ole käytäänössä koskaan noki-sanan instruktiivi jne.
Bugit
Niitä varmasti löytyy sekä koodista että säännöistä.
Siitä vaan korjaamaan, ohjelmahan oli jaossa LGPL-lisenssin alla.
To do
Alla on listattuna joukko asioita, jotka voisivat olla paremmin
-
Ikkunan koko: nyt vakio 30 sanaa. Parempi olisi, että ikkunan
koko mukautuisi dynaamisesti virkkeen kokoon, eli ikkunassa olisi
yksi virke kerrallaan.
-
Nyt koko syöte menee aina laventimen toiminnan kuvauksen kohtaan 4
asti ennen kuin tulostustaa alkaa tulemaan. Isoilla syötteillä
menee kauan, ennen kuin saadaan tulostusta. Sopii eräajoihin, mutta...
Samalla päästäisiin eroon tmp-tiedostoista.
- Serverimoodi
- Etäisyyden parempi haarukointi mallia 1-4:RULE("whatever")
- perldoc
- Globaaleja muuttujia pitäisi vähentää
- $case - $muoto -pareista pitäisi päästä eroon (aina merkkijonoiksi)
- Lisää tehokkuutta: lavennussäännöt paloitellaan joka saneen kohdalla, voisi paloitella kerran ja tallettaa kolmeen eri taulukkoon...