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