Lösungen zum Aufgabenblatt 11 Syntax natürlicher Sprachen

Werbung
Lösungen zum Aufgabenblatt 11
Syntax natürlicher Sprachen
Universität München, CIS, WS 2015/16
Hans Leiß
Abgabetermin: Mi, 27.01.2016
Aufgabe 11.1 Die Metaregel zur Erzeugung von Regeln für einfache Sätze aus metargeln.pl
erzeugt nur Sätze im Aktiv, Indikativ und nur für die Satztempora praes, perf, fut1. (Im
Lösungsblatt zu Aufgabe 9 vom WS 2010/11, siehe Kursseite des WS 2015/16, wird nochmal
erklärt, wie die Metaregel funktioniert.)
(a) Was muß man in metaregeln.pl ergänzen, damit auch Satzregeln für Sätze im Präteritum
oder Plusquamperfekt erzeugt werden? (Das ist sehr einfach!) Das Lexikon lexikon-v.pl
enthält für einige Verben verschiedener Arten den Infinitiv, das Partizip 2 (undekliniert),
und die finiten Formen für 3.Sg.Indikativ Präsens und Präteritum.
Was mussten Sie in metaregeln.pl ändern, und was sind die Bäume zu den Beispielen
Maria glaubte es, dass der Hund schlief und hatte der Hund ihn gebissen ?
(Bem. Weil prädikatsteile/8 nur einfache infinite Verbformen in der linken Klammer
vorsieht, keine Listen, müßte man für Futur 2 oder Modalverben mehr ändern, um die
ganzen Tabellen zur Felderbesetzung der Vorlesungsfolien implementieren zu können.)
(b) Warum werden für Maria glaubt, dass der Hund schläft vier Analysen gefunden - ist
das ein Fehler, den man einfach beheben kann, oder ergibt sich das aus der Verteilung der
Konstituenten auf die Satzfelder? (Mit Korrelat es gibt es nur eine Analyse.)
(c) Ergänzen Sie ein Verb mit Dativ-Objekt in lexikon-v.pl und Analysieren Sie einen Satz
mit Dativ-Objekt (ein Pronomen, da wir komplexe Nominalphrasen nur im Nominativ und
Akkusativ programmiert haben!) in mehreren Stellungsvarianten.
Wenn Sie ein dreistelliges Verb mit Komplementrahemn [nom,dat,akk] einbauen, müssen
Sie diesen Rahmen zur Erzeugung der Satzregeln in komplementrahmenauswahl/1 und
ggf. eine Vertauschungsmöglichkeit in anordnung/2 ergänzen.
(d) Wie könnte man die Metaregel für einfache Sätze so ändern, daß auch Satzregeln für
negierte Sätze erzeugt werden? (Oder allgemeiner Sätze mit einem Adverb).
Hinweis: Man muß das Negationsadverb nicht als Terminal [nicht] an der richtigen Stelle in die Konstituentenliste einbauen, oder allgemeiner (optional) ein Adverb
adv(Art,[]). Dazu kann man (im Präsens und Präteritum), bevor die Abkürzungen ex”
pandiert“ werden, –je nach Verbstellung– vor oder hinter vfin ein adv zwischen die Komplementabkürzungen einbauen, und eine passende Klausel in expandCat einbauen.
1
Lösung von Aufgabe 11.1
(a) Satzregeln für das Präteritum und Plusquamperfekt werden erzeugt, wenn man analog zu
den Klauseln
% praedikatsteile/8: belegt VFIN,VINF
praedikatsteile(v([Rahmen],[Pers,Num,praes]),[],
_Vst,Rahmen,Pers,Num,praes,aktiv).
praedikatsteile([hat],v([Rahmen],[part2]),
_Vst,Rahmen,3,sg,perf,aktiv).
noch zwei weitere Fälle in praedikatsteile/8 einbaut. Erstens den Fall, in dem statt
praes einfach praet bei den Verbformen und als Satztempus verwendet wird:
praedikatsteile(v([Rahmen],[Pers,Num,praet]),[],
_Vst,Rahmen,Pers,Num,praet,aktiv).
Zweitens den Fall, wo das Satztempus statt perf jetzt plqm lautet, und wo als finiter
Verbteil (für 3.Person Singular) das Hilfsverb hatte eingesetzt wird:
praedikatsteile([hatte],v([Rahmen],[part2]),
_Vst,Rahmen,3,sg,plqm,aktiv).
Was könnte man tun, wenn man nicht nur Satzregeln für Subjekte in 3.Person Singular
erhalten will, und was, wenn auch Satzregeln für Verben mit Perfekthilfsverb sein erzeugt
werden sollen?
(b) Wenn ich die Satzregeln neu erzeuge (nach Einbauen der Negation, was keine Rolle spielen sollte), bekomme ich mit parse/0 fünf und mit parsed/0 zwei Analysen für Maria
glaubt, daß der Hund schläft.. Der Unterschied liegt daran, daß in parsed/0 ein
setof benutzt wird, wodurch Duplikate entfernt werden. Die beiden verschiedenen Analysen unterscheiden sich im Verbstellungsmerkmal, das einmal vz und einmal vl lautet.
Da im Präsens der rechte (infinite) Verbteil leer ist, gibt es bei vz zwischen den Konstituentenanordnungen [nom,vfin,daß,vinf], wo der Objektsatz im Mittelfeld steht, und
der Anordnung [nom,vfin,vinf,daß], wo er im Nachfeld steht, nach der Expansion der
Abkürzungen keinen Unterschied, da vinf leer wird und keine Konstituenten liefert. Daraus erhalten wir mindestens zwei (gleiche) Analysen als Satz mit Verbzweitstellung. Die
Regel für den Satz in Verbletztstellung wird aus [nom,vinf,vfin,daß] erzeugt (was man
über nachfeld/3 aus [nom,daß,vinf,vfin] bekommt); auch hier wird vinf im Präsens
leer, aber man bekommt die Konstituentenfolge nom,vfin,daß nur auf eine Weise, also
nur eine Analyse.
Wenn man dagegen Maria glaubt es, daß der Hund schläft, analysiert, wird durch
% daß-Sätze ins Nachfeld, ergänze daß-Korrelat:
nachfeld([daß|ArgsPraed],[kor(daß)|ArgsPraed],[daß]).
2
eine Grammatikregel erzeugt, die im Mittelfeld das Korrelat und im Nachfeld den daß-Satz
vorsieht, d.h. die Konstituentenfolge wird aus [nom,vfin,kor(daß),vinf,daß] erzeugt,
was einen Satz mit Verbzweitstellung ergibt. Die Satzregel für einen Verbletztsatz mit Korrelat wird aus [nom,kor(daß),vinf,vfin,daß] erzeugt, was nur die andere Wortstellung
(weil) Maria es glaubt, daß der Hund schläft erlaubt.
(Das erklärt, warum man die Analyse als vz-Satz ohne Korrelat zweimal bekommt, und
warum der Satz ohne Korrelat auch ein vl-Satz ist; warum es weitere Duplikate gab, sodaß
parse/0 zu fünf Analysen kommt, sehe ich im Moment auch nicht.)
(c) Man kann einfach in lexikon-v.pl z.B. einfügen:
% Verb mit Dativobjekt:
v([[nom,dat]],[3,sg,praes]) --> [aehnelt] ; [ähnelt].
v([[nom,dat]],[3,sg,praet]) --> [aehnelte] ; [ähnelte].
v([[nom,dat]],[inf])
--> [aehneln] ; [ähneln].
v([[nom,dat]],[part2]) --> [geaehnelt] ; [geähnelt].
Damit wird der Hund ähnelt ihm oder daß der Hund ihm ähnelt erkannt, mit zwei
Analysen, da ihm mit Genus Maskulinun und Neutrum im Lexikon steht. (Aber komplexe
Nominalphrasen im Dativ waren nicht programmiert, weshalb daß er dem Hund ähnelt
nicht erkannt wird.)
(d) Man muß sich zuerst an Beispielen überlegen, wo im Deutschen das Negationsadverb nicht
steht, und zwar bei verschiedenen Verbstellungen:
praes,ve
• [frißt] der Hund ihn nicht [auf ] : Squ
perf ,ve
• [hat] der Hund ihn nicht [aufgefressen] : Squ
fut1 ,ve
• [wird] der Hund ihn nicht [auffressen] : Squ
• der Hund [frißt] ihn nicht [auf ] : S praes,vz
• der Hund [hat] ihn nicht [aufgefressen] : S perf ,vz
• der Hund [wird] ihn nicht [auffressen] : S fut1 ,vz
• der Hund ihn nicht [] [auffrißt] : S praes,vl
• der Hund ihn nicht [aufgefressen] [hat] : S perf ,vl
• der Hund ihn nicht [auffressen] [wird] : S fut1 ,vl
Man sieht, daß das Negationsadverb immer direkt vor dem infiniten Prädikatsteil steht.
Deswegen fügen wir in verbstellung(+Rahmen,+Vst,-RahmenPraed), wo je nach Verbstellung die Verbteile vfin und vinf zwischen die Elemente des (permutierten) Komplementrahmens Rahmen eingestreut werden, weitere Möglichkeiten ein, bei denen vor vinf
noch eine Abkürzung neg für das Negationsadverb eingefügt wird. Damit erhalten wir:
% Besetzung der Satzklammern durch Verbteile:
verbstellung(Args,ve,ArgsPraed) :append([vfin|Args],[vinf],ArgsPraed).
verbstellung(Args,ve,ArgsPraed) :append([vfin|Args],[neg,vinf],ArgsPraed).
3
verbstellung([Arg|Args],vz,ArgsPraed) :append([Arg,vfin|Args],[vinf],ArgsPraed).
verbstellung([Arg|Args],vz,ArgsPraed) :append([Arg,vfin|Args],[neg,vinf],ArgsPraed).
verbstellung(Args,vl,ArgsPraed) :append(Args,[vinf,vfin],ArgsPraed).
verbstellung(Args,vl,ArgsPraed) :append(Args,[neg,vinf,vfin],ArgsPraed).
Diese Abkürzung muß mit Hilfe von expandiereCat in eine Kategorie expandiert werden,
was vor dem Default-Fall eingefügt wird:
...
expandiereCat(neg,adv([neg],[])) :- !.
expandiereCat(X,X) :- !. % (Vereinfachung)
Da Adverbien keine Formvariation haben, sind bei adv(Art,Form) keine Formmerkmale
vorgesehen. Bei den Artmerkmalen verwenden wir neg für das Negationsadverb, weitere
Merkmalwerte wie kaus oder temp könnten für Pronominaladverbien wie deshalb oder
dann verwendet werden. (Und ggf. Unterscheidungsmerkmale def,qu,rel für definite,
interrogative und relativierende Adverbien.)
Scließlich brauchen wir noch eine DCG-Regel adv([neg],[]) --> [nicht]. Da adv(Art,Form)
nur in den Satzregeln verwendet wird, lassen wir diese Regel in metargeln.pl aus einer
Metaregel adv([neg],[]) -+-> [nicht]. durch die Beseitigung der Metaregeln erzeugen. Wenn man dann mit ?- [metaregeln], ersetze metaregeln. die Datei satzregeln.pl
neu erzeugt und durch ?- [np]. die Grammatik neu lädt, kann man z.B.
?- parse. Maria hatte es nicht geglaubt, daß der Hund sie nicht beißt.
Baum:
s([def], [vz, ind])
np([3, fem, sg], [nom])
pn([fem], [nom]) ’Maria’
hatte
kor(daß) es
adv([neg], []) nicht
v([[nom, daß]], [part2]) geglaubt
s([daß], [vl, ind])
daß
np([3, mask, sg], [nom])
det([3, sg, sw], [mask, nom])
art([sw, sg], [mask, nom]) der
n1([mask], [-, sg, nom])
n([[], mask], [sg, nom])
cn([mask], [sg, nom]) ’Hund’
np([3, fem, sg], [akk])
pron([], [3, fem, sg, akk]) sie
adv([neg], []) nicht
v([[nom, akk]], [3, sg, praes]) beißt
4
Herunterladen