La plupart des échanges qui existent aujourd’hui entre utilisateurs se font sur la base de leur langue maternelle. Ainsi pour permettre à un programme de pouvoir interpréter le besoin d’un utilisateur, il faut faire en sorte qu’il soit, au même titre qu’un humain, capable de comprendre ce que l’on va lui dire.

Que le support soit du vocal directement transcrit en texte, un SMS, un message de chat ou un email, le contenu comprendra les phrases d’une personne qui parlera comme si elle s’adressait à une autre personne.

Pour cela, il existe une brique d’intelligence artificielle de traitement du langage naturel on parle alors de TALN : Traitement Automatique du Langage Naturel ou de  NLP pour Natural Language Processing.

Le NLP consiste en un ensemble de solutions technologiques, qui permettent d’interpréter ce que souhaite faire un utilisateur et ainsi d’activer la possibilité de répondre à son besoin.

Dans les exemples qui suivront, nous nous intéresserons plus particulièrement au NLU pour Natural Language Understanding ou Compréhension du Langage Naturel, une des briques permettant la compréhension des demandes d’un utilisateur.

Attention, il ne faut pas confondre NLP et NLU. En effet, le Natural Language Processing est divisé en NLU et NLG, nous ne traiterons pas du NLG ici, qui est une brique à part entière, capable de construire une réponse intelligible par un humain sur la base d’informations récupérées depuis un système.

Si vous souhaitez en savoir plus sur la distinction entre NLP et NLU, je vous recommande cet article : NLP vs. NLU: What’s the Difference ?

 

État des lieux des briques NLU / Chatbot

La compréhension du langage réside en un ensemble d’opérations qui permet d’identifier les éléments contenus dans une phrase et d’en extraire le sens, c’est-à-dire l’action souhaitée et les éléments clés impliqués par cette action.

Ici, nous parlons de Chatbot. En effet, la plupart du temps, la compréhension du langage est associée à ses agents conversationnels. Il existe actuellement de nombreuses solutions sur le marché, en voici d’ailleurs quelques-unes issues des grands acteurs technologiques :

  • DialogFlow de Google
  • wit.ai de Facebook
  • LUIS de Microsoft
  • LEX d’Amazon
  • Watson d’IBM

Pour autant, il existe aussi des solutions opensource très performantes. Elles sont utilisables sans frais mais nécessitent un certain investissement IT en déploiement ainsi qu’en support. Ces solutions permettent notamment de ne pouvoir utiliser que la brique NLU qui s’occupe d’interpréter ce que veut l’utilisateur, sans forcément brancher la mécanique d’un chatbot pour lui répondre.

 

Les principes de base du NLU

Le NLU consiste à prendre un texte écrit en langage naturel et le décrypter (texte écrit par une personne au travers d’un chatbot par exemple, ou encore le texte d’un email). Pour cela chaque phrase fournie sera étudiée selon différents principes qui permettront d’en extraire les informations, les concepts, etc.

Voici une liste non exhaustive des différentes pratiques utilisées dans l’analyse sémantique via une brique de NLU :

  • La tokenisation : cela consiste à séparer les mots les uns des autres (il existe plusieurs façons de “tokeniser”, mais ici nous prenons l’exemple des mots comme barrière de séparation. Cela pourrait aussi être des ensembles de mots ou des phrases). Ainsi : “Je pars prendre mon train“, permettrait d’isoler chacun des mots pour les étudier ensuite séparément. On peut ensuite supprimer tous les “articles” ou délimiteurs, et ainsi restreindre le champs des mots ou objets sur lesquels on souhaite travailler.
  • La lemmatisation : c’est le fait de ne prendre que la racine d’un mot et non ses dérivés. L’objectif est d’obtenir la forme canonique : j’ai compris, la compréhension, etc. -> COMPRENDRE.
  • POS (Part Of Speech) Tagging : pour permettre de définir le rôle d’un mot au sein d’une phrase (nom, verbe, adverbe, etc.).
  • L’analyse syntaxique : après avoir défini le rôle d’un mot (si c’est un verbe, un nom, etc.), l’objectif va être d’affiner la compréhension d’une phrase : je prends la porte (je pars) ou je prends la porte (physiquement).

Il est ensuite possible de rapprocher les mots identifiés (comme les actions, le sujet de ses actions ou encore les entités qui lui sont rattachées) auprès des informations avec lesquelles le Chatbot a été entrainé (voir exemple ci-après).

Il existe encore d’autres opérations, telles que le stemming ou racinisation (en ajout ou remplacement de la lemmatisation, pour simplement réduire les mots en supprimant les extensions telles que les “s” ou autres suffixes. Le traitement fonctionne avec des paterns là ou la lemmatisation utilise des dictionnaires de langue).

 

Mettre en application avec des chatbots – côté pratique

Les chatbots fonctionnent grâce à 2 parties, à savoir qu’ils vont utiliser le NLU pour étudier les phrases fournies (1) par l’utilisateur, et les rapprocher de concepts qu’ils auront appris d’un paramétrage qu’on leur aura préalablement fourni (2).

L’objectif est d’entraîner un algorithme ou de paramétrer un outil afin qu’il puisse reconnaître l’intention de l’utilisateur. On parle ici de 2 éléments importants, l’intention (ce que souhaite faire l’utilisateur) et la ou les entité(s) (les informations nécessaires à la réalisation de l’intention).

 

Détecter les intentions

Nous allons voir plusieurs façons d’exprimer ce que souhaite faire un utilisateur, en donnant des exemples de phrases afin que l’outil ait un package suffisant pour s’entraîner et ensuite comprendre un panel plus large de souhaits.

Prenons un exemple concret, déjà maintes fois utilisés dans les tutoriaux : la réservation de billets d’avion.

Les différentes phrases que nous pouvons donner pour entrainer le chatbot pourraient être :

  • “Je veux réserver un billet d’avion.”
  • “Prends-moi un billet pour demain pour Rome.”
  • “Je veux décoller à 10h de Paris pour aller à San Francisco.”

Les 3 phrases données évoquent chacune le besoin de réserver un billet d’avion, en utilisant des formulations différentes.

 

Comprendre les entités

Parmi les phrases d’exemples données pour l’intention, il va falloir aussi indiquer quels sont les éléments clés sur lesquels l’algorithme doit attribuer une attention particulière. Ce sont les entités.

Reprenons l’exemple précédent:

  • “Je veux réserver un billet d’avion.”
  • “Prends-moi un billet pour demain pour Rome.”
  • “Je veux décoller à 10h de Paris pour aller à San Francisco.”

Parmi ces trois phrases, dans les deux dernières, on indique certaines informations supplémentaires, qui sont des informations nécessaires à la réservation d’un billet d’avion. On ne peut pas réserver un billet sans une date de départ, une date de retour, une ville de départ ou une ville d’arrivée, ce sont nos entités.

Certaines sont des entités que l’on peut construire sans réellement les renseigner au préalable, comme les dates. Ce sont des entités built-in que les solutions fournissent déjà comme pré-entrainées. D’autres, comme les villes auront besoin d’être créées dans une liste. On créera alors l’entité ville, et on y intégrera des exemples de villes (pas nécessairement toutes les villes existantes au monde et possédant un aéroport, quoi que cela dépend des outils choisis).

Une fois ces exemples fournis (exemples de phrases et listes contenant des exemples d’entités), alors on peut entraîner notre chatbot. Il devrait ensuite être en mesure de reconnaître les différentes formulations que l’on pourrait utiliser pour demander la réservation d’un billet d’avion (même en dehors de celles fournies pour son entrainement), quelque soit la date souhaitée et les villes mentionnées.

Pour le côté pratique de la chose, une fois les entités reconnues par le chatbot, ces dernières serviront dans des systèmes back-office pour aller rechercher les vols existants et renvoyer les propositions à l’utilisateur. On peut ensuite imaginer apprendre au chatbot à reconnaître ce qu’est une confirmation (“Oui”, “je confirme”, “OK”), et ainsi lorsque l’on confirmera la réservation d’un vol proposé, elle sera réalisée par les systèmes en back-office.

Nous aurons donc créé et échangé avec un agent virtuel !

 

Des approches chatbot différentes

Il existe plusieurs approches d’apprentissages en fonction des solutions (LUIS, DialogFlow, Wit.ai, Rasa_NLU).

Les outils basés sur l’apprentissage vont utiliser des techniques comme la classification, le word2vec (utilisation de mots comme vecteurs mathématiques), régression logistique ou encore le clustering. Approche sémantique (Golem) Approche synonymique – utilisation de Regex (Do You Dream Up, ).

Les différentes approches apportent certaines choses les unes par rapport aux autres. Outre les tarifs qui diffèrent (un leader dans le domaine qu’est Google coûtera beaucoup plus cher que le produit d’une start-up comme Golem ou DYDU).

Les utilisateurs sont aussi sensibles à l’interface : faut-il nécessairement des développeurs pour enrichir l’apprentissage, améliorer la solution ou dès qu’une modification de la base de connaissance s’impose, ou bien peut-on le faire faire directement par les métiers ? Suivant cet exemple, le chatbot DYDU est très orienté vers la simplicité d’utilisation par les métiers alors que la solution Rasa-NLU nécessite de fortes compétences de développement. Cependant, malgré les efforts nécessaires, les capacités et techniques d’identification des intentions / entités de la solution Rasa_NLU ne sont pas les mêmes.

Un dernier point sur l’apprentissage et la reconnaissance d’entité, en parlant de Google, qui possède des bases de connaissances très enrichies et une façon d’adresser le NLU qui lui permet de reconnaître à quelle famille de mots peut s’apparenter une entité.

Dans l’exemple précédent, j’explique qu’il suffit de donner quelques exemples de villes pour qu’elles soient ensuite facilement reconnues, or pour certains chatbots il faut absolument que l’intégralité des mots à reconnaître soit dans la liste créée, sans quoi ces mots ne seraient pas identifiés. Il faudrait donc dans notre cas renseigner toutes les villes ayant un aéroport. Choisissez donc bien votre outil / technologie en fonction de vos réels besoins.

 

Les usages du Natural Language Understanding

Comme nous avons pu le voir, le NLU est principalement utilisé par les chatbots. Cependant, les briques de NLU interviennent aussi dans les services proposés par les enceintes connectés, pour permettre d’identifier ce que souhaite faire l’utilisateur, une fois sa voix transformée en texte. Néanmoins la finalité reste la même : comprendre une intention et extraire les entités nécessaires à la réalisation d’une action.

Le NLU peut aussi intervenir dans des besoins de traitement automatisé des emails. L’objectif va être de réduire le temps non productif de réponses à faire des emails qui peuvent s’avérer n’être que de la gestion administrative (use case bancaire : perte de carte de crédit, prise de rendez-vous). Les emails vont être analysés, en fonction du concept auquel ils feront référence une réponse automatique sera générée. En général, l’email de réponse est créé mais non transmis, car il attend la validation de l’opérateur.

Ces réponses automatiques sont faites sur des emails pour lesquels la gestion ne représente pas de valeur pour les collaborateurs. La gestion automatisée leur permet ainsi de libérer du temps pour des tâches ayant une valeur ajoutée plus importante.

Analyse de sentiments : pour permettre d’identifier selon certaines entrées (emails, ou chatbot), l’humeur d’un client et ainsi être en mesure d’adapter son discours. On peut imaginer que proposer un nouveau produit à un client appelant un call center, et identifié comme étant passablement énervé, ne sera pas une bonne idée. On peut ainsi orienter les actions en fonction de l’humeur détectée d’un client (que celles-ci soient les actions d’un interlocuteur humain ou virtuel).

La réalisation de résumés : pour permettre de lire des articles rédigés par des journalistes ou encore dans des blogs et en extraire les sujets et informations principaux et en faire ressortir un résumé compréhensible et pertinent.

L’extraction de topics : définir les sujets dont il est question dans une phrase ou un texte. Permet par exemple d’orienter ensuite un client vers le bon service (notamment comme le font les SVI [Servers Vocaux Interactifs] des opérateurs Télécom, qui demandent d’énoncer ce que nous souhaitons faire, et nous orientent ensuite vers le bon service).

Attention toutefois, comme beaucoup de sujets IA, il est rare de voir des cas d’usage n’utilisant qu’une brique IA. Il est plutôt courant que plusieurs technologies soient combinées et dans les exemples cités précédemment, certains font aussi appel à des algorithmes de machine learning (sans entrer dans le détail) pour aller au bout de la réalisation du besoin.

 

Pour conclure sur le NLU et le NLP

Comprendre les clients dans leur langue de communication permet de récupérer leurs demandes sans nécessiter une mise en forme spécifique, et ainsi l’échange reste transparent pour le client. Cela permet aussi de récupérer tous les autres documents échangés et aujourd’hui traités par des humains, pour les faire traiter demain par des machines. On peut ainsi identifier toutes les activités redondantes et sans valeur ajoutée que l’on peut déléguer à des machines / logiciels.

Les chatbots peuvent permettre de répondre à beaucoup de problématiques et ainsi industrialiser / automatiser un grand nombre d’actions (limiter la nécessité d’avoir une personne physique pour échanger avec un client). Néanmoins on est encore loin du chatbot qui est en mesure de comprendre un nombre très important d’intentions différentes. En effet, pour la plupart des chatbots l’apprentissage des intentions correspondant à de la classification mathématique, plus on démultiplie le nombre d’intentions à reconnaître, plus le nombre de possibilité de classement est grand et la possibilité de commettre une erreur importante (se tromper d’intention). C’est pourquoi nous trouvons aujourd’hui beaucoup de chatbots, mais qui restent néanmoins spécialisés à reconnaître des demandes bien précises.

Il est clair qu’aujourd’hui les géants du web conservent une avance assez conséquente de par le fait de l’accès à une quantité de données incommensurables, nerf de la guerre dans la course à l’apprentissage des algorithmes, car plus vous fournissez d’exemples pour l’apprentissage d’un algorithme, plus il sera pertinent dans sa compréhension et ses réponses.

 

CTA téléchargement livre blanc Intelligence Artificielle