skip to Main Content

NLP : développer un chatbot qui comprend vos utilisateurs

L’entrainement du modèle de traitement du langage naturel (NLP, pour natural langage processing) d’un chatbot est un processus long et compliqué. Il est néanmoins indispensable au bon déroulement de l’expérience conversationnelle proposée par ce dernier. Nous vous partageons donc dans cet article quelques bonnes pratiques du développement d’un modèle de NLP pour chatbot.

Sommaire

  1. Intro : la problématique de l’entrainement du modèle de NLP
  2. Spécialiser le service conversationnel de votre chatbot
  3. Diversifier les données d’entrainement de votre modèle de NLP
  4. Mesurez les performances du modèle de NLP de votre chatbot
  5. Améliorer votre modèle de NLP de manière continue
  6. Conclusion : entrainer un modèle de NLP pour son chatbot, difficile mais indispensable !

1. Intro : la problématique de l’entrainement du modèle de NLP

C’est l’une des tendances technologique majeure de ces dernières années : les interfaces conversationnelles (ou chatbots) envahissent nos écrans. Les plus grands cabinets de conseil leurs prédisent un avenir radieux. Les GAFAMS y investissent des milliards pour prendre une position de leader sur cette nouvelle interface homme-machine. Les marques quant à elles sont de plus en plus nombreuses à se lancer dans l’expérience chatbot, qu’ils soient textuels ou vocaux.

Pourquoi un tel engouement ? Parce que les promesses qui se cachent derrière ces petites interfaces conversationnelles sont nombreuses et alléchantes :

  • la possibilité de qualifier et de comprendre finement le besoin de ses utilisateurs,
  • la capacité du chatbot à proposer une expérience unique et personnalisée à ses clients,
  • ou encore la possible automatisation d’un certain nombres de tâches rébarbatives.

Pourtant, malgré ces milliards investis et cet engouement généralisé, les expériences conversationnelles proposées jusqu’à présent sont pour la plupart assez décevantes. La faute très souvent à un manque d’entrainement de la brique de NLP du chatbot. Celui-ci est alors incapable de comprendre la demande utilisateur et de proposer une expérience fluide et adaptée. L’expérience proposée se rapproche alors d’une expérience d’application mobile cheap, avec des boutons pour seules interactions, et des flows de conversation type champs de recherche ou formulaire. On est très loin de la promesse initiale des chatbots.

Au coeur de la problématique se trouve donc la difficulté pour un chatbot à traiter le langage naturel d’un humain. Cette étape du développement d’un chatbot, appelée entrainement, consiste à apprendre à un algorithme (le modèle) à reconnaitre certaines typologies de demande utilisateur (les intentions) et certaines caractéristiques de ces demandes (les entités).

Ce processus d’entrainement du modèle de NLP est à la fois crucial pour la qualité de l’expérience proposée dans votre chatbot, et complexe à mettre en place. Elle nécessite d’adopter la bonne méthodologie pour arriver à un premier résultat satisfaisant. Les points suivants sont particulièrement importants :

  • Spécialiser le service conversationnel de votre chatbot
  • Diversifier les données d’entrainement de votre modèle de NLP
  • Mesurer les performances du modèle de NLP
  • Améliorer votre modèle de NLP de manière continue

2. Spécialiser le service conversationnel de votre chatbot

Le premier piège à éviter dans le développement d’un chatbot consiste à vouloir offrir une expérience utilisateur trop large. Il est en effet tentant de vouloir que son chatbot comprenne beaucoup de choses dès le début, qu’il paraisse ainsi très intelligent et puisse répondre à toutes les demandes utilisateurs. La réalité du terrain nous a appris à adopter l’approche inverse. Il est en effet très difficile d’anticiper les demandes de vos utilisateurs et l’usage qu’ils feront de votre service (hors coeur de proposition). Vous risquez donc de passer du temps et de l’argent à entrainer le modèle de NLP de votre chatbot sur des intentions qui ne seront pas du tout utilisées par vos utilisateurs. Ce faisant vous disperserez vos ressources sur trop de sujets à la fois et n’aurez pas les moyens d’entrainer suffisamment votre modèle de NLP sur les intentions les plus importantes. Vous proposerez finalement un chatbot à l’expérience moyenne qui ne servira ni vos utilisateurs, ni votre image de marque.

Nous recommandons donc de spécialiser l’expérience de votre chatbot (et son modèle de NLP) autour d’une ou deux intentions primaires qui constitueront le coeur de son service initial. Il s’agira des intentions que vous passerez le plus de temps à entrainer et que vous présenterez à vos utilisateurs comme étant le coeur de votre expérience conversationnelle.

Si le Guide du routard développait un chatbot, son modèle de NLP serait entrainé pour reconnaitre l’intention primaire « demande de recommandation d’établissements » et pour comprendre des demandes utilisateurs du type :

  • « Coucou! Quels sont les meilleurs resto de la ville ? »
  • « Où dormir pour pas trop cher à Rome ? »
  • « On cherche un bar à vin pour manger des tapas ce soir pas trop loin du centre »

Pour la Fnac, le modèle de NLP du chatbot serait spécialement calibré pour reconnaitre une intention primaire « demande de conseils pour effectuer un achat » et comprendrait des demandes utilisateurs du type :

  • « Je voudrais acheter un appareil photo pour l’anniversaire de mon père mais je sais pas trop quoi choisir »
  • « que me recommandez vous comme portable avec un grand écran et autour des 300€ ? »
  • « C’est quoi les marques de rétroprojecteurs avec le meilleur rapport qualité prix ? »

Et pour Airbnb enfin, le modèle de NLP de leur chatbot serait spécialisé pour une intention primaire « réservation d’un appartement » et pourrait comprendre des demandes utilisateurs du type :

  • « Je cherche un appart pour 2p dans le centre de Bordeaux, avec un budget de 50-60€ max par nuit »
  • « T’as quoi à me proposer pour dormir à paris sur le week-end du 6-8 décembre ? »
  • « bonjour, je veux un appart pour 3 jours à partir du 4 décembre à Lyon, le plus proche possible de l’université Lyon 2 (c’est pour un concours) »

À titre d’information, entrainer un modèle de NLP sur ces intentions, à priori simples, nécessitera déjà quelques milliers de phrases d’entrainement…

Une fois le modèle de NLP de votre chatbot correctement entrainé sur ces intentions primaires, vous pourrez enrichir votre service au fur et à mesure. Et pour cela vous pourrez utiliser les données générées par vos utilisateurs qui vous permettront :

  • d’identifier de nouveaux besoins plus facilement
  • d’aller plus vite dans l’entrainement de votre modèle de NLP

3. Diversifiez les données d’entrainement de votre modèle de NLP

L’une des principales difficulté dans le développement d’un chatbot « from scratch » consiste à générer les données d’entrainement permettant d’arriver à un premier modèle de NLP aux performances satisfaisantes. En effet l’intention primaire d’un modèle de NLP nécessite souvent plusieurs centaines voir millier de phrases pour être correctement entrainée. La tentation est grande pour gagner du temps d’écrire soi même les phrases en utilisant quelques techniques assez simples du type :

Malheureusement ces techniques sont très souvent inefficaces pour l’entraînement de modèles de NLP. Le seul résultat pouvant émerger d’une telle approche étant d’obtenir un modèle sur-entrainé, c’est à dire qui reconnaitra uniquement une certaine structure de phrase bien particulière. Même en essayant de varier vos tournures de phrases vous ne pourrez pas aller au-delà d’un certain biais grammatical et lexical qui vous fera écrire des phrases toujours plus ou moins similaires.

Rien ne vaut donc la diversité des sources de données pour entrainer un modèle de NLP de manière efficace ! Si vous souhaitez obtenir 1000 phrases d’entrainement pour votre chatbot, essayez de les récolter auprès de 20 à 50 personnes différentes pour vous assurer d’avoir une diversité grammaticale et lexicale suffisante. Dans l’idéal ces personnes doivent être les utilisateurs finaux de votre chatbot. Dans la réalité il s’agira souvent de vos collègues, amis, famille, … Cela n’est pas un problème mais essayez de varier un maximum vos profils et travaillez sur un brief bien cadré que vous leur donnerez pour écrire ces phrases.

Ex : « Je travaille sur un chatbot qui permettra de recommander à ses utilisateurs des lieux de sortie type restaurant, bar, musées, … Si tu devais parler à ce chatbot pour lui demander des idées, qu’est-ce que tu lui demanderais ? »

4. Mesurez les performances du modèle de NLP de votre chatbot

Autre gros piège de l’entrainement de chatbots : penser que plus de données d’entrainement est forcement égal à des meilleurs performances pour le modèle de NLP. En effet, le processus d’entrainement d’un modèle est opaque et le résultat difficilement prédictible. Il est donc indispensable de pouvoir comparer les différentes itérations de votre modèle de NLP de manière systématique sur la base d’indicateurs standards et fiables. Cela vous permettra de contrôler l’évolution de votre modèle au fur et à mesure de l’ajout de nouvelles intentions ou du renforcement d’intentions existantes (en évitant les régressions, le sur-entrainement et en identifiant les conflits entre intentions proches, …)

Les indicateurs standards utilisés pour mesurer la performance d’un modèle de NLP sont les suivants :

  • Le rappel : indicateur qui calcul le nombre de phrases correctement classifiées dans une intention par rapport au nombre de phrases totales à classifier dans cette intention
  • La précision : indicateur qui calcul le nombre de phrases correctement classifiées dans une intention par rapport au nombre total de phrases classifiées dans cette intention
  • Le F1-score : indicateur qui calcul la moyenne harmonique des scores de rappel et de précision du modèle

La matrice de confusion fait aussi partie des outils très utiles pour analyser les performances d’un modèle de NLP. Elle vous permet d’identifier de manière visuelle les confusions de classification entre différentes intentions.

Pour calculer ces indicateurs, n’utilisez jamais les mêmes données que celles utilisées pour l’entrainement de votre modèle, le biais serait énorme ! Nous vous recommandons au contraire de consacrer ±10% de vos phrases initialement dédiées à l’entrainement de votre modèle de NLP pour constituer des sets de test (les phrases des sets de tests ne seront pas utilisées dans l’entrainement).

5. Améliorez votre modèle de NLP de manière continue

Une fois votre chatbot en production, l’entrainement de son modèle de NLP n’est pas fini, loin de là… La phase la plus intéressante (et la plus fastidieuse) de son amélioration va commencer avec l’intégration des données utilisateurs à votre modèle. Il est pour cela indispensable de pouvoir conserver et trier les données de conversation entre votre chatbot et vos utilisateurs.

Une interface très simple, comme celle que nous fournissons à nos clients dans le cadre du développement de leur chatbot peut largement suffire dans un premier temps.

Elle permet à la fois :

  • d’analyser la conversation entre l’utilisateur et le chatbot,
  • de visualiser ce que le modèle de NLP en production a compris dans chaque phrase,
  • de remonter directement les phrases qui posent problème pour les corriger et les réintégrer au prochain modèle de NLP,
  • et enfin de récupérer des statistiques sur les performances du modèle de NLP en production.

Identifiez les requêtes les plus fréquentes et celles qui ont été mal traitées par votre modèle de NLP pour les réintégrer immédiatement à une nouvelle version. Conservez les phrases de production qui ont été bien traitées par votre modèle pour les utiliser dans vos sets de tests et mesurer qu’il ne régresse pas au fur et à mesure des itérations.

L’amélioration d’un chatbot et de son modèle de NLP est un travail qui demande de la patience. Nous recommandons dans les premières semaines de mise en production de passer du temps à lire un grand nombre de discussions (anonymisées bien sûr) entre votre chatbot et vos utilisateurs. Cela vous permettra de vous imprégner globalement du type d’interactions et de demandes effectuées, d’analyser les performances de votre modèle de NLP sur les différentes typologies de phrases, et enfin d’identifier les points d’amélioration possible sur les flow conversationnels.

6. Conclusion : entrainer un modèle de NLP pour son chatbot, difficile mais indispensable !

Comme nous venons de le voir l’entrainement d’un modèle de NLP est un processus long et compliqué. Ce travail demande beaucoup de minutie pour être effectué correctement. Il est délaissé par la majorité des acteurs du marché, car jugé pas assez rentable ou trop difficile à mettre en place. Cette partie du développement d’un chatbot est pourtant indispensable pour réellement libérer le plein potentiel de l’interface conversationnelle. C’est pour cette raison que nous travaillons dur chez Botgen pour développer les outils qui rendront l’entrainement, la maintenance et l’industrialisation de modèles de NLP de plus en plus rapide et accessible.

Laisser un commentaire

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

Back To Top