LING 581: Advanced Computational Linguistics Lecture Notes April 19th
Semantic Grammars Use slides from course LING 324 – Introduction to Semantics Simon Frasier University, Prof. F.J. Pelletier http://www.sfu.ca/~jeffpell/Ling324/fjpSlides4.pdf we’re computational linguists, so we’re going to implement the slides
Syntax fjpSlides4.pdf Slide 3
Syntax We already know how to build Prolog grammars See executive summary http://www.swi- prolog.org/pldoc/doc_for?object=section(2,'4.12',swi('/doc/Manual/DCG.html'))
Syntax Step 1: let’s build the simplest possible Prolog grammar for this fjpSlides4.pdf Slide 4
Simplest possible grammar psg1.pl Excluding (2b) from previous slide for the time being … Examples (3), (4) and (5) from two slides back
Syntax Step 2: let’s add the parse tree component to our grammar … Recall: grammar rules can have extra arguments: Parse tree Implement agreement etc.
Syntax Note: on handling left recursion in Prolog grammar rules techniques: use a bottom-up parser rewrite grammar (left recursive -> right recursive – last semester) or use lookahead (today’s lecture) lookahead is a dummy nonterminal that does not contribute to the parse, it is a “guard” that prevents rule from firing unless appropriate lookahead succeeds if it can find a conjunction in the input and marks it (so it can’t find it twice)
Grammar: version 2 psg2.pl
Grammar: version 2
Grammar: version 2 Examples (3), (4) and (5) again from slide 9
Grammar: version 2 Examples (6) and (7) from slide 9 Just syntax, but we'll need to produce a semantic parse (instead)
Semantics We want to obtain a semantic parse for our sentences that we can “run” (i.e. evaluate) against the Prolog database (i.e. situation or possible world). So the semantic parse output should be valid Prolog code (that we can directly call) Prolog language support we'll need: call(Goal) Goal is any query we type at the command line member(X,List) setof(V,Goal,Set) Set is implemented as a list
setof/3 See Prolog built-in: http://www.swi- prolog.org/pldoc/doc_for?object=section(2,'4.29',swi('/doc/Manual/allsolutions.html')) Prolog built-in:
setof/3 Example:
member/2 See http://www.swi-prolog.org/pldoc/man?predicate=member%2F2
Semantics fjpSlides4.pdf Slide 7
Semantics fjpSlides4.pdf Slide 8
Semantics fjpSlides4.pdf Slide 9
Semantics fjpSlides4.pdf Slide 10
Semantics: Implementation Desired implementation: The extra argument returns a Prolog query X that can be evaluated against the current database (situation) Note: we are bypassing the (explicit) construction of the syntax tree Imagine if the Penn Treebank was labeled using a semantic representation
Semantics: Implementation Let’s write the semantic grammar to handle “Jack is hungry” first, let’s introduce a bit of notation (lambda calculus) λ = function λx.x+1 denotes a function that takes an argument x and computes value x+1 (a period separates the argument from the function body) (λx.x+1)(5) means apply 5 to the lambda function substitute 5 in place of x and evaluate answer = 6
Semantics: Implementation Syntax: setof(X,hungry(X),S), member(jack,S) jack setof(X,hungry(X),S)
Semantics: Implementation Semantic grammar:
Semantics: Implementation Semantic grammar: Two possible worlds
Semantics: Implementation More examples of computation: fjpSlides4.pdf Slide 10
Semantics: Implementation More examples of computation:
Semantics: Implementation More examples of computation:
Semantics fjpSlides4.pdf Slide 11
Semantics: Implementation Scope of negation: wide or narrow narrow wide
Grammar: revised sg2.pl