Prolog für Linguisten 13. Übungsblatt 12.2.2011 Dieses Übungsblatt ist verpflichtend und wird benotet (48 Punkte + 8 Zusatzpunkte ). Achte besonders auf die Funktionalität des Programms mit verschiedenen Anfragen, aufschlussreiche Kommentare und gute Lesbarkeit. Auch unvollständige Lösungen oder Ansätze können Punkte bringen. Du darfst in allen Aufgaben member/2 und append/3 verwenden, darüber hinaus jedoch keine eingebauten Prädikate (außer das ist explizit erlaubt). Abgabe bitte als eine einzige Prolog-Quelldatei ohne Syntaxfehler, die von Prolog ohne Warnung eingelesen wird, per Email an prolog@there-exists.de Abgabeschluss: Dienstag, 22. Februar 2011 um 23:59 Uhr. 1 Wishtree-otation (3 Punkte) otiere den folgenden Baum als Term im Wishtree-Format: S P VP the man RelS whistling V tunes P pianos 2 erminiererkongruenz Im Bezug auf englische DPn lassen sich Kongruenzrelationen auf zwei Ebenen unterscheiden: 1. DP-interne Kongruenz zwischen erminierer und omen, und zwar im Merkmal numerus: this giraffe ( und stehen im Singular) * this giraffes ( steht im Singular, im Plural) * these giraffe ( steht im Plural, im Singular) 2. Kongruenz auf Satzebene zwischen Subjekt und Verb, ebenfalls im Merkmal numerus (auch im Merkmal person, aber das soll im Folgenden nicht wichtig sein): this giraffe sleeps (Subjekt und Verb stehen im Singular) * this giraffe sleep (Subjekt steht im Singular, Verb im Plural) these giraffes sleep (Subjekt und Verb stehen im Plural) * these giraffes sleeps (Subjekt steht im Plural, Verb im Singular) 1
Bei den meisten nicht-koordinierten DPen stimmen die Kongruenzmerkmale auf diesen beiden Ebenen überein. Um jedoch auch koordinierte DPn wie this giraffe and elephant erfassen zu können, ist es nötig, seperate Kongruenzmerkmale für jede Ebene anzunehmen. Einige Analysen 1 gehen von einer Unterscheidung in concord- und index-merkmale aus: concord-merkmale sind zuständig für die --Kongruenz. Jeder erminierer fordert einen bestimmten concord-num-wert. Jedes omen besitzt einen von seiner Flexion abhängigen concord-num-wert: giraffe den Wert sg, giraffes hingegen pl. Ein erminierer kongruiert mit einer koordinierten ominalphrase in concord-num, wenn er mit jedem der omen in concord-num kongruiert: this giraffe and elephant * this giraffe and elephants / * this giraffes and elephant these giraffes and elephants * these giraffe and elephants / * these giraffes and elephant index-num ist intuitiv in etwa als der natürliche umerus einer Phrase zu verstehen. Koordinierte Pn referieren üblicherweise auf mehrere Individuen. Sie haben als indexnum also den Wert pl. index-num ist relevant für die Kongruenz auf Satzebene. Jedes omen ist für das Merkmal index-num spezifiziert (im ormalfall weicht dieser Wert nicht vom concord-num-wert ab). Jedes Verb fordert einen bestimmten index-num- Wert seines Subjekts: sleeps fordert sg, sleep hingegen pl. Ein Verb kongruiert mit seinem Subjekt in index-num, wenn beide denselben Wert für dieses Merkmal besitzen: Aufgabe: this elephant sleeps / * sleep this giraffe and elephant sleep / * sleeps a) (14 Punkte) Modelliere die oben beschriebenen Kongruenzrelationen mit einer Prolog- DCG. Schreibe dazu bitte Regeln für S, VP (nur intransitive Verben, nur Present Simple!), DP, nicht-koordinierte P und koordinierte P (aus genau zwei koordinierten omen, Verallgemeinerung auf beliebig viele omen erst in Teil c) der Aufgabe). Es genügt, wenn du num-kongruenz modellierst! pers-kongruenz kannst du außen vor lassen. imm bitte folgende DP- und P-Strukturen an: DP DP P P this elephant this giraffe Conj and elephant Das Lexikon soll folgende Wortformen umfassen: the, my, this, these, giraffe, elephant, giraffes, elephants, sleep, sleeps und and. Die Grammatik soll die oben als ungrammatisch markierten Phrasen ebenfalls als ungrammatisch beurteilen und die als wohlgeformt markierten Phrasen akzeptieren. 1 z. B. King & Dalrymple (2004) 2
Beispielanfragen:?- dp(_,[this,giraffe,and,elephant],[]).?- dp(_,[this,giraffe,and,elephants],[]). false.?- s([this,giraffe,and,elephant,sleep],[]).?- s([this,giraffe,and,elephant,sleeps],[]). false. b) (4 Punkte) Füge Informationen über die syntaktische Struktur hinzu, indem du den ichtterminalen und Terminalen jeweils ein zusätzliches Argument gibst, das den jeweiligen Baum enthält. Die Bäume sollen im Wishtree-Format vorliegen, sodass folgende Anfrage eine Visualisierung mit Showtree (hier die Linux/Mac-Variante) liefert.?- s(baum,[my,giraffe,and,elephant,sleep],[]), showtree([baum]). s / \ dp vp / \ det np v / \ my n conj n sleep giraffe and elephant Baum = s/[dp/[det/[-my], np/[n/[-giraffe], conj/[-and], n/[-elephant]]], vp/[v/[-sleep]]]. c) (Bonusaufgabe: 6 Zusatzpunkte) Kannst du deine Grammatik so erweitern, dass die P nicht mehr nur aus zwei koordinierten omen bestehen kann, sondern aus beliebig vielen? Falls ja, tu das. Sollte Prolog hingegen bei irgendeiner Anfrage in eine Endlosrekursion geraten, erkläre, woran das liegt.?- s(_, [the,giraffe,and,elephant,and,elephant,sleep],[]). 3
3 Arithmetische Ausdrücke a) (8 Punkte) Schreibe eine Grammatik, die einfache arithmetische Ausdrücke aus Zahlen zwischen 0 und 9, den Klammern ( und ) sowie den Operatoren +, -, * und / erkennt. Wichtig: Jeder arithmetische Ausdruck muss von Klammern umschlossen werden! Die normale Operatorpräzedenz 2 ( Punkt- vor Strichrechnung ) lassen wir hier außen vor. Beispiele: (1+2) und ((3*4)-5) Für die Grammatik sind diese Ausdrücke dann natürlich in Listenform zu bringen. Weiterhin müssen die Klammern in Hochkommata eingeschlossen werden, damit keine Syntaxfehler entstehen: [ (,1,+,2, ) ] und [ (, (,3,*,4, ),-,5, ) ]. enne deine syntaktische Kategorie für arithmetische Ausdrücke bitte arith_expr.?- arith_expr([ (, (, 3, *, 4, ), -, 5, ) ], []). Tipps: Schreibe nicht sofort eine Prolog-DCG, sondern überlege dir erst einmal in Ruhe, wie sich die Menge aller arithmetischen Formeln definieren lässt (Stichwort: induktive Definition). Wie kann nun diese Definition in eine Grammatik umgesetzt werden? Was sind die Terminale? Schau dir auch noch einmal die Grammatik für aussagenlogische Formeln aus dem letzten Tutorium an. b) (5 Punkte) Erweitere die Grammatik so, dass sie die arithmetischen Ausdrücke auch auswerten kann. Erweitere dazu die DCG um eine Argumentstelle für den Wert des jeweiligen Ausdrucks. Die Berechnung erfolgt bottom-up, d. h. zuerst werden die Terminale ausgewertet, danach die direkt aus den Terminalen zusammengesetzten Ausdrücke, danach wiederum die nächstgrößeren Ausdrücke und so weiter. Du brauchst, um Prolog rechnen zu lassen, das eingebaute Prädikat is/2.?- arith_expr(wert, [ (, (, 3, *, 4, ), -, 5, ) ], []). Wert = 7. c) (Zusatzaufgabe: 2 Punkte) Warum ist es hier so wichtig, dass die Ausdrücke geklammert sind? Was passiert, wenn du die Klammern weglässt? Warum? 4 Übersetzen auf Bäumen (14 Punkte) Schreibe ein Prädikat uebersetzer/2, das einfache deutsche ebensätze (ganz naiv) in englische ebensätze übersetzen kann. Dabei ist uns neben dem Lexikon als einziger Unterschied die Wortstellung wichtig: Betrachten wir nur pronominale Subjekte und Objekte, ergibt sich im Deutschen immer eine SOV-Stellung: dass ich ihn sehe. Im Englischen ist es hingegen SVO: that I see him. Der zu übersetzende Satz soll als Baumterm im Wishtree-Format im ersten Argument gegeben sein, das zweite Argument soll Prolog dann mit einem Wishtree-Baum instantiieren. 2 vgl. http://de.wikipedia.org/wiki/operatorrangfolge 4
?- uebersetzer(cp/[c/[-weil],s/[np/[pron/[-ich]],vp/[np/[pron/[-ihn]],v/[-sehe]]]], Engl). Engl = cp/[c/[-because], s/[np/[pron/[-i]], vp/[v/[-see], np/[pron/[-him]]]]]. Die Regeln, mit denen die Bäume erzeugt werden konnten, sind: CP C S, S P VP, P Pron, VP P V bzw. VP V P. Das Lexikon sollte mindestens folgende Wortpaare umfassen: Deutsch ich sehe kenne ihn dich dass weil Englisch i see know him you that because Am einfachsten ist es wahrscheinlich, für jede Grammatikregel und jeden Lexikoneintrag eine Klausel zu schreiben. Abhängig davon, welche Kategorien Mutter und Tochter des jeweils betrachteten Baumes haben, kommt dann die passende Klausel zum Einsatz. Das Prädikat funktioniert rekursiv. Es zerlegt den Baum, den es als Argument erhält, in seine Bestandteile, übersetzt diese ins Englische und fügt sie in der richtigen Reihenfolge wieder zusammen. Referenzen Tracy Holloway King & Mary Dalrymple: erminer agreement and noun conjunction. Journal of Linguistics, 40 (2004), 69-104. 5