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.
Avantages | Inconvénients | |
---|---|---|
Analyse syntaxique | Compré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és | Configuration 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 distance | Compré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'internaute | Analyse syntaxique | Matching mots clés | Calcul de la distance |
---|---|---|---|
Je cherche une carte bleue | La distinction est possible | La distinction n'est pas possible, les mots clés étant cherche et carte bleue | La distinction est possible |
Je veux partir en voyage, mais pas en Martinique | Le système ne renverra pas de voyages en Martinique | Le système ne renverra que des voyages en Martinique | La 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 question | Le système va identifier les mots clés mois et coûte et va donner la bonne réponse | La calcul de distance donnera la bonne réponse car identifiera comme étant très proche de la connaissance « combien ça coûte par mois ? » |
Dernière mise à jour