2. Qui suis-je
• ingénieur INSA IF 2003
• co fondateur et directeur technique d’Yseop
• à présent CTO d’Addventa
Passions :
• NLP (Natural Language Processing)
• IA symbolique, Prolog, moteurs d’inférences…
Page 1/17
3. Document écrit en AsciiDoc et transformé avec Asciidoctor PDF.
Page 2/17
4. Les chatbots : pourquoi
Des faits :
• Succès des applications de messagerie : Facebook Messenger est l’app la plus téléchargée en 2016,
avec 1,2 milliard d’utilisateurs.
• "App Fatigue"
• Les chatbots sont un succès énorme en Asie. Sur WeChat (Tencent, 900 millions de membres), on
peut faire des virements, participer à des lotteries, acheter des tickets de cinéma via des bots.
Une vision :
• Le langage est universel.
• "Bots are the new apps" - Satya Nadella, Microsoft.
• Les chatbots sont la première étape. Des interfaces purement vocales suivront : Voice is beginning to
replace typing in online queries. Twenty percent of mobile queries were made via voice in 2016, while
accuracy is now about 95 percent.
• Parfois en remplacement d’applications mobiles simples.
• Approche Graphical UI (GUI) → Conversational UI (CUI)
• Les applications de messagerie sont les plates-formes (OS) de ces chatbots.
Page 3/17
5. Comment marche un chatbot
Fonctionnalités
Un chatbot doit savoir dialoguer, càd :
1. répondre à un énoncé (un message entrant)
2. gérer une conversation
Page 4/17
6. Répondre à un message entrant
Un chatbot reçoit un message et doit y répondre. Comment ?
• Comprendre ce que dit l’utilisateur
◦ Intention et Entités : "je veux manger une pizza ce soir" → intention ="recherche restau" + entité
type = "italien" + entité quand = "ce soir"
◦ Approche par patterns ou par apprentissage (ML) pour trouver Intentions et Entités
• Répondre à l’utilisateur : via des conditions et des phrases à trous
Patterns, ML :
• pattern : on écrit explicitement des patterns qui vont matcher des énoncés
je veux manger une pizza ce soir => (~manger ~type ~quand)
~quand: [demain "ce soir" "maintenant" ~date]
~type: [~italien thaï chinois]
~italien: ["pizza" "pizzeria"]
• ML : exemples classés par intention (avec entités taggées)
intention: "recherche restau"
je veux manger une *pizza* *ce soir*
*pizza* *ce soir*
réserver restau *thaï* *demain*
Page 5/17
7. Gérer une conversation
Une fois l’intention identifiée, les enchaînements sont actuellement le souvent gérés via des arbres de
dialogue :
IBM Watson
Page 6/17
9. Gérer une conversation ce n’est pas si linéaire !
• Il faut savoir passer d’un sujet de conversation à un autre, jongler.
• Un sujet principal (réserver un billet de train) et des sujets adjacents (combien de points sur ma carte
fidélité ?). Qui parfois se rejoignent, ou pas. Qui vont jusqu’au bout, ou pas.
• Circular conversation models https://venturebeat.com/2017/05/26/how-chatbots-will-evolve-over-the-
next-5-years/
Page 8/17
10. Et l’IA dans tout cela ?
Un chatbot n’a pas d’intelligence en dehors de la gestion des conversations.
Un moteur de chatbot se combine avec :
• un accès à des données intéressantes :
◦ compte client
◦ bases de données, moteurs de recherche, simulateurs…
• d’autres technologies :
◦ moteur de règles
◦ analyse de sentiments
◦ génération de textes
◦ réseaux de neurones
La combinaison de quelques composants "intelligents" donne une impression globale d’IA.
Page 9/17
11. Les technologies de chatbot
Aperçu des technologies
Il existe plus d’une centaine de plate-formes pour construire des chatbots. Certaines sont très simples,
sans programmation. Votre chatbot en 1h (ou 30 min, ou 5 min, etc.).
Les GAFA construisent des stacks et API orientées IA et NLP, avec une brique chatbot :
• IBM Watson : Conversation, NLU, Classifier, Tone Analyzer, Retrieve and Rank…
• Microsoft Cognitive Services: LUIS, Bing Spell Check, Language Understanding, Text Analytics…
• Amazon AI : Alexa, NLU, ML, Deep Learning…
• Google : Api.ai, Cloud Natural Language API…
• Facebook : Wit.ai, DeepText…
Points d’attention :
• Scalabilité lorsque la complexité augmente.
• Versioning.
• NLU, support réel des langues : correction orthographique, gestion des formes fléchies.
• Algo de gestion des conversations personnalisable ?
• Cloud uniquement ou on premise.
Page 10/17
12. Il y a des alternatives open-source
Entre autres :
• ChatScript : moteur de chatbot
• rasa.ai / MITIE : intent classification and entity extraction
Page 11/17
13. ChatScript
Test de Turing et Prix Loebner
Le test de Turing est un test d’intelligence artificielle fondé sur la faculté d’une machine à imiter la
conversation humaine. Décrit par Alan Turing en 1950, ce test consiste à mettre un humain en
confrontation verbale à l’aveugle avec un ordinateur et un autre humain.
Le Prix Loebner est une compétition annuelle qui couronne les agents conversationnels satisfaisant le
mieux les critères du test de Turing. Cette compétition a été créée en 1990.
Depuis quelques années, ce sont les chatbots développés avec ChatScript qui gagnent : 2010 gagnant,
2011 gagnant, 2012 2ème, 2013 3ème, 2014 gagnant, 2015 gagnant, 2016 3ème.
Page 12/17
14. ChatScript - le language
ChatScript est un langage dédié à l’écriture de chatbots. C’est un langage complet, avec un
compilateur, un interpréteur, un débogueur etc. Développé depuis 2010.
Taille du code des chatbots Loebner :
• gagnants d’ancienne génération (AIML) : 200 000 règles (en XML…)
• ChatScript : 15 000 règles
Du code :
u: ( !~negativeWords I * ~like * _~meat )
You like _0.
Points forts :
• concision générale
• puissance des patterns
• puissant algo de gestion des conversations, personnalisable via un méta script
En contrepartie : pas d’interface graphique pour gérer les règles.
Page 13/17
15. Zoom sur les couches de NLU de ChatScript
Composant Description Exemple
tokenizer Découpage en mots (token). j’y vais aujourd’hui → j' + y + vais
+ aujourd’hui
dictionnaire Permet la correction
orthographique.
imobilier → immobilier
immobiliere → immobilière
lemmatiseur Trouve les formes canoniques :
"belles" = "beau" au féminin
pluriel.
elle est belle / elle était belle →
être beau
j’annualise / j’ai annualisé → je
annualiser
ontologies "choux fleur" est un "légume" je mange des légumes / j’ai
mangé des légumes / je mange
des carottes / je consomme du
choux-fleur → je * ~manger *
~légume
Page 14/17
16. ChatScript - Eléments techniques
• écrit en C++ ; Linux ou Windows ; open source (MIT)
• indépendant de tout canal
• Sait s’inscrire dans une chaîne d’intégration continue :
◦ de vraies sources : gestion de configuration (Git, SVN etc.) pour faire du travail collaboratif
◦ automate de non régression
◦ outils de trace, de debug
• 10 000 conversations simultanées sur un 8 cœurs.
• Capacité à faire fonctionner de très gros chatbots (Loebner : 15 000 règles).
Page 15/17