0% found this document useful (0 votes)
68 views

LING 388: Language and Computers: Sandiway Fong

This document summarizes a lecture on language and computers. It discusses administering homework 3, reviewing grammar rules and doing an exercise. Last time they covered grammars, derivation, and Definite Clause Grammar in Prolog. Prolog translates DCG rules into Prolog rules. The lecture demonstrates a grammar derivation in Prolog and discusses Prolog grammar rules. It provides a worked exercise to write rules for two sentence parses. The document concludes with discussing Prolog terms and an exercise using the =.. predicate to construct terms.

Uploaded by

Sylver
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views

LING 388: Language and Computers: Sandiway Fong

This document summarizes a lecture on language and computers. It discusses administering homework 3, reviewing grammar rules and doing an exercise. Last time they covered grammars, derivation, and Definite Clause Grammar in Prolog. Prolog translates DCG rules into Prolog rules. The lecture demonstrates a grammar derivation in Prolog and discusses Prolog grammar rules. It provides a worked exercise to write rules for two sentence parses. The document concludes with discussing Prolog terms and an exercise using the =.. predicate to construct terms.

Uploaded by

Sylver
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19

LING 388: Language and

Computers
Sandiway Fong
Lecture 8

Adminstrivia
Review of grammar rules
One worked exercise
Homework 3
submit by next Wednesday midnight to
TA Ben Martin
[email protected]

Last Time
Grammars
what is a grammar?
informally

Sentence NP VP
VP Verb NP
Verb took
NP the man
NP the book

set of rewrite rules to parse or diagram a sentence

derivation
top-down (from the sentence symbol), bottom-up (from the
words)

Definite Clause Grammar (DCG) System


built-in Prolog support for writing grammars

-->
is the rewrite symbol
[book], [took]
terminals are enclosed in brackets
sentence, vp, np
terminals and non-terminal symbols

begin with lowercase letters

sentence --> np, vp.


vp --> verb, np.
verb --> [took].
np --> [the], [man].
np --> [the], [book].

Last Time

example grammar
(from last time)

sentence --> np, vp.


vp --> verb, np.
verb --> [took].
np --> [the], [man].
np --> [the], [book].

query format

?- sentence(S,[]).

Prolog translates grammar into


underlying Prolog rules
you can see the rules using the
command

S = sentence (as a list)


[] = empty list

i.e. call the start symbol as a predicate and


supply two arguments, a list and an empty list

?- listin g .

Prolog Summary (so far)


Use a text editor to write your programs (extension: .pl)
Prolog interpreter
/opt/local/bin/swipl (on Mac)

Definite clause grammar rules


LHS --> RHS.
Non-terminal symbols (begin with lowercase letter), terminal symbols
(same but in [..])

Load in grammar at the prompt:


?- [filename].

(no extension needed)

Submit Prolog query at the prompt:


?- nonterminal(List,[]).
List: [word1,word2,..,wordn]head-tail notation: [Head|Tail]

Top-down, left-to-right derivation


Variables begin with an uppercase letter

?- listing.

Prolog translates DCG rules


into ordinary Prolog rules

example

sentence --> np, vp.


vp --> verb, np.
verb --> [took].
np --> det, [man].
np --> det, [book].
det --> [the].
det --> [a].

variables A,B,C are all going to be lists


'C'(C, man, B) is true when
man is the head of C
and B is the tail of C
i.e. C = [man|B]

listing

vp(A, B) :verb(A, C),


np(C, B).
np(A, B) :det(A, C),
'C'(C, man, B).
np(A, B) :det(A, C),
'C'(C, book, B).
verb([took|A], A).
det([the|A], A).
det([a|A], A).
sentence(A, B) :np(A, C),
vp(C, B).

Prolog Grammar Rules


The computation rule for
DCG rules
each time we look for a
matching rule, we patternmatch against the database
from the 1st rule on down

example

sentence --> np, vp.


vp --> verb, np.
verb --> [took].
np --> det, [man].
np --> det, [book].
det --> [the].
det --> [a].

listing.
vp(A, B) :
verb(A, C),

np(C, B).
np(A, B) :
det(A, C),

'C'(C, man, B).


np(A, B) :
det(A, C),

'C'(C, book, B).


verb([took|A], A).
det([the|A], A).
det([a|A], A).
sentence(A, B) :
np(A, C),

vp(C, B).

Prolog Grammar Rules

derivation

?- sentence([the,man,took,the,book],[]).

listing.
vp(A, B) :Call: (7) sentence([the, man, took, the, book], []) ? creep
Call: (8) np([the, man, took, the, book], _G353) ? creep

verb(A, C),
Call: (9) det([the, man, took, the, book], _G353) ? creep
np(C, B).
Exit: (9) det([the, man, took, the, book], [man, took, the, book]) ? creep
Call: (9) 'C'([man, took, the, book], man, _G357) ? creep
np(A, B) :Exit: (9) 'C'([man, took, the, book], man, [took, the, book]) ? creep

det(A, C),
Exit: (8) np([the, man, took, the, book], [took, the, book]) ? creep
Call: (8) vp([took, the, book], []) ? creep

'C'(C, man, B).


Call: (9) verb([took, the, book], _G353) ? creep
np(A, B) :Exit: (9) verb([took, the, book], [the, book]) ? creep
Call: (9) np([the, book], []) ? creep

det(A, C),
Call: (10) det([the, book], _G353) ? creep

'C'(C, book, B).


Exit: (10) det([the, book], [book]) ? creep
Call: (10) 'C'([book], man, []) ? creep
verb([took|A], A).
Fail: (10) 'C'([book], man, []) ? creep
det([the|A], A).
Redo: (10) det([the, book], _G353) ? creep
Fail: (10) det([the, book], _G353) ? creep
det([a|A], A).
Redo: (9) np([the, book], []) ? creep
Call: (10) det([the, book], _G353) ? creep
sentence(A, B) :Exit: (10) det([the, book], [book]) ? creep

np(A, C),
Call: (10) 'C'([book], book, []) ? creep
Exit: (10) 'C'([book], book, []) ? creep

vp(C, B).
Exit: (9) np([the, book], []) ? creep
Exit: (8) vp([took, the, book], []) ? creep
Exit: (7) sentence([the, man, took, the, book], []) ? creep

Yes

Worked Exercise
Let's write grammar rules to handle:
I saw the boy with a telescope
(ambiguous: 2
derivations)
the boy with a telescope saw me
(unambiguous: 1
derivation)

Worked Exercise
Step 1: decide on the parses you want your
grammar to produce
Unsure? Use a parser you already know one

Worked Exercise
Step 2: write the rules
Remember: terminal and nonterminal
symbols should begin with a lowercase
letter
1. s --> np, vp.
2. np --> dt, nn.
3. np --> prp.
4.

Worked Exercise
Step 3: test and debug your
grammar
?

s([i,saw ,the,boy,w ith,a,telescope],[]).


true ;
true ;
false
two possible derivations

?-

s([the,boy,w ith,a,telescope,saw ,m e],[]).


true ;
False
only one possible derivation

Prolog Terms
LISP s-exp notation:

Complex terms:
general template:

Prolog term notation


(introduced back in lecture 4)

Simple terms
atoms: s, np, vp, dt
numbers: 1, 45.3
variables: List, Sentence

functor(argument1,..,argumentn
)
functor/n (n= arity)
functor must be an atom
arguments can be simple terms
or (recursive) complex terms

Examples:
nn(boy)
dt(the)
np(nn(boy),dt(the))

Exercise 1
Part 1: Construct Prolog term representations
for the two Stanford parses:
exclude the ROOT node

Exercise 2
Writing a program to analyse/construct complex terms

Exercise 2
using functor and arg
Term = np(nn(boy),dt(the))

What do the following Prolog queries do?

Homework 3
Question 1: what does this do?
Question 2: what does this do?

Question 3: give a Prolog query that


picks out the word telescope from
the compound term

Exercise 3
Univ predicate:

Try these Prolog queries:


?- Term = .. [np,D T,N N ].
?- Term = .. [dt,the].

What does this do?

Homework 3
Question 4: Given
devise a query using =.. that builds
the complex term NP:
Question 5: devise a query using =..
that builds the complex term PP:

You might also like