Chatbots : créez votre premier agent conversationnel - Partie 2

Nous venons de définir ce que l’utilisateur devra écrire, ajoutons maintenant une réponse de la part du bot. Pour cela, cliquez sur le bouton « Bot Sends » et écrivez le message que le bot enverra en réponse.

Vous devriez maintenant avoir quelque chose de similaire à ceci :

create-reponse

Vous pouvez déjà tester le fonctionnement de cette story en cliquant sur le bouton « Press ~ to chat with your bot » en bas à droite de la page qui ouvrira une fenêtre de conversation.

Ecrivez-y « Bonjour », le bot devrait alors vous répondre :

chat-with-your-bot

En revanche, comme vous n’avez qu’une seule story, vous verrez que le bot vous répondra dans tous les cas la même chose. Nous allons donc créer une seconde story pour demander au bot « ça va ? » afin d’avoir deux usages différents et de montrer en quoi l’éducation des entités est nécessaire.

Voici notre nouvelle story :

story-bot

Essayons maintenant de saluer le bot différemment dans la fenêtre de chat, on voit bien que le bot ne répond pas comme nous le souhaiterions :

bot-mauvaise-reponse

Le problème c’est que nous avons créé l’entité mais qu’elle n’a pour référence que le texte « Bonjour » avec lequel nous l’avons créée et n’est donc pas capable de comprendre d’autres formulations par manque de références.

Eduquer le bot

Comme nous venons de le voir, il va donc falloir apprendre d’autres manières de comprendre « bonjour » à notre IA. Mais il va également falloir définir ce que l’on appelle une stratégie de recherche pour chaque entité.

Pour cela, il suffit d’aller dans la rubrique « Understanding » dans laquelle nous pouvons trouver nos entités créées précédemment :

understanding

La colonne « Search Strategy » est un élément très critique permettant à l’IA de comprendre les choses correctement. Un simple changement dans ces options peut casser le bot il est donc important de bien comprendre leurs différences.

Trait : sera utilisé pour des formulations complexes de phrases dans des cas où on ne peut pas comprendre ce que dit l’utilisateur à partir d’une simple liste de mot-clefs.

Free-text : sera utilisé principalement pour de la recherche en texte libre. Par exemple « trouver des articles parlant de xxx », xxx sera ici du free-text.

Keywords : permettra de définir une liste fermée de mots auxquels devra répondre l’entité. Par exemple « pizza xxx », xxx contiendra les mots clefs : calzone, fromage, 4 saisons, paysanne, orientale, etc…

En cochant « free-text » ET « keyword » on obtient une liste de mots-clefs ouverte. C’est-à-dire qu’on reconnaitra une liste précise de termes tout en étant ouvert à de nouvelles possibilités de mots. C’est ce qui nous intéressera pour l’entité de salutation.

Concernant le « ça va ? » les formulations possibles étant très diverses et variées nous utiliserons par contre un « trait ». Mais si nous mettions seulement cette option l’IA chercherait quand même d’autres entités à l’intérieur donc nous allons aussi cocher « keyword » qui empêchera ceci.

Passons maintenant à l’éducation à proprement parler. En haut de cette page se trouve un champ permettant de tester le bot en écrivant des phrases. Ecrivez « Comment vas-tu ? » dans ce champ, vous verrez alors les entités qu’en a extrait Wit :

train-your-bot

 

On voit bien que le bot n’as pas du tout compris ce qu’on lui a dit, nous allons donc le corriger.

Pour cela, nous allons supprimer les deux « greetings » proposés, sélectionner « Comment vas-tu ? », l’associer à l’entité « howareyou » et valider pour éduquer le bot.

test-your-bot

De la même manière nous allons ajouter « Tu vas bien ? », « comment ça va ? », « ça roule ? » et « Comment te sens-tu ? ». Attention, dans certains cas l’IA pourrait vous proposer automatiquement l’entité adéquate (« howareyou ») mais sans l’associer au message. Dans ce cas, supprimez la proposition, sélectionnez le texte avec la souris et ressaisissez l’entité manuellement.

Faisons de même pour l’entité « greetings » en ajoutant « coucou », « yo », « salut » puis « hello ». Vous remarquerez peut-être qu’au moment d’écrire « hello », l’IA reconnait correctement l’entité « greetings » sans que l’on ait besoin de le lui apprendre, mais validons-le tout de même afin de renforcer l’apprentissage.

Vous devriez maintenant avoir des entités comme suit :

your-app-uses-2-entities

Essayons de parler au bot à nouveau via la fenêtre de chat et constatons que ses réponses sont déjà bien plus cohérentes même lorsque nous lui disons des choses que nous ne lui avons pourtant pas encore apprises :

reponse-coherente-bot

Vous l’aurez compris, l’intelligence du bot se fera principalement en fonction de la base de connaissances que nous lui aurons fourni. Plus nous lui fournirons d’exemples, plus il saura interpoler de nouvelles phrases pour répondre correctement.

Il faut aussi savoir que le fonctionnement de l’IA de Wit fonctionne de 2 manières différentes. La base de fonctionnement restera ce que l’on appelle du Machine Learning, mais tant que sa base de connaissance restera limitée, et donc insuffisante pour faire uniquement du machine learning, il fonctionnera plutôt sur un système dit de « Rules » puis switchera progressivement vers du machine learning pur au fil de l’apprentissage.

Grâce à ce système, il est possible d’avoir un prototype de bot fonctionnel rapidement tout en conservant la possibilité de le faire évoluer de manière transparente simplement en lui apprenant de nouvelles formulations de phrases.

A noter également qu’une « bonne » éducation consiste en plusieurs centaines d’exemples pour une seule entité ce qui représente un travail conséquent.

Pour aider à ceci, la rubrique « Inbox » de Wit listera tout ce qui a été dit au bot (une fois celui-ci connecté à une messagerie) avec la possibilité de valider ou corriger ce que l’IA a compris. Autrement dit, l’apprentissage du bot peut se faire sur la base de simples tests de la part d’utilisateurs lui parlant par exemple sur Messenger.

Un défaut assez important de Wit est qu’il n’est actuellement pas possible de créer de story de fallback. Si un message ne correspond à aucune story, le bot répondra forcément avec une des stories existantes qu’il considérera la moins pire, même si elle n’a aucun rapport.

Il reste possible d’arriver plus ou moins à avoir une story de fallback créant une story sans entité liée mais qui a des chances d’entrer en conflit avec d’autres story et d’empêcher le projet Wit de valider une ou plusieurs de ses stories. Les développeurs de Wit sont au-courant de ce manque et devraient l’adresser dans un avenir plus ou moins proche.

Voici leur roadmap :

https://github.com/wit-ai/wit

Next steps

Nous avons vu ici comment créer des stories très simplistes mais Wit permet évidemment de gérer des scénarios beaucoup plus complexes avec des embranchements, l’exécution de fonctions côté serveur, etc…

Maintenant que vous avez créé la base de votre bot il faudra créer la partie serveur qui fera le lien entre Messenger et Wit.

Wit propose des librairies dans la plupart des langages qui sont disponibles ici pour vous aider à vous lancer :

https://github.com/wit-ai

Vous aurez également besoin de créer une page ainsi qu’une application Facebook afin d’avoir les tokens d’authentification nécessaires à l’utilisation de l’API messenger.

Conclusion

Dans cet article nous avons vu le fonctionnement de Wit mais il existe bien d’autres solutions ayant chacune leurs avantages et inconvénients. Celles fonctionnant sur du machine learning, comme Api.ai de google, et Wit, ont généralement en commun le fait de fonctionner sur ce qui s’apparentera au système d’entités et de scénarios présentés dans cet article.

Ce qui a été appris ici sera donc souvent valable ailleurs à quelques subtilités près.

Nous nous sommes ici concentrés sur Wit car, bien que cette plateforme soit loin d’être récente, elle a bénéficié d’une mise en avant par l’un des plus grands acteurs du web, à savoir Facebook. Et comme Messenger est une des plus grandes plateformes de messagerie (avec pas moins d’1 milliard d’utilisateurs revendiqués), il y a fort à parier que wit sera parmi ceux qui se tailleront la part du lion de ce marché encore balbutiant.

0 commentaires

votre commentaire

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Inscription newsletter

Ne manquez plus nos derniers articles !