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