1 / 19

Analyser une phrase

Analyser une phrase. % extraire une phrase et retourner le reste phrase(X,Z):- groupeDuNom(X,Y), groupeDuVerbe(Y,Z). groupeDuNom(X,Z):- determinant(X,Y), nom(Y,Z). groupeDuVerbe(X,Z):- verbe(X,Y),

carina
Download Presentation

Analyser une phrase

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Analyser une phrase % extraire une phrase et retourner le reste phrase(X,Z):- groupeDuNom(X,Y), groupeDuVerbe(Y,Z). groupeDuNom(X,Z):- determinant(X,Y), nom(Y,Z). groupeDuVerbe(X,Z):- verbe(X,Y), groupeDuNom(Y,Z).

  2. Vocabulaire determinant([le|Z],Z). determinant([la|Z],Z). determinant([un|Z],Z). determinant([une|Z],Z). determinant([les|Z],Z). determinant([des|Z],Z). nom([chat|Z],Z). nom([chien|Z],Z). nom([garcon|Z],Z). nom([fille|Z],Z). verbe([aime|Z],Z). verbe([regarde|Z],Z). verbe([attaque|Z],Z).

  3. Exemple ?- phrase([la,fille,aime,le,chien],[]). yes

  4. Notation DCG(definite clause grammar) phrase --> groupeDuNom, groupeDuVerbe. groupeDuNom --> determinant, nom. groupeDuVerbe--> verbe, groupeDuNom. determinant --> [le]. determinant --> [la]. determinant --> [un];[une];[des];[les]. nom --> [fille];[garcon];[chat];[chien]. verbe --> [regarde];[attaque];[aime].

  5. Singulier vs pluriel phrase --> groupeDuNom(N), groupeDuVerbe(N). groupeDuNom(N) --> determinant(N), nom(N). groupeDuVerbe(N) --> verbe(N), groupeDuNom( _ ). determinant(singulier) --> [le];[la];[un];[une]. determinant(pluriel) --> [les];[des]. nom(singulier) --> [fille];[garcon];[chat];[chien]. nom(pluriel) --> [filles];[garcons];[chats];[chiens]. verbe(singulier) --> [regarde];[attaque];[aime]. verbe(pluriel) --> [regardent];[attaquent];[aiment].

  6. Construire un arbre phrase(N,ph(GN,GV)) --> groupeDuNom(N,GN), groupeDuVerbe(N,GV). groupeDuNom(N,gNom(Det,Nom)) --> determinant(N,Det), nom(N,Nom). groupeDuVerbe(N,gVerbe(Verbe,GN)) --> verbe(N,Verbe), groupeDuNom(N,GN). determinant(singulier,det(le)) --> [le]. nom(singulier,nom(chat)) --> [chat]. verbe(singulier,verbe(aime)) --> [aime]. . . .

  7. Exemple ?- phrase(N,Arbre,[le,chien,attaque,le,garcon]). N=singulier Arbre= ph(gN(det(le),nom(chien)),gVerbe(verbe(attaque), gNom(det(le),nom(garcon)))).

  8. Avec un dictionnaire determinant(N,det(Det)) --> [Det], estDeterminant(Det,N). nom(N,nom(Nom)) --> [Nom], estNom(Nom,N). verbe(N,verbe(Verbe)) --> [Verbe],estVerbe(Verbe,N).. % dictionnaire estDeterminant(le,singulier). estDeterminant(les,pluriel). estNom(chat,singulier). estVerbe(aiment,pluriel).

  9. Un ascenceur deplacement --> mouvement. deplacement --> mouvement,deplacement. mouvement --> [haut]. mouvement --> [bas]. ?- deplacement([haut,haut,bas,haut],X). X = [haut, bas, haut] ; X = [bas, haut] ; X = [haut] ; X = [] ; false.

  10. Décompte des étages deplacement(E) --> mouvement(E). deplacement(E) --> mouvement(E1), deplacement(E2), {E is E1+E2}. mouvement(1) --> [haut]. mouvement(-1) --> [bas]. 1 ?- deplacement(E,[haut,haut,bas,haut],X). E = 1, X = [haut, bas, haut] ; E = 2, X = [bas, haut] ; E = 1, X = [haut] ; E = 2, X = [] ; false.

  11. Méta-Interpréteur Prolog • Un méta-Interpréteur Prolog est un programme ecrit en Prolog pour interpréter les commandes Prolog: Prolog dans Prolog! • Une réalisation d’un langage L dans L est souvent considerée comme une preuve de l’aspect général du langage L. • On peut avoir Java dans Java, C dans C, etc...La question est de savoir a quel point il est facile d’exprimer un langage par ce meme langage.

  12. Méta-Interpréteur Prolog % pour resoudre un but vrai solve0(true) :- !. % pour resoudre une liste de buts solve0 ((G, Gs)) :- !, solve0(G), solve0(Gs). % pour resoudre un but, trouver sa clause et resoudre ses conditions solve0(G) :- !, clause(G, Body), solve0(Body).

  13. Méta-Interpréteur Prolog ?- solve0(member(X, [a, c])). X = a ; X = c ; No ?- solve0((member(X, [a , c, f]), | member(X, [b, c, d, f, g]))). X = c ; X = f ; No

  14. Méta-Interpréteur Prolog • Cet interpréteur ne marchera pas pour les opérations pré-définies (built-in). Ces opérations n’ont pas de clauses. Elles sont directement interprétées par le systeme Prolog. • Une amérioration du précédent interpréteur concerne la distinction des opérations pré-définies. Aussi, nous distinguerons les faits des regles. • Le prédicat builtIn permet de reconnaitre les prédicats pré-définis: builtIn(G) :- predicate_property(G, built_in). builtIn(G) :- predicate_property(G, interpreted).

  15. Méta-Interpréteur Prolog solve((Head :- Body)):- !, assertz((Head :- Body)). solve(true):- !. solve((G, Gs)):- !,solve(G), solve(Gs). solve(G):- builtIn(G),!, call(G). solve(G):- clause(G, Body), solve(Body).

  16. Méta-Interpréteur Prolog • On peut également utiliser notre propre boucle d’interprétation: do :- nl, write('query: '), read(Q), Q =\= stop, do1(Q). do. %arret lorsque Q == stop

  17. Méta-Interpréteur Prolog do1(Q) :- solve(Q), write('yes: '), writeln(Q), write('OK? (CR or anything else) '), get0(Ans), Ans == 10, % if Ans is not CR, fail back to solve(Q) !, do. do1(_) :- writeln(no), do.

  18. Méta-Interpréteur Prolog ?- do. query: writeln(okay). yes: writeln(okay) OK? (CR or anything else) query: member(X, [a, b]). yes: member(a, [a, b]) OK? (CR or anything else) n yes: member(b, [a, b]) OK? (CR or anything else) query: member(X, [a, b, c]), member(X, [b, c, d, e]). yes: member(b, [a, b, c]), member(b, [b, c, d, e]) OK? (CR or anything else) n yes: member(c, [a, b, c]), member(c, [b, c, d, e]) OK? (CR or anything else) query: assert(added(one, fact)). yes: assert(added(one, fact)) OK? (CR or anything else)

  19. Méta-Interpréteur Prolog query: added(X, Y). yes: added(one, fact) OK? (CR or anything else) n no query: a(1) :- true. yes: a(1):-true OK? (CR or anything else) query: a(2) :- a(1). yes: a(2):-a(1) OK? (CR or anything else) query: a(X). yes: a(1) OK? (CR or anything else) n yes: a(2) OK? (CR or anything else) query: stop. Yes

More Related