Natural Language Processing Semantics II The Lambda Calculus
Natural Language Processing Semantics II • The Lambda Calculus • Semantic Representation • Encoding in Prolog November 2006 Semantics II 1
The Lambda Calculus • The λ-calculus allows us to write down the definition of a function without inventing a special name for it. • We use the notation λx. ϕ where x is a variable marking the argument and ϕ is an expression defining the value of the function at that argument, e. g. λx. x+1. We allow the whole expression to stand in the place of a function symbol. • So (λx. x+1)(3) is a well-formed term that denotes that function applied to the argument 3. November 2006 Semantics II 2
β-Reduction • The rule of β-reduction says that an expression of the form λx. ϕ(a) can be reduced to ϕ{x=a}, i. e. the expression ϕ with all occurrences of x replaced with a. • In this case (λx. x+1)(3) = 3+1. • In the semantics we shall be developing, many intermediate LFs will have the form of propositions with certain parts missing. • These can be modelled as functions over propositions expressed with λ-expressions. November 2006 Semantics II 3
λ-expressions as Partial Propositions • • to walk: λx. walk(x) John: john; Fido: fido λx. walk(x)(john) = walk(john) to kick: λx. λy. kick(x, y)(john) = λy. kick(john, y)(fido) = kick(john, fido) λ-calculus can be used to model “semantic operations” November 2006 Semantics II 4
Rule to Rule Hypothesis: The Sentence Rule • Syntactic Rule: S NP VP • Semantic Rule: [S] = [VP]([NP]) i. e. the LF of S is obtained by "applying" the LF of VP to the LF of NP. • For this to be possible [VP] must be a function, and [NP] the argument to the function. November 2006 Semantics II 5
Parse Tree with Logical Forms S write(bertrand, principia) VP y. write(y, principia) NP bertrand V x. y. write(y, x) writes November 2006 Semantics II NP principia 6
Summary • Leaves of the tree are words. • Words (or lexical entries) are associated with “semantic forms” by the dictionary (or lexicon) • Grammar determines how to combine words and phrases syntactically. • Associated semantic rules determine how to combine respective semantic forms. November 2006 Semantics II 7
Encoding the Semantic System 1. Devise an encoding for logical forms. 2. Associate an encoded λ expression with each constituent. 3. Encode process of β-reduction This can all be done with Prolog! November 2006 Semantics II 8
Encode Logical Forms LF Prolog x ϕ all(X, ϕ’) x ϕ exist(X, ϕ’) &, v, => λx. ϕ X^ϕ’ λx. λy. ϕ X^Y^ϕ’ November 2006 Semantics II 9
Associate an encoded λ expression with each constituent • Reserve an argument position in a DCG rule to hold the logical form encoding. For example, ignoring the particular constraints governing the use of the rule, we might have s(S) --> np(NP), vp(VP). • i. e. sentence with LF S can be formed by concatenating a noun phrase with LF NP and a verb phrase with LF VP. November 2006 Semantics II 10
Encode Process of β-reduction • This is done by means of the predicate reduce(Fn, Arg, Result), which is defined by means of a unit clause as follows: reduce(X^F, X, F). • NB. This predicate only performs a single, outermost reduction. It does not reduce to a canonical form. November 2006 Semantics II 11
A Very Simple DCG that computes Semantics % grammar s(S) --> np(NP), vp(VP), {reduce(VP, NP, S)}. vp(VP) --> v(V), np(NP), {reduce(V, NP, VP)� }. vp(VP) --> v(VP). % lexicon v(X^walk(X)) v(X^Y^hit(X, Y)) np(suzie) np(fido) November 2006 --> --> [walks]. [hits]. [suzie]. [fido]. Semantics II 12
Demo ? - s(LF, [suzie, walks], [ ]). LF = walk(suzie). ? - s(LF, [suzie, kicks, fido], [ ]). LF = kick(suzie, fido). November 2006 Semantics II 13
Execution Trace Call: Exit: Call: Fail: Redo: Call: Exit: Exit: (7) (8) (8) (9) (9) (9) (8) (8) (8) (7) November 2006 s(_G 471, [suzie, walks], []) np(_L 183, [suzie, walks], _L 184) np(suzie, [suzie, walks], [walks]) vp(_L 185, [walks], _L 186) v(_L 224, [walks], _L 225) v(_G 529^walk(_G 529), [walks], []) np(_L 226, [], _L 227) v(_L 224, [walks], _L 225) vp(_L 185, [walks], _L 186) v(_G 529^walk(_G 529), [walks], []) vp(_G 529^walk(_G 529), [walks], []) reduce(_G 529^walk(_G 529), suzie, _G 471) reduce(suzie^walk(suzie), suzie, walk(suzie)) []=[] s(walk(suzie), [suzie, walks], []) Semantics II 14
- Slides: 14