Computerlinguistik II, WS 2004/05 Aufgabenblatt 7 -------------------------------------------------------------- Ausgabe: Mi, 10.11.07 Abgabe: Di, 16.1.07 Erinnnerung: ----------- Am Di, 16.1. beginnt der Kurs um 14.00 Uhr und endet um 15.15 Uhr! Aufgabe 11 (Formaler Umgang mit Lambda-Termen. Dabei seien ---------- a,b,c Konstante, x,y,z Variable, paarweise verschieden) a) Rechnen Sie nach der formalen Definition von t[x/s] (Folie S.119) schrittweise die folgenden Ersetzungen aus: 1. lambda x (y * (x * a)) [y/(y * lambda z (z * y))] Punkte 1 2. lambda x (y * (x * a)) [x/(y * lambda z (z * b))] Punkge 1 3. lambda x (y * (x * a)) [y/(x * lambda z (z * y))] Punkte 1 4. lambda x (y * (x * lambda y (y * x))) [y/(x * lambda z (z * y))] Punkte 2 5. (x * lambda x (y * x)) [x/(y*x)] Punkte 1 b) Vereinfachen Sie die folgenden Lambda-Terme schrittweise nach den Reduktionsregeln (S. 121 ff.). Zeigen Sie die nötigen Beta-Reduktions- schritte, aber schreiben Sie bei den Umbenennungen (Alpha-Reduktionen) einfach das Ergebnis hin. 1. lam(X, lam(Y,Y*X)) * X Punkte 1 2. lam(X, lam(Y,Y*X)) * Y Punkte 1 3. lam(X, lam(Y,Y*X)) * Z Punkte 1 4. ((lam(X, lam(Y,Y*X)) * U) * V) * W Punkte 2 5. (lam(X, lam(Y, Y*X)) * a) * lam(X, X*b) Punkte 3 6. lam(X,(lam(X, lam(Y, Y*X)) * X) * a) Punkte 3 7. lam(X,X*lam(Y,X*(Y*a))) * lam(Z,(b*X)*(Z*Y)) Punkte 4 Aufgabe 12: ---------- Unser Programm lambda:beta/3 für die Vereinfachung von Lambda-Termen lam(X,R)*S macht vor der Einsetzung von S in R eine Umbennenung der durch Lambda "gebundenen" Variablen von lam(X,R), aber keine Umbennenung der durch die Quantoren "all" und "ex" gebundenen. Daher erhalten wir z.B. (interne Variablen _G148 von Hand ersetzt) ?- normalize(lam(P,all(Y,P*Y => beobachtet(X,Y))) * lam(Z,ex(Y,umkreist(Z,Y))), Normalform). Normalform = all(Y, ex(Y, umkreist(Y, Y))=>beobachtet(X, Y)) und das ist offensichtlich falsch: die Normalform sollte all(A, ex(B, umkreist(A, B))=>beobachtet(X,A)) lauten. Können Sie das Programm der beta- und alpha-Reduktion so ändern, daß auch die all- und ex-quantifizierten Variablen richtig behandelt werden? Was müssen Sie wie ändern? Punkte 4 Aufgabe 13 ---------- Nochmal zur Semantik: Wir wollen die PL-Formel zu einer einfachen NL-Aussage so berechnen: 1. eine Nominalphrase wird aus der NL-Aussage entnommen, an ihrer Stelle durch eine Individuenvariable ersetzt: (... NP ...) |-> (... X ...) 2. Aus der Formel (... X ...) machen wir ein Prädikat: (... X ...) |-> lam(X,(... X ...)) 3. Die NP-Bedeutung SemNP wird auf dieses Prädikat angewendet (nicht umgekehrt!): SemNP * lam(X, (... X ...)) 4. Dazu muß die NP-Bedeutung ein Lambda-Term der Form SemNP := lam(P, (....P*Y....)) werden, die aus Prädikaten P mit Hilfe der Anwendung P*Y auf Individuen eine PL-Formel erzeugt. Auf den Folien ist die Semantik von NP's so definiert, daß wir erhalten: NP SemNP ---------------------------------------------------------- 4.' Kepler |-> lam(P,P*kepler) der Uranus |-> lam(P,P*uranus) der Astronom Kepler |-> lam(P,astronom(kepler) & P*kepler) Führen Sie 1.-3. mit einem intransitiven Verb an den Beispielen a) Kepler arbeitet. b) der Astronom Kepler arbeitet. unter Verwendung von 4.' durch und vereinfachen Sie den entstehenden Ausdruck (von Hand). Punkte 4 (Na ja, in 1. schreiben Sie statt (X arbeitet) besser arbeitet(X).)