Séance 11 : Initiation à Prolog Flashcards
Qu’est-ce que la logique procédurale?
La résolution d’un problème avec une suite d’opérations qui permet d’obtenir la solution voulue
ex: Python texte -> procédure -> résultat
Comment est appliquée la logique procédurale? Exemples d’applications?
Par la manipulation et la transformation d’unités
ex: trier les mots d’un texte
extraire des contextes
gestion d’une base de donnée
V ou F : la procédure en logique procédurale dépend de la nature de l’objet à traiter.
Faux, elle en est indépendante. L’ordinateur n’a pas besoin de savoir ce qu’est un mot pour calculer sa fréquence dans un texte. Vs prolog qui a besoin de connaissances, comme nous.
Quelles sont les limites de la logique procédurale? Comment les traite-on en Prolog?
- Impossible de traiter des relations (représentation de connaissances)
ex: Jean est le père de Michel.
=> faits en Prolog
- Impossible de faire des inférences (nouvelles connaissances à partir de connaissances actuelles : exploitation de relations)
ex: Si une personne X et une personne Y – X et Y étant des personnes différentes - ont le même père ou la même mère alors X est le frère ou la sœur de Y et Y est le frère ou la sœur de X.
=> règles en Prolog
Quel langage de programmation utilise Prolog? Que permet-il de faire?
Le langage de programmation déclaratif.
Il fait appel aux mécanismes d’inférence de la logique des prédicats :
- Permet de représenter des relations et de faire des inférences (déduire nouvelles connaissances à partir d’actuelles sans qu’elles soit explicitées)
(D’où son nom «Programmation en logique».)
Prolog est-il efficace? puissant?
Très inefficace: les programmes sont lents.
Très puissant: développement rapide de mécanismes très complexes.
Quand on utilise Prolog? 2 exemples?
Pour des problèmes exprimés sous forme d’objets et de relations
= représentation de connaissances
ex: analyse syntaxique (on définit connaissances de base (catégories et syntagmes) et après on peut inférer quels agencements de mots font quels syntagmes
ex: création d’un arbre généalogique (on définit qui est le père, mère de qui et va inférer frère soeur etc)
Qu’est-ce qu’un terme dans Prolog?
Peut être une variable, un atome, un fait, une règle…
V ou F : Une variable est un terme.
Vrai, terme qui peut contenir un terme (car peut contenir un atome, un fait, une règle, un nombre, une structure)
Quels sont les 2 types de termes?
Inconditionnels (faits)
femme(marie).
homme(jean).
Conditionnels (règles)
parents(X,Y,Z) :-
mere(X,Z), pere(Y,Z).
V ou F ; L’ordre est important dans Prolog.
Faux, il est arbitraire. L’ordre des atomes doit toujours être le même par exemple (ex: parents(marie,jean,jude) => tj mère, père, enfant))
Différemment à Python, c’est comme si tout se fait en même temps.
V ou F : La signification d’un terme est pas important dans Prolog.
Faux, il est arbitraire (ex: patient peut référer à la patience ou la maladie), mais est important, car on doit toujours garder la même.
Qu’est-ce que l’humain fait quand il dit “Jean possède un livre”. Prolog fait-il la même chose?
- Il identifie deux objets (livre et jean)
- Il exprime une relation (appartenance)
=> donc, fait appel aux connaissances du lecteur ou de l’interlocuteur sur la nature des objets et sur les propriétés de la relation (unidirectionnelle (le livre possède pas jean) vs bidirectionnelle (pour frère ex))
Prolog fait la même chose, c’est sa grande force.
V ou F : Les objets doivent être nommés explicitement dans une relation. Ex?
Faux, ‘interlocuteur, l’utilisateur du programme comprend les informations implicites en fonction de ses connaissances et du contexte.
=> c’est l’esprit de Prolog, il fait appel aux connaissances de l’utilisateur
Exemple : La pomme est bonne
On ne dit pas pour qui (ou pour quoi) la pomme est bonne.
Il peut s’agir d’un être vivant mais pas nécessairement. La pomme (au sens du marché de la pomme) pourrait être bonne pour l’économie.
Le sens précis de «bonne» n’est pas explicite.
Quelles sont les propriétés des variables?
Elles commencent par une majuscule.
Leur portée est uniquement à l’intérieur d’un terme
ex:
est_mere(X) :- mere(X,Y).
est_pere(X) :- pere(X,Y).
*Tout est compartimenté, les X et Y ne sont pas les mêmes d’une ligne à l’autre
V ou F : Dans Prolog, les variables sont manipulées directement.
Faux, sauf dans des cas extrêmement rares. Leur contenu est inféré des faits et des règles.
=> acquierent leur valeur automatiquement
Comment appelle-t-on le regroupement des faits et des règles ?
Les connaissances
vs Les questions
Qu’est-ce que Prolog fait quand on pose la question : Est-ce que Jean possède un livre?
- Il vérifie si les objets existent (a-t-il jean, a til livre dans ses connaissances)
- Il vérifie si la relation de possession existe ( a-til la possession, ou connaissances dans une autre comme jean achète un livre)
Quels sont les 3 niveaux de la programmation en Prolog?
- Identifier des objets (ex: pierre(homme). et des relations père(pierre,marie)).
- En Prolog, on dit «déclarer des faits»
(construire mon dict, lui donner des connaissances)
- Inférer de nouvelles relations à partir des «faits» (ex: estpère(X) : père (X, _))
- En Prolog, on dit «définir des règles»
(créer des nouvelles relations et connaissances a partir des faits de bases donnés en 1)
3.Poser des questions à propos d’objets et de leurs relations (ex: estpère(X)… X = Pierre).
En Prolog, on dit «interroger l’interpréteur» ou «converser»
(poser des questions à prolog sur nos objets et relations)
Qu’est-ce que représente la virgule en Prolog?
Une conjonction, signifie que les deux conditions sont obligatoires (représente un ET)
ex: s_aime(X,Y) :- aime(X,Y), aime(Y,X).
s’aiment X et Y si ils s’aiment un et l’autre.
Que représente le point-virgule en Prolog?
Représente une disjonction inclusive
Signifie qu’au moins une des deux conditions doit être vraie (OU non exclusif)
ex: aime(X,vin) :- aime(X, vinrouge) ; aime(X, vinblanc).
X aime le vin s’il aime le vin blanc ou le vin rouge.
Créer les règles générales suivantes :
enfant(X,Y) qui exprime que X est l’enfant de Y
fils(X,Y) qui exprime que X est un fils de Y
fille(X,Y) qui exprime que X est une fille de Y
frereousoeur(X,Y) qui exprime que X est le frère ou la soeur de Y (pas demis)
frere(X,Y) qui exprime que X est un frère de Y
soeur(X,Y) qui exprime que X est une soeur de Y
enfant(X,Y) :-
pere(Y,X).
enfant(X,Y) :-
mere(Y,X).
fils(X,Y) :-
enfant(X,Y),
homme(X).
fille(X,Y) :-
enfant(X,Y),
femme(X).
frereousoeur(X,Y) :- pere(P,X), pere(P,Y), mere(M,X), mere(M,Y), X \== Y.
frere(X,Y) :-
frereousoeur(X,Y),
homme(X),
X == Y.
soeur(X,Y) :-
frereousoeur(X,Y),
femme(X),
X == Y.
À quoi servent les règles?
Servent à inférer des relations entre les faits
À quoi sert compilebuffer?
Transmettre à l’interpréteur
Quels sont les modes reconnaissance et génération?
Mode reconnaissance : On lui donne des atomes, il vérifie si c’est vrai ou non.
Mode génération : On lui donne des variables, il nous sort les possibilités
Les variables sont… elles se …
locales, propagent
V ou F : Prolog est déterministe.
Vrai. Il peut explorer plusieurs possibilités sans y voir de contradiction.
Un Sn peut être à la fois composé d’un article et d’un nom et être un nom propre.
Dans les règles:
sn(X,Y) :- article(X),nom(Y).
sn(X) :- nomPropre(X).
Dans les faits:
humain(leo).
chat(leo).
V ou F : Prolog permet de représenter des structures r….
Vrai. récursives. Comme un cycle sans fin.
ex: sn -> article, nom. sn -> article, nom, sprep. sn -> np. sprep -> prep, sn.
Un sn inclue un sp, un sp un sn, un sn un sp……..
Qu’est-ce que veut dire faire des remontées?
Prolog fait des remontées quand il revient sur ses décisions.
Il sort une réponse, après il revient sur ses faits, redonne nouvelles valeurs à ses variables et redescend, etc
Qui a fondé Prolog, où et quand?
Groupe d’Intelligence Artificielle de Luminy (Alain Colmerauer) à Marseille en 1972
Comment Prolog est devenu populaire et pourquoi?
Devient populaire au début des années 80 avec les projets internationaux de développement de l’intelligence artificielle
On avait besoin d’outils pour les ordinateurs de connaissances, donc lui demande de devl un langage axé sur la connaissance
Même utilisé plus spécifiquement pour la reconnaissance automatique du langage
Quelles sont les 2 grandes familles de Prolog et quel logiciel on utilise?
Deux grandes familles:
le standard de Marseille
le standard d’Edimbourg
Le standard d’Edimbourg: SWI-Prolog (Celui que nous utiliserons) Amzi Prolog SICStus Prolog Visual Prolog
Comment distinguer les atomes et variables?
Atomes : commencent par minuscule
Variables : par majuscule
**si on se trompe, il prendra ex : Pere pour variable