Introduction aux ChatBots et l’ANI : Artificial Narrow Intelligence

Definition

L’Artificial Narrow Intelligence est une intelligence artificielle qui se concentre sur une seule tâche contrairement à l’AI (Artificial Intelligence) qui est une machine avec la capacité d’appliquer l’intelligence à n’importe quel problème, plutôt qu’un problème spécifique.

Siri est un bon exemple d’ANI. Siri opère dans une gamme limitée prédéfinie, il n’y a pas d’intelligence véritable, pas de conscience de soi.

Les chatbots, ou agents conversationnels, sont les interfaces permettant d’exploiter une ANI.

Principes de fonctionnement

Les chatbots sont souvent utilisés dans un but ou une tâche précise. Ils ont « préformatés » et n’ont pas (ou rarement) de fonctionnalité de machine learning. Un moyen fréquent pour faire fonctionner un chatbot est d’utiliser des fichiers AIML (Artificial Intelligence Markup Language). C’est un format dérivé du XML qui défini quoi répondre à quelle question.

Le problème de l’utilisation de AIML est la non possibilité d’avoir des bots très sophistiqués. Néanmoins, le projet A.L.I.C.E qui utilise ce procédé est arrivé second  au concours Loebner de 2010. Notez qu’aujourd’hui les avancées en AI et machine learning ont largement évolué et qu’on est loin de pouvoir passé un test de Turing avec AIML.

Pour la plupart des chatbots, qui ont a accomplir un nombre restreint de tâches c’est suffisant. Que ce soit en marketing, e-commerce ou autre, les possibilités offertes par cette technique offrent un large panel de services que nous allons parcourir dans cet article.

On l’a vu, le principe de fonctionnement d’un chatbot est relativement simple. On peut le diviser en 3 grandes étapes : demande, traitement, réponse.

 

Mise en œuvre technique

Théoriquement, on peut faire un chatbot avec n’importe quel langage, mais certains sont plus adaptés que d’autre du fait de librairies disponibles. Par exemple, Python a un package pyAIML qui permet de manipuler facilement les fichiers AIML. Si vous préférez le PHP, le projet Program O est une solution.

Dans tous les cas, l’utilisation de AIML est toujours la même. On utilise des patterns et des templates.

Les patterns

Les patterns (ou motifs en français) sont des chaines de caractères qui sont destinées à répondre à une entrée utilisateur. Ces patterns peuvent contenir des jokers pour répondre à un large nombre d’entrées.

Pattern "fermé" : Quel est votre nom

Pattern "large" : Quel est votre *

Le pattern fermé aura qu’une seule réponse possible : un nom. Le pattern large peut répondre à plusieurs questions :

  • quel est votre âge
  • quel est votre nom
  • quel est votre travail

Afin de simplifier le travail de l’interpréteur AIML, on peut ajouter des fonctions de prétraitement pour gérer la casse, les fautes, les abréviations etc.

Les templates

Un template (ou modèle) est une réponse à un pattern. Un template peut être aussi simple qu’un texte littéral brut comme « Bonjour je suis votre bot ». On peut également faire appel à l’utilisation de variables pour personnaliser :

 Bonjour, mon nom est <bot name="name"/>.

Dans cet exemple, on remplace la variable  <bot name= »name »/> par le nom du Bot. On peut également utiliser des variables ayant comme valeur une saisie utilisateur. Par exemple, pour demander le nom ou l’âge de l’utilisateur.

On peut également utiliser des réponses conditionnelles (if / then / else) ou des réponses aléatoires. Les templates peuvent également faire appel à d’autres templates (selon la thématique par exemple) en utilisant des éléments « srai ». Voici un exemple de formatage correct de fichier AIML :

<category>
  <pattern>QUEL EST VOTRE NOM</pattern>
  <template><![CDATA[Mon nom est <bot name="name"/>.]]></template>
</category>
<category>
  <pattern>Comment t'appelles-tu</pattern>
  <template>
    <srai>Quel est votre nom</srai>
  </template>
</category>

Cet exemple, pris sur Wikipédia, met en oeuvre tout ce dont nous venons de voir. « comment t’appelles-tu » est semblable à « quel est votre nom ». On utilise donc un élément srai pour « rediriger » vers la réponse adéquate. L’élément CDATA permet d’éviter les caractères d’échappement liés au XML.

 

Chatbot sans coder, quelques solutions

La mise en oeuvre technique peut être fastidieuse ou compliquée. Il existe des solutions pour mettre en route des chabots sans programmation.

Chatfuel

Ce service permet de créer un chatbot Facebook Messenger pour votre fanpage. Vous créez des scenarios et vous pouvez obtenir quelque chose d’assez puissant en quelques minutes.

Il suffit de créer des blocs avec des mots-clés et de définir une réponse appropriée : réponse texte, lien, card (bloc d’information avec liens, images etc.). C’est un excellent départ et ce service est utilisé par de grands sites.

Site : https://chatfuel.com/

Plugin WordPress

Un plugin wordpress utilisant le script Program O et permettant de mettre en place facilement un chatbot sur votre CMS préféré. Il porte le nom Elizaibots et est disponible gratuitement.

Site : https://en-gb.wordpress.org/plugins/elizaibot-chatbots/

Il existe également un certain nombre de projet, la plupart du temps open source, qui permettent de déployer rapidement un chatbot.

Quelques services à l’internaute

Le plus classique et facile à mettre en place, c’est certainement la FAQ. L’internaute pose une question et on puise dans la base de connaissance pour répondre par un lien direct vers la question / solution dans la FAQ.

On rencontre également régulièrement des chatbots qui deviennent ensuite de véritable chat avec un opérateur commercial ou technique. Le chatbot étant présent en début de chaine pour évaluer le besoin de l’internaute. Charge à l’humain ensuite de prendre le relais et de répondre aux attentes.

Google Allo, propose de chater avec ses amis tout en pouvant poser des questions. Google se sert alors de son moteur de recherche pour apporter des réponses : definition, map, etc.

Conclusions

AIML est une excellente solution pour démarrer avec les chatbots et l’ANI. Cela à néanmoins ses limites puisqu’il est difficile de maintenir à jour un code qui va répondre à énormément de questions ou de pouvoir répondre à des questions complexes.