Plateforme
Templates
Tarifs
Ressources
DocumentationAPI
Contact
Se connecter
Commencer
FR
EN

partager

Comment déterminer le meilleur NLU pour son chatbot ?

Découvrez comment configurer et déterminer le meilleur moteur de compréhension du langage pour votre base de connaissance. Autrement dit, comment déterminer le meilleur cerveau pour votre assistant !

Parution le 

2/11/2021

, par 

Kévin MEGE

Introduction


Je vous vois déjà venir et je préfère mettre ça au clair tout de suite : oui, je suis d'accord, il n'existe pas de meilleur moteur de NLU (Natural Language Understanding).
‍
N'oublions pas qu'un moteur de compréhension du langage se repose sur une technologie appelée "réseaux neuronaux". Il vise donc à reproduire le fonctionnement d'un cerveau humain.
Or certains cerveaux sont plutôt cartésiens, d'autres plus rêveurs... L'analogie est toute aussi vraie pour les NLU : certains moteurs fonctionnent mieux que d'autres en fonction du contexte, du domaine ou même de la base de connaissance.

A l'instar des cerveaux humains, chaque NLU est unique. Heureusement pour nos assistants, il est possible d'en changer facilement sur la plateforme Prisme.ai et d'essayer de tirer profit du meilleur cerveau pour notre cas d'usage.

Aujourd'hui il s'agit donc bel et bien de déterminer quel est le meilleur NLU pour son chatbot et donc pour son périmètre en particulier.
Pour ce faire, sur la plateforme Prisme.ai nous allons utiliser le module d'évaluation qui permet de comparer et d'analyser les différents NLU disponibles pour un assistant.
‍
Aujourd'hui nous allons donc voir, comment :
- Évaluer les différents NLU.
- Comparer et analyser les résultats.

Évaluer les différents NLU

En général, afin d'évaluer quelque chose, nous avons toujours besoin d'un référentiel qui nous permette de déterminer une "note" de notre NLU.
‍
Le chatbot ne fera pas exception, et si vous utilisez la plateforme je pense que vous commencez déjà voir où je veux en venir...
Ce référentiel, ou plutôt un "cahier des charges", nous est fourni par les tests de non-régression. En effet, l'évaluation et la comparaison qui va en découler se jouent uniquement sur les tests de non-régression. Une raison de plus pour les renseigner.
Dans cet article, je vais parler de la partie évaluation. Si vous souhaitez en apprendre un peu plus sur les tests de non-régression je vous conseille la lecture de notre article sur le sujet.

Heureusement, la plateforme nous simplifie la vie et va nous permettre d'utiliser les tests de non-régression pour évaluer les différents moteurs disponibles sur la plateforme.

Pour cela, une fois que vous avez rédigé vos tests de non-régression, rendez-vous dans l'onglet "Moteurs NLU" de la partie "Apprentissage Machine".
Sur cette page, vous trouverez la configuration du NLU de votre assistant (vous permettant donc de passer d'un NLU à l'autre sans changer la base de connaissance) ainsi que le réglage du score seuil.

Réglage du NLU et du score seuil.


Dans une seconde partie intitulée "Moteurs NLU (Beta)" vous trouverez le module d'évaluation de Prisme.ai.

‍

Partie d'évaluation.

‍
Voici en deux étapes comment il fonctionne :
- On choisit les différents NLU à comparer. Dans cette sélection ne sont pas affichées les variantes avec Duckling, celui-ci n'impactant pas la détection d'intentions.
- Lorsque vous lancez l'évaluation à l'aide du bouton "Évaluer" chaque NLU sélectionné est alors entraîné avec la base de connaissance de l'assistant. Puis, les tests de non régression sont joués pour chaque NLU. L'évaluation peut prendre un certain temps, heureusement vous pouvez quitter cette page et y revenir plus tard si vous le souhaitez.
- Lorsque l'évaluation est terminée, un rapport des résultats est généré et visualisable directement sur la console Prisme.ai.

Comparer et analyser les résultats

Nous avons obtenu notre rapport, mais faut-il encore savoir le lire.

En introduction du rapport, un petit résumé lié à diverses métriques temporelles est donné. On y retrouve les durées : d'entraînement, de requêtes totales et de requêtes moyennes par NLU. Le temps de requête étant le temps qu'il faut au NLU pour nous donner une réponse à une question (ici, à un test de non régression).
‍

Introduction de l'évaluation.

Ces données peuvent aider au choix d'un NLU : en effet, il se peut qu'en phase de conception et afin d'itérer rapidement sur des idées j'utilise SNIPS ou NLP.js qui possède des temps d'entraînement relativement courts me permettant de changer à la volée les phrases d'entraînement de mon assistant, tandis que lorsque mon assistant arrivera en production je m'orienterai vers le modèle qui répond le plus rapidement, qu'importe son temps de réponse.
‍
Bien entendu, ce discours vaut uniquement pour une performance de détection d'intention similaire. C'est ce que nous allons apprendre à lire dans la suite du rapport.

Pour la partie concernant la détection des intentions, le rapport est divisé en trois parties :
- Scores sur les intentions
- Évaluation par intention
- Matrice de confusion

Scores sur les intentions

Dans ce premier graphique on va retrouver les trois grandes métriques du monde de la compréhension du langage, à savoir : précision, rappel et f_score.
On affiche pour chaque valeur différente un histogramme comparant les différents NLU.
Il s'agit d'un résultat général permettant de comparer d'un seul coup d’œil la performance relative des moteurs sur l'ensemble des intentions.

La précision mesure la capacité du système à refuser les solutions non-pertinentes.
Le rappel mesure la capacité du système à donner toutes les solutions pertinentes.
Le f_score mesure la capacité du système à donner toutes les solutions pertinentes et à refuser les autres. Il représente la moyenne harmonique de la précision et du rappel.
‍
Ce que vous pouvez retenir, c'est que plus le f_score est élevé, plus votre base de connaissance est performante avec le moteur donné.

Néanmoins, la précision et le rappel peuvent vous aider à déterminer le moteur qui correspond le plus à votre cas d'usage. Par exemple à f_score équivalent, préféreriez-vous un moteur qui trouve toutes les solutions pertinentes quitte à afficher plus souvent des réponses non-pertinentes ou un moteur qui sera plus précis quitte à sacrifier certaines réponses pertinentes ? Ce choix est entierement le vôtre.
Bien entendu, dans le meilleur des mondes on recherche souvent les deux !

Évaluation par intention

Dans cette seconde partie, on retrouve sensiblement le même graphique à l'exception près qu'il permet de visualiser les trois indicateurs (précision, rappel, f_score) par intention et donc de rentrer dans le détail de ces indicateurs.

Sur la gauche du graphique on peut sélectionner quelle intention en particulier on souhaite visualiser, on peut alors comparer d'un coup d’œil les différents moteurs NLU sur une intention en particulier.

Ce graphique est très intéressant si vous rencontrez des difficultés sur certaines intentions en particulier.
‍

Evaluation de l'apprentissage par intention.

Matrice de confusion

Finalement, la dernière partie mais pas la moindre : la matrice de confusion par intention.
Celle-ci à l'avantage d'être très lisible et nous donne un état de santé de notre base de connaissance sur un NLU en un seul coup d’œil.
‍
A l'intérieur de la matrice, nous allons retrouver en ligne les intentions attendues, et à la verticale l'intention effectivement détectée par le NLU en question.
Un cas "parfait", c'est-à-dire où tous les tests de non-régression passent avec succès est celui où on obtient une unique diagonale bleue allant du coin supérieur gauche au coin inférieur droit.

Matrice de confusion

Au survol d'une case vous obtiendrez davantage d'informations, notamment le taux de réponse "vrai positif", "faux positif", "vrai négatif" ou "faux négatif".
‍
Ces quatre cas de détections découlent du postulat suivant :
Lorsque l'assistant retourne une réponse par rapport à une requête (i.e nos tests de non régression), deux options s'offrent à lui :

  • La requête appartient à l'intention, d'après l'assistant.
  • La requête n’appartient pas à l'intention, d'après l'assistant.

Face à ces deux possibilités, nous avons les cas où :

  • La requête appartient bel et bien à l'intention.
  • La requête n’appartient pas à l'intention trouvée.

On a donc, les quatre possibilités suivantes :
Vrai positif : l'assistant trouve à raison la requête comme appartenant à l'intention.
Faux positif : l'assistant trouve à tort la requête comme appartenant à l'intention.
Vrai négatif : l'assistant trouve à raison la requête comme n'appartenant pas à l'intention.
Faux négatif : l'assistant trouve à tort la requête comme n'appartenant pas à l'intention.

Vu comment sont rédigés nos tests de non-régression, vous ne trouverez que des vrais positifs (correspondant donc à ce que vous attendiez) ou bien soit des faux positifs ou des faux négatifs. Les vrais négatifs n'étant pas représentés sur la matrice. Une belle couleur bleue signifie que tout va bien, tandis que la couleur orange signifie des détections à tort.

‍

Sur la diagonale du schéma, la couleur bascule de bleu à orange (en passant par différents degrés de transparence) lorsqu'il y a plus de mauvaises réponses que de bonnes réponses.
Sur notre capture d'écran, le orange foncé de l'intention test nous indique donc qu'aucun test associé à cette intention n'a pu être validé. En regardant sur la même ligne, le orange clair de la colonne TestRegexp nous indique que le test en question a été compris pas erreur comme appartenant à l'intention TestRegexp. C'est une précieuse information, car elle nous indique qu'il y a peut-être confusion entre les 2 intentions test et TestRegexp, c'est à dire que le NLU pourrait avoir du mal à les distinguer (par exemple à cause de beaucoup de vocabulaire commun). L'autre case orange clair sur la colonne du Fallback Intent indique tout simplement que le bot est tombé en fallback sur un des deux tests, n'arrivant à identifier aucune intention.

Si on regarde la ligne TestRegexp, le bleu clair nous indique tout d'abord qu'une partie minoritaire des tests ont échoués. En regardant sur la même ligne, on comprend ensuite qu'il y a eu confusion avec l'intention manger.

‍

En haut à gauche, en cliquant sur le nom du NLU couramment affiché (ici "nlp.js" dans l'exemple) , vous pouvez changer de NLU pour voir les autres matrices de confusion et les comparer.

Conclusion

Vous connaissez à présent tout ce qu'il y a à savoir sur la partie évaluation de votre assistant !

Vous pouvez comparer en quelques clics tous les moteurs proposés pour votre chatbot, vérifier le temps d'entraînement et de réponse aux requêtes de ceux-ci ainsi que leur performance (à travers le f_score, la précision et le rappel). En un seul coup d’œil, vous pouvez également visualiser les matrices de confusion de chaque NLU. Vous avez donc à votre disposition des outils d'analyse pour vous aider dans le choix du meilleur NLU pour votre assistant.
Si jamais vous rencontrez des problèmes particuliers avec un groupe d'intention, vous pouvez également visualiser celles-ci et vérifier leur performance dans chaque NLU.

A vous ensuite de décider, à l'aide de toutes ces informations, quel moteur correspond le mieux à votre base de connaissance !

Bonne création !

PlateformeCas d'usageTarifs
BlogDocumentationRecrutement
Se connecterBlagnac, France
CGUMentions LégalesPolitique de confidentialité

Tous droits réservés Prisme.ai - 2016-2022 - Gogowego SAS - Made In Francecréation de site internet polish_ studio