Lösungen zum Aufgabenblatt 6 Syntax natürlicher Sprachen Universität München, CIS, WS 2015/16 H. Leiß Abgabetermin: Mi, 2.12.2015 Mit np.pl ist vorläufig np.folien.pl gemeint. Aufgabe 6.1 Erweitere das Lexikon lexikon np.pl und die Grammatik np.pl so, daß auch (einfache) interrogative Nominalphrasen erkannt werden. (a) Füge zu den Pronomina auch Lexikoneinträge für das Interrogativpronomen wer, was (einfach als pron([],[Pers,Gen,Num,Kas])) und für interrogative Demonstrativpronomen (als art([Dekl,Num],[Gen,Kas])) welcher, welche, welches hinzu. Wie muß man das Artmerkmal zu Adjektivdeklination wählen, damit welcher alte Mann, welche alte Frau, welches alte Kind erkannt werden? Wenn Sie für (definite und interrogative) Demonstrativpronomen lieber (weil genauer) eine eigene Wortart dem([Dekl,Num],[Gen,Kas]) einführen wollen, welche Lexikoneinträge und welche Änderung der NP-Regeln brauchen Sie dann, damit die obigen Beispiele und dieser alte Mann, diese alte Frau, dieses alte Kind erkannt werden? (b) Angenommen, wir wollen bei den Nominalphrasen zwischen den bisherigen (in) definiten“ ” Nominalphrasen und den durch die vorigen Erweiterungen erlaubten interrogativen“ Nom” inalphrasen unterscheiden. In welchen Kategorien und Regeln muß man dazu ein Artmerkmal Definitheit“ mit Wert ” def für (in)definite und qu für interrogative Ausdrücke einbauen, damit z.B. er, sie, es, der Mann, eine Frau, dieses Kind als definite Nominalphrase erkannt werden, aber wer, was, welcher Mann, welche Frau, als interrogative Nominalphrase? Lösung von Aufgabe 6.1 1 welches Kind (a) Für das Interrogativpronomen genügen die Einträge % Interrogativpronomen (Interrogatives Personalpronomen) pron([],[3,mask,sg,nom]) pron([],[3,mask,sg,gen]) pron([],[3,mask,sg,dat]) pron([],[3,mask,sg,akk]) --> --> --> --> [wer]. [wessen]. [wem]. [wen]. pron([],[3,neut,sg,nom]) pron([],[3,neut,sg,gen]) pron([],[3,neut,sg,dat]) pron([],[3,neut,sg,akk]) --> --> --> --> [was]. [wessen]. [wem]. [was]. % Interrogative Demonstrativpronomen/Artikel: art([sw,sg],[mask,nom]) art([sw,sg],[mask,gen]) art([sw,sg],[mask,dat]) art([sw,sg],[mask,akk]) art([sw,sg],[fem,nom]) art([sw,sg],[fem,gen]) art([sw,sg],[fem,dat]) art([sw,sg],[fem,akk]) --> --> --> --> --> --> --> --> art([sw,sg],[neut,nom]) art([sw,sg],[neut,gen]) art([sw,sg],[neut,dat]) art([sw,sg],[neut,akk]) art([sw,pl],[-,nom]) art([sw,pl],[-,gen]) art([sw,pl],[-,dat]) art([sw,pl],[-,akk]) --> --> --> --> --> --> --> --> [welcher]. [welches]. [welchem]. [welchen]. [welche]. [welcher]. [welcher]. [welche]. [welches]. [welches] ; [welchen]. % ? [welchem]. [welches]. [welche]. [welcher]. [welchen]. [welche]. % Demonstrativpronomen (als art([ADekl,Num],[Gen,Kas])) art([sw,sg],[mask,nom]) art([sw,sg],[mask,gen]) art([sw,sg],[mask,dat]) art([sw,sg],[mask,akk]) art([sw,sg],[fem,nom]) art([sw,sg],[fem,gen]) art([sw,sg],[fem,dat]) art([sw,sg],[fem,akk]) --> --> --> --> --> --> --> --> [dieser]. [dieses]. [diesem]. [diesen]. [diese]. [dieser]. [dieser]. [diese]. 2 art([sw,sg],[neut,nom]) art([sw,sg],[neut,gen]) art([sw,sg],[neut,dat]) art([sw,sg],[neut,akk]) art([sw,pl],[-,nom]) art([sw,pl],[-,gen]) art([sw,pl],[-,dat]) art([sw,pl],[-,akk]) --> --> --> --> --> --> --> --> [dieses]. [dieses]. [diesem]. [dieses]. [diese]. [dieser]. [diesen]. [diese]. Man könnte die Kategorie dem([ADekl,Num],[Gen,Kas]) bei den obigen Einträgen für welcher/dieser verwenden und müßte dann eine Regel det([Pers,Num,Dekl],[Gen,Kas]) --> dem([Dekl,Num],[Gen,Num,Kas]), {Pers=3}. % dieser, welcher einfügen. Vorausgesetzt wird, daß die Adjektivdeklination in den Lexikoneinträgen auf Dekl=sw gesetzt ist. (b) Wenn man definite und indefinite Nominalphrasen von interrogativen durch ein Artmerkmal unterscheiden will, sollten die Kategorien so aussehen: definitheit(def).% definit oder indefinit definitheit(qu). % interrogativ Die Kategorien sollten zu pron([Def],[Pers,Gen,Num,Kas]), art([Def,ADekl,Num],[Gen,Kas]), np([Def],[Pers,Gen,Num,Kas]) angepaßt werden, natürlich auch in den Regeln. Es ist sinnvoll, von den in/definiten und interrogativen noch die relativierenden Nominalphrasen wie die, deren Kind abzugrenzen. Dann sollte man mindestens definitheit(rel).% relativierend ergänzen; besser wäre aber, wenn man das Genus und den Numerus der Nomen, an die man den Relativsatz anschließen kann, im Definitheitsmerkmal der Nominalphrase mit angibt, also definitheit(rel(Gen,Num)). % relativierend zu Nomen mit Gen,Num und dann bei Sätzen ebenfalls zwischen definiten = Aussagesätzen, interrogativen = Fragesätzen, und relativierenden = Relativsätzen mit einem Artmerkmal Def = def|qu|rel in der Kategorie s([Def,...],Form) unterscheidet. Natürlich müßte man die Regeln von np.pl auch diesbezüglich entsprechend anpassen! Das wird in np2.pl und lexikon np2.pl aber nicht gemacht: ?- parse. Beende die Eingabe mit <Punkt><Return> |: welche Frau. 3 Aufruf: np([_, _, _], [_], _, [welche, ’Frau’], []). Baum: np([3, fem, sg], [nom]) det([3, sg, sw], [fem, nom]) art([sw, sg], [fem, nom]) welche n1([fem], [sw, sg, nom]) n([[], fem], [sg, nom]) cn([fem], [sg, nom]) ’Frau’ Baum: np([3, fem, sg], [akk]) det([3, sg, sw], [fem, akk]) art([sw, sg], [fem, akk]) welche n1([fem], [sw, sg, akk]) n([[], fem], [sg, akk]) cn([fem], [sg, akk]) ’Frau’ Aufgabe 6.2 Die Regeln der Nominalphrasengrammatik np.folien.pl enthielten keine vorangestellten Genitiv-NPs als Determinatoren und keine Regeln zur Koordination von Nominalphrasen mit und und oder. Der Grund war, daß der Prolog-Parser bei linksrekursiven“ ” Regeln wie np --> np, [und], np. oder np --> np ap n, wo die linke Regelseite als linke Konstituente auf der rechten Regelseite auftritt, in eine endlose Suche gerät. In der letzten Übungsstunde und auf dem Lösungsblatt 5 hatten wir vorangestellte Nominalphrasen im Genitiv durch eine Regel % NP mit vorangestellter Genitiv-NP statt Determinator np([3,Gen,Num],[Kas]) --> { member(Kas,[nom,dat,akk]) }, % gen ausschließen wg. Linksrekursion np([Per1,Gen1,Num1],[gen]), { Dekl = ge }, n1([Gen],[Dekl,Num,Kas]). teilweise“ erlaubt: nur Nominalphrasen im Nominativ, Dativ oder Akkusativ dürfen danach ” mit einer Nominalphrase im Genitiv beginnen. Das erlaubt (vgl. Aufgabenblatt 5) des Autors Vorliebe –statt die Vorliebe des Autors–, aber nicht im Genitiv. (Wir erlauben also: des Autors Vorliebe kennen wir, aber verbieten: des Autors Vorliebe erinnern wir uns.) Schreiben Sie analog Regeln, die koordinierte Nominalphrasen teilweise“ erlauben. ” • Am einfachsten ist, für das Genusmerkmal bei der koordinierten Nominalphrase den Wert Gen=(-) zu verlangen, aber für die linke Konstituente einen echten Genuswert. Damit sollten Beispiele wie er und sie, die Kinder und die Frauen, die Kinder oder ich erkannt werden (ohne daß Prolog divergiert). • Mit der obigen Lösung werden aber Beispiele wie ich und die Kinder oder uns und sie nicht erkannt, weil wir bei den Nominalphrasen der ersten Person das Genus Gen=(-) vergeben haben. 4 Wie könnte man die Koordinationsregeln durch Beschränkung der Merkmale formulieren, daß auch einige Fälle, wo die linke Nominalphrase in erster Person ist, erkannt werden? Also die beiden genannten Beispiele, oder sogar ich und wir (aber nicht mehr: ich und ich, was ja auch kaum gebraucht wird). Tip: es könnte nützlich sein, die Merkmal vererbung“ abzuschwächen mit ” % agreeOrNone(+X,+Y,?Z) agreeOrNone(X,Y,Z) :( (X = Y, Z = X) ; % gleichen Wert X,Y an Z vererben (X \= Y, Z = (-)) % sonst an Z den Default - vergeben ). Das ist für Nebenbedingungen { ... } gedacht, die nach den Konstituenten kommt, in denen die Merkmale X,Y belegt werden (Wenn es man es vor den Konstituenten benutzt, scheitert X \= Y immer, und man erzwingt X = Y = Z.) Achtung: Wenn Prolog in eine Schleife gerät, müssen Sie die abbrechen mit Strg C oder Prolog stoppen mit Strg D. Lösung von Aufgabe 6.2 % harmlose NP-Koordination, weil linke Konstituente keine NP: np([Per,Gen,pl],[Kas]) --> [sowohl], np([Per1,Gen1,Num1],[Kas]), [als], [auch], np([Per2,Gen2,Num2],[Kas]), { agreeOrNone(Per1,Per2,Per), agreeOrNone(Gen1,Gen2,Gen) }. % Verhinderung von Linksrekursion durch Merkmalbeschränkung np([Per,-,pl],[Kas]) --> { member(Gen1,[mask,fem,neut]) % linke NP hat echtes Genus, ; Gen1=(-), Per1=1, Per=(-) }, % oder: falls linke NP 1.Person, np([Per1,Gen1,Num1],[Kas]), % soll die gesamte NP Person - haben [und], ([auch];[]), np([Per2,Gen2,Num2],[Kas]), { agreeOrNone(Per1,Per2,Per) }. np([Per,-,Num],[Kas]) --> { member(Gen1,[mask,fem,neut]) ; Gen1=(-), Per1=1, Per=(-) }, np([Per1,Gen1,Num1],[Kas]), [oder], ([auch];[]), np([Per2,Gen2,Num2],[Kas]), { agreeOrNone(Per1,Per2,Per), agreeOrNone(Num1,Num2,Num) }. % % agreeOrNone(+X,+Y,?Z) agreeOrNone(X,Y,Z) :5 ( (X = Y, Z = X) ; (X \= Y, Z = (-)) ). Diese Lösung lehnt Koordinationen wie mich und uns ab. Es kann auch nützlich sein, Hilfsprädikate wie % agree(+X,+Y,-Z) agree(X,Y,Z) :ground(X), ground(Y), % X,Y müssen belegt sein, X = Y, % denselben Wert haben, Z = X. % und Z erbt diesen Wert. % almostAgree(?X,?Y,?Z) almostAgree(X,Y,Z) :( agree(X,Y,Z) ; X =(-), Y = Z ; Y =(-), X = Z ; X =(-), Y =(-) ). zu verwenden, um Merkmalvererbung bzw. -vergleich zu erleichtern. Damit kann man z.B. bei np([Pers,Gen,Num],[Kas]) --> det([Pers,Num,Dekl],[GenD,Kas]), n1([Gen],[Dekl1,Num,Kas]), { almostAgree(Dekl1,-,Dekl), almostAgree(GenD,Gen,Gen) }. sagen, daß der im Lexikoneintrag des det festgelegte Wert Dekl die Adjektivdeklination Dekl1 der n1 vorgibt oder dort der Wert - erlaubt ist, d.h. die n1 kein Adjektiv hat; analog sagt man, daß die das Genus beim det entweder mit dem bei n1 übereinstimmt oder undefiniert, d.h. -, ist. 6
© Copyright 2024 ExpyDoc