Aller au contenu principal

Comment fonctionne votre bot?

Cette page vous présente quelques notions de la compréhension du langage naturel des bots dydu.

Structure linguistique

Une phrase est découpée en mots ou mots-composés. Chacun de ces mots est associé à un ensemble de sens et à un poids. En effet, il existe de nombreux homonymes et de nombreux mots polysémiques. Lorsqu'un mot est porteur de plusieurs sens, l'ensemble de ses sens est conservé, il n'y a pas de choix à priori sur un sens à conserver.

Chaque sens est associé à une pénalité. En effet, les sens d'un mot n'ont pas forcément la même probabilité d'être utilisés.

Le poids des mots est dépendant de la fréquence du mot dans la langue utilisée.

La structure globale est donc la suivante :

Mot 1

Poids

Sens 1 - Pénalité - Sens 2 - Pénalité - ...

Mot 2

Étapes

Correction orthographique

Les fautes d'orthographe étant courantes dans les phrases traitées par le chat automatique, une correction s'avère être nécessaire.

La technologie dydu utilise une librairie basée sur le correcteur dorthographique Hunspell d'Open Office et de Firefox. Cette librairie a été adaptée pour les besoins spécifiques à dydu.

La correction orthographique suggère plusieurs corrections possibles. Il n'y a pas de choix effectués et les différentes corrections proches sont conservées. Chaque correction est associée à une pénalité.

Identification des mots-composés

Les éventuels mots-composés sont identifiés dans la phrase, les mots les composant sont ainsi regroupés sous un nouveau sens.

Identification des lemmes

Pour chaque mot, les différents lemmes accessibles sont recherchés.

Un lemme est la forme de base non accordée et non conjuguée d'un mot, comme un verbe à l'infinitif ou encore un adjectif au masculin singulier.

Des liens vers des lemmes peuvent être définis pour les abréviations courantes, comme par exemple : « çàd → c'est à dire » ou encore « dqp → dès que possible ».

Identification des synonymes et hyperonymes

Les synonymes des lemmes ainsi que les hyperonymes sont identifiés et associés au mot.

Un hyperonyme est une généralisation du sens.

Les hyperonymes sont essentiellement utilisés pour définir un ensemble de produits ou de termes propres à la logique métier du bot.

Par exemple, chien et chat ne sont pas synonymes mais animal est un hyperonyme des deux.

Les synonymes sont renseignés dans la structure linguistique pour les phrases des internautes mais ne le sont pas pour les matches.

Des ontologies métiers peuvent être définies.

Une ontologie est composée d'un hyperonyme qui la désigne et des hyponymes qui y sont contenus. L'utilisation des ontologies dans la base de connaissances permet de réduire le nombre de formulations nécessaires et d'améliorer la compréhension du chat automatique.

Il devient alors possible de définir les ontologies suivantes :

  • Carte vitale : carte vitale, carte verte, etc. ;
  • Médecin traitant : médecin traitant, médecin de ville, médecin de famille, etc.

Calcul de la distance

La phrase de l'internaute est représentée de manière plane avec la structure présentée plus haut.

Les formulations présentes dans la base de connaissances du chat automatique peuvent également utiliser cette structure plane, mais de plus en plus elles utilisent une structure plus élaborée permettant de diminuer de manière importante la charge de travail nécessaire à la bonne compréhension du chat automatique.

Entre deux structures planes

Une fois que nous avons une structure linguistique de la phrase de l'internaute, il est possible de la comparer aux structures des phrases contenues dans la base de connaissances (appelé match).

Ce calcul de distance est inspiré sur l'algorithme TF-IDF (https://en.wikipedia.org/wiki/Tf-idf).

Il s'agit d'une somme de scores partiels. À chaque fois qu'un sens est identifié comme étant présent à la fois dans les structures de la phrase et du match, le score partiel est mis à jour.

Celui-ci est dépendant du poids du mot dans la phrase et dans le match, et de la pénibilité appliquée au sens pour chacune des deux structures.

Une fois les scores partiels calculés, nous obtenons une matrice les contenant : une dimension de la matrice représentent les mots de la phrase et l'autre dimension représente les mots du match.

Il s'agit donc de déterminer la somme maximale de ces scores partiels en ne considérant qu'une fois chaque mot dans la somme. Il ne faut pas rester bloqué dans des maxima locaux qui ne seraient pas optimaux pour la solution globale. C'est un problème d'affectation, nous utilisons dès lors l'algorithme hongrois (https://en.wikipedia.org/wiki/Hungarian_algorithm_hongrois).

L'algorithme hongrois détecte dans cette matrice les cellules qui maximisent la somme.

Cet algorithme posant différents problèmes de performances lorsque les phrases sont longues, nous subdivisons la matrice en sous-ensembles disjoints avant d'appliquer cet algorithme sur chacun de ces sous-ensembles.

Afin de rendre plus concret le calcul de ce score, nous vous invitons à découvrir l'exemple suivant :

Cet exemple est réalisé sur le calcul d'une distance « à plat » sans considérer d'éventuelles combinaisons entre des groupes de formulations.

Considérons dans cet exemple le match « Perte ou vol de ma carte Vitale » et la phrase de l'internaute « perte carte vitale ».

Pour information, le score final est compris entre 0 et 1024. 0 signifie qu'il n'y a aucun point commun entre les deux phrases. 1024 signifie que les deux phrases sont identiques.

L'image suivante est issue du debugger de ce calcul. Cet outil est accessible uniquement par l'équipe dydu et permet plus simplement de comprendre la structure d'un score.

Score

Le score obtenu entre ces deux phrases est de 770 sur 1024.

Note

Dans l'hypothèse où ce score serait l'un des meilleurs obtenus pour la base de connaissances du bot, celui-ci répondra à l'internaute sous la forme d'une reformulation dans laquelle l'internaute pourra confirmer l'une des connaissances proposées ou reformuler sa phrase.

Avant d'entrer dans le détail du score, il est important de préciser que ces formulations sont proches, mais considérées comme différentes par défaut. Il faudrait donc ajouter cette phrase dans les formulations associées à la connaissance du bot pour obtenir une réponse directe.

Les bulles bleues foncées représentent les mots pour lesquels il y a une correspondance, les bulles bleues plus claires représentent les mots sans correspondantes.

Poids

Le poids de chaque mot dans la phrase est exprimé en pourcentage dans les bulles bleues.

Pénalité

Les mots présents dans les bulles roses représentent les sens associés au mot de la phrase. Certains ont une pénalité de 1024 ; soit aucune pénalité. D'autre en rose plus clair ont une pénalité à 829. Cette pénalité est appliquée pour les synonymes.

Avec une structure arborescente

Dans de nombreux cas, les questions correspondant à une connaissance utilisent une structure propre à la langue et pouvant s'exprimer avec un nombre très important de formulations.

Prenons comme exemple une connaissance « Comment modifier mon mot de passe ? »

Cette phrase est composée de deux parties indépendantes qui ont chacune un nombre important de formulations. D'une part « comment modifier » et d'autre part « mon mot de passe ».

Comment modifier

comment modifier

modification

il faudrait que je modifie

comment mettre à jour

changer de

Mon mot de passe

Mon mot de passe

mon code

mon code confidentiel

mon code secret

⇒ Dans le cas présent, si nous avions souhaité définir toutes les combinaisons possibles dans des structures planes, il aurait fallu en créer 5*4=20.

Il est en réalité uniquement nécessaire d'en créer 4 pour le « mot de passe » puisque les formulations associées à « comment modifier » sont déjà définies dans la solution.

il a été ici présenté un exemple simple avec un seul niveau mais en réalité, « comment modifier » utilise le groupe de formulations « comment ».

Comment

Comment

comment cela se passe t-il quand

comment dois-je procéder

comment faire

comment faire en cas de

connaître la marche à suivre

marche à suivre pour

les modalités pour

Ce groupe de formulations contient plusieurs dizaines de formulations. Si nous considérons ici uniquement ces 8 formulations, notre exemple de base correspond à 8*20=160 formulations dans une structure plane.

Cette compréhension fine de la langue permet donc de diminuer de manière très importante la charge de travail nécessaire tout en assurant une meilleure compréhension. En effet, il serait quasi impossible de définir via des structures planes toutes les combinaisons possibles.

Enrichissement des formulations

Pour que votre bot soit capable de répondre correctement aux internautes, il est nécessaire qu'il dispose d'un nombre important de formulations dans sa base de connaissances. Chaque connaissance est en effet associée à un ensemble de formulations qui permettent de reconnaître les phrases qui doivent aboutir à la réponse correspondante.

De manière générale, il faut compter plusieurs milliers de formulations dans la configuration d'un bot pour que sa compréhension soit correcte.

Deux outils sont présents pour améliorer de manière importante la productivité sur l'enrichissement des formulations. Cet enrichissement étant réalisé par dydu.

  • Un outil rassemble des phrases similaires mal comprises pour identifier les plus utilisées afin d'en faire une priorité ;
  • Un autre outil utilise des phrases qui ont donné lieu à une reformulation et pour lesquelles l'utilisateur a choisi l'une des reformulations. Les associations peuvent alors être acceptées ou refusées.

Cet enrichissement est manuel, les seules automatisations sont des suggestions de manière à être plus efficace mais toute modification de la base de connaissances est réalisée par une personne habilitée.

Comparatif des différents algorithmes de matching

D'autres technologies sont utilisées par les bots concurrents :

  • Analyse syntaxique ;
  • Matching mots clés.

Analyse syntaxique

L'analyse syntaxique consiste à analyser la phrase et mettre en évidence la structure de la phrase. Elle est dépendante de la langue dans laquelle l'énoncé est exprimé (SVO : sujet-verbe-objet en français).

La structure révélée par l'analyse de la langue donne alors précisément la façon dont les règles de syntaxe sont combinées dans le texte. Cette structure est représentable par un arbre syntaxique dont les nœuds peuvent être dotés d'informations complémentaires pour une analyse fine.

Par conséquent, le sens de la phrase a de bonnes chances d'être correctement comprise par le système et ainsi éviter des contresens, même dans des cas où la nuance est subtile. Par contre, cette analyse ne peut pas aboutir lorsque les phrases sont grammaticalement incorrectes.

Matching mots clés

Le matching mot clé fonctionne de la même manière qu'un moteur de recherche.

Le système repère parmi les mots de la phrase de l'internaute ceux qui ont été mis en exergue dans les questions de la base de connaissances. Il donnera la réponse de la connaissance contenant un ou deux mots clés découverts en même temps. Certains systèmes mettent en place un ordonnancement dans les mots clés, voire un système d'exclusion de mots clés afin de gérer les ambiguïtés.

Comparatif

Dans ce tableau, vous trouverez les avantages et inconvénients de chacune des technologies.

AvantagesInconvénients
Analyse syntaxiqueCompréhension précise de la phrase
Contre-sens rares
Complexité de la configuration de la base de connaissances
Exige que la phrase d'entrée soit grammaticalement correcte (moins de 50% des questions à un bot)
Substitué par des mots-clés correspondants si aucun résultat
Coûteux en ressources CPU et mémoire
Matching mots clésConfiguration initiale facile
Algorithme très rapide et peu coûteux
Contresens fréquents
Les règles d'ordonnancement et d'exclusions peuvent devenir fastidieuses
Calcul de la distanceCompréhension précise de la phrase
Mauvaise interprétation rare
Algorithme rapide qui utilise peu de ressources CPU et mémoire
Ne nécessite pas la saisie d'une phrase d'entrée grammaticalement correcte
Période d'apprentissage nécessaire sur les premières questions des internautes pour compléter les formulations

Voici quelques exemples des possibilités et problèmes de chacune des technologies :

Phrase de l'internauteAnalyse syntaxiqueMatching mots clésCalcul de la distance
Je cherche une carte bleueLa distinction est possibleLa distinction n'est pas possible, les mots clés étant cherche et carte bleueLa distinction est possible
Je veux partir en voyage, mais pas en MartiniqueLe système ne renverra pas de voyages en MartiniqueLe système ne renverra que des voyages en MartiniqueLa base de connaissances devra être configurée pour tenir compte de ce cas de figure
Combien par mois ça coûte ?La question est grammaticalement incorrecte, le système ne comprendra pas bien la questionLe système va identifier les mots clés mois et coûte et va donner la bonne réponseLa calcul de distance donnera la bonne réponse car identifiera comme étant très proche de la connaissance « combien ça coûte par mois ? »