Semantik und Pragmatik Übung 5 Fragment 3 Lambda-Kalkül Beta-Reduktion Frank Schilder
Einführung Erweiterung des Fragmentes F3: Relativsätze Wie wird die semantische Information kompositionell erstellt? Vom Satz zur Prädikatenlogik: Bond likes Loren. like(bond,loren) Einführung Lambda-Kalkül: Gebundene Umbenennung Beta-Reduktion Implementation des Kalküls.
Struktur der Übung Fragment F3 Motivation Lambda-Kalkül Formale Spezifikation des Lambda-Kalkül: Abstraktion Applikation Besprechung des Substitutionsansatzes: Beta-Reduktion Umbenennung der Variable
Fragment 3 Erweiterung des Fragments (frag3.pl) Beispielsatz: Nom -> Nom RS RS -> RNP VP RNP -> RPrN RprN -> who Beispielsatz: A man who is boring likes Loren. aber nicht: Loren who is cute likes a man.
Bausteine Der Turm besteht aus Bausteinen. Die Bausteine besitzen unter- schiedliche Funktionen. Die Bausteine müssen entspechend ihrer Funktion zusammenpassen. Der Baumeister erstellt einen Konstruktionsplan. Ein Turm entsteht nur, wenn die Bausteine sinnvoll zusammengesetzt werden!
Lambda-Kalkül Semantischen „Bausteine“ der Sprache spezifizieren. Verschiedene Bedeutungstypen bezeichnen. Das Zusammenspiel der Bausteine formal und systematisch beschreiben. Kompositionalitätsprinzip: Der Sinn des gesamten Satzes ergibt sich aus den Bedeutungen der Einzelwörter.
Bestandteile des Kalküls: Abstraktion Abstraktion: Mit dem Lambda-Operator (l) wird über eine Formel abstrahiert: l x [l y [like‘(x,y)]] l P [l x [ÿP(x)]] Der „Baustein“ kann flexibel in verschiedene Kontexte eingebaut werden. Die Funktion des Ausdrucks unterliegt bestimmten Beschränkungen (welchen?)
Bestandteile des Kalküls: Applikation Applikation: Ein Ausdruck kann auf einen Lambda-Ausdruck appliziert werden: l x [ÿboring‘(x)] (loren) = ? Anweisung: Nimm x und ersetze alle Vorkommnisse von x in der Formel durch loren! Zwei Bausteine werden zusammengesetzt und ergeben einen komplexen Bestandteil des Gesamtgebäudes.
Bedeutung erfassen= Bausteine zusammensetzen? Bond likes Loren (S) like(bond,loren) Bond (NP) likes Loren (VP) Bond (PN) like(?,loren) bond Loren (NP) likes (TV) like(?,?) Loren (PN) loren
Bedeutungen zusammensetzen! Bond likes Loren (S) like(bond,loren) Bond (NP) bond likes Loren (VP) Bond (PN) ly like(y,loren) bond Loren (NP) loren likes (TV) lxly like(y,x) Loren (PN) loren
Abstraktion in PROLOG Der Lambda-Operator wird als zweistelliges Prädikat in PROLOG dargestellt: l x[l y [like‘(x,y)]] lambda(X,lambda(Y,like(X,Y)) aber... l P [l x [ÿP(x)]] lambda(P,lambda(X,~P(X))) geht nicht, da ein Prädikat nicht als Variable dargestellt werden kann... Lösung über Applikation
Applikation in PROLOG In PROLOG wird die Ausführung der funktionalen Applikation zuerst »eingefroren«! Erst Repräsentation bilden und dann vereinfachen! Applikation markieren mit @ Z.B. l x [ÿboring‘(x)] (loren) ergibt lambda(X,~boring(X)) @ loren appl(Functor,Argument,Functor @ Argument).
Semantikeinträge Bedeutungskonstitutionsregel aus der Vorlesung: I([s [np a] [vp b]]) = I([np a]) (I( [vp b])) Die Semantik der S-> NP VP Regel besagt: Nehme die Bedeutung der NP (I([np a])) und der VP (I( [vp b])) und appliziere die VP-Bedeutung auf die NP-Bedeutung In PROLOG wird die Grammatikregel erweitert: s(NP@VP) ---> np(NP),vp(VP).
Semantische Bedeutung in PROLOG ableiten Bond likes Loren (S) lambda(R,R@bond)@lambda(Q,lambda(X,Q@lambda(Y, like(X,Y))))@lambda(P,P@loren) Bond (NP) lambda(R,R@bond) likes Loren (VP) lambda(Q,lambda(X,Q@ lambda(Y,like(X,Y))))@ lambda(P,P@loren) Bond (PN) bond lambda(P,P@loren) likes (TV) Loren (PN) lambda(Q,lambda(X,Q@ lambda(Y,like(X,Y)))) loren
Substitutionsansatz Erfordernisse für eine korrekte Umsetzung des Lambda-Kalküls: Beta-Reduktion Ersetzen der jeweiligen Argumentausdrücke Protokollierung der freien und gebundenen Variablen in der Formel Definition eines Beta-Reduktions-Prädikats
Lambda-Konversation Ein »Konversations«-Prädikat ist erforderlich: alle Argumentausdrücke innerhalb des Skopus des Lambda-Operators ersetzt und gleichzeitig alle gebundenen und freien Variablen der Formel überwacht. Das Prädikat betaConvert/2 erhält einen »eingefrorenen« Lambda-Ausdruck und gibt die reduzierte Formel zurück.
Beta-Konversation X wird durch Arg ersetzt in der Formel betaConvert(Var,Result):- var(Var), !, Result=Var. Variablen können nicht weiter reduziert werden. betaConvert(Functor @ Arg,Result):- compound(Functor), betaConvert(Functor,lambda(X,Formula)), !,substitute(Arg,X,Formula, BetaReduced), betaConvert(BetaReduced,Result). Komplexe Formeln werden weiterreduziert X wird durch Arg ersetzt in der Formel
Beta-Konversation II Formel wird in Teilformeln zerlegt. betaConvert(Formula,Result):- compose(Formula,Functor,Formulas), betaConvertList(Formulas,ResultFormulas), compose(Result,Functor,ResultFormulas). Formel wird in Teilformeln zerlegt. Ein Listen-Prädikat betaConvertList/2 ruft die Teilformeln mit betaConvert/2 auf.
Zusammenfassung Fragmenterweiterung F3: Relativsätze Das Lambda-Kalkül erlaubt die genaue Spezifikation von einzelnen semantischen Lexikoneinträgen. Ein Substitutionsansatz für die Umsetzung des lambda-Kalküls in PROLOG: Applikation wird »eingefroren« Beta-Konversation durchläuft die Formel und reduziert den Ausdruck.
Quellenangaben Blackburn/Bos, chapter 2 Dienstprogramme: Pereira/Shieber, pp.91 Systemprogramme: mainLambda.pl betaConversion.pl frag3.pl lexf3.pl lcparserII.pl % left-corner parser % angepasst auf % Fragment 3 Dienstprogramme: semMacrosLambda.pl readLine.pl comsemPredicates.pl