Presentation is loading. Please wait.

Presentation is loading. Please wait.

Feb 2008 - MRDefinite Clause Grammar1 An Introduction to Definite Clause Grammars Grammars and Algorithms Prolog Recogniser DCGs.

Similar presentations


Presentation on theme: "Feb 2008 - MRDefinite Clause Grammar1 An Introduction to Definite Clause Grammars Grammars and Algorithms Prolog Recogniser DCGs."— Presentation transcript:

1 Feb MRDefinite Clause Grammar1 An Introduction to Definite Clause Grammars Grammars and Algorithms Prolog Recogniser DCGs

2 Feb MRDefinite Clause Grammar2 CF Recognition in Pure Prolog Use lists to represent strings. the monkey grinned [the,monkey,grinned] Reinterpret CF rules as Prolog clauses s  np vp s :- np, vp. Use append to concatenate the strings s(Z) :- np(X), vp(Y), append(X,Y,Z) Reinterpret lexical rules as simple assertions n  [monkey] becomes n([monkey]).

3 Feb MRDefinite Clause Grammar3 Complete Recogniser Program s(Z) :-np(X), vp(Y), append(X,Y,Z). np(Z):-d(X),n(Y), append(X,Y,Z). vp(Z):-v(Z). d([the]). n([monkey]). v([grinned]). v([danced]).

4 Feb MRDefinite Clause Grammar4 Running the Recogniser ?- s([the, monkey,grinned]). yes. ?- s([the, monkey,spat]). no. ?- s(X). X=[the,monkey,grinned]; X=[the,monkey,danced]

5 Feb MRDefinite Clause Grammar5 Difference Lists Using append is very inefficient. We can avoid append by using difference lists. Key idea is to represent a string as the difference between two lists. For this purpose we employ two pointers.

6 Feb MRDefinite Clause Grammar6 Difference Lists Here are different ways of representing the string a b c [a,b,c] [ ] [a,b,c,x] [x] [a,b,c,x,y] [x,y] a b c x y P1 P2

7 Feb MRDefinite Clause Grammar7 Recogniser Using Difference Lists s(X,Z) :-np(X,Y), vp(Y,Z). np(X,Z):-d(X,Y), n(Y,Z). vp(X,Y):-v(X,Y). d([the|Rest],Rest). n([monkey|Rest],Rest). v([grinned|Rest],Rest). v([danced|Rest],Rest).

8 Feb MRDefinite Clause Grammar8 Running the Recogniser ?- s([the, monkey,grinned],[]). yes. ?- s([the, monkey,spat],[]). no. ?- s(X,[]). X=[the,monkey,grinned]; X=[the,monkey,danced]

9 Feb MRDefinite Clause Grammar9 Difference Lists Advantages append not used efficiency Disadvantages More difficult to understand the interpreter Can we retain advantages and eliminate disadvantages ?

10 Feb MRDefinite Clause Grammar10 Definite Clause Grammars (DCGs) s --> np, vp. vp --> v. vp --> v, np. d --> [walks]. v --> [hits]. np --> [suzie]. np --> [fido].

11 Feb MRDefinite Clause Grammar11 How DCGs are compiled We run the DCG recogniser in exactly the same way as we run the difference-list recogniser. The reason is that DCG notation is just syntactic sugar.The DCG rule x --> y, z. is actually compiled into an ordinary clause x(V1,V2) :- y(V1,V3), z(V3,V2). whilst the preterminal rule x --> [word]. compiles to the clause x([word|W],W]).

12 Feb MRDefinite Clause Grammar12 Use of Curly Brackets Suppose we have s(Z) -> np(X), vp(Y). and there is an ordinary predicate p(X,Y,Z) which operates on the arguments. We enclose the ordinary predicate in curly brackets to avoid the automatic addition of two argument places. s(Z) -> np(X), vp(Y), {p(X,Y,Z)}

13 Feb MRDefinite Clause Grammar13 Adding Features Suppose we wish to impose number agreement between np and vp To solve the problem of multiplying categories, we need to add feature constraints to our grammar specifications, in order to express the following sort of fact s  np vp constraint: number(np) = number(vp) Fortunately we can do just that because the constituents of rules can be full Prolog terms, which may include variables arguments.

14 Feb MRDefinite Clause Grammar14 Fixing the Grammar OLD GRAMMAR s --> np, vp. np --> n. np --> d, n. vp --> v np. NEW GRAMMAR s --> np(N),vp(N). np(N) --> n(N). np(N) --> d(N),n(N). vp(N) --> v(N),np(_).


Download ppt "Feb 2008 - MRDefinite Clause Grammar1 An Introduction to Definite Clause Grammars Grammars and Algorithms Prolog Recogniser DCGs."

Similar presentations


Ads by Google