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


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