Paramétrer la compréhension du langage naturel (NLU) pour un chatbot ITSM

Apprenez à optimiser votre NLU (compréhension du langage naturel) pour créer un chatbot ITSM performant. 

Accrochez vos ceintures ! Ici, vous allez apprendre tout ce qu’il faut savoir sur le paramétrage de la compréhension du langage naturel (en anglais : Natural Language Understanding = NLU). Décollage dans 3, 2, 1…… 🚀🚀🚀

La première chose à savoir, votre bot Vizir peut être paramétré avec deux algorithmes de compréhension du langage naturel : Elastic Search et Intentions/entités. Mon collègue vous l’a un peu détaillé ici.

Pour résumer :

Elastic Search => intelligence mot clé très puissante et efficace

Intentions/entités => reconnaît des intentions et des mots clés (différement de Elastic Search).

Dans cet article, nous allons voire comment paramétrer ces deux algorithmes pour un chatbot ITSM (pour les supports IT).

Paramétrage NLU Intentions/Entités pour un chatbot ITSM

1) Les intentions d'un chatbot itsm

Pour bien paramétrer une NLU Intentions/Entités, la première chose à faire est de créer les intentions => doivent être choisies intelligemment en fonction de votre besoin. On dit souvent qu’une intention c’est un verbe d’action. Cela doit aussi faire sens par rapport à votre catégorisation dans votre outil ITSM. Dans mon exemple, j’ai cerné que les intentions essentielles des futurs utilisateurs de ce chatbot étaient :

  • Se connecter (au réseau / au wifi / à une application / à son ordinateur à distance / au vpn, etc…)
  • Installer (une application / un logiciel / une imprimante, etc..)
  • Mettre à Jour (une application / un logiciel / une imprimante, etc..)
  • Réinitialiser (un mot de passe par exemple)
  • Commander un matériel (une imprimante, un ordinateur, etc..)
  • Déclarer un problème matériel (bourrage papier, plus de papier, écran bleu, etc..)
  • Déclarer le vol d’un matériel
  • Paramétrer (une appli, un poste de travial, etc …)
  • Déclarer un nouvel arrivant
  • Déclarer un départ

Il est facile d’imaginer d’autres intentions que pourraient avoir vos utilisateurs => il faut les identifiers pour les ajouter au modèle (souvent grâce à l’analyse de vos tickets dans votre outil ITSM).

Pour créer ces intentions, rendez-vous dans l’onglet NLU > Intentions et cliquez sur “Ajouter une intention”, ajoutez les une par une.

ajouter intention nlu

Ensuite, il vous faudra ajouter des phrases d’entraînement à toutes ces intentions. Pour cela cliquer sur le bouton “expressions liées” à droite du nom de votre intention.

ajouter des phrases d'entrainement

Ensuite il vous suffira d’ajouter des phrases 1 par 1 dans la zone de texte => elles viendront s’ajouter à la liste en dessous.

Pour rédiger ces phrases j’ai un conseil : mettez-vous à la place d’un utilisateur final du bot. Par exemple, pour l’intention “Se connecter”, posez-vous la question : “quelle phrase l’utilisateur final du bot pourrait dire pour laquelle je voudrais que le bot comprenne qu’il s’agit d’une intention de connection”. Vous avez 12 exemples juste au dessus ! (Certaines fois il suffit de reprendre vos tickets ITSM et de copier coller => n’oubliez jamais, rien de tel qu’une petite stratégie bottom-up 😀).

entrainer la nlu

Conseils bonus :

  1. Dans toutes vos intentions, ayez des phrases avec des tournures basiques : “what”, “where” “how to”, etc… => pour ne pas biaiser la compréhension à cause de tournures qu’on ne retrouve que dans une seule intention sans raison particulière.
  2. Construisez une intention “other FAQ” pour classifier les phrases qui ne rentrent dans aucune autre catégorie => idéalement elle doit rester le plus vide possible, quand un faux positif est détecté, vous pouvez requalifier la phrase et l’assigner à cette intention “autre”. Il faudra examiner cette intention régulièrement pour vérifier qu’un nouveau besoin n’a pas emergé.
  3. Evitez un déséquilibre de nombre de phrases d’entraînement entre vos intentions => par exemple : si une intention A a 90 phrases d’entraînement et une intention B seulement 15, votre bot aura tendance a beaucoup plus orienter sa compréhension vers l’intention A.
  4. N’entraînez jamais une intention avec deux phrases identiques => tout simplement parce que ça ne sert à rien et qu’il vous serait plus difficile de vous y retrouver dans une grande quantité de phrases.

2) Les entités pour un chatbot itsm

Vous vous êtes peut-être posé la question, pourquoi certains mots sont-ils surlignés dans mes phrases d’entraînement ? C’est grâce à la détection des entités ! Pour découvrir et comprendre ce qu’est une entité, rendez-vous dans l’onglet “entités” à côté de “intentions”.

ajouter des entités

Comme vous pouvez le voir, nous disposons de base de 9 entités “naturelles”. Par exemple, l’entité pré-paramétrée “Number” permettra à votre chatbot de détecter les chiffres et nombres dans les requêtes utilisateurs. Si vous écrivez “j’ai trois pieds”, le chatbot va associer le mot “trois” à l’entité “Number”.

Dans votre cas de chatbot ITSM, ce qui va être puissant, c’est de pouvoir détecter par exemple : des applications, des matériels, des postes, etc..

Dans mon exemple, j’ai paramétré notamment 3 entités fondamentales : Network (wifi, vpn, server,etc..) / Office apps (les applications) / Device (imprimante, pc, smartphone,etc..).

Rentrons plus en détail sur l’entité “Office apps” en cliquant sur la roue crantée :

entités synonymes

Premièrement, notez bien qu’une des grandes utilités de pouvoir détecter des entités, c’est de les garder en mémoire => donc de les sauvegarder dans un attribut. Pour cela, il suffit de cocher cette case et de choisir l’attribut dans lequel stocker l’entité détectée par le bot. Ici, j’ai choisi de stocker l’application détectée dans l’attribut (la variable) “tracking”.

Ensuite, pour obtenir un chatbot qui a un comportement variable en fonction de l’application métier détectée, vous devez créer des synonymes; 1 pour chaque application métier. Dans mon exemple, j’ai “OneDrive / Teams / Excel”.

Enfin, nourrissez chacun des synonymes avec les mots-clés que vous voulez lui associer. Pour se faire, demandez-vous par exemple “quand est-ce que je veux que le bot comprenne OneDrive”. Si votre réponse est : “quand l’utilisateur écrit OneDrive ou Drive”, renseignez le synonyme “OneDrive” comme suit :

entités mots clés

A ce moment, votre entité est bien configurée, il ne vous reste plus qu’à tagguer les mots associés à vos entités dans les phrases d’entraînement de vos intentions. Pour cela, retournez donc dans l’onglet “intentions” et procéder comme dans la vidéo suivante : https://www.loom.com/share/6f4bdfc9bb504effbcb00752bc28af0e. Cet exemple est un peu particulier puisque j’avais déjà entraîné l’entité OneDrive => elle a donc été automatiquement détectée (et surlignée), je l’ai donc dé-surligné puis re-surligné dans la vidéo.

Vous avez donc bien entraîné vos intentions et vos entités, maintenant, vous allez devoir configuré les ressources qui doivent être accédé grâce à la compréhension NLU du bot.

3) Configuration NLU pour un chatbot itsm

Pour créer une configuration, c’est très simple, il suffit de cliquer sur le bouton “ajouter une configuration” dans l’onglet NLU > Configuration. Comme ceci !

Vous pouvez paramétrer votre configuration en cliquant sur la roue crantée:

logique nlu

Il s’agit donc de choisir une logique. Dans mon cas, je veux que lorsque le chatbot comprend qu’il s’agit de l’intention “Reset password”, il doit aller sur ma procédure de “Reset Password”.

=> c’est la configuration très basique (en fonction de l’intention détectée).

Vous pouvez également paramétré en fonction de l’intention ET d’une entité. Par exemple je veux que l’intention “Other FAQ” + l’entité “office app” mène par défaut vers la création de ticket. Je dois paramétrer comme suit :

Ici, j’ai même ajouté la configuration qui fait que si le “office app” est égale à “Teams”, on accède à la FAQ Teams, et si le “office app” est égale à “OneDrive”, on accède à la FAQ OneDrive. C’est ce qu’on appelle la logique en fonction de la valeur de l’entité (n’oubliez pas de cocher la case prévue à cet effet).

 

Le dernier cas qui nous intéresse ici, c’est l’option “Demander une précision avant la recherche”. Dans notre exemple, on souhaite que lorsque le chatbot comprend l’intention Office app sans entité, qu’il demande une précision sur l’application à laquelle associer la requête de l’utilisateur. Voici le comportement attendu :

a) on demande au bot “how to upload a file ?” :

b) le bot demande la précision et on choisit Teams :

c) le bot répond à la question “how to upload a file” par rapport à Teams.

 

Pour paramétrer cela, il suffit de créer la configuration de l’intention “other faq” sans entité et de cocher la case “demander une précision avant la recherche”. Enfin, il faut rediriger la logique vers votre ressource paramétrée de clarification.

Voici ma ressource de clarification :

Vous savez tout du paramétrage de l’algorithme Intentions / entités ! Vous vous êtes peut être posé la question, comment est ce que le chatbot a bien répondu sur la question à propos de Teams ? C’est grâce à Elastic Search qui a opéré juste après l’algorithme intentions/entités ! Lisez donc la prochaine section 😉

WARNING NOUVEAUTE : depuis Septembre 2020 il est possible de créer des configurations NLU sans intention mais juste avec une entité. On peut bien évidemment paramétrer cette logique avec un comportement en fonction de la valeur de cette entité. Dans l’exemple vidéo, je crée des configs en fonction de l’entité Pate à tartiner et les synonymes Nutella et Chocolata. C’est à dire que si le chatbot ne comprend pas d’intention mais repère l’entité Pate à tartiner, la logique paramétrée sans intention s’exécutera, et ça c’est fantastique !

Par exemple, on peut avoir un chatbot qui possède uniquement une logique en fonction de la valeur de l’entité application de bureaux pour faire par exemple un chatbot FAQ sur les applications de votre entreprise.

Paramétrage de Elastic Search

En effet, Elastic Search est l’algorithme qui est utilisé pour les FAQs. Dans mon exemple, j’ai implémenté deux FAQs officielles : Teams et OneDrive. Ces deux FAQ ont plus d’une centaine de ressources (autant qu’il y a d’articles de documentation sur la FAQ officielle).

Mon algorithme intention / entités permet au chatbot de comprendre si j’ai une question de type other FAQ, puis de savoir s’il s’agit d’une question à propos de Teams ou OneDrive (avec ou sans demande de clarification). Ensuite, c’est ES qui va déterminer laquelle de ces 221 ressources (si on est dans le cas Teams) doit être proposé à l’utilisateur => laquelle répond à sa question.

Ce paramétrage s’effectue grâce à des mots clés et s’effectue donc au niveau de chaque ressource (vous pouvez biensur l’intégrer directement dans votre fichier de setup comme vu préalablement dans la formation). Rendez-vous dans le paramétrage de la “compréhension” de la ressource. Dans mon exemple, je suis sur la ressource “Leave a team”, j’ai donc ajouté grâce à la barre de saisie, le mot-clé “leave team”.

C’est absolument tout ce qu’il y a à faire avec Elastic Search !!

Par exemple :

Je peux faire :

Training Ressource a = “leave Team”

Training Ressource b = “leave Group”

Car il ne s’agit pas du même groupe de mot clé. Si l’utilisateur écrit “leave Team” le bot ira à la ressource a. Si l’utilisateur écrit “leave Group”, le bot ira à la ressource b.

Je ne peux pas faire :

Training Ressource a = “leave” ; “Team” (deux lignes séparées)

Training Ressource b = “leave”; “”Group” (deux lignes séparées)

Parceque les deux ressources seraient entraînées avec le mot “leave” indépendamment du reste, le bot ne pourrait donc pas choisir entre la ressource a ou b si l’utilisateur écrit “leave”.

Voilà, vous savez paramétré une NLU pour votre chatbot ITSM !

Aller plus loin

Pour aller encore plus loin, voici quelques notions plus poussées qui vous aideront à maîtriser davantage le flow conversationnel du bot !

🙏 Pré-Requis

🍔 Menu

Pour tout savoir sur les chatbots et l'IA, inscrivez-vous à la Newsletter