19

Lihtlause struktuur

Lause sisust aru saamiseks tuleb leida lause semantilised (tähenduslikud) osad: aluserühm (alus koos selle täienditega), öeldiserühm e. predikaat (öeldis ja määrused); eesti keeles need tavaliselt esinevadki selles järkekorras.
Et Prolog suudaks lause struktuuri leida, on kõige lihtsam esitada lause sõnade nimistuna. Kogu lauset esitav sonade nimistu saadakse aluserühma ja predikaatti esitavate nimistute ühendamisel süsteemipredikaadi (primitiivi) strcat abil.

analyysi(Lause) :-

aluseryhm(Aluseryhm),
predikaat(Verbiryhm),
strcat(Aluseryhm,Verbiryhm,Lause).

Aluserühm koosneb kas ainult nimisõnast või on selle ees mingi omadussõnaline täiend:

aluseryhm([Sona]) :-

nimisona(Sona).
aluseryhm(Sonad) :-
omadussona(Sona1),
nimisona(Sona2),
strcat([Sona1],[Sona2],Sonad).

Predikaat (öeldis) on kas verb või verb koos sellele järgneva määrsõnaga:

predikaat([Sona]) :-

verb(Sona).
predikaat(Sonad) :-
verb(Sona1),
maarsona(Sona2),
strcat([Sona1],[Sona2],Sonad).

Ja lopuks tuleb kirjeldada sonastik, s.t. (moned) verbid, nimisonad, omadussonad ja määrsonad.

nimisona($poiss $).
nimisona($auto $).
omadussona($suur $).
verb($jookseb $).
verb($kõnnib $).
verb($loeb $).
verb($naerab $).
verb($sõidab $).
verb($jookseb $).
verb($laulab $).
maarsana($kiiresti $).
maarsona($aeglaselt $).

Nüüd võib lasta Prologil genereerida kõik (tema jaoks) struktuurilt korrektsed laused, s.t. esitada päringu:

?- lause(X).

Ülesanne
Koosta predikaat, mis algul analüüsib lihtlaused (leiab aluse, õeldise jne) ja siis moodustab aluse, öeldise jne kohta käiva küsilause:
poiss jookseb -> kes jookseb? mida poiss teeb ? jne


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

Tagasi loengute sisukorra juurde