Pour pouvoir « converser » avec un humain, un chatbot doit être capable de comprendre les requêtes utilisateur, pour répondre de manière pertinente.
Le traitement du langage naturel (ou NLP en anglais) désigne la capacité d’un programme informatique à comprendre le langage humain. Cette discipline est une composante de l’intelligence artificielle, qui connait une forte accélération ces dernières années.
Le langage humain est par définition complexe. En effet, nous pouvons combiner les mots comme il nous semble – dans la limite de l’intelligibilité de la phrase par nos congénères – pour en faire des phrases, des expressions…etc.
Par ailleurs, le même mot peut avoir des significations différentes suivant le contexte.
Une machine peut difficilement détecter l’ironie (ex : « Quelle sacré journée » peut avoir une signification différente suivant que vous ayez passé une bonne ou mauvaise journée).
Pour ne rien arranger, chaque langue a ses spécificités, et potentiellement un alphabet différent.
Les défis du NLP sont donc nombreux, et nécessite des expertises pointues en informatique, mais aussi en linguistique.
Pour construire un chatbot à base de NLP, il faut à minima :
S’il y’a « match », le chatbot déclarera avoir compris l’intention de la phrase utilisateur et apportera une réponse de circonstance. Ce calcul de matching sera assuré par une succession d’algorithmes (on parlera de « pipeline » NLP) que l’on vous décrit dans le paragraphe suivant.
La suite d’algorithme permettant de « matcher » un jeu de données avec une requête utilisateur est décrite par le graphe suivant :
Une courte définition de chacun de ces algorithmes :
La tokénisation consiste à scinder une chaîne d’entrée en différentes parties atomiques, généralement des mots. L’une des formes les plus simples de tokénisation peut être définie comme une séparation par des espaces: “C’est simple.” -> [“Ceci”, “est”, “simple”]. Cette tâche peut être assez complexe avec des langues où les espaces arrières ne sont pas là pour vous aider:
は 簡 で す
La correction typographique est le processus de détection et de suggestion de mots mal orthographiés dans un texte. Cela consiste à gérer cela de manière proactive en ajoutant des fautes de frappe simulées dans l’ensemble de données formé pour enseigner aux bots certaines erreurs courantes et prévisibles que vos utilisateurs peuvent rencontrer.
L’extraction d’entités utilise deux approches différentes :
a) Extraction d’entité personnalisée : extrait une information pertinente d’un texte, cette information étant transmise au bot par une liste d’éléments et leurs synonymes.
b) Extraction d’entité système : extrait l’heure, les nombres, etc.
Le traitement automatique du langage naturel faisant appel à beaucoup de mathématiques, nous utilisons la vectorisation pour transformer la demande de l’utilisateur en objet mathématique.
Par exemple, si notre dictionnaire contient les mots {Smartly.AI, is, the, not, great}, et que nous souhaitons vectoriser le texte «Smartly.AI is great», nous aurions le vecteur suivant: (1, 1, 0, 0, 1).
C’est un peu plus complexe, mais vous avez eu l’idée
Fondamentalement, il compare le vecteur d’entrée à un ensemble de vecteurs préformés (intentions) pour trouver celui qui est le plus similaire. Le résultat de cette opération est le meilleur candidat d’intention et un score de confiance.
Cet algorithme extrait la polarité des sentiments (positive ou négative) de la requête utilisateur. Cela peut être utile si vous souhaitez détecter la colère/frustration chez votre prospect/client, qui peut être synonyme de « churn ».
Pour plus de précision et pertinence, vous pouvez également ajouter les algorithmes suivants :
Une fois que le chatbot a « compris » l’intention de l’utilisateur, il va alors générer une réponse.
La génération de la réponse consiste en une chaine de traitement qui va inclure notamment :
Une chaine de traitement est généralement nécessaire afin que le chatbot puisse apporter une réponse. Elle est décrite dans le schéma suivant :
Si l’on combine tous les briques, nous arrivons donc au schéma suivant :
A/ Message de reformulation
Le chatbot doit être capable de signifier à un utilisateur qu’il n’a pas ou peu compris une requête.
On parlera alors de message de reformulation. Voici quelques messages de reformulation type :
B. Désambiguïsation
Comme pour une conversation avec un humain, un chatbot peut considérer une requête comme était ambigu et demander à l’utilisateur de lui fournir plus d’informations.
Exemple, dans un contexte bancaire :
Utilisateur : « j’ai perdu ma carte »
Chatbot : « De quel type de carte s’agit-il : Visa, Mastercard ou American Express ?
Utilisateur : « ma carte Visa »
C. Taux de compréhension
Il s’agit de l’indicateur numéro 1 pour mesurer la performance du chatbot, sa bonne compréhension des requêtes utilisateurs.
Taux de compréhension = (Nombre de requêtes comprises par le chatbot / Nombre total de requêtes utilisateurs) *100
Qui détermine qu’une requête est correctement comprise par le chatbot ? Le chatbot lui-même.
Il dispose en effet d’un algorithme lui permettant de comparer les requêtes de l’utilisateur aux connaissances qu’on lui aura appris.
Si la requête de l’utilisateur présente une similarité sémantique avec le jeu de données appris au chatbot, celui va considérer qu’il a compris la requête, avec un certain % de confiance.
D. Apprentissage supervisé
Certaines requêtes ne seront pas comprises par le chatbot (non présente dans le modèle de données du chatbot, trop complexe…etc.)
Le concepteur du chatbot pourra à postériori utiliser ces requêtes pour améliorer les performances du chatbot.
Vous souhaitez en discuter ? Contactez-nous https://smartly.ai/contact