Interaction en langue naturelle avec une base de données

Encadrants : 

Occurrences : 

2020

Nombre d'étudiants minimum: 

2

Nombre d'étudiants maximum: 

6

Nombre d'instances : 

1

Domaines: 

Interacting with a database in natural language

 

L’objectif est de permettre à un utilisateur occasionnel d’utiliser et de gérer une petite base de données en s’exprimant de manière naturelle.
Par exemple:

  • ordonne par type et par prix
  • enlève la colonne prix
  • affiche les commandes par client
  • fais le total de MontantCommande par client
  • calcule le nombre de commandes par client
  • ajoute une colonne ClientFidele
  • remplace ClientFidele par x si MontantCommande_total dépasse 1000
  • supprime les lignes en double
  • affiche les commandes plus grandes que 100
  • marque les commandes normales
  • ...

Cette étude vise à concevoir un programme générique, facilement adaptable à n’importe quelle base de données, et transposable à d’autres types d’interactions sous forme de commandes (par ex. système de gestion de fichiers, pilotage de commandes système).
Le dernier exemple ("marque les commandes anormales") suppose un petit travail sur la détection d’anomalies.

Description

Il s’agit d’un projet d’intelligence artificielle. L’objectif est d’amener la machine à réaliser des actions qu’elle comprend, tout en levant les ambiguïtés éventuelles. Ces ambiguïtés peuvent provenir de l’emploi d’expressions imprécises comme "affiche les clients récents", de l’ambiguïté des données, par exemple "coche Dupont" dans le cas où plusieurs enregistrements correspondent à Dupont, ou encore de l’ambiguïté de l’action à effectuer, comme dans "supprime les enregistrements en double" (où il faut comprendre: une seule suppression par paire).
Un second objectif, relativement indépendant du premier, consiste à analyser les données de la base pour en extraire des prototypes. Cette analyse permet d’une part de repérer les situations anormales (par ex. "un client qui a dépensé 10 fois plus que normalement") et d’autre part de fournir des descriptions optimales ("c’est un client qui a dépensé énormément"). Ces deux aspects reposent sur l’application d’un principe MDL (minimal description length). L’intérêt de cette analyse des données est de permettre à la machine de prendre l’initiative dans le dialogue en repérant les situations anormales et en lui permettant de décrire les objets de la base d’une manière plus "humaine".

Travail envisagé

Le projet est adaptable dans une certaine mesure aux préférences et aux compétences des étudiants. Il pourra être orienté vers une sélection des tâches suivantes, qui donnent une indication du travail attendu.

  • Analyse syntaxique basique et "permissive" des entrées en langage naturel de l’utilisateur.
  • Repérage des prédicats et des constantes connues. Dialogue en cas de mots incompris.
  • Levée des ambiguïtés en lien avec le contenu de la base.
  • Calcul d’une action ou d’un plan.
  • Négociation éventuelle de l’action ou du plan à travers un dialogue.
  • Exécution du plan ou de l’action. L’interface avec la base pourra se faire via SQL (ou equiv) ou via un module minimal fourni.
  • Analyse des données de la base pour constituer des prototypes.
  • Calcul de description minimale.
  • Détection d’anomalies. Dialogue à l’initiative du programme.

Réalisation

Le langage de programmation est Python. Le projet sera réalisé de manière incrémentale. Une attention particulière sera portée sur:

  • la modularité,
  • la capacité à dégager des concepts et des principes
  • la clarté et la portabilité du programme.

Voir aussi:

http://jim.r2.enst.fr:4242/Projects/P17091201.html