200 likes | 416 Views
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)
E N D
Semantik und Pragmatik Übung 5 Fragment 3 Lambda-Kalkül Beta-Reduktion Frank Schilder
Einführung • Erweiterung des Fragmentes F3: Relativsätze • Wiewird 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) • 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 Formeldurch 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) like(?,loren) Bond (PN) bond Loren (NP) likes (TV) Loren (PN) like(?,?) loren
Bedeutungen zusammensetzen! Bond likes Loren (S) like(bond,loren) Bond (NP) bond likes Loren (VP) ly like(y,loren) Bond (PN) bond Loren (NP) loren likes (TV) Loren (PN) lxly like(y,x) 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 [npa] [vp b]]) = I([npa]) (I( [vp b])) • Die Semantik der S-> NP VP Regel besagt: • Nehme die Bedeutung der NP (I([npa])) 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 • 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 • 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.
Blackburn/Bos, chapter 2 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 Quellenangaben