Tout savoir PROLOG

La programmation logique a joué un rôle essentiel dans le développement de l’intelligence artificielle (IA). Basé sur le principe de logique formelle pour représenter des connaissances et des règles, PROLOG permet aux développeurs d’implémenter des systèmes d’IA intelligents capables de résoudre des problèmes complexes.

Qu’est-ce que PROLOG ?

PROLOG (PROgrammation LOGique) est l’un des principaux langages de programmation logique développés à l’I.N.S.E.A par Alain Colmerauer et Philippe Roussel au début des années 1970. Leur objectif était de créer un langage qui, au lieu d’exécuter des instructions définies pas à pas, utilise les bases de la programmation logique, posées en 1965 par John Robinson. Sa syntaxe et sa sémantique sont simples et claires, le but d’origine étant de proposer un outil aux linguistes néophytes dans le domaine de l’informatique.

Aujourd’hui, PROLOG est utilisé à la fois dans de nombreux programmes d’intelligence artificielle comme dans le domaine du traitement de la linguistique par ordinateur, notamment les langages naturels. PROLOG se base sur le calcul des prédicats du premier ordre. S’il était restreint dans sa version initiale à n’accepter que les clauses de Horn, les versions modernes acceptent désormais des prédicats plus complexes, notamment avec le traitement de la négation par l’échec.

L’exécution d’un programme PROLOG se fait par recherche de preuves. Celle-ci se base sur le mécanisme d’unification, consistant à trouver des substitutions pour les variables logiques afin de rendre vrai les assertions logiques. Il existe plusieurs implémentations : SWI-Prolog, GNU Prolog, et Sicstus Prolog, qui offrent des fonctionnalités étendues et des bibliothèques spécialisées.

À quoi sert le programme PROLOG ?

Les champs d’applications du langage de programmation PROLOG sont très variés. Fidèle à son objectif de départ, PROLOG est utilisé pour analyser et générer des structures linguistiques comme l’analyse syntaxique, la génération de phrases ou encore la traduction automatique. Ses mécanismes de recherche et d’unification permettent de définir des relations entre les données et d’effectuer des requêtes. Ces particularités font de PROLOG un très bon outil pour créer des bases de données relationnelles.

Il est également utilisé dans le domaine de l’IA, notamment pour la programmation de systèmes experts. Un système expert est un programme informatique simulant l’intelligence humaine, soit dans un champ particulier de la connaissance, soit relativement à une problématique déterminée. Par exemple, dans le domaine médical, PROLOG permet de créer des systèmes experts capables d’effectuer des diagnostics médicaux, de recommander des traitements, voire d’aider à l’interprétation de résultats de tests.

De par sa nature logique, PROLOG s’avère être un outil efficace pour la résolution de problèmes. Ainsi, il peut être utilisé pour modéliser des problèmes complexes, par exemple des jeux de logique, des puzzles, des problèmes de planification ou des problèmes de satisfaction de contraintes. Il est également utilisé pour la vérification de programme, comme pour prouver formellement des propriétés, détecter des erreurs de logique ou générer des tests automatiquement.

Comment fonctionne PROLOG ?

PROLOG n’ayant pas de structures itératives, son exécution peut s’avérer déroutante si vous avez l’habitude des langages impératifs de C, C++, Java ou encore Delphi. La logique de PROLOG est radicalement différente, puisque toutes ses fonctionnalités se programment de manière récursive. Pour parcourir une liste, on examine le premier élément, puis on effectue le traitement approprié sur cet élément avant d’appeler récursivement le prédicat sur le reste de la liste.

Pour exécuter un prédicat, PROLOG examine la première clause pour évaluer les buts contenus. On parle de point de choix lorsque plusieurs solutions sont possibles, et plusieurs points de choix constituent un arbre décisionnel. Si le but retourne au moins une solution, PROLOG la conserve et passe au but suivant. Si à l’inverse il échoue à trouver une solution, il effectue un backtracking sur le précédent et cherche une solution suivante alternative.

En l’absence de but précédent, la clause échoue. Dès lors que l’ensemble des buts ont été examinés, le prédicat retourne une solution. Lorsqu’une clause a été évaluée, quel que soit le résultat, PROLOG recherche d’autres solutions en examinant la clause suivante.

Comment exécuter un langage PROLOG ?

Pour utiliser PROLOG, vous devrez installer un compilateur, c’est-à-dire un programme qui transforme un code source en un code objet. Il en existe plusieurs, comme les open sources SWI-Prolog et GNU Prolog, ou encore SICstus-Prolog qui lui est payant.

Comprendre les termes de base du langage PROLOG

Pour interagir avec le programme, un prérequis évident est de maîtriser les bases du langage spécifique à PROLOG.

  • La variable : une variable sans valeur est appelée une variable libre. Si une valeur lui est affectée, elle devient une variable liée et, en règle générale, ne peut plus être modifiée. Variables et valeurs sont unies par le principe d’unification. Les variables sont toujours représentées par un identificateur commençant par une lettre majuscule, par exemple : Y, Jean, Paris, Parent.
  • La constante commence toujours par une minuscule, comme homme, chat ou parent. Des chaînes de caractères peuvent être définies par la présence de guillemets simples, par exemple « Jean et son père » ou « La queue du chat ». Les constantes et les chaînes constituent ce que l’on appelle des atomes.
  • Le prédicat de PROLOG est l’équivalent d’une fonction. Il contient l’arité, qui représente le nombre d’arguments, la tête (ensemble des paramètres) et le corps composé de buts séparés par des virgules. Un prédicat est organisé en clauses. La clause s’exécute ou échoue, mais ne retourne jamais de valeur. 
  • Le tuple est un ensemble de champs, réunis dans une seule variable. Par exemple : Jean = (jean, homme, paris, père).
  • Les listes : en PROLOG, une liste comprend deux éléments : la tête (head) c’est-à-dire le premier élément et le reste de la liste, c’est-à-dire la queue (tail). La liste est parcourue de manière récursive sur la queue.

Créer un fichier source pour interagir avec PROLOG

Commencez par créer un fichier source à partir de n’importe quel éditeur de texte. Vous allez y saisir votre code PROLOG et le sauvegarder avec une extension de fichier « .pl ».Par exemple, nous allons définir des faits sur différents animaux et utiliser PROLOG pour répondre à des questions sur leurs caractéristiques. Notre fichier s’appellera « animaux.pl » :

animal(chien).

animal(chat). 

animal(oiseau).

mammifere(chien).

mammifere(chat).

Lancez votre interpréteur et chargez le fichier source à l’aide de la commande appropriée. Par exemple, dans SWI-Prolog, il s’agira de la commande « consult ». Ici, nous exécuterons « chemin/vers/animaux.pl ». Dès que le fichier source est chargé, vous pouvez commencer à interagir avec le programme PROLOG.

Comment va répondre un programme PROLOG ?

Comme vu précédemment,  le mode de résolution de PROLOG est logique. Lorsqu’une requête lui est soumise, il va tenter de trouver des preuves en utilisant les faits et les règles définies dans sa base de connaissances. Il recherche des prédicats correspondant à la requête en termes d’arité et de noms. Si la requête ne correspond pas directement à un élément contenu dans sa base de connaissances, il examine les règles définies pour trouver des preuves.

Dès lors qu’une règle s’applique, PROLOG utilise la récursivité pour continuer à chercher d’autres preuves en répétant le processus d’unification et de résolution avec de nouveaux termes. S’il parvient à trouver une preuve pour la requête, il retourne les résultats correspondants. Sinon, il retourne « false » pour indiquer qu’aucune solution n’a été trouvée. PROLOG explore toutes les possibilités, jusqu’à ce qu’une solution soit trouvée ou que toutes les options aient été épuisées.

Reprenons notre exemple précédent et demandons à PROLOG quels animaux sont des mammifères : ?- mammifere(X).  Il va tenter de trouver une solution en unifiant les faits et les règles avec la requête. Ici, il va trouver les faits mammifere(chien) et mammifere(chat), va unifier X avec ces valeurs et répondre :

X = chien ;

X = chat.

Comment PROLOG est-il utilisé dans le domaine de l’intelligence artificielle ?

PROLOG est particulièrement efficace dans le traitement du langage naturel pour effectuer des tâches d’analyse de texte telles que l’extraction d’informations, l’analyse sémantique et la résolution de l’anaphore. Il est aussi utilisé pour développer des systèmes de recommandation personnalisés.

Il peut recommander des produits ou des services en se basant sur les intérêts et les habitudes d’achat des utilisateurs. Il peut également recommander des itinéraires ou résoudre des problèmes de planification. PROLOG est utilisé pour développer des assistants virtuels ou des chatbots. Ils peuvent interagir avec les utilisateurs, comprendre leurs questions et fournir des réponses pertinentes.

PROLOG a été l’une des premières approches utilisées dans le TAL Biomédical pour la génération des données synthétiques. En effet, un système expert médical basé sur PROLOG peut être développé, par exemple, pour aider les médecins dans le processus de diagnostic. En saisissant des paramètres correspondant aux symptômes, aux maladies, aux facteurs de risque et aux traitements, PROLOG recherche des prédicats et propose des diagnostics potentiels en réponse.

Si l’apport de PROLOG a été considérable pour le traitement algorithmique du langage (TAL), d’autres langages de programmation sont désormais massivement utilisés pour l’IA comme Python, Java, R, Lisp ou encore Julia. Bien qu’ils ne soient pas uniquement dédiés à l’intelligence artificielle, ces langages proposent des outils adaptés à ses problématiques actuelles. Ainsi, Python est le plus populaire grâce à ses nombreuses librairies, comme Scikit-Learn, idéale pour le machine learning, et TensorFlow pour le Deep Learning.

Vous souhaitez vous former à l’Intelligence Artificielle, IA School vous présente son programme grande école IA.