1. Sissejuhatus
Käesoleva projekti eesmärgiks oli koostada DOS-i keskkonnas töötav programm - ESTNP (testversioon), mille sisendiks on morfoloogiliselt analüüsitud ja eesti keele kitsenduste grammatika kohaselt ühestatud eestikeelne tekst, väljundiks aga tekstis tuvastatud nimisõnafraaside loetelu. Eeskujuks võeti inglise keele kitsenduste grammatikal põhinev nimisõnafraaside tuvastaja [Voutilainen].
2. Märgendid
Nimisõnafraaside eristamiseks varustatakse iga sõna märgendiga, mis näitab, kas sõna on nimisõnafraasi põhi, ees- või järeltäiend või see sõna ei kuulu nimisõnafraasi. Eestikeelses tekstis nimisõnafraaside tuvastaja märgendid on analoogilised kitsenduste grammatikal põhineval inglise keele nimisõnafraaside tuvastaja märgenditega:
@V - verb, selle märgendiga varustatakse kõik verbid, sõltumata sellest, kas nad on finiitsed või infiniitsed ning millist süntaktilist funktsiooni nad lauses kannavad. See märgend omistatakse ka infiniitsetele täienditele (näiteks: soov õppida jne). Ühend- ja väljendverbid analüüsitakse sõnahaaval ja verbi märgend lisatakse ainult verbidele.
@NH - nimisõnafraasi põhi, selle märgendiga märgendatakse nimi-, ase- ja arvsõnalised alused, sihitised, määrused, öeldistäited ja kaassõnafraasi kuuluvad nimisõnafraaside põhjad.
@N> - eestäiend, selle märgendiga märgendatakse nimi-, ase-, arv-, omadus- ja määrsõnalised eestäiendid.
@<N - järeltäiend, selle märgendiga märgendatakse nimi-, ase-, arv-, omadus- ja määrsõnalised järeltäiendid.
@XX - muu, selle märgendiga varustatakse sõnad, mis ei kuulu nimisõnafraasi (v.a verbid ja sidendid), näiteks omadus- ja määrsõnalised määrused, omadussõnalised öeldistäited ja kaassõnad (ka siis, kui kaassõnafraas täiendab nimisõnafraasi, sest seda ei ole ilma semantilise informatsioonita võimalik kindlaks määrata).
@J - sidend
3. Reeglid
Eestikeelses tekstis nimisõnafraaside märgendamiseks kitsenduste grammatika analüsaatorit kasutades on kaks võimalust: esiteks, kirjutada uued spetsiaalsed reeglid nimisõnafraaside määramiseks, või teiseks, kasutada ära praegu olemasolev eesti keele kitsenduste grammatika (ESTKG) süntaksianalüsaator [Müürisep 1998], mille märgendite hulk on palju rikkalikum ja seega ka analüüs detailsem, ning leida selle väljundist nimisõnafraasid.
3.1. Spetsiaalsete reeglite kasutamine
Projekti alustades lähtusime eeldusest, et tuleb koostada uus, spetsiaalne nimisõnafraasigrammatika, mis kasutab uut märgendite süsteemi. Oletasime, et selleks saab enamasti ära kasutada olemasolevat süntaksigrammatikat: osa reegleid (mis tegelevad nimisõnafraasidega) lihtsalt kirjutada ümber teisele kujule ja lisada mõningaid uusi. Töö käigus ilmnesid aga raskused, mida on lähemalt kirjeldatud I etapi aruandes. Eksperiment näitas, et sel teel saadud nimisõnafraaside tuvastaja ei ole piisavalt efektiivne. Sel viisil koostatud grammatika koosneb 14 märgendite lisamise reeglist ja 170 kitsendusest. Läbiviidud eksperimendid näitasid, et pärast märgendite lisamist on sõnal keskmiselt 2,5 märgendit, 32% sõnadest on ühesed. Pärast kitsenduste rakendamist saab ainult 73% sõnadest ühese analüüsi, sealhulgas on ka verbid, sidendid ja määrsõnalised määrused. Kokkuvõttes jõudsime järeldusele, et nimisõnafraaside leidmiseks see grammatika ei sobi, ja otsustasime nimisõnafraaside märgendamiseks kasutada eesti keele kitsenduste grammatika süntaksianalüsaatorit.
3.2. ESTKG süntaksianalüsaatori kasutamine nimisõnafraaside leidmisel
3.2.1. Märgendid
ESTKG süntaksianalüsaator kasutab järgmisi märgendeid:
A. Öeldise märgendid
@+FMV - finiitne öeldis
@-FMV - infiniitne öeldis
@+FCV - olema liitaegades, modaalverbid jt ahelverbides, finiitne vorm
@-FCV - olema liitaegades, modaalverbid jt ahelverbides, infiniitne vorm
@NEG - verbi eitusB. Põhja märgendid
@SUBJ - subjekt
@OBJ - objekt
@PRD - predikatiiv
@ADVL - adverbiaal, ka fraasiadverbiaalC. Laiendite märgendid
@AN> - adjektiiv eestäiendina
@<AN - adjektiiv järeltäiendina
@AD> - adverb eestäiendina
@<AD - adverb järeltäiendina
@PN> - kaassõna eestäiendina
@<PN - kaassõna järeltäiendina
@NN> - nimisõna eestäiendina
@<NN - nimisõna järeltäiendina
@VN> - partitsiip eestäiendina
@<VN - partitsiip järeltäiendina
@INF_N> - infinitiiv eestäiendina
@<INF_N - infinitiiv järeltäiendina
@<P - eessõnafraasi põhi
@P> - tagasõnafraasi põhi
@Q> - kvantori eeslaiend
@<Q - kvantori järellaiendD. Muud märgendid
@X - ahelverbi komponent (nt mahti saama)
@J - sidend
@I - hüüatus
@??? - tundmatu sõnaTabelites 1 ja 2 on toodud statistilised andmed analüsaatori töö tulemuste kohta. Treeningkorpus A koosneb neljast ilukirjanduslikust tekstist, milles oli kokku 8140 süntaktiliselt analüüsitavat sõna. Treeningkorpuseks B on samad tekstid, kuid automaatselt morfoloogiliselt ühestatud. Selles korpuses on 99 tundmatut sõna ja automaatsel ühestamisel tehti 101 viga. Morfoloogilise ühestaja täpsus treeningkorpus B ühestamisel oli 87.34 % ja korrektsus 98.75% ning 89.54% sõnadest said ühese morfoloogilise tõlgenduse.
Testkorpus A koosneb 1992-sõnalisest ilukirjanduslikust tekstist, mis on käsitsi morfoloogiliselt ühestatud. Seda teksti ei ole analüsaatori väljatöötamisel kasutatud.
Testkorpuseks B on sama 1992-sõnaline tekst, mis on automaatselt morfoloogiliselt ühestatud. Selles korpuses on 7 tundmatut sõna ja automaatsel ühestamisel tehti 25 viga. Morfoloogilise ühestaja täpsus treeningkorpus B ühestamisel oli 87.62% ja korrektsus 98.74% ning 89.91% sõnadest said ühese morfoloogilise tõlgenduse.
Süntaksianalüsaatori grammatika koosneb praegu 165 märgendite lisamise reeglist ja 851 süntaktilisest kitsendusest, nende hulgas on 131 heuristilist kitsendust, mis tekitavad küll rohkem vigu, kuid nende osakaal märgendite eemaldamisel on küllaltki suur. Samuti on heuristiliste reeglite hulgas uuemad reeglid, mida ei ole veel jõutud piisavalt testida.
Märgendite lisamisel tekkis treeningkorpuses B 178 viga (korrektsus 97.81%), samal ajal A-korpuses oli vigu 8 (korrektsus 99.90%). B-korpuse vead tekkisid tundmatutele ja valesti ühestatud sõnadele märgendite lisamisel. Testkorpuses tekkis vigu vastavalt 28 (korrektsus 98.59%) ja 6 (korrektsus 99.70%)
Analüsaatori korrektsus ja täpsus treening- ja testkorpustel on toodud tabelis 1, märgendite jaotumine tabelis 2 ja sagedasemad mitmesuste tüübid tabelis 3.
A harjutus A test B harjutus B test Korrektsus 99,12% 98,12% 95,76% 96,58% Täpsus 83,76% 85,00% 74,34% 76,52% Tabel 1. Korrektsus ja täpsus.
A harjutus A test B harjutus B test 1 85,70% 88,11% 79,80% 81,68% 2 10,82% 9,28% 13,79% 12,60% 3 2,96% 2,11% 4,64% 4,22% 4 0,45% 0,40% 1,45% 1,00% 5 0,06% 0,10% 0,26% 0,40% 6 0,06% 0,10% Tabel 2. Märgendite jaotumine.
1 @<NN @ADVL 236 2 @ADVL @NN> 115 3 @NN> @OBJ 85 4 @<PN @ADVL 74 5 @<NN @ADVL @NN> 63 6 @-FMV @ADVL 62 7 @OBJ @SUBJ 60 8 @<NN @PRD @SUBJ 54 9 @NN> @SUBJ 43 @<NN @SUBJ 42 Tabel 3. Sagedasemad mitmesused harjutuskorpuses A.
Nimisõnafraaside leidmisel ei ole olulised 4., 6. ja 7. märgendite kombinatsioon, teised mitmesused kanduvad ka nimisõnafraaside tuvastajale.
3.2.3. Teisendusreeglid
Süntaksianalüsaatori väljundi märgendid teisendatakse nimisõnafraaside tuvastaja ESTNP märgenditeks järgmiste reeglite abil:
Kui sõna on nimisõna, asenda märgendid @SUBJ, @OBJ, @PRD, @ADVL, @<P, @P> märgendiga @NH.
Kui sõna on asesõna, asenda märgendid @SUBJ, @OBJ, @PRD, @ADVL, @<P, @P> märgendiga @NH.
Kui sõna on arvsõna, asenda märgendid @SUBJ, @OBJ, @PRD, @ADVL, @<P, @P> märgendiga @NH.
Kui sõna on lühend, asenda märgendid @SUBJ, @OBJ, @PRD, @ADVL, @<P, @P> märgendiga @NH.
Kui sõna on verb, asenda märgendid @+FMV, @-FMV, @+FCV, @-FCV, @NEG, @SUBJ, @OBJ, @PRD, @ADVL, @<INF_N ja @INF_N> märgendiga @V.
Märgendid @AN>, @VN>, @NN>, @Q> ja @AD> asendada märgendiga @N>.
Märgendid @<AN, @<VN, @<NN, @<Q ja @<AD asendada märgendiga @<N.
Märgend @J jääb samaks.
Märgend @??? jääb samaks.
Ülejäänud süntaksianalüsaatori märgendid asendada märgendiga @XX.
Reeglid on kokkuvõtlikult esitatud tabelis 4.
4. Nimisõnafraaside tuvastaja algoritmi kirjeldus
Sisend. Programmi ESTNP sisendiks on morfoloogiliselt ühestatud tekst eesti keele kitsenduste grammatika ühestaja väljundile vastavas formaadis [Puolakainen 1998]. Sisendtekst võib olla ka automaatselt ühestatud, s.t osaliselt mitmene, kuid mida ühesem on sisend, seda täpsem on väljund.
Väljund. Programmil on kaks väljundit. 1) Standardväljundisse kirjutatakse kõik leitud nimisõnafraasid, iga fraas eraldi reale. Kui rida lõpeb sümboliga *, on selle fraasi süntaktiline analüüs ebaõnnestunud ja fraas võib olla vigane. 2) Faili nimelaiendiga .NPX kirjutatakse märgendatud sisendtekst.
Algoritm
1. samm. Tehakse sisendi süntaktiline analüüs eesti keele kitsenduste grammatika analüsaatori abil. Selleks kasutatakse reegleid failist GRAMMAR.RLE. Saadakse süntaktiliselt märgendatud tekst.
2. samm. Süntaktilised märgendid teisendatakse nimisõnafraaside tuvastaja märgenditeks vastavalt tabelile 4.
3. samm. Analüüsides märgendeid, väljastatakse fraasid ekraanile. Kui sõna on süntaktiliselt mitmene, kasutatakse tabelis 5 toodud teisendusi (mis on tuletatud mitmesuste statistilisest analüüsist). Koordineeriva sidesõna või kirjavahemärgiga eraldatud sõnad loetakse üheks fraasiks, kui
- koordinatsioon on eestäiendite vahel (nt elektri-, gaasi-, side- ja muud liinid)
- koordinatsioon on kahe põhja vahel nii, et viimasele põhjale ei eelne täiendit (nt teed ja liinid).
Fraasi piiri määravad:
- verb (@V), eelnev fraas väljastatakse;
- osalausepiiri märgend (**CLB ja **CLB-C), eelnev fraas väljastatakse;
- märgendiga @XX tähistatud sõnad, kui koostatavasse fraasi kuulub juba järeltäiend, eelnev fraas väljastatakse.
- nimisõnafraasi põhi @NH, kui koostatavas fraasis leidub juba põhi ja põhjad ei ole koordinatsioonis, eelnev fraas väljastatakse, antud põhi koos eelnevate eestäiendtitega loetakse uueks koostatavaks fraasiks.
Sõnaliik Selgitus Süntaktiline märgend NP märgend _S_, _P_, _N_ card Nimi-, ase- ja põhiarvsõna @SUBJ, @OBJ, @PRD, @ADVL, @<P, @P> @NH _S_ ,_P_, _N_ card Nimi-, ase- ja põhiarvsõna @NN>, @Q> @N> _S_ ,_P_, _N_ card Nimi-, ase- ja põhiarvsõna @<NN, @<Q @<N _A_ ,_P_, _N_ ord, _D_ Omadus-, ase-, järgarv- ja määrsõna @AN>, @VN>, @AD> @N> _A_ ,_P_, _N_ ord, _D_ Omadus-, ase-, järgarv- ja määrsõna @<AN, @<VN, @<AD @<N _A_ Omadussõna @PRD @XX _A_, _D_, _N_ ord Omadus-, järgarv- ja määrsõna @ADVL @XX _V_ Verb kõik märgendid @V _J_ Sidesõna @J @J _K_ Kaassõna kõik märgendid @XX _I_, _X_ Hüüdsõna, verbi juurde kuuluv sõna kõik märgendid @XX Tabel 4. Süntaktiliste märgendite teisendamine nimisõnafraaside tuvastaja ESTNP märgenditeks.
Mitmesus Lahend Selgitus @N> @NH @N> eestäiend ja põhi ? eestäiend @N> @NH @<N @NH ees- ja järeltäiend ning põhi ? põhi @N> @<N @N> ees- ja järeltäiend ? eestäiend @NH @<N @NH põhi ja järeltäiend ? põhi Tabel 5. Mitmesuste teisendamine.
5. Vigade analüüs
Nimisõnafraaside tuvastajat ESTNP testiti 1000-sõnalisel juriidilisel tekstil (ekij5.cgd) ja 2000-sõnalisel ilukirjandustekstil (tkt0119.cgd), mis olid mõlemad käsitsi morfoloogiliselt ühestatud. Juriidilises tekstis nimisõnafraaside tuvastamisel tekkis vigu 14.2% ja ilukirjandustekstis 16.0%. Siin protsent näitab valesti leitud nimisõnafraaside osakaalu (näiteks kui programm liitis 2 nimisõnafraasi üheks, siis seda arvestati 2 veana).
Sagedasemad vead olid järgnevad:
1. Kõige sagedasem viga 1000-sõnalist juriidilist teksti analüüsides seisnes selles, et numbriga kirjutatud järgarvu järel olev punkt poolitas nimisõnafraasi; seda tüüpi vigu oli 10. Sellist viga on võimalik vältida lausepiiride eelneva märgendamisega analüüsitavas tekstis.
2. Ilukirjandusteksti analüüsi tüüpilisim viga seisneb selles, et ESTNP ei suuda eristada erinevaid määrusi. Näiteks lauses
et saaksin ikka oma puusärgis paradiisi
on ESTNP leidnud ühe fraasi: [oma puusärgis paradiisi].
Õige oleks aga kaks erinevat fraasi [oma puusärgis] [paradiisi].
Selliseid vigu tegi ESTNP 2000-sõnalist ilukirjandusteksti teksti analüüsides 16 ja juriidilist teksti analüüsides 2.
Tihti ei olegi ilma semantilise infota võimalik otsustada, kas sõna või fraas on nimisõnafraasi koosseisus või ei. Näiteks lauses
Tahtsin suure haamriga mehele pähe lüüa.
on leitud üks nimisõnafraas: [suure haamriga mehele];
peaks küll olema 2 nimisõnafraasi: [suure haamriga] ja [mehele].
Kuid lauses Andsin punase mütsiga lapsele kommi kuulub komitatiivis fraas eestäiendina nimisõnafraasi koosseisu.
3. Partitsiip tükeldab nimisõnafraasi või jääb partitsiiptäiend nimisõnafraasist lihtsalt välja. Seda tüüpi vigu oli juriidilises tekstis 5 ja ilukirjandustekstis samuti 5. Näiteks lausest
kui oli lühendatud tööpäev
on saadud nimisõnafraas [tööpäev], mitte [lühendatud tööpäev]
Ja näiteks lauses:
Lappisin nendest õue piiril oleva oja kaldale meetrikõrguse rinnatise.
on saadud nimisõnafraasid [nendest õue piiril] ja [oleva oja kaldale]; õige oleks aga [nendest] ja [õue piiril oleva oja kaldale]
Need vead olid tingitud vigasest sisendist: lühendatud oli analüüsitud kui _V_ ja oleva ei olnud saanud partitsiibi märgendit.
4. Määrus on ekslikult analüüsitud järeltäiendiks ja arvatud seega nimisõnafraasi koosseisu ilukirjandustekstis 11 juhul. Näiteks lauses
valan seal kõik bensiiniga üle
on leitud nimisõnafraas [kõik bensiiniga], kuid õige oleks [kõik] ja [bensiiniga] eraldi fraasidena.
5. Määrus on ekslikult analüüsitud eestäiendiks ja arvatud seega nimisõnafraasi koosseisu ilukirjandustekstis 6 juhul ja juriidilises tekstis 2 juhul. Näiteks lauses
koostasin kiiruga fiktiivse eelarve
on ESTNP leidnud ühe nimisõnafraasi [kiiruga fiktiivse eelarve], kuigi õige oleks kaks fraasi (määrus ja sihitis): [kiiruga] ja [fiktiivse eelarve].
6. Esineb ka eelnevatele vastupidiseid vigu ees- või järeltäiend võib olla arvatud omaette fraasiks. Eestäiend on nimisõnafraasist eraldatud ilukirjandutekstis 3 juhul ja juriidilises tekstis 2 juhul, järeltäiend ilukirjandustekstis 5 juhul ja juriidilises tekstis 1 juhul. Näiteks fraas [senine ühendus avaliku teega] on analüüsitud kaheks fraasiks [senine ühendus] [avaliku teega].
Enamiku sellistest vigadest põhjustab mitteühene süntaktilise analüüsi väljund. Näiteks viimases näites on süntaksianalüüsil sõna teega jäänud mitteüheseks ja tal on määruse ning ees- ja järeltäiendi analüüsid.
6. Lisad aruandele
Käesolevale aruandele (fail Aruanne2.rtf) on lisatud järgmised failid:
ESTNP.EXE - eestikeelses elektroonilises tekstis nimisõnafraaside tuvastamise programm
GRAMMAR.RLE - süntaksianalüüsi reeglite fail
JUHEND.RTF - programmi ESTNP paigaldamis- ja kasutamisjuhend
LEX.EXE - programm, mis lisab morfoloogiliselt ühestatud sisendtekstile verbide transitiivsust/intransitiivsust näitavad märgendid, kui need puuduvad
LEX.LX - andmebaas, mida kasutab programm LEX.EXE
Näitefailid:
- sisend programmile ESTNP (juriidiline tekst)
- tekstis EKIJ5.CGD tuvastatud nimisõnafraasid
- sisend programmile ESTNP (ilukirjandustekst)
- tekstis TKT0119.CGD tuvastatud nimisõnafraasid
Kirjandus
- Müürisep, K. Eesti keele süntaksianalüsaatorist. Keel ja Kirjandus nr 1, 1998, lk 47 - 56.
- Puolakainen, T. Eesti keele kitsenduste grammatika morfoloogiline ühestaja. Keel ja Kirjandus nr 1, 1998, lk 37 - 46.
- Voutilainen, A. A Short Introduction to NP-tool. http://www.lingsoft.fi/doc/nptool/intro/