CHATTERBOTS.FR

Sommaire


Lancement du site, à propos


Qu'est ce qu'un agent conversationnel ?


Lancement du site, à propos



Ca faisait un petit moment que j'avais envie de lancer un site sur les chatterbots. La publication du code source de Genesis (téléchargeable ici) m'a fait sauter le pas. J'ai conscience que les outils utilisés pour créer Genesis ne sont pas très conventionnels et que l'interpréteur php est une horreur sans nom. J'espère néanmoins que ça permettra à certains de se lancer dans la construction d'agents conversationnels.

Après avoir été fasciné par ALICE à l'aube du 3e millénaire (par un article de "Science et vie junior"), après avoir tenté d'écrire mon propre bot façon "livre dont vous êtes le héros", après avoir bataillé avec différents langages de programmation, j'ai rencontré en 2002 un chatterbot en javascript (Socratus, disparu depuis) écrit par Sylvie Ursulet, où il suffisait de faire "clic droit=>afficher la page" pour le modifier. C'était très basique (le système ne pouvait même pas détecter...les points d'interrogations !) mais ce code source offert, si simple d'accès, fut le point de départ de Genesis.

Je remercie mon entourage et m'excuse de les avoir usés avec ces bêtises. Je me rappelle que tous les deux jours, je disais "ça y est, teste-le, j'ai corrigé ce qui n'allait pas la dernière fois, j'ai FINI le robot !" et le pire c'est qu'à chaque fois... j'y croyais. Puis vint l'apprentissage du VB6 et des pelletés de tentatives pour créer un interpréteur de cerveau (avec des syntaxes plus bizarres les unes que les autres) et ce fut finalement à la 23e tentative (que vous pouvez trouver ici) qu'a émergé quelque chose qui marchait à peu près, mais que malheureusement, contrairement à mon vieux chatterbot en javascript qui ne connaissait pas les points d'interrogation, je ne pouvait pas mettre sur internet.

Aujourd'hui, l'interpréteur est en php, et à l'image de ce vieux Socratus qui m'a été offert quand j'étais petit, il est librement téléchargeable ici. J'espère que mon travail, bien que modeste (c'est un système tout simple de mots clefs tel qu'il en existe depuis près de 45 ans), pourra faire rêver quelques programmeurs en herbe, voire pourquoi pas éveiller des vocations au delà des chatterbots, vers ce que je pense être essentiel, comme di JM Truong, cette forme de vie nouvelle susceptible de prendre la suite de l'Homme comme habitacle de la conscience.

22 juin 2010 - M.L.

Qu'est ce qu'un agent conversationnel ?



Un agent conversationnel, ou chatterbot, est un programme qui a pour but de simuler une conversation naturelle. Dans la fiction, on peut citer HAL, dans 2001 : odyssée de l'espace, le MCP dans Tron ou Lisa dans la série Code LISA.
L'un des premier chatterbot fut Eliza, un programme qui essayait de jouer le rôle d'un psy.
C'est d'ailleurs une constante qu'on retrouve souvent chez ces programmes. Même chez le plus basique, le programmeur a souvent intégré une réponse pour des phrases comme "je suis triste" ou "j'ai besoin de parler".
La plupart des chatterbots actuels, qu'ils soient amateurs ou professionels, fonctionnent avec une liste de questions/réponses, un peu comme ça:
SI l'utilisateur tape "bonjour"
ALORS répondre "Salut !"./


C'est un fonctionnement très basique, qui demande d'entrer plusieurs milliers de possibilités pour réussir à soutenir une conversation simple.
Rien que pour la salutation, il faut prévoir une vingtaine de possibilités : Bonjour, bonsoir, salut, coucou, slt, lu, salu, toc toc, kikoo, bjr, plop, etc.

Il est évidemment impossible de prévoir toutes les phrases possibles. La solution est de réagir à des morceaux de phrase.
Par exemple :
Si l'utilisateur tape "fromage"
alors répondre soit "Moi j'adore le fromage !", "Le fromage ça pue."

Ce qui donnera quelque chose comme :
"Je vais bouffer du fromage je reviens
-Moi j'adore le fromage !""

Une autre technique pour varier les réponses consiste à reprendre une partie de la phrase de l'utilisateur.
Si l'utilisateur tape "je vais X"
alors répondre soit "Pourquoi tu vas X ?", "Tu vas souvent X ?"

Ca donne parfois des bons résultats :
"Je vais à la piscine.
-Pourquoi tu vas à la piscine ?"


et des mauvais :
"Je vais bouffer du fromage je reviens
-Pourquoi tu vas bouffer du fromage je reviens ?"

Au programmeur de faire attention, par exemple en inversant les pronoms (ce qui n'est pas si évident) ou en se limitant à un seul verbe.


La technique d'Eliza était de répondre à une question par une autre :
"Qui es tu ?
-Préfères-tu que je sois ou que je ne sois pas ?
-Non, je m'en fous.
-Pourquoi es tu si négatif ?"


Associé (ou non) à ce système de détection de morceaux de phrases pré-programmées, un chatterbot peut utiliser d'autres systèmes, par exemple :

-Réutiliser des phrases de l'utilisateur :


"Bonjour.
-Bonjour.
-Ca va ?
-Ca va ?
-Arrête de répéter tout ce que je dis !
-Arrête de répéter tout ce que je dis !"

Puis, lorsqu'on le réutilise :

"Bonjour.
-Ca va ?
-Oui ca va et toi ?
-Oui ca va et toi ?
-Ca va ?
-Arrête de répéter tout ce que je dis !"


Ce type de système a plusieurs défauts : tout d'abord, il n'y a aucune notion de contexte. Une réponse peut être valable lorsqu'on parle d'un sujet mais ne plus être valable pour un autre. Ensuite, les utilisateurs peuvent souvent du coq à l'âne, sans se soucier de répondre à la question posée par le robot. Autre chose, le robot n'a pas de personnalité propre, il peut se retrouver avec plusieurs sexe et âges différents. Enfin, les robots fonctionnant de cette façon finissent souvent pas être très vulgaires....

Certains utilisent des "Chaîne de Markov", comme Megahal (à tester sur irc.ogamenet.net #tfr) et de Pyborg
Cela permet de générer des phrases gramaticalement en détectant quels mots se rassemblent entre eux, en réutilisant de smots présents dans la question de l'utilisateur.

Il en ressort souvent des choses interressantes, générées par le bot, avec un sujet verbe complement bien à sa place.
Par exemple :
"C'est l'heure de manger.
-Rien de plus en service actuellement, nous regrettons de ne pas te manger."
Jabberwacky, utilisant un système similaire, aurait appris le français tout seul, ce qui est très impressionant. Par contre, il peut changer de nom et d'âge au cours d'une même conversation.

-Construire une base de connaissance :

Pour répondre à des questions du type "combien une hirondelle a-t-elle de pattes ?", plutôt que d'imaginer chaque question, il peut être plus rapide de créer une base de donnée avec des attributs du type : hirondelle=>oiseau, oiseau=>deux pattes. C'est ce que fait Mylène ou le système de Patrice Dargenton.
C'est un travail énorme, qui ne sert qu'à répondre à des questions pièges. Ce n'est pas parce qu'un programme est capable de faire des syllogisme qu'il peut mener une conversation.

A noter qu'il existe une base de connaissance open source, Cyc".
ML - Contact : trotter.poulpe@gmail.com