Computerlinguistik II, WS 2007/08 Aufgabenblatt 6 -------------------------------------------------------------- Ausgabe: Fr, 14.12.06 Abgabe: D0, 20.12.06 Aufgabe 9 (Generierung von natürlichsprachlichen Ausdrücken) --------- Nach ?- [grammatik]. können wir (außer mit unserem parse/0) auch mit ?- np([Def,Pers,Gen],[Num,Kas],Baum,+Atomliste,[]). Prolog auffordern, zu einer *gegebenen* Atomliste eine Analyse als Nominalphrase zu suchen. Wir wollen aber auch umgekehrt testen können, welche Nominalphrasen die Grammatik *erzeugen* kann. Da die Grammatik unendlich viele Nominal- phrasen erkennt, kann man nicht alle erzeugen lassen. a) Welche Regeln der Grammatik führen dazu, daß es unendlich viele Nominalphrasen gibt? (Genauer: was ist die kleinste Menge von Regeln, die man weglassen muß, damit die Grammatik nur endlich viele Nominalphrasen erkennt?) Punkte 3 b) Wie muß man np/5 aufrufen, damit Prolog eine Atomliste ausgibt, die eine definite Nominalphrase im Nominativ aus zwei Wörtern ist? Punkte 2 Wenn man das testet, erhält man nach einer Reihe von Lösungen eine Fehlermeldung. Welche Grammatikregel verursacht diese Fehlermeldung? Punkte 1 c) Kommentiere diese Grammatikregel nach b) aus und lade mit ?- [grammatik]. alles neu. Schreibe ein Prolog-Programm erzeuge_np/1, das zu einer Zahl N > 0 alle Nominalphrasen (im Nominativ) der Länge N erzeugt, indem es - zuerst eine Atomliste der Länge N erzeugt, die eine Nominalphrase bildet, - dann diese Atome mit Leerzeichen zu einem langen Atom verbindet, - dieses Atom in eine neue Zeile schreibt, - und das solange wiederholt, bis alle Nominalphrasen der Länge N ausgegeben sind. Teste das Programm für kleine N (N=1,2,3,4). Punkte 6 Hinweis: Mache es erst für festes N, sagen wir N=3. Mit length(-Liste,+N) bekommt man eine Liste von N unbelegten Variablen. d) Schreibe ein Programm, das alle Aussagesätze (= definite Sätze in Verbzweitstellung) mit einem Vollverb und Satzlänge 5 erzeugt. Punkte 6 Hinweis: der Unterschied zu c) ist, daß nicht mehr alle Satzregeln durchlaufen werden dürfen. Wie sieht die Struktur der gesuchten Sätze aus, und wie kann man Prolog dazu bringen, nur Sätze mit dieser Struktur zu erzeugen? Aufgabe 10 ---------- Bisher enthaelt die Grammatik 3 Satzregeln fuer einfache Saetze (im Praesens oder Praeteritum Aktiv, 3.Person) mit *transitivem* Vollverb, das die Kategorie v([nom,akk],Form) hat. a) Wie lauten die analogen Satzregeln fuer *intransitive* Vollverben der Kategorie v([nom],Form) (mit entsprechenden Formen)? Welche Analyse(n) erhalten Sie fuer das Beispiel jeder Astronom arbeitet. bei passendem Lexikoneintrag fuer 'arbeitet'? Wieso bekommen Sie zwei Analysen und was kann man dagegen tun? (5 Punkte) Bem. Erweitern Sie die Dateien Grammatik/saetze.pl und Beispiele/testlexikon.pl (oder Kopien davon und Pfadnamen zu Ihren Dateien in grammatiktest.pl), damit beim Laden alte und neue Regeln in Klauseln uebersetzt werden. b) Machen Sie das gleiche fuer einfache Saetze mit einem bitransitiven Vollverb. Damit keine Dativ- oder Genitiv-Objekte eingefuert werden muessen, testen Sie Ihre Regeln mit dem Verb 'nennen' der Kategorie v([nom,akk,akk],Form)) am Beispiel der Astronom nennt den Stern einen Planeten. Alle Vertauschungsmöglichkeiten von Subjekt und Objekten und alle drei Verbstellungen sollte der Parser erkennen! (8 Punkte)