Réalisation d`un agent conversationnel

Transcription

Réalisation d`un agent conversationnel
S TAGE DE FIN D ’ ÉTUDE M ASTER 2
A PPRENTISSAGE ET T RAITEMENT AUTOMATIQUE DE LA L ANGUE
Création d’un agent conversationnel pour orienter
les clients de la MAIF
Auteur :
Adeline G RANET
Responsable MAIF :
Emmanuel S OREL
Encadrant :
Emmanuel M ORIN
Responsables Sopra Steria :
Wilfrid PAPIN,
Maximilien H OLLE
3 juillet 2015
Réalisation d’un agent conversationnel
Stage fin d’étude
Résumé
La Stratégie client est devenue le maître mot des entreprises qui cherchent sans cesse à améliorer et
humaniser le relationnel client sur leur site internet. C’est pour cela que, depuis quelques années, des
nouveaux agents proposant de l’aide aux clients connectés apparaissent sur les sites. En réalité, ce sont
des agents conversationnels autrement appelés Chatbot, le robot simule une conversation amicale avec
le client tout en tentant d’apporter des réponses (pré-enregistrées) à ses questions. Ce système a déjà
atteint ses limites et beaucoup d’agents conversationnels ont disparu. Lors de questions trop précises
les chatbots ont une tendance à être hors-sujet. L’atout majeur dans cette course reste l’innovation
technologique. Il est donc nécessaire de perfectionner le fonctionnement du Chatbot en détectant si la
question dépasse leur champ d’action et agir en conséquence. C’est ce que nous réalisons à travers ce
projet, construire un prototype d’agent conversationnel avec un rôle bien défini et montrer sa capacité
à distinguer plusieurs types de questions. Nous utilisons différentes méthodes bien connues dans le
traitement automatique du langage que nous mettons au service d’un robot.
Abstract
For companies, the customers strategy is the guideline. They want to be more and more userfriendly and want to humanise the relationship between their website and their customers. For this
reason, in few years, new agents have appeared on web sites, offering assistance to online customers.
In reality, they are chatbots which simulate a friendly conversation with a customer and try to give him
a correct pre-registered answer. This system has already reached its limit and many chatbot have disappeared. When questions are too specifics, the chatbots tend to be off-topic. In this race, the major asset
remain the technology innovation. So, it’s necessary to improve operation by detecting if a question
is outside the scope of chatbot and react accordingly. In this project, we are achieving the creation of
a chatbot prototyp. This prototyp has a specific function and is able to differenciate several types of
questions. Various well-known methods in Natural Language Processing are used for this chatbot.
Université de Nantes
1
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
Remerciements
Je souhaite tout d’abord remercier Maximilien HOLLE et les dirigeants de SOPRA STERIA qui m’ont
acceptée en stage et m’ont permis de participer à l’écriture de mon sujet. Bien que mon profil ne corresponde pas aux stages proposés, ils ont détourné le problème en suggérant de m’en créer un sur mesure.
À l’équipe MAIF-SOPRA STERIA qui m’a encadrée chaque jour, un grand merci, tout particulièrement, Wilfrid PAPIN pour sa bienveillance et son soutien permanent ; ainsi qu’Emmanuel SOREL pour
ses conseils. À leur coté, j’ai eu la chance de rencontrer des personnes provenant d’horizons différents
mais sensibles et passionnées par l’innovation notamment au cours du Digi’Tech.
Également, au responsable du CSM-I, Frédéric JENK qui m’a fait confiance en m’envoyant en tant
qu’observatrice sur un projet d’aide à la décision entre SOPRA STERIA et la MAIF. J’ai pu assister aux
ateliers dédiés à la construction des règles pour le modèle.
Sans oublier tout mes collègues du CSM-I qui m’ont accueillie chaleureusement, apporté leur expertise quand j’en avais besoin, et fait part de leur expérience professionnelle ainsi que personnelle (et sans
qui mes pauses du midi auraient été bien longues).
Pour finir, je souhaite remercier tous les correcteurs qui ont dû prendre du temps pour relire mon travail.
Université de Nantes
2
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
Table des matières
Remerciements
2
1
Introduction
4
2
L’environnement professionnel
5
2.1
Sopra Stéria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
MAIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3
4
5
Un agent conversationnel au service des clients
7
3.1
Répondre à la Stratégie client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.2
Des contraintes environnementales fortes . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.3
Des enjeux technologiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
De la recherche à la commercialisation
10
4.1
Les intelligences artificielles au cœur de la recherche . . . . . . . . . . . . . . . . . . .
10
4.2
Les agents conversationnels au plus proche de nous . . . . . . . . . . . . . . . . . . . .
15
4.3
Ouverture sur d’autres domaines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
Des modèles pour un agent
20
5.1
Le data workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
5.2
Une base de connaissances à construire . . . . . . . . . . . . . . . . . . . . . . . . . .
21
5.3
Solution suivant CleverScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
5.4
Solution suivant la classification des questions . . . . . . . . . . . . . . . . . . . . . . .
27
5.5
Solutions s’appuyant sur les liens sémantiques . . . . . . . . . . . . . . . . . . . . . . .
31
5.6
Réponses du robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
6
Application finale
35
7
Conclusion et perspectives
38
A Corpus de retranscriptions téléphoniques
Université de Nantes
42
3
M2 ATAL
Réalisation d’un agent conversationnel
1
Stage fin d’étude
Introduction
2005, nous voyons de plus en plus de personnages animés sur nos sites webs préférés qui nous
accompagnent durant nos visites. Ils viennent souvent nous proposer de l’aide sous forme d’une
fenêtre de conversation. En réalité, ce sont des agents virtuels qui sont présents pour aider l’internaute
dans son cyber-environnement. Ces agents donnent un coté plus amical et conviviale à un site internet, et
démocratise souvent l’outil de recherche.
D
EPUIS
Cette technologie innovante est devenue un élément indispensable d’un point de vue marketing. En
effet, cet agent propose une assistance à tout moment à l’internaute, 7j/7 et 24h/24 sur le site. À travers
un système de fenêtre de dialogue, le client peut avoir une discussion avec l’agent virtuel, dans laquelle
ce dernier essaie d’apporter des réponses pertinentes.
Cette technique se fonde sur le traitement automatique du langage, soit par analyse de phrases ou par
détection de mots-clés, et retourne une réponse enregistrée dans sa base de connaissances en fonction de
l’analyse effectuée.
C’est dans ce contexte d’innovation technologique que j’ai réalisé mon projet.
Durant une période de six mois, j’ai réalisé mon stage pour l’entreprise SOPRA STERIA au sein des
locaux de la MAIF à Niort, qui est le client direct de ce projet. Ce dernier a eu pour but la conception
et la réalisation d’un prototype d’un agent conversationnel conçu pour aider les internautes à trouver
leurs documents ou informations personnelles sur le site de la MAIF. Le but du stage est de montrer la
faisabilité et l’apport de valeurs pour le client.
Dans un premier temps, le contexte dans lequel le stage s’est déroulé, sera présenté. Puis toutes les
solutions envisagées et testées seront détaillés ainsi que les résultats qu’elles ont fournis. Pour finir, la
solution finale sera présentée.
Université de Nantes
4
M2 ATAL
Réalisation d’un agent conversationnel
2
2.1
Stage fin d’étude
L’environnement professionnel
Sopra Stéria
Sopra Steria est une société de services, leader européen de la transformation numérique, qui propose
l’un des portefeuilles d’offres les plus complets du marché : conseil, intégration de systèmes, édition de
solutions métier, infrastructure management et business process services. Il apporte ainsi une réponse
globale aux enjeux de développement et de compétitivité des grandes entreprises et organisations.
Combinant valeur ajoutée, innovation et performance des services délivrés, Sopra Steria accompagne
ses clients dans leur transformation et les aide à faire le meilleur usage du numérique. Fort de 37 000
collaborateurs dans plus de 20 pays, le groupe Sopra Steria affiche un chiffre d’affaires de 3,4 milliards
d’euros en 2014.
Grâce à une chaîne continue de valeur ajoutée, Sopra Steria apporte une réponse globale aux enjeux
métier des clients et les accompagne tout au long de leur transformation : compréhension stratégique,
cadrage des programmes de transformation, conception et construction des solutions avec leur mise en
œuvre, leur évolution et leur maintien en conditions opérationnelles. Proche de ses clients, le Groupe
garantit la pertinence continuelle de ses offres innovantes en adéquation aux vrais enjeux stratégiques.
Conseil L’activité conseil de Sopra Steria Consulting s’étend du conseil en management au conseil en
technologie. Les consultants interviennent sur le plan stratégique, puis conçoivent et mettent en œuvre
des programmes de transformation, en France et en Europe, en tirant profit de la révolution digitale en
cours.
Intégration de systèmes Les experts adressent l’ensemble du cycle de vie du patrimoine applicatif à
travers des prestations d’intégration de systèmes et d’Application Management. Ils s’appuient sur une solide politique industrielle afin de construire, maintenir et moderniser le système d’information en réponse
à de profondes transformations d’entreprise.
Édition de solutions métier Sopra Steria est un éditeur de solutions métier reconnu par les cabinets tels
que Gartner et Forrester. Le Groupe offre des solutions leaders dans trois domaines : les services financiers
(filiale Sopra Banking Software), les ressources humaines (filiale Sopra HR Software) et l’immobilier,
fruits de plus de 40 ans de savoir-faire sur ces secteurs.
Infrastructure Management (IM) Sopra Steria accompagne la transformation des infrastructures et
des modes de consommation des services IT par l’intégration de technologies et l’opération de services
autour du Cloud, du Datacenter et de l’environnement de travail utilisateur.
Business Process Services (BPS) Sopra Steria possède une expertise unique en BPS et services partagés qui lui permet de concevoir des solutions alliant performance et rentabilité. Les clients peuvent ainsi
Université de Nantes
5
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
lui confier l’externalisation des fonctions Finance, Comptabilité, Ressources Humaines et Achats.
Sopra Steria vise en permanence à offrir le meilleur des technologies et est organisé pour détecter les
innovations qui apporteront de la valeur aux métiers et aux SI 1 de ses clients. Sopra Steria bénéficie
d’une expertise reconnue aussi bien dans le domaine des architectures IT que sur d’autres thèmes tels le
big data, le cloud, les réseaux collaboratifs, la mobilité ou encore la cybersécurité.
Parmi ses clients importants, nous avons de grands groupes français, couvrant un large spectre de
domaines, comme Airbus, La banque postale, SNCF, EDF, Crédit Agricole, etc. L’agence de Niort a pour
principaux clients les assurances dont la MAIF chez qui mon stage se déroule.
2.2
MAIF
La MAIF (Mutuelle d’Assurance des Instituteurs de France) fondée en 1934 est une mutuelle composée de plus de 6 300 employés et dont le siège social se situe à Niort. Elle est le 1er assureur des
associations et des établissements publics en France actuellement.
La MAIF s’engage dans une rupture Digitale pour faire évoluer son parc technologique au gré des innovations technologiques. Elle souhaite explorer et exploiter plus en profondeur le Big Data en collectant
et analysant les données. Cette rupture est aussi faite pour suivre les nouveaux modes de consommations
évoluant chaque jour ce qui implique d’adapter les produits aux nouveaux besoins.
Pour entrer dans la stratégie Digitale avec force, le laboratoire d’incubations digitales a été créé avec
pour mission d’impulser et de cultiver l’innovation au sein de la DSI, d’accompagner vers le Digital
Ready et soutenir l’innovation, le digital et l’agilité à la MAIF.
Ce laboratoire se destine à rendre plus accessible l’innovation que se soit pour les employés, mais également pour les sociétaires et les partenaires, à l’aide de plus d’une trentaine d’expérimentations touchant
des domaines divers tels que le Big Data, la téléphonie, les réseaux sociaux, l’affichage, etc.
1. Système d’Information
Université de Nantes
6
M2 ATAL
Réalisation d’un agent conversationnel
3
Stage fin d’étude
Un agent conversationnel au service des clients
Dans cette partie, nous allons poser le contexte dans lequel le stage se déroule à travers différents
points d’entrées comme la démarche de l’entreprise, l’environnement technique et technologique.
3.1
Répondre à la Stratégie client
La MAIF est dans une dynamique d’innovation dans les solutions techniques qu’elle propose. C’est
dans la continuité de cette démarche, mais également pour satisfaire de réels besoins qui se font ressentir
du coté client mais aussi du coté MAIF, que ce projet a été mis en place.
Coté MAIF Le principal objectif est de désengorger les lignes téléphoniques des problèmes mineurs.
En effet, à des périodes données comme début septembre et décembre, beaucoup d’appels téléphoniques
sont reçus pour obtenir un document précis (ici, pour une attestation scolaire ou un avis d’échéances) qui
est accessible depuis la session du client sur le site web.
L’idée serait donc de proposer une aide active sans pour autant monopoliser des conseillers. Cette
aide devrait être proposée au client au moment où il en a besoin et non quelques temps après.
Coté Client L’objectif principal est d’accompagner l’usager dans son environnement internet MAIF. Il
n’est pas toujours facile de se retrouver sur les sites internet et encore moins lorsque l’on souhaite réaliser
une opération précise et pour la première fois.
C’est pour cela qu’une solution est recherchée pour orienter en temps réel l’utilisateur selon son
besoin, tout en lui facilitant l’accès à ses documents. Il est incontestable que si l’utilisateur reçoit de
l’aide au moment où il en a besoin, il va gagner du temps.
Des solutions technologiques vers une solution idéale Actuellement, la MAIF a déjà mis en place des
systèmes de chatBox où de réels conseillers répondent aux questions diverses des clients. L’inconvénient
de cette technique est qu’une des conditions qui a été fixé plus haut n’est pas satisfaite. Il y a toujours des
conseillers qui sont monopolisés pour une tâche qui ne mérite pas tant d’attention. Mais l’idée de guider
en temps réel est, elle, bien respectée.
La création d’un agent conversationnel s’est imposée naturellement. En effet, l’agent conversationnel
peut orienter pas à pas l’utilisateur dans son espace pour trouver simplement et rapidement ses documents.
Il peut mettre le client en relation avec un vrai agent si la question est trop précise ou qu’elle n’est pas
dans ses compétences.
3.2
Des contraintes environnementales fortes
Matérielle L’agent conversationnel doit être sensible au vocabulaire de l’assurance car son objectif est
d’assister les clients au cœur du site de la MAIF. Il faut donc un corpus suffisant, c’est-à-dire représentatif
Université de Nantes
7
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
de ce domaine en particulier. Un tel corpus déjà constitué et prêt à l’emploi n’existe pas au sein de l’organisme. Ne pouvant pas utiliser un corpus généraliste (comme Wikipédia) car les notions de l’assurance
y seraient noyées, il sera nécessaire d’en créer un.
Temporelle La réalisation de cet agent conversationnel doit se faire dans le temps qui m’est imparti
dans le cadre de mon stage autrement dit six mois pour faire la constitution du corpus, la conception, la
réalisation et les tests.
Environnementale La base de connaissances de l’assistant doit prendre en compte la complexité de
la syntaxe qui est proportionnelle au nombre de clients. En effet, pour une même question, certains préféreront une phrase interrogative, d’autres une phrase narrative ou encore juste les mots-clés. C’est un
paramètre à ne pas négliger si l’on souhaite avoir un chatbot efficace.
3.3
Des enjeux technologiques
3.3.1
À la découverte des agents
Pour faciliter la conversation entre un utilisateur et la machine, une conversation homme-machine en
langage naturel est utilisée, c’est cela que l’on appelle communément ChatBot. En France, ils sont appelés
agents conversationnels. Ils ont souvent l’apparence d’un personnage virtuel pour interagir avec les gens.
Les différents systèmes existants utilisent des supports variés comme le langage naturel écrit, parlé, la
gestuelle, les émotions faciales ou encore des actions sur l’interface. Chacun a un rôle social à remplir :
— Assistant : agent présent ponctuellement afin d’aider et guider l’utilisateur sur un site web ou dans
un logiciel, comme Clippy l’assistant office de Microsoft ;
— Coach : agent présent dans des applications ou dans des jeux sportifs intégrant des programmes
personnalisés comme avec Wii Fit Plus ;
— Tuteur : agent partageant volontiers ses connaissances avec leurs interlocuteurs comme dans les
logiciels éducatifs Adi ou Tim7 ;
— Ami : robot créé pour amuser leur interlocuteur.
Ce qui rend ces agents utiles et intéressants c’est leur intelligence et comment elle se manifeste. Il est
possible de classer les agents conversationnels suivant trois types de représentations de la connaissance :
— Reformulation : certains agents n’ont aucune connaissances et se limite à reformuler les questions
que leur pose l’utilisateur ;
— Base de connaissances fixe : l’agent est capable de répondre uniquement aux questions dont la
réponse est contenue dans sa base de données ;
— Base de connaissances évolutive : certains agents ont la capacité d’apprendre au fil des conversations avec leur interlocuteur et de mémoriser les informations.
Ces différents types seront développés dans l’état de l’art à travers l’analyse de certains agents et leur
algorithme.
Université de Nantes
8
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
Pour ces différents types d’agents, leur base de connaissances est créée à la main. Dans le cas d’un
agent ayant la capacité d’apprendre, cette base de connaissances est enrichie avec les informations données au cours des conversations avec les utilisateurs.
Les réponses du robot sont restreintes à la taille de ses connaissances. Quel que soit le rôle de l’agent
et malgré ses connaissances limitées, il est important que la conversation reste fluide et que l’utilisateur
pense parler à une personne réelle. Pour cela quelques artifices sont utilisés comme réaliser des temps de
pauses avant la réponse pour marquer un temps de réflexion ; réaliser des transitions entre deux phrases
et garder une cohérence dans l’échange pour ne pas déstabiliser l’utilisateur.
Techniques Pour réaliser un agent intelligent, il est important de faire du traitement automatique du
langage pour donner cette fluidité tant recherchée. À travers le TAL 2 , le système va être capable de
comprendre, d’analyser et d’exploiter ce que l’utilisateur lui dit.
Test de Turing Le test de Turing est un test qui a été mis en place pour essayer de définir si une
intelligence artificielle est capable de se comporter comme un humain, c’est-à-dire qu’elle est capable de
faire preuve de réflexions et de réactions face à un changement de situation.
Le test consiste à confronter un humain face à deux interlocuteurs, une intelligence artificielle et un
humain. S’il n’est pas capable d’identifier l’humain de la machine alors le test est validé pour le robot.
Par exemple, le CAPCHA repose sur ce test, il propose une image contenant chiffres et lettres où un
ordinateur n’est pas capable (pour l’instant) d’identifier les informations demandées.
3.3.2
Des exigences à respecter
Selon Stan Franklin dans son article de 1996[1], il est possible de lister les compétences que doit avoir
un robot pour prétendre au titre de chatbot. Voici les plus importantes selon lui :
— Action/Réaction : l’agent doit répondre dans un court laps de temps, cependant certains développeurs ont ajouté quelques secondes avant de fournir la réponse pour simuler la rédaction du
message ;
— Autonomie : l’agent doit contrôler ses actions, il ne doit pas attendre qu’une tierce personne lui
donne l’autorisation de réagir ;
— Persistance : le processus doit tourner en continue ce qui le rend disponible en tout temps auprès
de l’utilisateur ;
— Proactivité : il ne doit pas seulement répondre à l’environnement, il doit pouvoir faire des propositions également.
À ces critères, il faut ajouter l’acceptabilité, c’est-à-dire ne pas faire peur à l’utilisateur, la crédibilité
dans l’accomplissement de sa tâche, et la courtoisie. Ils sont, dans le cadre d’une application commerciale,
tout aussi importants que les premiers critères développés.
2. Traitement Automatique du Langage
Université de Nantes
9
M2 ATAL
Réalisation d’un agent conversationnel
4
Stage fin d’étude
De la recherche à la commercialisation
Le domaine des intelligences artificielles a toujours intéressé les chercheurs concernant la structuration et l’exploitation des données. Depuis un demi-siècle déjà, la recherche ne cesse d’explorer de
nouvelles branches pour améliorer les performances de dialogues des robots. En parallèle, bon nombre
d’industriels s’essayent à aider leurs clients par le biais d’agents virtuels. C’est donc ces deux aspects qui
vont être mis en avant dans cette partie.
4.1
Les intelligences artificielles au cœur de la recherche
L’étude suivante présente des chatbots qui diffèrent complètement de par leur implémentation mais
qui ont été créés sans but social et donc qui ont de grandes connaissances générales. De plus, ces robots
ont été choisis parmi d’autres car leur algorithme principal sont accessibles. Ils permettent ainsi de nous
faire une idée sur les solutions que nous pouvons élaborer.
4.1.1
ELIZA[2]
Le premier chatbot, ELIZA, a été créé en 1966 par Joseph Weizenbaum du MIT en se basant sur
le projet MAC 3 . Cette intelligence artificielle tendait à imiter un psychothérapeute en reformulant les
questions de son interlocuteur.
Son fonctionnement reste basique car elle utilise une simple méthode de reconnaissance et substitution
des mots-clés dans les phrases données par l’utilisateur à partir de règles. Elle n’interprète pas ce qui lui
est dit et elle n’intègre pas la notion d’apprentissage.
Étant une pionnière dans son domaine, il semble qu’elle ait troublé plus d’un utilisateur à son époque.
Cependant, avec les versions en ligne d’ELIZA (la version de base de Weizenbaum n’étant pas disponible), il est difficile de reproduire les tests qui ont été publiés à l’époque.
L’algorithme est assez simple mais complexe pour l’époque. Dans un premier temps, la phrase utilisateur est extraite et segmentée. Une recherche de mots-clés est effectuée, dès qu’il y en a un qui est détecté,
il est traité suivant les règles prédéfinies dans le script. Le traitement correspond souvent à une substitution du mot trouvé, par exemple lorsque les termes "me", "my", "I" sont détectés, ils sont remplacés par
"you", "your" et "you". Dans le cas, où aucun mot n’est détecté, une précédente phrase est récupérée et
retournée.
Un exemple simple de matching serait "I like XxX" où ELIZA répondra avec "Why do you like
XxX ?"
La détection de mots-clés donne un rang ou un ordre de priorité aux termes présents dans une section
de phrases. Le rang donné a une grande importance, car si d’autres mots-clés de rang inférieur ont été
trouvés, dans la partie gauche de la phrase, ils sont supprimés. S’il n’y a aucun mot-clé détecté, toute la
3. un des premiers systèmes d’exploitation à temps partagé, http://fr.wikipedia.org/wiki/Compatible_Time_
Sharing_System
Université de Nantes
10
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
section de phrases est supprimée (délimité par une virgule ou un point). Tout ce qui concerne les motsclés et les règles qui leur sont dédiés, est stocké dans un fichier externe ce qui lui permet de ne pas être
attaché à une unique langue.
Eliza se focalise sur certains problèmes techniques qu’elle doit résoudre comme identifier le mot-clé
le plus important de la phrase ; les cooccurrents qui seront les plus sujets à des transformations ; choisir
la règle de transformation la plus appropriée et l’appliquer ; être capable de répondre intelligemment dans
le cas où il n’y a pas de mots-clés reconnus.
Les règles de transformations peuvent être très simples comme par exemple détecter les mots "I am
XxX" et reformuler en "How long have you been XxX ?", dans ce cas-là, peu importe la signification de
XxX, la reformulation est simple. Pour créer les règles, Joseph Weizenbaum s’est mis dans la peau d’un
étranger avec peu de connaissances dans la langue mais qui a une bonne oreille. Il entend et comprend
les termes simples comme "you", "me" ou "are".
Dans le script, sous forme de listes, chaque mot-clé est soumis à des règles de décompositions et de
rassemblements suivant sa position dans la phrase de l’utilisateur. Il faut retrouver une découpe du texte
qui accepte la position de chaque mot-clé trouvé.
Au regard, d’une version ELIZA en ligne (avec le code source disponible) le fonctionnement pour
le choix des réponses est le suivant. Deux tableaux sont créés, l’un avec les mots-clés provenant de
l’utilisateur et l’autre avec les réponses possibles. Pour chaque mot-clé correspond un certain nombre de
réponses donné par un intervalle. Par exemple si le mot-clé est "Can YOU", les réponses possibles sont
désignées dans l’intervalle 1 à 4 du tableau des réponses cela sous-entend que le tableau soit ordonné.
Suite à quelques tests sur une version en ligne en anglais, voici quelques petites observations :
— dès que l’on met "you" dans la phrase, elle répond "We were discussing you, not me" ou une autre
phrase du même genre même si nous lui écrivons "I miss you" ;
— quand il n’y a pas plusieurs mots-clés reconnus, par exemple si on lui dit "yes", elle répond en
boucle "are you sure" ;
— quand plus aucune solutions lui vient, elle reprend la phrase "OK... what is XxX. Tell me more."
où XxX correspond à un morceau de phrases extrait de notre conversation.
Au cours des tests, la conversation devient rapidement désagréable car il n’y a pas de logique la structurant.
Finalement, cette solution supervisée est fonctionnelle mais les conversations sont extrêmement limitées car ELIZA reformule uniquement ce que dit l’utilisateur. Elle n’apporte aucune plus-value à
l’échange. Elle donne l’illusion qu’elle comprend.
4.1.2
A.L.I.C.E[3] ou Artificial Linguistic Internet Computer Entity
Le Dr Richard Wallace[4] a créé ALICE en 1995 en utilisant un langage basé sur la logique d’ensembles qui est SETL 4 . Par la suite d’autres versions ont été réalisées avec des langages plus utilisés
dont C, C++, Java. Depuis sa création A.L.I.C.E ne cesse de prouver ses compétences. En effet, elle a,
4. http://fr.wikipedia.org/wiki/SETL
Université de Nantes
11
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
à plusieurs reprises, gagné le prix Loebner 5 . Et depuis, il n’est pas rare de voir chaque année parmi les
trois premiers des descendants d’A.L.I.C.E.
Le programme utilise un langage XML qui lui est propre AIML(Artificial Intelligence Markup Language). C’est grâce à lui que les réponses sont structurées et cohérentes. AIML utilise principalement trois
éléments :
— le motif est l’élément qui identifie le contenu de l’entrée utilisateur ;
— le modèle est la réponse qui va être retournée à l’utilisateur suivant le motif identifié ;
— la catégorie qui inclut au moins un modèle et un motifs.
La catégorie peut également contenir un contexte, qui permet de relier des motifs a un même modèle.
Avec ce langage, il est facile de sauvegarder des informations concernant l’utilisateur et de les incorporer dans les réponses. Il est également possible d’utiliser des conditions sur les réponses à fournir à
l’utilisateur.
Il est important de noter qu’il ne fallut pas moins de 10 ans pour construire manuellement la base de
connaissances[5] d’ALICE avec 24 000 catégories en entrée au total en 2001. Dans leur article Chatbots :
Are they really useful ?[6], les auteurs ont cherché à automatiser le processus d’apprentissage et conversation d’un corpus d’entraînement au format AIML. Pour cela, ils ont utilisé un corpus de dialogues annoté,
dans lequel, le premier tour de paroles est attribué au motif et le second au modèle.
D’un point de vue algorithmique, l’entrée utilisateur est normalisée. Dans un premier temps, tout
signe de ponctuation est supprimé et l’entrée est segmentée en conséquence. Puis, l’ensemble est passé
en majuscules (contrairement à beaucoup d’autres algorithmes qui préfèrent le passage en minuscule).
Une fois cette étape de prétraitement terminée, l’entrée va chercher à correspondre avec le modèle le plus
long car il est a priori la meilleure solution.
Comme ELIZA, A.L.I.C.E n’a pas de mémoire, elle ne conserve pas d’historique de la conversation.
De plus, elles ont toutes les deux des bases de connaissances fixes. Contrairement aux prochains chatbots
que nous allons présenter qui sont capables d’apprendre au fil des conversations.
4.1.3
CleverBot
Ce chatbot a été créé en 1988, mais il n’a été dévoilé au public qu’en 1997 par Rollo Carpenter[7].
Ce qui démarque ce chatbot de ses prédécesseurs, c’est son utilisation de l’apprentissage et du traitement
automatique du langage. Durant la période entre sa création et sa publication, Carpenter et ses collaborateurs ont enrichi sa base de connaissances avec des conversations, des phrases fréquemment utilisées,
et des paroles de chansons. Cette base de connaissances était estimée à plus de 120 millions de lignes au
moment où le bot a passé avec succès le test de Turing.
Cet agent est un des meilleurs actuellement car il apprend constamment. En effet, il enregistre à
chaque fois toutes les conversations avec les utilisateurs, toutes les questions que CleverBot pose et toutes
les réponses fournies par les utilisateurs. Lorsqu’un utilisateur lui pose une question, il va chercher si lui5. Le prix récompense le meilleur agent conversationnel en se basant sur le test de Turing. Le test consiste à confronter un
humain face à deux interlocuteurs, une IÀ et un humain. S’il n’est pas capable d’identifier l’humain de la machine alors le test est
validé pour l’Intelligence Artificielle
Université de Nantes
12
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
même a déjà posé cette question et retourne une des réponses trouvées. De plus, il est doté d’une mémoire
à court terme ce qui lui permet de détecter le contexte de la conversation. Il peut ainsi sélectionner la
réponse la plus adaptée. Il fait partie des agents qui font de l’apprentissage par imitation.
Ce qui parfois peut amener à des incompréhensions car beaucoup de fautes de frappe changent le
sens des phrases. Et le chatbot se basant uniquement sur les conversations passées si une phrase n’est
pas trouvée, la conversation va perdre tout son sens. Finalement, son côté imprévisible dans ses réponses
(mais logiques malgré tout) a séduit des millions d’utilisateurs.
Pour pouvoir mettre à disposition une partie du savoir de CleverBot, Carpenter et son équipe ont créé
un système de conversations scriptées[8].
CleverScript C’est un système de tableur qui sert de base de connaissances. L’idée est très intéressante
car elle mélange la notion de grammaires lexicalisées, avec la distance de Levenshtein pour mesurer la
ressemblance des termes et la mémorisation d’information voir même l’interprétation. Toutes les informations nécessaires au bon déroulement de la conversation sont incluses dans cette table.
Le tableur contient principalement 7 colonnes :
1. Type : pour identifier s’il s’agit d’une entrée utilisateur, une sortie Bot ou un concept ;
2. Label : cette étiquette s’apparente aux symboles non-terminaux dans une grammaire formelle, elle
va nous permettre de construire les phrases de réponses ;
3. Description : un texte court qui permet d’expliquer/introduire la colonne suivante ;
4. Text : la phrase qui est reconnue en entrée ou qui sera donnée en sortie à l’utilisateur ;
5. If : la condition définit qui permet de sélectionner une réponse parmi celles proposées en utilisant
par exemple les variables d’apprentissages (voir colonne suivante) ;
6. Learn : des informations utiles peuvent être sauvegardées afin d’orienter la conversation suivant
les réponses données par l’utilisateur, par exemple s’il est plus ou moins amical ; ou bien réutiliser
directement les variables de cette colonne pour composer la réponse ;
7. Goto : sur une ligne de type input, renvoie à une étiquette pour une ligne output, elle permet de
donner une réponse logique à la phrase de l’utilisateur ;
8. Accuracy : c’est la précision limite de la prédiction mesurée avec la distance de Levenshtein ;
9. Mode : dans le cas où il y a plusieurs réponses possibles de la part de l’automate, il est possible
de lui indiquer la façon dont il doit choisir, aléatoirement, donner les réponses dans l’ordre et/ou
boucler sur la dernière, etc.
Lorsque la colonne Goto n’est pas renseignée, c’est l’entrée (ligne) suivante qui est activée par défaut,
cela permet de restreindre le nombre de conditions et de variables d’apprentissages. 6
L’avantage de cette méthode est qu’elle ne se base pas uniquement sur les mots-clés mais elle considère toute la phrase de l’utilisateur. Dans les suggestions faites concernant l’utilisation de cette méthode,
il est mentionné que cette technique peut être utilisée pour conseiller et guider dans les FAQ sur les sites
6. C’est le même principe qu’en assembleur.
Université de Nantes
13
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
web. Malheureusement, ce système n’est parfaitement fonctionnel qu’en anglais et en russe c’est-à-dire
que les bases de connaissances ont été créées et testées.
4.1.4
MegaHAL
Jason Hutchens a rendu publique megaHAL[9] au cours du concours Loebner Prize Contest en 1998
(après avoir déjà remporté le premier prix avec HeX en 1996, une variante d’ELIZA). Ce qui est intéressant avec ce nouveau chatbot, c’est la mise en oeuvre de chaines de Markov pour répondre à l’utilisateur.
Le modèle tente, dans un premier temps, de séparer l’entrée utilisateur en deux catégories : les mots
(qui sont des séquences de caractères alphanumériques) et les non-mots (qui représentent tous les autres
caractères). Cette première étape permet d’ores et déjà, d’apprendre de nouveaux mots ainsi que les
séparateurs qui les délimitent.
Le modèle est constitué de deux chaînes de Markov d’ordre 4. L’une pour prédire le symbole suivant
et l’autre pour le symbole précédent une suite de quatre symboles (suite de mots et non-mots). Si les
auteurs ont choisi les 4-grams, c’est pour s’assurer de produire une phrase cohérente en langage naturel.
De plus, le message d’entrée de l’utilisateur est utilisé pour mettre à jour ces chaînes de Markov. Donc,
nous sommes en présence d’un agent capable d’apprendre.
Pour générer une réponse, MegaHal sélectionne des mots-clés parmi ceux de l’entrée de l’utilisateur
(mais qui ne sont pas des mots fréquents et vides) et génère des réponses autour grâce aux deux chaînes
de Markov. Le cas échéant certains termes sont transformés, par exemple tout ce qui fait référence à la
première personne du singulier est transposé vers la seconde personne du singulier.
Beaucoup de réponses sont produites contenant chacune au moins un mot-clé. Pour pouvoir sélectionner les meilleures, le calcul suivant est utilisé sur chaque mot-clé afin de calculer l’Information (ou
de son autre nom : surprise) :
I(W |S) = −log2 (W |S)
Autrement dit, l’Information calcule la probabilité de voir le mot W après la séquence S. Finalement, la
valeur la plus grande, donc la plus surprenante est gardée afin de conserver un brin d’originalité dans la
réponse.
Si les auteurs ont attendu avant de présenter leur nouvel agent c’est qu’ils n’avaient pas encore de base
de connaissances. Il a été entraîné sur un ensemble de données assez conséquent (encyclopédie, sous-titre
de films et émissions de télévision, phrases du concours Loebner, citations célèbres. . . ) pour être capable
de répondre et que les phrases soient cohérentes. Il a même été mis en ligne avant la présentation au
concours Loebner pour acquérir encore plus de vocabulaires sur de plus larges sujets.
MegaHal est un chatbot plein de ressources qui gagne à être connu pour sa conception. En ce qui
concerne ses réponses, voici un exemple de conversations improbables que l’on peut avoir avec lui :
Université de Nantes
14
M2 ATAL
Réalisation d’un agent conversationnel
MegaHAL
User
MegaHAL
Stage fin d’étude
DO YOU SPEAK ENGLISH PROPERLY
yes
NO YES YES YES YES YES YES YES........
La notion d’apprentissage pour un chatbot est très intéressante mais il existe un risque de passer en
sur-apprentissage qui peut conduire à ce genre de réponses. Ce qui montre qu’un contrôle sur la base de
connaissances est important aussi minimal soit-il.
Au vu du sujet, et avec les observations qui ont été faites sur les différents chatbots étudiés, il semble
qu’un agent conversationnel capable d’apprendre au fil des conversations avec les utilisateurs ne soit pas
approprié. De plus, une des contraintes que nous avons évoquée précédemment3.2 concernant le corpus,
permet également d’écarter complètement une solution utilisant des chaînes de markov.
De plus, notre but est d’aider les utilisateurs en leur apportant des solutions, se contenter de reformuler
leurs questions comme le fait ELIZÀ pourrait agacer les utilisateurs. Donc cette solution est écartée
également.
4.2
Les agents conversationnels au plus proche de nous
Nous faisons à présent un point sur les agents conversationnels qui sont dédiés à une tâche précise et
plus particulièrement les assistants. Ces agents étant commerciaux, il nous est difficile de comparer leur
algorithme.
En France depuis 2005, nous voyons des agents virtuels qui apparaissent pour nous conseiller dans
l’achat d’un produit, ou pour nous aider dans nos démarches. Nous pouvons citer : Léa de la SNCF, Laura
de EDF Bleu Ciel ou encore Anna d’IKEA.
Des tests sur ces agents ont été effectués afin d’observer leurs comportements face à des questions
personnelles, des fautes de frappe, ainsi que leur capacité à suivre une conversation et à réorienter l’utilisateur dans le cas où il s’égare.
La table 1 montre toutes les réponses fournies par les robots. Nous constatons rapidement que Léa ne
gère pas toutes les fautes d’orthographe ou de frappe et interprète un mot inconnu comme étant le nom
d’une ville. Lorsqu’il y a plus de 2 inversions dans la phrase, elle décroche de la conversation. Dans le
cas contraire, elle a une mémoire et nous rappelle que la question a déjà été posée.
Il semble qu’Amélie ait du mal à interpréter les fautes d’orthographes. Mais elle demande directement
une reformulation plutôt que de faire une mauvaise interprétation.
Pour finir, nous noterons qu’Anna a un certain sens de l’humour car elle propose un minuteur pour
mesurer la température de la page. Un coté qui la rend plus sympathique que les autres, tout particulièrement par rapport à Laura qui a des réponses fixes relativement longues à chaque fois.
Beaucoup de groupes commerciaux ont proposé un agent virtuel pour aider leurs clients à partir de
2007. Mais aujourd’hui, peu sont encore actifs ou seulement par période ce qui les rend difficile à trouver.
Université de Nantes
15
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
TABLE 1 – Tests des réponses sur les agents conversationnels commerciaux
Léa
Anna
Amélie
Laura
comment tu t’appelles ?
Je m’appelle Léa.
Appelez-moi
Anna,
mon nom de famille
importe peu. Dans la
maison, on s’appelle
tous par notre prénom,
alors n’hésitez pas !
Je m’appelle Amélie.
Et vous, quel est votre
prénom ?
Je suis Laura, votre
conseillère
virtuelle
EDF. Je peux vous
renseigner sur les
services proposés aux
particuliers par EDF.
Je suis basée sur la
technologie Do You
Dream Up.
C’est joli
je vous en prie !
Je suis heureuse de
l’entendre. Chez IKEA,
on est comme ça.
D’accord
Jolie.
Quelle
information
recherchez-vous ?
Mais je vous en prie,
c’est avec plaisir !
N’hésitez pas à revenir
me poser vos questions
sur . . .
Joli
Merci.
Merci ! ça fait toujours
plaisir de recevoir des
réactions
positives.
IKEÀ vise l’excellence
et moi aussi !
Oh, alors merci... je
crois que je rougirais
si je pouvais.... Avant
que je ne sois plus troublée, revenons à notre
conversation... En quoi
puis-je vous aider ?
Merci pour ce compliment.Je suis ici pour répondre à vos questions
concernant EDF.
Merci
Je vous en prie !
De rien. Je suis là pour
vous aider.
Je vous en prie, je suis
là pour cela.
Mais je vous en prie,
c’est avec plaisir !
N’hésitez pas à revenir
me poser vos questions
sur . . .
erci
Cette ville ne dispose pas de gare.
Vous pouvez . . .
De rien. je suis là pour
vous aider.
Je suis désolée, visiblement, je suis un peu
perdue. Pourriez-vous
essayer de me réexpliquer votre problème ?
Mais je vous en prie,
c’est avec plaisir !
N’hésitez pas à revenir
me poser vos questions
sur . . .
Il fait beau aujourd’hui
Je ne suis pas en
mesure de vous
donner des informations
sur
la météo.Et si
nous en revenions
plutôt à vos questions
concernant
Voyages-sncf ?
Vous ne vous attendez
tout de même pas à
ce que je fasse la météo ? Tout ce que je
peux faire pour vous
dans ce domaine, c’est
vous proposer notre minuteur ! Prenez donc la
température sur la page
que voici. . .
C’est vrai, il fait un
temps idéal pour se promener. Que puis-je faire
pour vous aider ?
Je ne suis pas en mesure de vous donner des
informations sur la météo.Je suis ici pour répondre à vos questions
concernant EDF.
Je ne suis pas tout à
fait un robot, mais
plutôt un smart assistant qui répond à
vos questions.Et si
nous en revenions
plutôt à vos questions
concernant
Voyages-sncf
?
Université de Nantes
Une assistante interactive ou BOT est un
programme informatique qui est capable
de comprendre et de
répondre en langage
écrit, quasiment de la
même manière qu’un
être humain. 16
Je suis virtuelle, je
n’existe pas dans votre
monde mais j’ai été
programmée
pour
discuter avec vous !
Je suis ici pour répondre à vos questions
concernant EDF.
Es-tu un robot ?
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
De plus, ce sont des agents dédiés à un domaine particulier donc ils ont peu de vocabulaire, celui-ci est
fixe et bien spécifique. Pour finir, ils sont chargés d’orienter seulement les clients en leur suggérant des
liens pour essayer de répondre à leurs questions. Leur rôle est donc très limité.
4.3
Ouverture sur d’autres domaines
Pour finir, notre agent doit être capable de faire la différence entre deux documents donc une solution
se basant sur l’identification de mots-clés semble judicieuse. Une question se pose alors : comment lier
les mots-clés aux documents et aux réponses ? La partie exploratoire suivante tente d’apporter des idées
voir des solutions à cette question.
4.3.1
Classifications des documents
Le problème que l’on souhaite résoudre avec cette application, c’est de créer un modèle qui est capable de déterminer à quel document fait référence une question de l’utilisateur. Cette problématique
s’apparente beaucoup à de la classification. En effet, nous souhaitons créer un modèle qui classe une
question dans le groupe représentant le document référencé.
Pour réaliser la classification, il est possible d’utiliser un index dans lequel nous associons à chaque
terme et pour chaque document un poids en fonction de sa fréquence. Cela permet de montrer son importance dans le document en question. Pour réaliser cela, le modèle classique du tf(d, t)∗idf(t) est tout
trouvé.
— tf(d, t) représente la fréquence du terme t dans un document d ;
N
) est la fréquence inverse de document qui note le nombre de documents df dans
— idf(t) = log10 ( df
lesquels apparaît le terme dans une collection de N documents.
Ce score permet de mettre en évidence les termes représentatifs d’un document, c’est-à-dire qui sont peu
présents dans un document donné et absents des autres de la collection. Il existe un certain nombre de
variantes de ce modèle ce qui laisse beaucoup de possibilités à tester. Ce modèle a fait ses preuves par le
passé et semble correspondre à notre problématique.
Un autre méthode en recherche d’informations souvent utilisée et comparée à la méthode standard
qu’est tf*idf, est la méthode de pondération Okapi (ou BM25). Cette méthode probabiliste utilise également la fréquence des termes présents dans les documents et leur taille accompagnée de quelques paramètres. Dans cet article[10], l’auteur, Singhal nous présente différents modèles utilisés dans le domaine
de la recherche d’informations, comme les espaces vectoriels ou les modèles probabilistes. Plus intéressant encore, il explique que l’une des étapes les plus compliquée dans ces différents domaines n’est autre
que l’attribution d’un poids à chaque terme ; et cela représente une grande partie du travail que d’estimer
les paramètres utilisés. Il présente les deux équations suivantes : Okapi-BM25 (1) et pondération pivot
normalisée basée sur le score du document (2). La seconde équation est souvent utilisée pour pallier les
valeurs négatives des pondérations [11].
Les nombreux travaux, travaillant autour de ces deux équations, présentent souvent des résultats su-
Université de Nantes
17
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
périeurs à tf*idf bien que les conclusions sont souvent erronées toujours d’après Singhal.
X
ln
tQ,D
N − df + 0.5
(k1 + 1) ∗ tf
(k3 + 1)qtf
∗
∗
dl
df + 0.5
k3 + qtf
(k1 (1 − b) + b moy + tf
(1)
avec k1 [1, 2], b = 0.75, k3 [0, 1000].
X
ln
tQ,D
(1 + ln(1 + ln(tf ))
N +1
∗
∗ qtf avecs = 0.2
dl
df
((1 − s) + s moy
+ tf
(2)
Au vu de ces critiques, il semble intéressant de tester également ces deux équations. Avec toutefois
une réserve car dans l’article [12], Lv montre les limites de la méthode Okapi pour les documents très
longs et les pondérations nulles ou négatives.
4.3.2
Segmentation par thématique
Une façon d’envisager le problème est de penser les documents comme étant chacun le représentant
d’un thème. Ce qui nous amène à une solution proposée par Olivier FERRET[13] en 2002. Dans laquelle,
il utilise le contexte direct et le réseau de collocations pour faire de la segmentation par thématique ainsi
que de la détection de liens. Notre analyse se focalise sur la première partie uniquement.
La réalisation de la segmentation repose sur une principale tâche : la définition d’un contexte thématique. Cela consiste à associer deux vecteurs de mots (associés chacun à un poids) : un vecteur textuel et
un vecteur de collocations. Ce qui les différencie l’un de l’autre c’est la méthode de calcul du poids.
Dans le cas du vecteur textuel, le poids est calculé suivant la fenêtre d’observation fixée.
wghttxt (m) = occN b(m) ∗
−log2 (fm /Sc )
−log2 (1/Sc )
où occN b(m) est le nombre d’occurrences de m dans la fenêtre d’observation, fm est le nombre d’occurrences de m dans le corpus et Sc est la taille du corpus. Cette équation permet de prendre en compte
l’importance du terme dans la fenêtre sélectionnée par rapport à tout le corpus.
Quant au vecteur de collocations, il se base sur un réseau de collocations comme son nom l’indique.
Ce réseau a été construit à partir du même corpus (anglais et français) qui est utilisé pour réaliser les
expériences. Dans le réseau, seules les occurrences supérieures à 10 ont été conservées. Ce vecteur vise à
évaluer la cohésion lexicale du texte en ne sélectionnant que les termes se trouvant dans la même fenêtre
et dans le réseau. Le poids de chaque mot est calculé comme suit :
wghtcoll (m) =
Xp
wgthtxt (m) ∗ coh(m, mi )
où coh(m,mi ) est la mesure de cohésion donnée par le réseau de collocations entre les deux mots.
Pour finir, la similarité entre un segment et une fenêtre sélectionnée est évaluée grâce à la mesure du
cosinus. Elle permet de définir si il y a cohésion dans la thématique entre les deux.
Université de Nantes
18
M2 ATAL
Réalisation d’un agent conversationnel
4.3.3
Stage fin d’étude
Détection de liens
Notre phase d’exploration, nous a conduit jusqu’à la détection de liens entre la question de l’utilisateur
et le corpus. La méthode était à l’origine proposée par Wang[14] afin de détecter des messages liés dans
un même fil de discussion dans un forum en comparant les chaînes lexicales qui les composent.
Dans la méthode originale, l’auteur construit les chaînes lexicales des messages en se basant sur
des vecteurs contextuels selon le modèle WORDSPACE de (Schutze, 1998) qui consiste à observer les
mots cooccurrents les plus fréquents. Plusieurs algorithmes sont testés utilisant, soit un thesaurus comme
ressource pour exploiter les caractéristiques grammaticales, soit le contexte direct de chaque terme.
Pour finir, la similarité entre les chaînes de chaque message est calculée avec l’équation suivante, un
lien est établi pour la similarité la plus grande entre deux messages.
Score(c1 , c2 ) =
X
m1i c1 ,m2j c2
1
sim(mi , mj )
l1 ∗ l2
Nous avons bien conscience que les contextes sont complètement différents de par la langue, les
données et le domaine d’application. Cette méthode pourrait permettre de distinguer des chaînes lexicales
caractéristiques de certaines questions. Il sera bien évidemment nécessaire d’adapter certaines méthodes
car les ressources et les besoins ne sont pas les mêmes.
Finalement, les trois idées détaillées, ici, sont chacune pertinente à leur manière. Elles permettent
d’envisager la création de cet agent sous un autre angle tout en tenant compte des contraintes qui ont
été définies clairement. Nous pouvons d’ores et déjà noter que les deux premières solutions sont deux
approches différentes mais avec une démarche similaire qui est de donner un poids aux termes en prenant
compte de leur environnement.
Université de Nantes
19
M2 ATAL
Réalisation d’un agent conversationnel
5
Stage fin d’étude
Des modèles pour un agent
Le projet consiste donc à créer un prototype d’agent conversationnel qui soit capable de reconnaître
à quel document l’assuré fait référence dans sa question. Une première partie sera dédiée aux flux de
données. Une seconde se penchera sur la construction du corpus suffisant. Et pour finir, les différentes
solutions implémentées qui vont être évoquées dans cette partie porteront sur le cœur de l’agent.
5.1
Le data workflow
F IGURE 1 – Fonctionnement de l’application ChatBot
La figure 1 présente le fonctionnement global de l’agent conversationnel que nous créons. Nous faisons le postula suivant, le client MAIF est connecté à sa session et une fenêtre de chatbot s’ouvre.
Il pose alors sa question à l’assistant à travers la chatBox. Lorsqu’il crée une action via la touche
Entrée ou le bouton Envoyer dans la fenêtre, sa question est alors convertie sous forme de requête langagière. Elle est ensuite transmise au modèle qui va réaliser différents traitements successivement (selon les
solutions ces traitements seront différents) comme la suppression des mots-outils, une segmentation puis
une lemmatisation des termes restants.
À la suite de ces traitements, la requête obtenue est analysée voire comparée avec la base de connaissances pour obtenir la meilleure réponse. Une fois qu’une réponse est sélectionnée, quelle qu’elle soit,
elle est envoyée à la vue pour être retournée à l’utilisateur.
Université de Nantes
20
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
Ce schéma se répète au moins deux fois si un document a été ciblé. En effet, dans un premier temps,
si le système détecte à quel document fait référence l’utilisateur (entre l’attestation scolaire et l’avis
d’échéances), sa réponse sera une demande de confirmation sur le document voulu. Puis la réponse à
cette question sera analysée et retournera les instructions en fonction :
— Oui : les instructions appropriées seront envoyées ;
— Non : une demande de reformulation de la requête sera faite.
Si aucun document n’est ciblé, nous serons dans un des cas suivant :
— l’utilisateur aura posé une question hors-sujet, c’est-à-dire en dehors de la tâche qui lui incombe ;
— la question est ambiguë, et il est impossible de privilégier un document par rapport à l’autre.
Il est important de rappeler que ce que nous présentons est un fonctionnement global et que pour chaque
solution, certains points vont différer afin de s’adapter au mieux aux besoins de l’utilisateur.
5.2
Une base de connaissances à construire
Le prototype de l’agent conversationnel a pour but d’aider les clients, sur le site de la MAIF, à trouver leurs documents "Attestation scolaire" et "Avis d’échéances". Il faut donc que la partie modèle soit
capable de détecter le vocabulaire de ces documents et celui qui est utilisé pour y faire référence.
Or le contexte dans lequel le projet évolue est particulier. En effet, ce projet se déroule au sein d’une
entreprise et non d’un laboratoire de recherche, ce qui est un premier obstacle dans la réalisation du
projet. Les outils utilisés habituellement, ne sont pas utilisables dans ce contexte précis car les licences
d’exploitation les protègent. Ce qui signifie que certains traitements comme la lemmatisation avec nltk
devront être fait par nos propres moyens.
Une seconde difficulté est la politique de confidentialité de l’établissement qui ne permet pas l’accès à
toutes les ressources nécessaires. Par exemple, une idée était d’utiliser les emails reçus pour des demandes
d’obtention de ces documents mais la politique ne le permet pas. Une autre idée était de récupérer des
retranscriptions de conversations téléphoniques au cours desquelles les clients faisaient des demandes
concernant ces deux documents.
C’est en tenant compte de ces difficultés que la base de connaissances a été créée. Elle comporte un
corpus suffisant, un dictionnaire et des listes de vocabulaire.
5.2.1
Le corpus suffisant
Pour pouvoir construire le modèle utilisé par le robot, il est nécessaire d’avoir un corpus d’entraînement et de test. Suivant les solutions, le corpus d’entraînement différera contrairement au corpus de test
qui restera le même ce qui permettra de faire de vraies comparaisons entre les différentes solutions.
Université de Nantes
21
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
TABLE 2 – Extraction des termes des documents
Attestation scolaire Avis d’échéances
Nb page(s)
Nb occurrences
Nb formes
Nb formes actives 7
Nb hapax (formes)
Nb formes communes
Similarité (cosinus)
27
1
99
69
49
75.36% (52)
22 hapax
3
1892
664
387
53.92% (323)
5 hapax
30%
Les documents visés Un premier ensemble de données se base sur l’extraction du vocabulaire contenu
dans les deux documents que l’on souhaite détecter : l’attestation scolaire et l’avis d’échéances. La table
2 est un comparatif du vocabulaire contenu dans lesdits documents.
Pour réaliser cette extraction, les documents ont été préalablement anonymisés. Une première remarque est que la quantité de vocabulaire n’est pas équitable puisque l’attestation scolaire a dix fois
moins de formes que l’avis d’échéances. Malgré tout, nous pouvons observer qu’un peu plus de 70% de
ses hapax ne sont pas communs aux deux documents, ce qui assure d’avoir une bonne précision lors des
tests pour détecter le bon document.
À titre indicatif, la similarité entre les deux documents (basée sur les formes actives) a été calculée
avec la formule (3), elle est de 30% ce qui laisse penser que le vocabulaire contenu dans chacun des
documents est discriminant.
1
2
i mi ∗ mi
pP
1 2
2 2
i (mi )
i (mi )
Cosinusdd21 = pP
P
(3)
Ces ensembles de vocabulaires constituent un premier corpus d’entraînement. Mais cela ne suffit pas,
c’est pour cela que ce corpus est complété par le biais de formulaires participatifs.
Les formulaires participatifs Nous avons déjà exposé les problèmes auxquels nous sommes confrontés concernant les données. Il faut donc les créer. Dans un premier temps, les formulaires participatifs ont
été conçus pour le corpus de test. Cependant après réflexion, ils ont permis d’acquérir plus de vocabulaire
désignant les documents. En effet, les clients n’utilisent pas forcément les noms exacts mais des synonymes pour faire leur demande ; voire pire dans les cas où ils cherchent des informations mais ne savent
pas dans quel document elles se trouvent. C’est pour cette raison qu’une partie de ce corpus est destiné à
l’apprentissage et l’autre pour les phases de tests.
Le formulaire a été créé via google form tout en gardant à l’esprit la politique de confidentialité
de l’établissement. C’est pour cela, qu’aucune information relative à la MAIF ou aux clients n’a été
demandée. Les formulaires sont anonymes et ne nécessitent pas la connexion à un compte Gmail pour
être remplis.
7. Les formes de bases sans les mots outils.
Université de Nantes
22
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
Le formulaire se compose de huit scénarios sous forme de questions, dans lesquelles, il a été demandé aux volontaires de se mettre dans la peau de clients qui demandent à obtenir les documents ou des
informations qui se trouvent dans les documents.
— une pour exprimer la demande de l’avis d’échéances ;
— trois pour obtenir des informations relatives au contenu de l’avis d’échéances ;
— une pour exprimer la demande de l’attestation scolaire ;
— deux pour demander des informations comprises dans l’attestation scolaire ;
— une question ouverte.
La dernière question permet d’élargir le type de question qui peut être posée vis-à-vis des documents
mais également d’avoir connaissance du type de question hors sujet qui peut être posée.
La décomposition de ce corpus se fait comme suit, dans le tableau 3. Un préclassement manuel a
été fait pour toutes les réponses de la question 8) : toutes celles faisant référence à un document ont été
attribuées au bon document ; toutes celles étant du hors-sujet ont été mises de coté. Ces corpus contiennent
également des fautes orthographes, fautes de frappe, etc. . . .
Le corpus se découpe en quatre types de demandes qui sont : demande du document attestation
scolaire, demande du document avis d’échéances, demande d’informations sur l’attestation scolaire et
demande d’informations sur l’avis d’échéances. Un premier constat montre qu’il y a peu de lemmes
présents par catégories. Nous avons donc poussé l’étude un peu plus en détail pour observer combien de
lemmes sont communs à toutes les classes et deux à deux. Les résultats sont énoncés dans la figure 2.
TABLE 3 – Constitution des corpus d’apprentissage et de test
Catégorie
Apprentissage
Document Scolaire
Information Scolaire
Document Échéance
Information Échéance
Test
Document Scolaire
Information Scolaire
Document Échéance
Information Échéance
Nb questions
463
67
132
66
198
119
14
29
17
45
Nb mots
Nb lemmes
5697
685
1732
1031
2249
550
278
524
262
701
906
140
260
144
362
400
187
289
155
407
Il apparaît que pour trois classes, il n’y a aucun lemmes discriminants positifs. Ce qui, cumulé avec le
fait que l’on trouve 88 lemmes communs, sous-entend que nous ne pourrons pas nous baser uniquement
sur la présence ou non d’un lemme.
Grâce à ces formulaires, nous pouvons pallier l’absence de réelles données. Et donc, nous sommes
dans la capacité de créer et tester nos différentes solutions.
Université de Nantes
23
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
F IGURE 2 – Termes communs aux 4 classes
5.2.2
Le dictionnaire
Comme nous l’avons dit précédemment, un des traitements que nous souhaitons mettre en place et
implémenter est une lemmatisation. Pour cela, nous utilisons un fichier que l’on appellera dictionnaire.
Sur chaque ligne, il y a une forme fléchie associée à son lemme, sa classe grammaticale, son genre et son
nombre. Certains termes propres au domaine de l’assurance ont été ajoutés à la main au fur et à mesure
des tests.
5.2.3
Les listes de vocabulaires spécifiques
Après une analyse des réponses aux formulaires, nous avons constaté un phénomène langagier important. En effet, lorsqu’une personne parle de son véhicule, il le mentionne en utilisant sa marque et/ou son
modèle, par exemple "ma 206 a été fracturée" ou bien "Pour mon C4 j’ai quoi comme garanties ?".
Or ce type de vocabulaire ne se trouve pas dans le dictionnaire que nous avons. Pour pallier cela, nous
avons constitué une liste avec un maximum de marques et de modèles de voitures. Nous nous sommes
basés sur des classements des voitures les plus vendues sur le marché français durant plusieurs années.
5.3
Solution suivant CleverScript
La première solution qui a été implémentée est une adaptation directe d’une solution présentée à la
section 4.1.3. Cette solution a fait ses preuves dans d’autres langages (anglais et russe), c’est pour cela
que nous avons débuté par celle-ci. Elle permet de mettre en œuvre des notions intéressantes comme les
grammaires contextuelles et la distance de Levenshtein.
Algorithme Le fonctionnement repose complètement sur le fichier csv de la base de connaissances. La
recherche d’une règle de la grammaire satisfaisant l’entrée utilisateur est effectuée. Une fois que cette
Université de Nantes
24
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
règle est trouvée, la réponse associée est retournée à l’utilisateur directement.
La distance de Levenshtein permet de remédier aux problèmes de fautes d’orthographe (ou de fautes
de frappe). Pour chaque règle de la grammaire est associée un seuil de similarité à respecter qui dépend
directement des termes. La règle satisfaisante doit respecter ce seuil pour être validée. Ce seuil a été
attribué et adapté à chaque règle de façon arbitraire. Par exemple, si l’utilisateur fait un simple inversement
de deux lettres dans un mot de trois lettres ou dans un mot de sept lettres, l’impact avec la distance de
Levenshtein (normalisée) ne sera pas le même.
Toujours dans un souci de minimiser l’impact des fautes orthographes, l’entrée utilisateur est tokenisée, mise en minuscule, les accents et la ponctuation sont supprimés.
Dans le cas où la phrase utilisateur n’a pas trouvé son pendant dans la grammaire, il y a une règle
qui est à un seuil de similarité maximum pour accepter toutes les phrases. Cela permet de retourner à
l’utilisateur une réponse malgré tout, même si cette réponse vise à demander à l’utilisateur de reformuler
sa question car elle n’a pas été comprise.
La base de connaissances Nous avons donc fait une adaptation en modifiant quelque peu le fichier
csv et fixé des conventions pour l’écriture des règles dans le fichier. Les colonnes appliquées sont les
suivantes :
1. Type : si la ligne est une entrée (In), une sortie (Out) ou un terminal(T) ;
2. Étiquette : le terme est en majuscule pour symboliser les non-terminaux dans la grammaire ;
3. Phrase : les termes sont en minuscules sauf les non-terminaux ;
4. Condition : la phrase est utilisable sous certaines conditions définies dans cette colonne, TRUE
par défaut ;
5. Mémorisation : il est possible d’affecter des valeurs à des variables définies qui peuvent être
utilisées dans la formulation des conditions ;
6. Suivant : non-terminaux qui indique la ligne à laquelle se déplacer si celle-ci a été reconnue ;
7. Similarité : le seuil limite d’acceptation pour la ressemblance entre la phrase de l’utilisateur et
celle dans la colonne Phrase, avec la mesure de Levenshtein 8 .
Pour comprendre plus facilement la construction, un exemple simple à partir d’une grammaire contextuelle est présenté dans la table 4. Elle permet de reconnaître la phrase "Bonjour comment vas-tu ?" par
exemple.
TABLE 4 – Exemple d’une grammaire pour saluer quelqu’un
DEB_CLIENT → BJR comment BV ?
BJR
→ bonjour | salut | salutation
BV
→ allez-vous | vas-tu | vont-ils
8. Elle donne le taux d’erreur autorisé
Université de Nantes
25
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
Cette même grammaire est mise sous la forme cleverscript selon les choix que nous avons définis
préalablement.
TABLE 5 – Exemple de fichier .csv avec intégration d’une grammaire
1
2
3
4
5
6
7
Type
Étiquette
Phrase
Condition
Out
In
In
T
T
Out
Out
DEB
DEB_CLIENT
RIEN
BJR
BV
MERCI_BOT
RIEN_BOT
bonjour !
BJR comment BV ?
rien
bonjour / salut / salutation
allez-vous / vas-tu / vont-ils / ça va
bien, merci.
je suis désolé, je n’ai pas compris.
Variable
Suivant
Similarité
MERCI_BOT
RIEN_BOT
30
1000
10
10
Dans cet extrait de fichier, présenté dans la table 5, le robot tente de détecter si l’utilisateur prend de
ses nouvelles. La première ligne est pour le cas où l’on souhaite que le robot entame la conversation. Puis,
dès que l’utilisateur répond au chatbot, il va tenter de trouver la règle qui satisfait au mieux cette phrase.
Il va donc commencer par la première ligne taggée comme "In" donc comme une entrée utilisateur ; ici,
la ligne 2. À chaque fois, qu’il rencontre un non-terminal, il va chercher sur la ligne référencée (ici les
lignes 4 puis 5) si un des termes correspond à l’entrée utilisateur ; dès qu’il échoue, il passe à la règle "In"
suivante.
Dans le cas où l’utilisateur lui dit "bonjour comment ça va bien ?", la similarité est de 17% 9 donc le
programme va se positionner sur la ligne 6 pour répondre car le seuil de similarité n’a pas été dépassé (<
30%).
Dans le cas où l’utilisateur dit "bonjour ça va ?", la phrase a une similarité de 58% avec la règle (car
le terme "comment" est manquant) et est donc rejetée. Le programme passe donc à la ligne 3 qui est celle
par défaut car elle accepte tout. La réponse associée à la ligne 7 est donc renvoyée.
Implémentation Au moment de l’implémentation de l’algorithme et des premiers tests, une subtilité a
été mise en évidence : dans le cas, où une phrase utilisateur coïncide avec plusieurs règles "In" (cela est
provoqué par le seuil de la similarité), il faut être capable de choisir la meilleure des solutions pour rester
cohérent dans le fil de conversation. Sans oublier, que toutes les phrases correspondent au moins à une
règle qui est la règle par défaut.
La solution d’accepter la première règle comme étant la meilleure est rejetée d’office. Ne sachant pas
comment s’effectue la lecture de la base de connaissances, si nous faisions cela, nous laisserions une part
de hasard dans le traitement. Ce qui n’est pas acceptable.
La seconde solution que nous avons mise en place est le calcul d’un coefficient qui se base sur plusieurs critères concernant la phrase candidate, la phrase utilisateur et la règle "In" utilisée. Chaque fois
9. 4 (insertions) /23 (taille de la chaîne de référence)
Université de Nantes
26
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
qu’une nouvelle règle est acceptée, si ce coefficient est inférieur à celui retenu précédemment alors c’est
la nouvelle règle qui devient la meilleure des solutions.
Soit les termes suivants :
— #c : nombre de mots de la phrase candidate ;
— #u : nombre de mots de la phrase utilisateur ;
— r : nombre de terminaux et non-terminaux dans la règle "In" ;
— Simuc : similarité calculée entre la phrase utilisateur et la phrase candidate par normalisation de la
distance de Levenshtein.
Coeff =
|r − #c|
∗ Simuc
#u
(4)
L’équation 4 permet de prendre en compte des phrases utilisateurs qui sont grammaticalement complexes et dont une partie de la phrase n’est pas utile et s’apparente à du bruit. Elle permet de prendre en
compte la similarité entre les deux phrases mais également le fait que la phrase candidate est fidèle à la
règle "In".
Premiers constats Après l’implémentation de l’algorithme et des tests sur une petite base de connaissances (constituée d’une trentaine de lignes dont 7 pour les règles d’entrée utilisateur), la solution paraît
quelque peu complexe. En effet, la similarité est une variable sensible qui est déterminante dans la compréhension du robot. Malheureusement, le seuil d’acceptation étant fixé par nos soins, cela reste inconstant. En effet, si nous prenons l’hypothèse de fixer le seuil à une permutation de lettres par mot, dans le
cas d’ "est" ou d’"attestation", l’impact ne sera pas du tout le même. Par contre, une fois qu’une hypothèse
acceptable a été trouvée, la solution est robuste sans aucun doute.
Au moment de la construction de la réelle base de connaissances à partir des réponses aux formulaires,
nous nous sommes rendus compte de la complexité de la tâche. En effet, après quelques recherches
infructueuses pour trouver un outil capable de générer des règles automatiquement pour notre grammaire,
nous avons entrepris de les créer à la main. Très rapidement, nous avons évalué cette opération comme
étant trop coûteuse en temps.
De plus, à la lecture des premières réponses, un constat non négligeable est que les utilisateurs ne
font pas forcément une unique phrase même s’ils sont face à une chatbox. Certains vont expliquer toute
leur situation pour obtenir les informations qu’ils souhaitent. Ce qui avec la solution expérimentée paraît
ingérable. Puisque cela signifierait que l’on a une suite de réponses sans cohérence de la part du robot.
5.4
Solution suivant la classification des questions
Les deux solutions suivantes sont basées sur le système de classification présenté à la section 4.3.1
mais elles n’utilisent pas la même ressource pour la création de l’index.
Université de Nantes
27
M2 ATAL
Réalisation d’un agent conversationnel
5.4.1
Stage fin d’étude
Méthodologie
Le corpus d’apprentissage est, dans un premier temps, segmenté en mot en utilisant les espaces et les
apostrophes. C’est un choix qui a été fait pour pouvoir supprimer facilement tous les pronoms personnels,
les articles, etc. . . . Puis chaque terme est lemmatisé et les mots vides sont supprimés, c’est une manière
de simplifier le problème en se concentrant sur l’essentiel. En effet, les mots très fréquents tels que les
mots vides ne nous apportent pas d’informations sur un document plus particulièrement qu’un autre. Pour
finir, le sac de mots que nous avons obtenu à la suite de ces étapes est transformé en un index inversé via
le modèle tf*idf présenté précédemment.
Durant la phase de tests, nous avons réalisé des simulations avec la formule de base de tf*idf mais
également avec ses dérivées.
Le fonctionnement global est commun aux deux solutions annoncées. Ce qui diffère entre ces deux
solutions c’est le corpus d’apprentissage ainsi que la formation de l’index inversé qui sont présentés dans
les parties suivantes.
Solution à 2 catégories (2Cat) L’extraction des mots-clés contenus dans les documents devrait suffire
à créer une base de connaissances fiable. En effet, si l’on part du postula que dans chaque question du
client, il y a au minimum un mot-clé relatif à un document, le vocabulaire du document en question est
suffisant.
Les premières données obtenues étaient l’extraction du vocabulaire dans les deux documents ciblés
qui sont l’attestation scolaire et l’avis d’échéances. La première solution s’est naturellement basée sur ces
données comme corpus d’apprentissage.
L’index inversé qui est construit affecte un poids à chaque terme en fonction de sa présence dans
l’attestation scolaire et dans l’avis d’échéance. D’une façon générale, l’index construit ressemble à :
terme → {Scolaire : tf(d, t)∗idf(t) ; Échéance : tf(d, t)∗idf(t)}
La classification reste rudimentaire avec cette solution. Nous pouvons la considérer comme la baseline.
Solution à 4 catégories (4Cat) L’avancée du projet montre que les réponses attendues ne sont pas
les mêmes lorsque l’on demande un document ou que l’on demande des informations contenues dans
ces documents. Il est donc intéressant de faire la distinction entre les deux pour apporter une réponse
pertinente. C’est l’objectif de cette méthode.
Le corpus d’apprentissage de cette solution est constitué des réponses aux formulaires participatifs.
Les différentes réponses sont classées selon les catégories suivantes :
— demande du document avis d’échéances (question 1
— demande d’informations sur l’avis d’échéances (question 2 à 4) ;
— demande du document attestation scolaire (question 5) ;
— demande d’information sur l’attestation scolaire (question 6 et 7).
Université de Nantes
28
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
Les réponses de la dernière question (ouverte) ont été classées manuellement. La construction de l’index
inversé reste le même que précédemment sauf qu’au lieu d’avoir une "collection" de 2 documents, il y en
a 4.
5.4.2
Test et résultats
Corpus Pour constituer le corpus de test, nous avons utilisé quinze réponses des formulaires prises
au hasard. Cela comprend 119 questions au total qui ont été annotées manuellement en adaptant le tag
suivant la solution. Un exemple tiré du corpus de test est présenté à la table 6.
TABLE 6 – Exemple d’annotations dans les corpus de tests
solution 2Cat
solution 4Cat
Quel est l’intérêt de la responsabilité civile ?
ou
Quel est l’intérêt de la responsabilité civile ?
;
Scolaire
;
InfSco
Méthodologie Le corpus de test est segmenté et lemmatisé. Dans le cas où le lemme n’a pas été trouvé
dans le lexique, une mesure de similarité (Distance de Levenshtein) est effectuée pour éventuellement
pallier les fautes d’orthographe. Puis un score est calculé entre chaque groupe et la question utilisateur
P
pour définir auquel l’attribuer. Le score correspond à i poids(ti , d) pour chaque document (groupe) d.
Tests Nous avons réalisé les mêmes tests sur les deux solutions proposées afin de pouvoir établir un
point comparatif. La table 7 présente les résultats liés à la solution qui classifie uniquement la question
selon le document mentionné. La table 8 contient les résultats classifiant les questions plus précisément.
Différentes variations du calcul de base de tf*idf ont été réalisées :
−df
);
— probabiliste : idf(t) = log10 ( N df
N
— lissé : idf(t) = 1 + log10 ( df ) ;
pP
2
2
— normalisé : tf ∗ idf /
k (tf ) ∗ idf .
La normalisation paraît plus que nécessaire dans notre étude car les documents ne sont pas du tout
équivalents en termes de taille. Comme nous l’avons mis en évidence à la section 5.2.1, l’avis d’échéances
contient 8 fois plus de vocabulaire que l’attestation scolaire. Les proportions sur la collecte de données via
les formulaires participatifs sont du même ordre comme le montre la table 3 (bien que cela soit beaucoup
moins flagrant).
Le schéma Okapi-BM25 utilisé dans les tests est une variation de la formule présentée à la section
4.3.1 car les pondérations idf étaient négatives ce qui faussait la catégorisation. Claveau[15] mentionne
au sujet de l’idf de départ que cela nécessite des données d’apprentissage conséquentes. Finalement,
l’alternative suivante a été utilisée idf = ln( Ndf+1 ).
Il est important de spécifier que ce que nous cherchons c’est à optimiser la précision et le rappel pour
chaque document. En effet, le but est que lorsque le robot détecte la référence à un document, il soit sûr
de lui et ce pour le plus grand nombre de références. Donc, nous cherchons à maximiser ces deux valeurs.
Université de Nantes
29
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
TABLE 7 – Résultats obtenus sur la solution 2Cat avec deux groupes de classification
Scolaire
tf*idf
Échéance
Précision
Rappel
Précision
Rappel
65%
67%
88%
89%
85%
51%
55%
28%
30%
83%
67%
68%
63%
63%
87%
79%
79%
97%
97%
88%
Normal
Probabiliste
Lissé
Probabiliste et Lissé
Normalisé
TABLE 8 – Résultats obtenus sur la solution 4Cat avec quatre groupes de classification
Scolaire
Document
tf*idf
Normal
Probabiliste
Lissé
Probabiliste et Lissé
Normalisé
Okapi
Pivot
Échéance
Information
Document
Information
Précision
Rappel
Précision
Rappel
Précision
Rappel
Précision
Rappel
85%
0%
93%
100%
88%
86%
0%
93%
79%
100%
82%
49%
100%
100%
85%
97%
76%
59%
62%
97%
92%
8%
91%
91%
93%
65%
6%
59%
59%
76%
86%
82%
70%
68%
90%
84%
20%
98%
98%
82%
56%
70%
36%
86%
70%
82%
97%
97%
90%
91%
53%
59%
91%
90%
87%
82%
Nous savons que le choix du calcul employé dépend directement du type de données que l’on utilise
pour l’apprentissage. Dans notre cas, les tables 7 et 8, montre clairement que la méthode du tf*idf normalisé fournie de meilleurs résultats, comme nous l’avions supposé plus haut à cause du déséquilibre dans
la répartition des termes au sein des classes.
Observons plus en détail les résultats de la solution 2Cat, en dehors de la normalisation, avec les
autres méthodes de calcul du poids, l’algorithme a une forte tendance à classer toutes les questions pour
lesquelles il a un doute comme portant sur l’avis d’échéances. Ce qui donne une précision en moyenne
de 65% pour l’avis d’échéances et 41% de rappel pour l’attestation scolaire. La répartition du vocabulaire montre ici toute son importance. Car avec la normalisation, qui permet de prendre en compte cette
différence, les résultats sont homogènes autour de 85,5% (toujours pour le rappel). Pour finir, nous avons
déjà mis en évidence que les documents ont une similarité de 30%, donc avoir une précision de 86% en
moyenne est déjà un très bon résultat au vue des données, sans parler de l’utilisation de synonymes pour
le nom de chaque document.
Pour ce qui est de la solution 4Cat, les résultats de la méthode probabiliste sont beaucoup trop faibles
et irréguliers pour pouvoir être exploités. Les précisions sont majoritairement plus élevées avec la méthode combinant le lissage et la probabilité mais le rappel est assez bas. Avec cette méthode, la précision
moyenne est de 89,75% contre 89% pour la méthode normalisée. Pourtant nous avons dit précédemment
que les deux tables montraient de meilleurs résultats avec les méthodes normalisées. En effet, cette der-
Université de Nantes
30
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
nière présente des résultats plus constants sur la précision avec un écart-type beaucoup plus faible et une
moyenne de 88,75 pour le rappel ce qui est le meilleur résultat que l’on ait obtenu pour l’instant.
En comparant la meilleure méthode de tf*idf, et les méthodes Okapi et Pivot, finalement, c’est la méthode standard qui donne de meilleurs résultats, même si la méthode Pivot reste très proche. Nous avons
trouvé ici une nouvelle limite à la méthode BM25 lorsque les documents sont trop proches sémantiquement, il est difficile d’obtenir des résultats supérieurs à la méthode standard.
Il reste évident que la solution choisie dépend directement du rôle que l’on souhaite donner à l’agent.
Mais même si l’on souhaite faire la différence entre les deux documents, la seconde méthode apparaît
comme meilleure.
Premiers constats Contrairement à la solution basée sur Cleverscript, l’algorithme est plus simple et
rapide à implémenter. Il est facilement exploitable avec différents types de données, la preuve en est, nous
avons créé deux solutions avec un unique algorithme. Il est donc facile de l’étendre.
Son souci majeur est qu’il dépend directement des données utilisées. En effet, dans la solution 2Cat,
le modèle est finalement capable de détecter uniquement de quel document il est question et uniquement
ceci, car nous nous sommes exclusivement basés sur le vocabulaire contenu dans les documents.
Quant à la solution 4Cat, elle demande l’acquisition de beaucoup de données. La collecte des données
s’étant étalée sur plusieurs mois, nous avons fait des tests avec moitié moins de données. Les résultats
étaient entre 10 et 15% inférieurs à ceux que nous obtenons avec le corpus complet.
5.5
Solutions s’appuyant sur les liens sémantiques
5.5.1
Méthodologie
Pour ces deux méthodes c’est une fois de plus le corpus d’apprentissage contenant les réponses aux
formulaires séparées en quatre classes qui a été utilisé. La même baseline a été appliquée aux deux
méthodes également. C’est-à-dire que le corpus a été segmenté sur les espaces uniquement. La seconde
application des méthodes appelées Complète met en œuvre la distance de Levenshtein pour compléter la
lemmatisation, la suppression des Stopwords et l’utilisation de la liste de véhicules.
Détection de liens Comme nous l’avons expliquée à la section 4.3.3, la détection de liens se base sur
la comparaison des chaînes lexicales constituant les classes. Pour former ces chaînes, l’auteur a utilisé un
ensemble de vecteurs contextuels. Nos ressources étant plus limitées nous avons pris la liberté d’adapter
cette méthode en utilisant un réseau de collocations.
Le réseau se base sur les mots cooccurrents les plus fréquents avec comme limite contextuelle, la
phrase. À cette étape, l’intégralité du corpus a été utilisée sans distinction de document. Une fois sa
construction achevée, l’algorithme ChainerSv de l’auteur est mis en œuvre pour composer les chaînes.
Pour finir, nous utilisons l’équation de similarité qui permet de comparer deux chaînes lexicales pour
attribuer une phrase de test à un document.
Université de Nantes
31
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
TABLE 9 – Résultats obtenus pour les méthodes de détections de liens et segmentation par thématique
Scolaire
Document
Méthodes
Echéance
Information
Document
Information
Précision
Rappel
Précision
Rappel
Précision
Rappel
Précision
Rappel
Détection liens
Baseline
Complète 10
0%
60%
0%
43%
0%
50%
0%
3%
0%
100%
0%
0%
44%
46%
100%
100%
Segmentation par thématique
Baseline
Complète
79%
92%
79%
86%
66%
82%
100%
97%
83%
92%
29%
65%
80%
85%
73%
87%
Segmentation par thématique La segmentation par thématique nécessite la définition d’un contexte
thématique (voir la section 4.3.2). Dans ce but, le vecteur contextuel pour chaque classe est calculé en
utilisant la fréquence de chaque terme dans le document mais également dans l’ensemble du corpus
d’apprentissage. Finalement, c’est un vecteur contextuel par document qui est obtenu à la fin de cette
étape.
Pour chaque question du corpus de test, nous calculons également le vecteur contextuel pour ensuite
mesurer la similarité entre ce dernier et celui de chaque document. Les résultats obtenus sont présentés
dans la partie suivante.
5.5.2
Tests et résultats
Corpus Pour ces méthodes, nous avons utilisé une fois de plus les 119 questions annotées manuellement. Grâce à cela, nous gardons une bonne base de comparaison des méthodes.
Méthodologie Le corpus de test a suivi les mêmes traitements que le corpus d’apprentissage. Dans un
premier temps, il a été segmenté (pour la baseline), puis lemmatisé avec l’utilisation de la distance de
Levenshtein et des différentes listes à disposition. Les traitements et la mise en forme des données sont
dépendants de la méthode utilisée suivant la détection de liens avec la création de chaînes lexicales ; ou
bien la segmentation par thématique avec la création de vecteur contextuel.
Tests La table 9 présente les résultats que nous avons obtenus pour les deux méthodes présentées qui
classifient les questions utilisateurs suivant les quatre possibilités.
Une première remarque frappante est que la détection de liens attribue toutes les phrases à la même
classe. Cela peut s’explique facilement en effet, nous avons déjà montré que le vocabulaire est le même
dans toutes les classes. Sachant, que la classe concernant les informations sur l’avis d’échéances est la
plus grande en terme de lemme. Il est naturel que toutes les questions y soient classées.
Concernant la méthode de segmentation par thématique, les résultats sont relativement satisfaisants
car avec la méthode Complète, ils sont similaires à ceux obtenus avec la méthode de tf*idf. Les résultats
10. Complète : les traitements qui sont effectués sont Segmentation, Lemmatisation, Distance de Levenshtein et suppression des
Stopwords, avec l’utilisation de la liste de véhicules.
Université de Nantes
32
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
présentés ont été réalisés à l’aide de la mesure cosinus, mais des tests ont également été réalisés avec
Jaccard et Dice, mais à +/- 1%, nous obtenons les mêmes classements.
De plus, les calculs employés pour affecter un poids à chaque mot prennent en compte la taille des
classes. Nous pouvons donc affirmer que ce paramètre joue un rôle fondamental quand le vocabulaire est
très proche (voire confondu) entre les groupes. Et le fait d’avoir autant de vocabulaire commun fait, a
priori, plafonner nos résultats.
5.6
Réponses du robot
Dans la section précédente, nous avons défini un modèle capable à hauteur de 90% de détecter à
quoi fait référence la question de l’utilisateur. À présent, nous allons voir comment l’agent répond à
l’utilisateur.
F IGURE 3 – Réponses possibles à l’utilisateur
La figure 3 montre le processus utilisé pour répondre à l’utilisateur. Lorsque ce dernier pose une
question, le modèle tente de détecter la classe d’appartenance de la question parmi les 4 classes que nous
Université de Nantes
33
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
avons déjà vues, ou si c’est une question hors-sujet (le paragraphe 5.6 est dédié à cette classe), ou bien si
elle n’appartient à aucune de ces classes.
Dans le cas où la question fait référence à un document (que se soit pour une information s’y trouvant
ou pour le document lui même), il est demandé à l’utilisateur si le document détecté est bien celui dont
il faisait mention. S’il répond oui, les instructions associées à sa demande, lui sont envoyées. Dans le cas
contraire, et dans le cas où aucune classe n’est détectée, il est demandé à l’utilisateur de reformuler sa
demande plus clairement.
Quand une réponse est refusée par l’utilisateur, elle est mémorisée. Ainsi, lors de la reformulation,
si la même réponse est détectée à nouveau, elle est mise de coté et c’est la suivante qui est envoyée à
l’utilisateur.
Dans le cas d’un hors-sujet, la réponse associée à la question sera retournée à l’utilisateur.
Formats des réponses fournies par l’agent Pour stocker l’ensemble des réponses possibles suivant la
classe des questions, c’est un modèle similaire à cleverscript qui a été créé.
Un fichier de type csv contient 3 colonnes : une clé d’identification, des mots-clés et la réponse à
retourner à l’utilisateur ; et une ligne par classe de documents (pour les 4 classes vues précédemment),
ainsi qu’une ligne par type de hors-sujet.
Pour les classes "document attestation scolaire" et "document avis d’échéances", la colonne de réponses contient toutes les instructions pour trouver ledit document à partir du moment où l’utilisateur
est identifié sur son espace personnel. Pour les classes "demande d’informations" sur l’un ou l’autre des
documents, la réponse retournée sera une proposition de mise en ligne avec un réel conseiller à travers
une chatbox.
Dans ces 4 cas, la colonne des mots-clés est vide.
Gestion des questions hors-sujet Dans les formulaires que nous avons envoyés, la dernière question
était une question ouverte. Cela était volontaire afin de couvrir un large éventail de comportements que
les utilisateurs peuvent avoir face à un robot.
D’après les réponses obtenues, les utilisateurs aiment à demander des choses personnelles au robot
comme "Quel est ton nom ?", "Quel âge as-tu ?" ou encore "Est-ce que tu sais que tu es un robot ?".
Finalement les thèmes couverts sont les suivants : le nom du robot, son âge, son fonctionnement, la date,
le remerciement, la mise en contact avec un vrai conseiller et la salutation.
Pour pouvoir détecter ce genre de questions, chacune d’entre elles est associée à un ensemble de
mots-clés qui est stocké dans la seconde colonne du fichier réponse. Pour être sûr que nous avons bien
affaire à une question hors sujet, nous conservons les mots vides mais la lemmatisation est effectuée pour
tenter de faire correspondre l’intégralité de la phrase utilisateur.
La réponse associée aux mots-clés qui couvrent au maximum la phrase utilisateur est renvoyée.
Université de Nantes
34
M2 ATAL
Réalisation d’un agent conversationnel
6
Stage fin d’étude
Application finale
La finalité de ce projet était de construire un prototype de Chatbot. Nous avons créé plusieurs modèles
et défini les réponses possibles à l’utilisateur. Nous allons nous pencher à présent l’intégration web de
notre modèle.
Nous avons choisi le modèle qui présentait l’implémentation la plus simple mais aussi, et surtout,
les meilleurs résultats. Il s’agit donc de la version du tf*idf normalisé suivant les quatre classes. Il est
développé en Python.
Le site internet de la MAIF utilise les technologies JavaScript, HTML, et Apache Tomcat comme
serveur Web. Notre modèle quant à lui est développé en Python. Le but est donc de réaliser une application
fonctionnelle avec toutes ces technologies.
Le serveur Web Une application Web est composée de deux entités principales : le serveur et le client.
Dans notre cas, le développement du client ne peut être qu’en JavaScript, HTML et CSS puisque ce sont
les technologies employées par la MAIF.
En ce qui concerne le serveur Web, la MAIF emploie Apache. Tomcat est dédié à la partie Java des
applications.
Le framework web Nous devons donc établir la communication entre ces deux parties. Il existe une
norme permettant d’appliquer une application Python sur un serveur web compatible qui s’appelle WSGI
(Web Server Gateway Interface). Cette norme est donc une interface faisant la liaison entre le programme
python et le serveur web, pour nous Apache, assurant le passage de paramètres et de variables d’environnement, etc. La figure 4 montre comment sont transmises les informations d’une structure à une autre. Le
serveur Web est l’élément central qui transmet une requête HTTP provenant du client Web à l’application.
Puis la partie python écrit la réponse HTTP qui est retournée au client via le serveur.
Une application en Python doit répondre à une certaine conception pour pouvoir être compatible
avec WSGI. Généralement, il est assez complexe d’écrire une application de toute pièce, en particulier
pour gérer les sessions des utilisateurs. Nous avons donc décider d’utiliser un framework pour faciliter et
accélérer l’intégration web. Pour cela, nous avons testé plusieurs solutions comme appier, bottle, webpy,
pour finalement porter notre choix sur CherryPy.
CherryPy contrairement à d’autres, est simple d’utilisation, a une documentation bien fournie et est
compatible avec Apache. Ce framework est une application directe de WSGI ce qui facilite grandement
l’adaptation de la partie Python pour le serveur Apache.
L’interface graphique Présentement, un projet de la MAIF consiste à passer le principal site internet
au format Responsive. Pour garder une certaine cohérence, l’interface utilisateur du robot a été créée à
partir du fichier CSS construit dans le cadre de ce projet et à partir des maquettes déjà réalisées. Le résultat
est présenté à la figure 5. Le chatBot a été intégré à la maquette "services au quotidien" en se fondant
sur la zone de prise de contact de la page. Pour engager la conversation, l’utilisateur n’a qu’à cliquer
Université de Nantes
35
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
F IGURE 4 – Fonctionnement global de l’intégration Web
sur l’icône "MAIFBot" ; de même pour clôturer la conversation. La fenêtre de conversation qui s’ouvre
n’est pas bloquante, l’utilisateur peut continuer à faire défiler la page principale. Il peut donc appliquer
directement les indications prodiguées par le robot.
Université de Nantes
36
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
F IGURE 5 – Interface graphique Responsive de l’agent conversationnel
Université de Nantes
37
M2 ATAL
Réalisation d’un agent conversationnel
7
Stage fin d’étude
Conclusion et perspectives
Le chatbot qui a été créé montre la faisabilité d’une solution relativement simple. En effet, le choix de
faire une solution se basant sur la détection de mots-clés reste basique mais efficace (90% de précision)
dans le contexte proposé. Les différentes solutions qui ont été implémentées, ont permis de mettre en
lumière les méthodes état-de-l’art sensibles aux données. En effet, notre contexte fournissait des classes
de questions très similaires et peu de données, seules les méthodes tf*idf et segmentation par thématiques
ont réussi à fournir des résultats acceptables.
L’étape suivante est la constitution d’un corpus conséquent avec la mise en place d’un protocole
adapté au cas d’usage. Par exemple, il serait pertinent de diviser en deux la récolte de données : l’une
en septembre pour les questions relatives aux attestations scolaires et l’autre en décembre pour ce qui est
de l’avis d’échéances. Une fois la collecte finie, il faudrait demander à des conseillers MAIF de classer
chaque phrase dans une catégorie en clôturant par un accord inter-annotateur.
À travers différentes présentations orales, un certain nombre de personnes a pu être sensibilisé à cette
technologie et convaincu par l’utilité qu’elle peut avoir.
D’un point de vue technique, ce stage m’a permis de mettre en œuvre toutes les connaissances que
j’ai pu acquérir au cours de ces deux années de master ATAL, que se soit le traitement du langage, la
recherche d’informations ou encore l’apprentissage supervisé. La conception et la réalisation de cet agent
conversationnel ont comblé ma curiosité dans le domaine des chatbot. J’ai également été confrontée à la
difficulté de constituer un corpus suffisant.
La partie intégration web m’a également aidé à parfaire mes connaissances en Apache et framework
web car j’ai du faire un certain nombre de tests avant d’en trouver un compatible avec ma solution et mon
environnement. Les contraintes techniques ont été un véritable challenge dans cette solution mais elles
m’ont imposé d’approfondir chaque idée et solution que je trouvais.
Finalement, c’est un projet complet de la création à la réalisation en passant par la conception que j’ai
pu mener avec une grande liberté.
Université de Nantes
38
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
Liste des tableaux
1
Tests des réponses sur les agents conversationnels commerciaux . . . . . . . . . . . . .
16
2
Extraction des termes des documents . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3
Constitution des corpus d’apprentissage et de test . . . . . . . . . . . . . . . . . . . . .
23
4
Exemple d’une grammaire pour saluer quelqu’un . . . . . . . . . . . . . . . . . . . . .
25
5
Exemple de fichier .csv avec intégration d’une grammaire . . . . . . . . . . . . . . . . .
26
6
Exemple d’annotations dans les corpus de tests . . . . . . . . . . . . . . . . . . . . . .
29
7
Résultats obtenus sur la solution 2Cat avec deux groupes de classification . . . . . . . .
30
8
Résultats obtenus sur la solution 4Cat avec quatre groupes de classification . . . . . . .
30
9
Résultats obtenus pour les méthodes de détections de liens et segmentation par thématique 32
10
Constitution du corpus de retranscription . . . . . . . . . . . . . . . . . . . . . . . . . .
42
11
Résultats obtenus avec le corpus de retranscription . . . . . . . . . . . . . . . . . . . .
43
Table des figures
1
Fonctionnement de l’application ChatBot . . . . . . . . . . . . . . . . . . . . . . . . .
20
2
Termes communs aux 4 classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3
Réponses possibles à l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4
Fonctionnement global de l’intégration Web . . . . . . . . . . . . . . . . . . . . . . . .
36
5
Interface graphique Responsive de l’agent conversationnel . . . . . . . . . . . . . . . .
37
Université de Nantes
39
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
Références
[1] Stan Franklin and Art Graesser. Is it an agent, or just a program ? : A taxonomy for autonomous
agents. In Proceedings of the Workshop on Intelligent Agents III, Agent Theories, Architectures, and
Languages, ECAI ’96, pages 21–35, London, UK, UK, 1997. Springer-Verlag.
[2] Joseph Weizenbaum. ELIZA - a computer program for the study of natural language communication
between man and machine. Commun. ACM, 9(1) :36–45, 1966.
[3] Richard Wallace. alicebot, 2003.
[4] Richard Wallace. The Elements of AIML Style. ALICE A.I.Foundation,Inc., 2003.
[5] Calkin A. S. Montero and Kenji Araki. Evaluation of trivial dialogue phrase databases through practical application to user-computer conversation - case study : English - spanish. In Bruno Apolloni,
Robert J. Howlett, and Lakhmi C. Jain, editors, KES (2), volume 4693 of Lecture Notes in Computer
Science, pages 361–368. Springer, 2007.
[6] Eric Atwell Bayan Abu Shawar. Chatbots : Are they really useful ?, 2007.
[7] Rollo Carpenter. Cleverbot, 2006.
[8] Rollo Carpenter. Cleverscript, 2006.
[9] Jason L. Hutchens and Michael D. Alder. Introducing megahal. In Proceedings of the Joint Conference on New Methods in Language Processing and Computational Natural Language Learning,
NeMLaP/CoNLL 1998, Macquarie University, Sydney, NSW, Australia, January 11-17, 1998, pages
271–274, 1998.
[10] Amit Singhal. Modern information retrieval : a brief overview. BULLETIN OF THE IEEE COMPUTER SOCIETY TECHNICAL COMMITTEE ON DATA ENGINEERING, 24 :2001, 2001.
[11] Nhu Van Nguyen, Jean marc Ogier, Salvatore Tabbone, and Alain Boucher. Text retrieval relevance
feedback techniques for bag of words model in cbir, 2009.
[12] Yuanhua Lv and ChengXiang Zhai. When documents are very long, bm25 fails ! In Proceedings
of the 34th International ACM SIGIR Conference on Research and Development in Information
Retrieval, SIGIR ’11, pages 1103–1104, New York, NY, USA, 2011. ACM.
[13] Olivier Ferret. Using collocations for topic segmentation and link detection. In COLING, 2002.
[14] Li Wang, Diana Mccarthy, and Timothy Baldwin. Predicting thread linking structure by lexical
chaining. In Proceedings of the Australasian Language Technology Association Workshop 2011,
pages 76–85, 2011.
[15] Vincent Claveau. Vectorisation, okapi et calcul de similarité pour le tal : pour oublier enfin le tf-idf.
In Traitement Automatique des Langues Naturelles, TALN’12, Grenoble, France, June 2012.
[16] F. Dernoncourt. Designing an intelligent dialogue system for serious games. RJC EIAH’2012,
page 33, 2012.
[17] Attila Szalo Annamaria Csordas Arpad Kiss Gabor Tatai, Laszlo Laufer. The chatbot who loved
me. AAMAS2003 Conference, page 33, 2003.
Université de Nantes
40
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
[18] Antoine Bordes, Jason Weston, and Nicolas Usunier. Open question answering with weakly supervised embedding models. CoRR, abs/1404.4326, 2014.
[19] Karen Spärck Jones. A statistical interpretation of term specificity and its application in retrieval.
Journal of Documentation, 28 :11–21, 1972.
[20] S. E. Robertson, S. Walker, and M. Beaulieu. Experimentation as a way of life : Okapi at trec. In
Information Processing & Management, pages 95–108, 2000.
Université de Nantes
41
M2 ATAL
Réalisation d’un agent conversationnel
Appendix A :
Stage fin d’étude
Corpus de retranscriptions téléphoniques
Après quelques temps, un corpus de phrases construit pour le serveur vocal interactif a été fourni. Ce
corpus est constitué d’associations entre des phrases (des demandes utilisateurs) et un concept.
L’élaboration du corpus s’est faite en plusieurs étapes. Dans un premier temps, une liste d’une centaine de concepts possiblement évoqués par les utilisateurs a été créée. Puis en 2011, un enregistrement
d’environ 25000 phrases a été réalisé dans la zone Labo (région Rhones Alpes qui était en test d’un serveur vocal interactif (SVI) pour l’accueil téléphonique). C’est l’entreprise Prodosie qui gère le SVI et
qui a également réalisé la collecte de phrases. Puis, l’entreprise a proposé un concept associé à chaque
phrase, que la MAIF a validé ou corrigé manuellement.
En 2011 toujours, avant la mise en place et généralisation du SVI, un enrichissement du corpus a été
réalisé grâce à des phrases "inventées" par la MAIF avec le concept associé afin de faire apparaître dans
le corpus des concepts que la MAIF souhaite reconnaître et qui ne sont pas ressortis dans les premiers
enregistrements.
Un enregistrement d’un autre lot d’environ 25000 phrases en 2013 sur toute la France a été réalisé
avec le même protocole où Prosodie propose un concept que la MAIF valide ou non.
Les associations Phrases / Concept ont été mises à jour en 2013, 2014 et 2015, au fil des évolutions
d’organisation MAIF ce qui a entraîné l’apparition de nouveaux concepts, une homogénéisation des associations, des changement d’associations. . .
Analyse des données Les phrases étant des retranscriptions, des marqueurs de l’oral sont présents.
Par exemple, l’onomatopée "euh" est récurrente au sein des phrases, ou encore le bégaiement avec la
répétition d’un terme plusieurs fois. Nous trouvons également des incohérences syntaxiques comme "Fiat
Maif" ou "je veux assurer scolaire", ces erreurs sont introduites au moment de la retranscription.
De plus, certaines phrases sont composées d’un ou deux mots clés uniquement, comme "cotisation"
ce qui est très ambigu et ne permet pas d’indiquer quel est le réel besoin de l’utilisateur. Nous avons donc
réalisé un tri, les statistiques du nouveau corpus sont présentées dans la table 10. Finalement, c’est un
corpus moins fourni que nous obtenons par rapport à celui que nous avons constitué.
TABLE 10 – Constitution du corpus de retranscription
Nb questions
Nb mots
Nb lemmes
69
16
166
134
463
151
952
1166
65
53
160
177
Document Scolaire
Information Scolaire
Document Échéance
Information Échéance
Utilisation des données Nous nous retrouvons donc avec un corpus succinct et qui n’a pas été construit
pour faire de l’analyse écrite, nous l’avons testé sur certaines des solutions implémentées. Les résultats
Université de Nantes
42
M2 ATAL
Réalisation d’un agent conversationnel
Stage fin d’étude
TABLE 11 – Résultats obtenus avec le corpus de retranscription
Scolaire
Document
Méthodes
Echéance
Information
Document
Information
Précision
Rappel
Précision
Rappel
Précision
Rappel
Précision
Rappel
Baseline
79 %
85%
62%
68%
100%
12%
55%
86%
4Cat
Détection liens
Segmentation par thématique
58 %
90%
56%
100%
64%
93%
0%
100%
100%
0%
65%
33%
59%
100%
100%
47%
47%
29%
44%
66%
95%
44%
100%
42%
sont présentés dans la table 11.
La première ligne de la table, présente une méthode dite Baseline. Les corpus d’apprentissage et
de test sont mixtes de phases tiré des formulaires et des retranscriptions. Chaque phrase contenue dans
le corpus d’apprentissage est segmentée et lemmatisée avant d’être associé à un document. Puis chaque
phrase de test est comparée, après lemmatisation, aux phrases de l’apprentissage, pour déterminer laquelle
est la plus proche avec la formule suivante : #u−#com+0.5
où #u correspond au nombre de mots de la
#p
phrase à tester, #p correspond au nombre de mots de la phrase d’apprentissage, et #com correspond au
nombre de mots communs entre les deux phrases. Le coefficient de 0.5 permet de lisser le calcul et donc
d’éviter les valeurs nulles. Cette méthode relativement simple, donne une précision de 74% et un rappel
de 63% en moyenne. Cela reste toujours plus élevé que certaines méthodes vues dans le corps du rapport.
Pour la solution se basant sur la détection de liens, nous avons limité l’utilisation du corpus à la
constitution du réseau de collocations. Les résultats obtenus sont bien meilleurs que précédemment mais
ils restent insuffisants par rapport aux résultats de la méthode standard.
Pour les résultats de la solution 4Cat, il est important de noter que nous avons pris 80% du corpus
pour la partie apprentissage ce qui correspond à 12 phrases pour la partie Information Scolaire. Ce qui
implique une certaine pauvreté en vocabulaire et des résultats nuls.
Pour finir, les résultats obtenus avec la solution par segmentation thématique nous donne une bonne
précision avec une moyenne de 87,5% mais le rappel est très faible.
10. Complète : les traitements qui sont effectués sont Segmentation, Lemmatisation, Distance de Levenshtein et suppression des
Stopwords, avec l’utilisation de la liste de véhicules.
Université de Nantes
43
M2 ATAL