Computerlinguistik II: Satzgliedstellung
Fragestellung: Wie bekommen können wir folgende Sätze mit einer einzelnen Regel abdecken
Die Astronomin schenkt dem Studenten den Planeten
Die Astronomin schenkt den Planeten dem Studenten
Den Planeten schenkt die Astronomin dem Studenten
Den Planeten schenkt dem Studenten die Astronomin
Dem Studenten schenkt die Astronomin den Planeten
Dem Studenten schenkt den Planeten die Astronomin
Lösung: wir kodieren den Verbrahmen als Liste
%Regeln
s -->
np(Kasus1),
v3(Rahmen),
{permutation(Rahmen,[Kasus1,Kasus2,Kasus3])},
np(Kasus2),
np(Kasus3).
%Geschweifte Klammern=normaler Prologaufruf: ausgeschrieben war das:
/*
s(L1,Ende) :-
np(Kasus1,L1,L2),
v3(Rahmen,L2,L3),
permutation(Rahmen,[Kasus1,Kasus2,Kasus3]),
np(Kasus2,L3,L4),
np(Kasus3,L4,Ende).
*/
np(Kasus) --> art(Kasus,Genus), n(Kasus,Genus).
%lexikonregeln
v3([nom,dat,akk]) --> [schenkt].
art(nom,mask) --> [der].
art(akk,mask) --> [den].
art(dat,mask) --> [dem].
art(nom,fem) --> [die].
art(akk,fem) --> [die].
art(nom,neut) --> [das].
art(akk,neut) --> [das].
n(nom,mask) --> [student].
n(dat,mask) --> [studenten].
n(nom,mask) --> [planet].
n(akk,mask) --> [planeten].
n(dat,mask) --> [planeten].
n(nom,neut) --> [gestirn].
n(akk,neut) --> [gestirn].
n(nom,fem) --> [astronomin].
n(akk,fem) --> [astronomin].
Wir wollen jetzt noch erreichen, dass Verb und Nominativ-NP im Numerus kongruieren. Dazu kodieren wir die NP-Merkmale als Liste. Wenn ein Hilfsverb vorhanden ist, muss das Hilfsverb im Numerus mit der Nominativ-NP kongruieren, doch der Rahmen kommt vom Vollverb.
%Regeln
s -->
np(MM1),
v3(finit,_,Rahmen),
{permutation(Rahmen,[MM1,MM2,MM3])},
np(MM2),
np(MM3).
s -->
np(MM1),
hv(Num),
np(MM2),
np(MM3).
v3(partizip,Num,Rahmen).
{permutation(Rahmen,[MM1,MM2,MM3])},
np(MM) --> art(MM), n(MM).
%lexikonregeln
%Der Verbrahmen enthält die Liste der Merkmale, wobei nur der Kasus relevant ist
% bei den Merkmalen für die Nominativ-NP wird auch der Numerus spezifiziert.
v3(finit,sing,[[nom,sing|_],[dat|_],[akk|_]]) --> [schenkt].
%Kopiere den Numerus in den Verbrahmen
v3(partizip,Num,[[nom,Num|_],[dat|_],[akk|_]]) --> [geschenkt].
hv(sing) --> hat.
hv(plu) --> haben.
art([nom,sing,mask|_]) --> [der].
art([akk,sing,mask|_]) --> [den].
art([dat,sing,mask|_]) --> [dem].
art([nom,sing,fem|_]) --> [die].
art([akk,sing,fem|_]) --> [die].
art([nom,sing,neut|_]) --> [das].
art([akk,sing,neut|_]) --> [das].
art([nom,plu|_]) --> [die].
art([akk,plu|_]) --> [die].
art([dat,plu|_]) --> [den].
n([nom,sing,mask|_]) --> [student].
n([dat,sing,mask|_]) --> [studenten].
n([nom,plu,mask|_]) --> [studenten].
n([dat,plu,mask|_]) --> [studenten].
n([nom,sing,mask|_]) --> [planet].
n([akk,sing,mask|_]) --> [planeten].
n([akk,plu,mask|_]) --> [planeten].
n([dat,sing,mask|_]) --> [planeten].
n([nom,sing,neut|_]) --> [gestirn].
n([akk,sing,neut|_]) --> [gestirn].
n([nom,sing,fem|_]) --> [astronomin].
n([akk,sing,fem|_]) --> [astronomin].
%Hilfsprädikate
permutation([],[]).
permutation(L,[K|R]) :-
streiche(K,L,L1),
permutation(L1,R).
streiche(Kopf,[Kopf|Rest],Rest).
streiche(X,[Kopf|Rest],[Kopf|Rest1]) :-
streiche(X,Rest,Rest1).
Kurs-Startseite
Übersicht Begleitmaterial