Download DEFINITE CLAUSE GRAMMARS

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
DEFINITE CLAUSE GRAMMARS
Ivan Bratko
University of Ljubljana
Faculty of Computer and Information Sc.
DCG = Definite Clause Grammar
DCG notation in Prolog
Context-free grammars in DCG
Introducing context-dependence through arguments
Prolog goals in grammars rules
Defining semantics with DCG
Natural language syntax in DCG
Defining meaning of natural language
A BNF grammar
<s> ::= a b | a <s> b
Grammar generates / recognises
s
a
s
b
Generation
Recognition
a
s
a
Sentence = a a a b b b
b
b
COMMAND SEQUENCES FOR A ROBOT
up
up up down up down
CORRESPONDING BNF GRAMMAR
<move> ::= <step> | <step> <move>
<step> ::= up | down
CORRESPONDING DCG
move --> step.
move --> step, move.
step --> [up].
step --> [down].
SENTENCES IN DCG
DCG expects a sentence to be represented as difference
list
aabb ~
~
~
~
[a,a,b,b], []
[a,a,b,b,c], [c]
[a,a,b,b,x,y,z], [x,y,z]
...
QUESTIONS TO DCG
?- move( [up,down,up], []).
yes
?- move( [up, X, up], []).
X = up;
X = down;
no
?- move( [ up, down, up, a, b, c], [ a, b, c]).
yes
PROLOG CONVERTS DCG INTO A
RECOGNITION PROGRAM
move( List, Rest) :step( List, Rest).
move( List1, Rest) :step( List1, List2),
move( List2, Rest).
step( [up | Rest], Rest).
step( [down | Rest], Rest).
FROM DCG TO STANDARD PROLOG
DCG rule:
move --> step, move.
Corresponding Prolog rule:
move( List1, Rest) :step( List1, List2),
move( List2, Rest).
FROM DCG TO STANDARD PROLOG
move( List1, Rest) :step( List1, List2),
move( List2, Rest).
move
step
move
Rest
List2
List1
A SIMPLE NATURAL LANGUAGE DCG
The
cat
det
noun
scares
the
mouse.
verb
det
noun
noun_phrase
noun_phrase
verb_phrase
sentence
A SIMPLE NATURAL LANGUAGE DCG
sentence --> noun_phrase, verb_phrase.
verb_phrase --> verb, noun_phrase.
noun_phrase --> determiner, noun.
determiner --> [ the].
noun --> [ cat].
noun --> [ cats].
noun --> [ mouse].
verb --> [ scares].
verb --> [ scare].
THIS GRAMMAR GENERATES
[ the, cat, scares, the, mouse]
[ the, mouse, scares, the, mouse]
[ the, cats, scare, the, mouse]
[ the, cats, scares, the, mouse]
CONTEXT DEPENDENT!
NUMBER AGREEMENT CAN BE FORCED
BY ARGUMENTS
sentence( Number) -->
noun_phrase( Number), verb_phrase( Number).
verb_phrase( Number) -->
verb( Number), noun_phrase( Number1).
noun_phrase( Number) -->
determiner( Number), noun( Number).
noun( singular) --> [ mouse].
noun( plural) --> [ mice].
verb( singular) --> [scares].
verb( plural) --> [scare].
NUMBER AGREEMENT CAN BE FORCED
BY ARGUMENTS
?- sentence( Number, [the, cats, scares, the, mouse], []).
no
?- sentence( Number, [the, cats, scare, the, mouse], []).
Number = plural
CONSTRUCTING PARSE TREES
[ up, down, up]
move
step
up
move
step
move
down
step
up
DCG TO CONSTRUCT PARSE TREES
Tree = move( step(up), move( step(down), ...))
move( move( Step)) --> step( Step).
move( move( Step, Move)) -->
step( Step), move( Move).
step( step( up)) --> [up].
step( step( down)) --> [down].
DEFINING MEANING
Define: Meaning of move = Distance travelled
meaning ( ‘up up down up’) = 1+1-1+1 = 2
meaning( ‘up up down up’) =
meaning( ‘up’) + meaning( ‘up down up’)
FROM PARSE TREE TO MEANING
To find meaning of sentence:
(1) Construct parse tree
(2) Process parse tree
MEANING OF MOVES TREE
meaning( move( Step, Move), Dist) :meaning( Step, D1),
meaning( Move, D2),
Dist is D1 + D2.
meaning( step( up), 1).
meaning( step( down), -1).
INTERLEAVING SYNTAX AND MEANING
sentence
parse tree
meaning
Avoid parse tree, encode meaning directly in DCG
PROLOG goals in DCG:
move( Dist) --> step( Dist).
move( Dist) -->
step( D1), move( D2), {Dist is D1 + D2}.
step( 1) --> [ up].
step( -1) --> [ down].
?- move( D, [ up, up, down, up], [ ] ).
D = 2
{Goal}
MEANING OF NATURAL LANGUAGE

Representation of meaning = ?

Depends on use of meaning,
e.g. natural language querying

Logic is a good candidate for representing meaning
SOME MEANINGS IN LOGIC
Sentence
Formalised meaning
``John paints’’
paints( john)
``John likes Annie’’
likes( john, annie)
SOME MEANINGS IN LOGIC
Sentence
``A man paints’’
Formalised meaning
exists( X, man(X) and paints(X))
Note: ``paints’’ is intransitive verb, ``likes’’ is trans. verb
A SYNTAX
sentence ---> noun_phrase, verb_phrase.
noun_phrase --> proper_noun.
verb_phrase --> intrans_verb.
verb_phrase --> trans_verb, noun_phrase.
intrans_verb --> [ paints].
trans_verb --> [ likes].
proper_noun --> [ john].
...
INCORPORATING MEANING
% “john’’ means “john’’
proper_noun( john) --> [ john].
% “paints’’ means “paints( X)’’
intrans_verb( paints( X)) --> [ paints].
COMBINING MEANING OF NOUN
PHRASE AND VERB PHRASE
“John paints”
sentence
noun_phrase
verb_phrase
proper_noun
intrans_verb
john
paints
COMBINING MEANING OF NOUN
PHRASE AND VERB PHRASE
paints( john)
sentence
john
noun_phrase
verb_phrase
paints( X)
john
proper_noun
intrans_verb
paints( X)
john
paints
COMBINING MEANING OF NOUN
PHRASE AND VERB PHRASE
john + paints( X) = paints( john)
Meaning of NP
Meaning of sentence
Meaning of VP
COMBINING OF MEANING OF VERB
PHRASE AND NOUN PHRASE
noun_phrase( NP) --> proper_noun( NP).
verb_phrase( VP) --> intrans_verb( VP).
sentence( S) --->
noun_phrase( NP), verb_phrase( VP),
{ compose( NP, VP, S) } .
COMPOSING NP AND VP MEANINGS
actor( paints( X), X).
compose( NP, VP, VP) :actor( VP, NP).
% Meaning of sentence is VP
% Where actor in VP is NP
?- compose( john, paints( X), S).
S = paints( john)
MORE ELEGANT
DEFINE MEANING OF TRANSITIVE VERB
SO THAT ACTOR BECOMES EXTRA ARGUMENT
intrans_verb( Actor, paints( Actor)) --> [ paints].
verb_phrase( Actor, VP) --> intrans_verb( Actor, VP).
sentence( VP) --->
noun_phrase( Actor), verb_phrase( Actor, VP).
This makes “slots” in meaning “visible”
paints( Actor)
Slot to be filled by context
MEANING OF TRANSITIVE VERBS

“likes” means likes( Somebody, Something)
trans_verb( Somebody, Something, likes(Somebody,Something)) -->
[ likes].
verb_phrase( Somebody, VP) -->
trans_verb( Somebody, Something, VP),
noun_phrase( Something).
MEANING OF DETERMINERS
“A” AND “EVERY”

“A man paints” means:
exists( X, man( X) and paints( X) )
 Determiner “a” dictates the meaning of whole sentence!

“a man” means:
exists( X, man( X) and Assertion)
Statement about X
MEANING OF “A”

“a” means:
There is some X such that:
X has some property and
some assertion holds about X.
exists( X, Property and Assertion)

Make X, Property and Assertion visible:
determiner( X, Property, Assn, exists( X, Property and Assn)) -->
[ a].
INTEGRATING MEANING OF
DETERMINERS AND OTHER PHRASES
exists( X, man(X) and paints(X) )
sentence
exists( X, man(X) and A)
exists( X, P and A)
noun_phrase
determiner
a
noun man(X)
man
verb_phrase
paints(X)
intrans_verb
paints(X)
paints
INTEGRATING MEANING OF
DETERMINERS AND OTHER PHRASES
sentence( S) -->
noun_phrase( X, Assn, S), verb_phrase( X, Assn).
noun_phrase( X, Assn, S) -->
determiner( X, Prop, Assn, S), noun( X, Prop).
noun_phrase( X, Assn, Assn) -->
proper_noun( X).
INTEGRATING MEANING OF
DETERMINERS AND OTHER PHRASES
verb_phrase( X, Assn) -->
intrans_verb( X, Assn).
determiner( X, Prop, Assn, exists( X, Prop and Assn)) -->
[a].
noun( X, man( X)) --> [ man].
intrans_verb( X, paints(X)) --> [paints].
DETERMINER “EVERY”
“Every woman dances” means:
all( X, woman( X) ==> dances( X) )
determiner( X, Prop, Assn, all( X, Prop ==> Assn ) )
--> [ every].
RELATIVE CLAUSES
“Every man that paints admires Monet”
SYNTAX:
noun_phrase --> determiner, noun, rel_clause.
rel_clause --> [ that], verb_phrase.
rel_clause --> [ ].
% Empty relative clause
RELATIVE CLAUSES
“Every man that paints admires Monet”
MEANING:
all( X, man( X) and paints( X) ==> admires( X, monet) )
RELATIVE CLAUSES
MEANING, GENERAL FORM
all( X,
Prop1 and Prop2
noun
==>
verb phrase
of rel. clause
Assertion )
verb phrase
of sentence
RELATIVE CLAUSES:
SYNTAX AND MEANING
rel_clause( X, Prop1, Prop1 and Prop2) -->
[ that ], verb_phrase( Prop2).
noun_phrase( X, Assn, S) -->
determiner( X, Prop12, Assn, S), noun( X, Prop1),
rel_clause( X, Prop1, Prop12).
rel_clause( X, Prop1, Prop1) --> [ ].
COMPLETE GRAMMAR
% Meaning of subset of natural language
:- op( 100, xfy, and).
:- op( 150, xfy, =>).
sentence( S) -->
noun_phrase( X, P, S), verb_phrase( X, P).
noun_phrase( X, P, S) -->
determiner( X, P12, P, S), noun( X, P1), rel_clause( X, P1, P12).
noun_phrase( X, P, P) -->
proper_noun( X).
verb_phrase( X, P) -->
trans_verb( X, Y, P1), noun_phrase( Y, P1, P).
verb_phrase( X, P) -->
intrans_verb( X, P).
COMPLETE GRAMMAR, CTD.
rel_clause( X, P1, P1 and P2) -->
[that], verb_phrase( X, P2).
rel_clause( X, P1, P1) --> [].
determiner( X, P1, P, all( X, P1 => P)) --> [every].
determiner( X, P1, P, exists( X, P1 and P)) --> [a].
noun( X, man(X)) --> [man].
noun( X, woman(X)) --> [woman].
proper_noun( john) --> [john].
proper_noun( annie) --> [annie].
proper_noun( monet) --> [monet].
trans_verb( X, Y, likes( X, Y)) --> [ likes].
trans_verb( X, Y, admires( X, Y)) --> [admires].
intrans_verb( X, paints(X)) --> [paints].
SOME TEST SENTENCES
% Some tests
test1( M) :sentence( M, [john,paints],[]).
test2( M) :sentence( M, [a, man, paints], []).
test3( M) :sentence( M, [every,man,that,paints,admires,monet],[]).
test4( M) :sentence( M, [annie,admires,every,man,that,paints],[]).
test5( M) :sentence( M, [every,woman,that,admires,a,man,that,paints,likes,monet],[]).
EXAMPLES OF SENTENCES THIS
GRAMMAR HANDLES
“Every man that paints admires Monet”
“Annie admires every man that paints”
“Every woman that admires a man that paints likes Monet”
Meaning constructed for this sentence:
all( X, woman( X) and exists( Y, ( man( Y) and paints (Y))
and admires( X, Y) ) ==> likes( X, monet ) )
USE IN QUESTION ANSWERING
Meanings in logic can be translated into Prolog:
admires( X, monet) :man( X), paints( X).
admires( annie, X) :man( X), paints( X).
likes( X, monet) :woman( X), man( Y), paints( Y), admires( X, Y).
“Does Annie admire anybody who admires Monet?”
?- admires( annie, X), admires( X, monet).
GENERATING SENTENCES

Our grammar also generates sentences with given
meaning
?- sentence( likes(john,annie), S, []).
S = [john,likes,annie]
?- sentence( exists(X, man(X) and paints(X)), S, []).
S = [a,man,paints]
LANGUAGE TRANSLATION WITH DCG

Translate from language 1 to langauage 2:
?- ...,
sentence_lang1( Meaning, Sent1, []),
sentence_lang2( Meaning, Sent2, []).

Can also be used for program compilation
(Spakowicz, BYTE, Aug. 1987)
?- ...,
program_source( M, SourceProg, []),
program_target( M, TargetProg, []).
% Parse
% Generate
Related documents