Traduit de Furhat Robotics

Comment intégrer le langage naturel (NLU : Natural Language Understanding) et le dialogue avec Furhat ?

Dans une conversation, nous essayons constamment d’interpréter ce que notre interlocuteur dit et de déchiffrer le sens qu’il veut transmettre. Pour les robots sociaux, nous appelons cette capacité “compréhension du langage naturel”. Mais comment l’utiliser dans la plateforme Furhat ?

furhat langage naturel

Au cours d’une conversation, nous essayons constamment d’interpréter ce que notre interlocuteur dit et de déchiffrer le sens qu’il veut transmettre. Pour les robots sociaux, nous appelons cette capacité “compréhension du langage naturel”.

Mais comment l’utiliser dans la plateforme Furhat ?

Comment intégrer la compréhension du langage naturel et le dialogue avec Furhat ?

Dans une conversation, nous essayons constamment d’interpréter ce que notre interlocuteur dit et de déchiffrer le sens qu’il veut transmettre. Pour les robots sociaux (ou d’autres systèmes conversationnels, tels que les assistants vocaux), nous appelons cette capacité la compréhension du langage naturel. Techniquement, elle implique la transformation des mots prononcés en intentions correspondantes. Les mots “Quel est votre nom ?” sont généralement compris comme une demande du nom de l’autre personne, et nous pouvons attribuer à cette intention une étiquette pratique (conviviale pour l’ordinateur), telle que DemandeNom. Mais cette intention pourrait également être exprimée par d’autres mots, tels que “Pourriez-vous me dire votre nom ?” ou “Excusez-moi, je n’ai pas saisi votre nom”. Ainsi, la tâche de l’UAL consiste à transformer toutes les différentes façons d’exprimer une certaine intention en une seule et même étiquette.

Le sens de ce que nous disons ne dépend toutefois pas seulement des mots que nous utilisons, mais aussi du contexte de leur utilisation. Les mots “Ravi de vous rencontrer” peuvent être à la fois une salutation et un au revoir, selon qu’ils sont prononcés au début ou à la fin d’une conversation. Certains énoncés, tels que “Et vous ?”, sont même inintelligibles sans connaître le contexte précédent. Si vous demandez à une personne son nom, et qu’elle vous répond “Emma” / “Et vous ?”, il faut comprendre que l’énoncé signifie “Comment vous appelez-vous ?”. Dans un autre contexte (je vous laisse le soin d’en créer un), les mêmes mots pourraient signifier “Quel âge as-tu ?”.

Le logiciel Furhat fournit une approche intégrée pour comprendre le sens des mots dans leur contexte

Lorsque vous créez une nouvelle application (ou ce que nous appelons une compétence) pour Furhat, il est généralement utile de noter un ensemble d’exemples d’interactions, telles que vous les imaginez. Ensuite, vous pouvez essayer d’identifier à quelles intentions correspondent les énoncés de l’utilisateur, et par quels états passe le dialogue. L’état du dialogue est une façon de représenter le contexte dans Furhat Software. Une collection d’états de dialogue constitue un flux. Disons que nous voulons construire un robot qui vend des hamburgers.

Un exemple d’interaction pourrait ressembler à ceci :

Comme on peut le voir, de nombreux énoncés de l’utilisateur, comme “Moyen” et “Qu’est-ce que vous avez ?” ne peuvent pas être entièrement compris par eux-mêmes, et leur signification dépendra du contexte. Dans l’état de dialogue RequestFlavor (tour 8), RequestOptions est une demande pour savoir quelles saveurs sont disponibles. Si l’intention RequestOptions avait été détectée au tour 14, nous devrions comprendre qu’il s’agit d’une demande concernant les différentes tailles disponibles. Néanmoins, nous devons attribuer une intention à ces énoncés, même si c’est quelque chose de vague, comme Size.

L’état de dialogue dans lequel nous nous trouvons déterminera la manière dont l’intention sera traitée, et obtiendra ainsi son sens ultime.

Il y a deux observations importantes à faire ici. Premièrement, certaines intentions sont pertinentes dans la plupart des états de dialogue, comme RequestRepeat (“qu’avez-vous dit ?”), alors que d’autres ne sont pertinentes que dans des états de dialogue très spécifiques, comme Flavor (“fraise”). Deuxièmement, leur signification (c’est-à-dire leur interprétation finale) dépend parfois de l’état actuel, comme RequestOptions, alors que d’autres, comme RequestRepeat, ont la même signification dans tous les états.

La façon dont le logiciel Furhat traite ce problème consiste à organiser les états de dialogue dans une hiérarchie.

⇐ la hiérarchie pourrait ressembler à ceci

Au sommet de cette hiérarchie, nous trouvons l’état abstrait Dialog, qui est hérité par les états Welcome et RequestOrder, et ainsi de suite. Les intentions qui sont valables pour chaque état sont écrites en italique. Comme vous pouvez le voir, l’intention RequestRepeat est uniquement définie dans l’état Dialog, mais elle est disponible dans tous les états (vous pouvez toujours demander au robot de répéter). L’intention Drink est uniquement disponible dans RequestDrink et RequestFlavor. L’intention RequestOptions est disponible dans l’état RequestOrder et tous ses descendants. Toutefois, les conséquences du déclenchement de l’intention sont modifiées dans chacun de ces états, car elle a une signification différente selon l’état spécifique. Si vous êtes habitué à la programmation orientée objet, cela peut vous rappeler comment les classes héritent les unes des autres et comment les méthodes sont surchargées.

Maintenant, lorsque nous sommes dans un état spécifique, tel que RequestFlavor, Furhat Software va collecter les intents pertinents de tous les états ancestraux. Ainsi, même si le robot demande “Quelle saveur voulez-vous ?”, l’utilisateur est libre de dire “chocolat” (Flavor), “Vous savez, laissez tomber, je voudrais juste un hamburger” (PlaceOrder), ou “désolé ?” (RequestRepeat). (RequestRepeat). En revanche, il ne serait pas pertinent de dire “grand” (Size) dans ce contexte. À partir des intentions recueillies, Furhat Software compile un classificateur d’intentions capable de faire correspondre les mots de l’énoncé de l’utilisateur à l’intention correcte. La manière dont cette intention sera traitée dépend de l’État qui a défini l’intention correspondante.

J’espère que vous avez trouvé cette introduction à NLU et Dialog dans Furhat Software intéressante. Ce n’est qu’une introduction au sujet, il y a beaucoup d’autres aspects que nous n’avons pas abordés ici. Un aspect important est que les intentions peuvent également contenir des entités, qui fonctionnent comme des paramètres pour l’intention. Par exemple, RequestOrder (“Je voudrais un menu grand cheeseburger avec des frites”), peut être spécifié avec des entités telles que MainOrder (“cheeseburger”), SideOrder (“frites”) et Size (“grand”). Furhat Software prend également en charge les intentions multiples dans le même énoncé. Par exemple, si l’utilisateur dit “Bonjour, je voudrais un grand menu de burger végétarien”. Cette phrase contiendrait alors à la fois une intention de salutation et une intention de commande de place. Vous pouvez en savoir plus sur ces fonctions et d’autres fonctionnalités intéressantes dans notre documentation SDK.