18

Sõnavormid.

Eesti keeles on sõnadel palju morfoloogilisi vorme, näiteks käändsõnadel on viisteist käänet, verbidel - kolm pööret, ainsus, mitmus ja paljud ajavormid. Järgnevas on kirjeldatud, kuidas Prologi võib õpetada analüüsima verbide kindla kõneviisi oleviku ja lihtmineviku vorme; alltoodud programm näitab ka, kuidas kasutatakse Amzi-Prologi sõnade ühendamise primitiivi atom_concat.
Verbi vorm kirjeldab toimingu sooritajat (sooritaja on teada - isikuline; ei ole teada - umbisikuline), sooritamise aega (olevik-minevik-tulevik), rääkija suhet sooritajaga (rääkija ise - esimene pööre, lähedalolev isik - teine, kaugem isik - kolmas) jne. Tavaliselt määrab verbi vormi lõputunnus, näiteks (kindla kõneviisi) oleviku lõputunnused võib kirjeldada predikaadiga tunnus.
Minevikus ainsuse kolmandal pöördel sageli ei ole tunnust (liikus - sõna lõpeb mineviku tunnusega -s) ja mitmuse kolmanda pöörde tunnuseks võib olla -vad asemel -d.

tunnus(me,mitmus,1).
tunnus(te,mitmus,2).
tunnus(vad,mitmus,3).
tunnus(n,ainsus,1).
tunnus(d,ainsus,2).
tunnus(b,ainsus,3).

Verbi analüüsides otsib Prolog sõna lõpust moodi (ainsus, mitmus) ja pööret tunnuse määrava tunnuse ja kontrollib primitiivi atom_concat abil, kas see esineb analüüsitava sõna lõpus; sellega ühtlasi leita kse sõna tüvi (see on sõna ülejäänud osa); seejärel kontrollitakse kas tüve lõpus esineb mineviku tunnus -si või -s. Primitiiv atom_concat ühendab kaks sõna üheks, näiteks atom_concat(loe, me, loeme). Kuna atom_concat oskab antud aatomit osadeks jagada vaid siis, kui nii esimene kui ka teine argument on muutujad, tuleb antud tyve lõpust tunnuse ärajätmiseks veidi "nipitada", s.t. näiteks
atom_concat(Tyvi,me,laulame) asemel tuleb öelda
atom_concat(Tyvi,Tunnus,laulame),Tunnus=me
- tagurdades jõuab Prolog õige osadeks lahutuseni.
Minevikus ainsuse kolmandal pöördel sageli ei ole tunnust, s.t. sõna lõpeb mineviku tunnusega -s (liikus) ja minevikus võib mitmuse kolmanda pöörde tunnuseks olla -vad asemel -d (laulsid), millel sel juhul eelneb mineviku tunnus -si. Kui siinkirjeldatud morfoloogiareegleeglite abil analüüs ei õnnestu, vabandab Prolog oma mitteoskamist.

analyysi(Verb,Aeg,Mood,Isik) :-

tunnus(Tunnus,Mood,Isik),
atom_concat(Tyvi,T,Verb),
T=Tunnus,
aeg(Tyvi,Aeg),
!.
analyysi(Verb,minevik,ainsus,3) :-
atom_concat(_,T,Verb),
T=s,
!.
analyysi(Verb,_,_,_) :-
write('Seda ma veel ei oska'),
nl.

Kui verbi tüve lõpp on -si või (kolmandas pöördes) -s, on verb minevikus, muudel juhtudel olevikus.

aeg(Tyvi, minevik) :-

atom_concat(_,T,Tyvi),
T=si,
!.
aeg(Tyvi, minevik) :-
concat(_,T,Tyvi),
T=s,
!.
aeg(Tyvi, olevik).

Morfoloogilise analüüsi käivitab ja esitab selle tulemused predikaat analyysi.

analyysi(Verb) :-

analyysi(Verb,Aeg,Arv,Isik),
write('Aeg='),
write(Aeg),
nl,
write('Mood='),
write(Arv),
nl,
write('Isik='),
write(Isik),
nl.

Ülesanne
Koosta predikaat, mis analüüsib teatud tüüpi (näiteks jalg, rattas) nimisõna muutevorme, st. leiab käände ja ainsuse/mitmuse.


Küsimused, probleemid:
jaak@cc.ttu.ee

Tagasi loengute sisukorra juurde