Computerlinguistik II: Phrasenstrukturgrammatiken und Implementation in Prolog
Die Grammatik - als Phrasenstrukturgrammatik
Startsymbol: S
Nichtterminale Symbole: S, NP, VP, EN, AR, N, V
Terminale Symbole: herschel, uranus, der, astronom, entdeckt
Regeln
S -> NP VP
NP-> EN
NP -> ART N
VP -> V NP
Lexikonregeln
EN -> herschel
EN -> uranus
ART -> der
N -> astronom
V -> entdeckt
Eine erste Grammatik - In Prolog
%Regeln
s(SL) :- np(NPL), vp(VPL), append(NPL,VPL,SL).
np(NPL) :- en(NPL).
np(NPL) :- art(ARTL), n(NL), append(ARTL,NL,NPL).
vp(VPL) :- vi(VPL).
vp(VPL) :- v(VL), np(NPL), append(VL,NPL,VPL).
%lexikonregeln
v([entdeckt]).
art([der]).
n([astronom]).
en([herschel]).
en([uranus]).
Möglichkeiten zur Effizienzsteigerung
- append am Anfang der Regel
- Differenzlisten
Differenzlistengrammatik
%Regeln
s(SL,R) :- np(SL,R1), vp(R1,R).
np(NPL,R) :- en(NPL,R).
np(NPL,R) :- art(NPL,R1), n(R1,R).
vp(VPL,R) :- v(VPL,R1), np(R1,R).
%lexikonregeln
v([entdeckt|R],R).
art([der|R],R).
n([astronom|R],R).
en([herschel|R],R).
en([uranus|R],R).
Differenzlistengrammatik - als DCG
Im Prinzip dasselbe wie oben, aber hier fügt der Compiler die Differenzlisten ein
%Regeln
s --> np, vp.
np --> art, n.
np --> en.
vp --> v, np.
%lexikonregeln
v --> [entdeckt].
art --> [das].
n --> [kind].
en ----> [uranus].
en ----> [herschel].
Wenn Sie einen Aufruf starten, sehen Sie, war hier in Wirklichkeit erzeugt wird:
?- s(Satz,[]).
Satz = [das,kind,entdeckt,das,kind]
YES;
...
Kurs-Startseite