Slot filling
Dernière mise à jour
Dernière mise à jour
Tous droits réservés @ 2023 dydu.
Le but du Slot Filling est de récupérer tous les paramètres correspondant à une intention.
Afin de répondre correctement à l'utilisateur, le type de connaissance Slot est créé pour capturer et enregistrer les paramètres requis.
Grâce à cette fonction, le bot peut détecter si l'utilisateur a envoyé toutes les informations dont il a besoin. Sinon, il pose automatiquement des questions pour les obtenir.
Ce cas pratique est basé sur une commande de pizza réalisée à travers le bot. Pour commander une pizza, deux paramètres sont nécessaires :
le nombre de parts et
le type de pizza.
Ces paramètres correspondent à des slots que nous allons créer et utiliser tout au long de ce cas pratique.
Nous allons dérouler notre exemple en trois parties :
dans la première partie : nous allons créer le premier slot : le nombre de part ;
dans la deuxième partie : nous allons configurer le slot filling (c’est à dire créer une connaissance qui utilisera ce slot) ;
Pour finir, nous allons créer le deuxième slot (le type de pizza) et l’ajouter au slot filling existant.
Partie 1 : Création du premier slot : le nombre de part
Dans notre cas, le nombre de parts correspond à un nombre positif. Le bot s’attend donc à ce que l’utilisateur final renseigne un “entier”.
Nous allons ensuite créer une connaissance de type "Slot" qui permettra de comprendre la formulation de l'utilisateur quelle que soit la pizza qu'il renseignera parmi les pizzas disponibles. Afin de pouvoir ré-utiliser l'entier renseigné par l'utilisateur final, nous enregistrerons ce dernier dans une variable nommé "part".
Dans la réponse de cette connaissance de type "Slot" nous afficherons la saisie de l'utilisateur grâce à la syntaxe ${capture.part}
Partie 2 : Configurer le slot filling (utiliser le slot crée dans une connaissance)
Dans cette partie, nous allons créer une connaissance simple permettant de comprendre l’intention de l’utilisateur final « Je souhaite commander une pizza ». Au sein de cette connaissance, nous utiliserons le slot précédemment crée (le nombre de part) procédant ainsi à la configuration de notre slot filling !
Lors de l'utilisation d'un slot dans une connaissance, plusieurs options sont disponibles :
Options générales (ces options seront appliquées à l'ensemble du remplissage des slots)
Phrase d'introduction : la phrase d'introduction correspond à la première phrase affichée à l'utilisateur final lorsqu'il rentre dans le process de slot filling. Nous nous servons de cette phrase pour faire part à l'utilisateur qu'il y a des informations manquantes pour pouvoir traiter sa demande. Exemple : "J'ai besoin d'informations supplémentaires pour traiter votre demande".
Max. garbage count : cette option permet de déterminer après combien de phrases incomprises le process de slot filling sera abandonné.
Leaving confirmation sentence : cette option permet au bot de demander une confirmation à l'utilisateur pour abandonner le remplissage du slot.
Leaving sentence : saisir une phrase de fin pour informer l'utilisateur que la demande de slot filling est abandonnée.
Nous nous servons de cette phrase pour faire part à l'utilisateur qu'il y va quitter le process. Exemple : « Etes vous sur de vouloir quitter votre demande en cours ? ".
Options du slot (ces options seront appliquées uniquement pour ce slot et dans ce slot filling)
Options :
Slot : cet élément vous permet de sélectionner un slot ;
Variable name : c'est ici que nous définissons un nom pour la variable qui va enregistrer la réponse de la connaissance de type Slot (connaissance de type "Slot" que nous avons crée lors de la première partie)
**Instructions ** : cet élément permet d'ajouter les phrases (et ses alternatives) pour redemander à l'utilisateur les informations manquantes. Vous pouvez décocher cette case afin d'indiquer que le slot est optionnel (s'il n'est pas donné par l'utilisateur final, le bot pourra quand même poursuivre le processus)
Reset : cette case (cochée par défaut) permet de réinitialiser la valeur capturée. Cela permet notamment de modifier la valeur du slot. Voici les différents comportements possibles :
Cas 1 : L'utilisateur dit « Je souhaite commander une pizza pour 10 » puis il dit ensuite « Je souhaite commander une pizza pour 3 ».
Si la case n'est pas cochée, le bot comprend la valeur 10 et la conserve. Si la case est cochée, le bot comprend la valeur 3 et écrase la valeur 10 au profit de cette dernière.
Cas 2 : L'utilisateur dit « Je souhaite commander une pizza pour 10 » puis il dit ensuite « Je souhaite commander une pizza ».
Même si la case est cochée, la valeur n'est pas réinitialisée : la première valeur comprise est toujours valide, soit la valeur 10.
Onglet instructions :
Question that ask the value of the capture : c'est ici que nous inscrivons la (ou les phrases) que nous souhaitons afficher à l'utilisateur final pour lui demander l'information manquante.
Partie 3 : Créer un second slot (le type de pizza) et l'ajouter au slot filling existant
Dans cette dernière partie, nous allons créer le dernier slot nécessaire pour procéder à la commande de pizza : il s'agit du type de pizza.
Comme plusieurs pizzas existent, nous choisissons de créer un groupe de formulations listant l'ensemble des pizzas disponibles.
Nous allons ensuite créer une connaissance de type "Slot" qui permettra de comprendre la formulation de l'utilisateur quelle que soit la pizza qu'il renseignera parmi les pizzas disponibles.
Comme lors de la création de notre premier slot, afin de pouvoir ré-utiliser le type de pizza renseigné par l'utilisateur final, nous enregistrerons ce dernier dans une variable nommé "pizza". Dans la réponse de cette connaissance de type "Slot" nous afficherons la saisie de l'utilisateur grâce à la syntaxe ${capture.pizza}
Enfin, nous ajouterons ce slot à la connaissance simple « Je veux commander une pizza » (connaissance que nous avons créée en partie 2)
Dans ce premier cas, l'utilisateur déclare une intention pour laquelle le robot a besoin de deux paramètres obligatoires pour satisfaire sa demande. Pour ce faire, le bot va successivement récupérer ces informations auprès de l'utilisateur et ainsi poursuivre le processus.
Dans ce deuxième cas, l'utilisateur envoie au bot l'un des deux paramètres nécessaires à la poursuite du processus. Ainsi, le paramètre de la ville est renseigné et le bot ne demande alors que le deuxième paramètre, qui n'a pas été donné (la date). Une fois ce paramètre récupéré, le bot est en mesure de poursuivre le processus.
Dans ce dernier cas, l'utilisateur transmet au bot tous les paramètres requis. Le bot récupère alors toutes les informations et peut directement poursuivre le traitement de la demande de l'utilisateur.
Dans un premier temps, vous devez créer et configurer vos slots que vous pourrez utiliser plus tard dans vos connaissances. Vos slots correspondent aux paramètres à récupérer pour répondre à la question de l'utilisateur. Dans le cadre de notre exemple d'achat de billets de train, les slots sont Ville et Date).
Veuillez suivre les étapes suivantes :
Allez à la page Connaissances.
Cliquez sur le bouton Créer connaissance en haut à gauche de votre page.
Cliquez sur Slot.
Spécifiez le type de contenu que vous souhaitez récupérer dans la phrase utilisateur à comprendre. Dans notre cas, nous ajoutons le groupe correspondant permettant de récupérer une date précise (groupe existant par défaut).
Cliquez sur Créer.
Vous pouvez ensuite configurer votre réponse comme si vous répondiez à une question. Dans notre exemple, nous décidons de récupérer le jour et le mois.
Le groupe Date - Date précise peut capturer plusieurs informations telles que le jour de la semaine, le mois et l'année. Vous pouvez restituer dans votre réponse tout ou partie de ces informations. Dans notre exemple, nous voulons afficher uniquement le jour et le mois. Ainsi nous exploitons les captures suivantes : ${capture.date_dayofmonth} et ${capture.date_month}.
Répétez le processus pour créer autant de slots que vous le souhaitez. Dans le cadre de notre exemple, nous avons créé un deuxième slot qui récupérera la ville dont le nom de variable est city (grâce à un groupe de correspondance composé de noms de ville, créé dans advance) :
Vos slots sont maintenant créés et configurés. Notez que vous pouvez ajouter autant de slots que vous le souhaitez.
Vous pourrez désormais exploiter vos slots précédemment créés au sein de vos connaissances. Pour ce faire, veuillez suivre les étapes suivantes :
Créez une Réponse à une question pour créer les connaissances qui utiliseront les emplacements créés précédemment. Pour ce faire, cliquez sur Créer connaissance puis sur Réponse à une question.
Entrez la phrase de l'utilisateur et cliquez sur Créer.
Modifiez la fenêtre de l'utilisateur (bulle bleue) et cliquez sur Slot filling.
Remplissez les champs.
Phrase d'introduction: saisir une phrase d'introduction pour informer l'utilisateur qu'il manque des informations pour traiter la demande. Exemple : "J'ai besoin d'informations supplémentaires pour traiter votre demande".
Phrase de fin saisissez une phrase de fin pour informer l'utilisateur que la demande de remplissage de slot est abandonnée.
Max. garbage count : cette option vous permet de déterminer après combien de phrases incomprises le remplissage du slot est abandonné.
Leaving confirmation sentence : l'activation de cette option vous permet de demander la confirmation de l'utilisateur pour abandonner le slot filling.
Cliquez sur Sauvegarder.
Vous pouvez maintenant utiliser des slots précédemment créés et les ajouter comme paramètre pour vos connaissances.
Cliquez sur Ajouter (en bas de la page) pour ajouter un nouveau paramètre de slot.
Description des champs :
Slot : cet élément vous permet de sélectionner un slot ;
Variable : c'est le nom de la variable qui stockera le résultat du slot de connaissance.
Instructions : cet élément permet d'ajouter les phrases (et ses alternatives) pour redemander à l'utilisateur les informations manquantes.
Options :
Requis : cocher cette case implique que l'information doit être capturée afin de poursuivre le processus. Le fait de décocher cette case indique que le paramètre est facultatif.
Réinitialiser : cocher cette case permet de modifier la variable capturée par le slot. Voici les différents comportements possibles :
Cas 1: l'utilisateur dit "Je veux acheter un billet de train pour Paris" et dit ensuite "Je veux acheter un billet de train pour Bordeaux".
Si la case n'est pas cochée, le bot capture la valeur Paris. Si la case est cochée, le bot saisit la valeur Bordeaux.
Cas 2: l'utilisateur dit "Je veux acheter un billet de train pour Paris" et dit ensuite "Je veux acheter un billet de train"
Même si la case est cochée, la valeur n'est pas réinitialisée et la première valeur saisie est toujours valable, à savoir Paris.
Note : Pour modifier Options, vous devez cliquer sur le ... à droite de la ligne, cela ouvrira une nouvelle fenêtre.
Cliquez sur Sauvegarder indépendamment pour chaque paramètre de slot pour enregistrer vos modifications.
Remarque : vous devez cliquer sur la croix en haut à droite pour quitter le mode d'édition.
Dans notre exemple :
Dans la fenêtre de réponse, saisissez la réponse déclenchée lorsque tous les paramètres définis ont été complétés. Nous recommandons d'écrire une phrase de synthèse de la situation. Cliquez ensuite sur Mettre à jour.
Astuce : vous pouvez cliquer sur l'icône à droite d'une variable (dans le menu déroulant Boucle slot configuré) pour copier le code à insérer dans votre réponse pour afficher la variable.
Attention : si un slot est supprimé après avoir créé une connaissance exploitant ce slot, la connaissance ne pourra pas être bouclée si le paramètre est obligatoire. Une erreur d'interaction sera déclenchée.
Prochaine étape : afin d'enrichir le contenu de vos réponses, vous pouvez vous renseigner sur les éléments de réponses qui vous permettront de découvrir toutes les possibilités qui s'offrent à vous.