.


:




:

































 

 

 

 





(relative clause), , "Every man that paints admires Monet" ( , , ).

21. 527


"every man that paints" , "that paints" . , , :

noun phrase --> determiner, noun, rel clause.

rel_clause --> [ that], verb_phrase. _

rel_clause -->{]. I

. "Every man that paints admires Monet" :

,

X - X , X .

Prolog: all(X, man(X) and paints! X) => admires! X, monet)]

, "and" , "=>". , "every man that paints" : all(X, man(X) and paints [ X} => Assn)

all! X, Propl and 2 => Assnl

Propl , Prop2 - , a Assn - . DCG , , .

"tSS-SJA Propl and Prop2) ^> [ t Propl2, Assn, S], Xr Prop2).

noun c [ X, ProplWopl, Propl2 ].

, , : r e l_ c l au s e (X, Propl, Propl) -> [j.

21.1 DCG , , "" "every", . , .

John paints.

Every man that paints admires Monet. Annie admires every man that paints. Every woman that admires a man that paints likes Monet.

21.1. DCG,

:- [ 100, xfy, and).:- (150, Kfy, =>).

sentence! 3) -->

nounj)hrase(X, P, S), verb_phrase(X, P),

nounj)hrase(X, P, S) -->

determiner! X, P12, P, S), noun(X, P1J, rel_clause(X, PI, P12).

nounjhrase [ X, P, pj -> proper_noun(X).

verbjhrase (X, P) ->

528 II, Prolog


trans_verb[ X, Y, PI), noim_phrase (Y, PI, P).

verbjhrase (X, P) -> intrans_verb(x, P).

rel_clause[ X, PI, PI and P2) -> [that), verb_phrase[ X, P2).

rel_clause[ X, PI, PI) --> [],

determiner) x, PI, P, all[ X, PI => P)) --> [every].

determiner! X, PI, p, existst x, PI and pj} - > [aj.

noun[ X, man(X)) ~> [man].

noun[ X, woman(X)) --> [woman).

proper_rtoun[ John) -> tjohnj.

proper_noun[ annie) --> [annie).

proper_noun(monet) -> [monet].

trans_verb(X, Y, likes (X, Y)) --> [ likes].

trans_verb{ X, Y, admires! X, Y)) -> [admires],

intran5_verb(X, paintS{X>] -> [paints].

%

testl (M>:-

sentence! M, [John,paints],[]).

test2 [ M):-

sentence! M, [a, man, paints!, )

test3{ M):-

sentence! M, [every,man,that,paints,admirea,manet], []).

test4 (M):-

sentence! M, [annie,admires,every,man,that,paints],[]),

test5(Mi:-

..,.sentence(M, [every, woman, that,admires,a,man, that,. paints,likes,monet], []}.

, :

?- sentence(Meaningl, [ every, man, that, paints, admires, monet], []). Meaningl = alii X, man(X) and paints [ X) => admires(X, monet)]

7- sentence! Meaning2, 1 annie, admires, every, man, that, paints], []). Meaning2 = all! X, man(X) and paints! X] => admires(annie, X))

?- sentence (Meaning3, [ every, -woman, that, admires, a, man, that, paints,

likes, monet], []). Meaning3 all (X, woman! X) and exists (Y { man! V) and paints! IT J! and admires(X, Y)) -> likes! X, monet))

, , . , , , : "Does Annie

21. 529


admire anybody who admires Monet?" ( -, ). , . , , . , Prolog. Prolog. , . , Prolog. paints(John).

admires (X, aionet):

admires(annie, X):- man(X), paints[ X),

"Does Annie admire anybody

who admires Monet?" Prolog:

?- admires(annie, X), admires(X, menet). X - John

21.6. :

) Mary knows all important artists (
).

) Every teacher who teaches French and studies music -understands
Chopin ( , ,
).

) A charming lady from Florida runs a beauty shop in Sydney (
),

21.7. , 21.1,
.
. ,
, tes~5, 21.1, :

?- all (X, woman (X) and exists (Y, (man (Y) and paints (Y)) and

admir kes[X,monet)), sentence(M, S, [] I. Prolog :

and admires C()ac.JMFc;) -> likes(_022C,monet))

. , :

= aU {monet, woman[monet) and exists[ Q364,(man(0364) and paints(0364)) and admires (monet, _0364)) => likes [monet, monetj)

S = [monet,likes, every,woman,that,admiresa,man,that,paints] % % , ,



II. Prolog


, , . : , , (, X all {X,...)), (monet}; . 21.8. , 21.1, "if, "then", "and", "or", "neither", "nor" .. :

John paints and Annie sings. *

If Annie sings then every teacher listens. ,

%

, 21.1, Prolog. , ( ; . 6) Prolog. , , . , .

, BNF, DCG (Definite Clause Grammar - ). , DCG, Prolog, , .

DCG . .

DCG, ,





:


: 2015-10-01; !; : 387 |


:

:

80% - .
==> ...

1531 - | 1383 -


© 2015-2024 lektsii.org - -

: 0.012 .