Création d'entités

Pour créer une entité, procédez comme suit :

Pour créer une entité, procédez comme suit :
  1. Cliquez sur Entités (Il s'agit d'une image de l'icône Entités.) dans la barre de navigation latérale.
  2. Cliquez sur Ajouter une entité, saisissez son nom et sélectionnez son type. Les champs de la boîte de dialogue reflètent le type d'entité. Par exemple, pour les entités d'expression régulière, vous pouvez ajouter l'expression. Pour les entités de liste de valeurs, vous ajoutez les valeurs et les synonymes.
    Si votre brique prend en charge plusieurs langues par le biais de la prise en charge native de Digital Assistant, vous devez ajouter les équivalents en langue étrangère des valeurs et des synonymes de l'entité de liste de valeurs.

    Etant donné que ces valeurs doivent correspondre à la valeur associée dans la langue principale (valeur de langue principale), vous devez sélectionner la valeur de langue principale avant d'ajouter son équivalent en langue secondaire. Par exemple, si vous avez ajouté le français en tant que langue secondaire à une brique dont la langue principale est l'anglais, vous devez d'abord sélectionner "small" en tant que valeur de langue principale, puis ajouter petite.

  3. (Facultatif) Saisissez une description. Vous pouvez utiliser la description pour désigner l'entité, comme the pizza toppings pour une entité PizzaTopping. Cette description n'est pas conservée lorsque vous ajoutez l'entité à un conteneur composite.
  4. Vous pouvez ajouter les fonctions suivantes, qui sont facultatives. Vous pouvez les écraser si vous ajoutez l'entité à un conteneur composite.
    • Si une entité de liste de valeurs comporte une longue liste de valeurs, mais que vous voulez afficher seulement quelques options à la fois pour les utilisateurs, vous pouvez définir la pagination de ces valeurs en entrant un nombre dans le champ Taille de la plage d'énumération ou en définissant une expression Apache FreeMarker qui renvoie ce nombre. Par exemple, vous pouvez définir une expression qui renvoie les valeurs enum en fonction du canal.

      Lorsque vous définissez cette propriété sur 0, la brique ne génère aucune liste mais compare la sortie utilisateur à une valeur d'entité.

      Si vous définissez ce nombre sur un nombre inférieur au nombre total de valeurs définies pour cette entité, le composant Résoudre entités affiche un bouton Afficher plus pour chaque ensemble complet de valeurs. Si vous utilisez un composant Réponse commune pour résoudre l'entité, vous pouvez configurer le bouton Afficher plus vous-même.
      Il s'agit d'une image du bouton Afficher plus.
      Vous pouvez modifier le texte du bouton Afficher plus à l'aide de la propriété showMoreLabel qui appartient aux composants Résoudre les entités et Réponse commune.

    • Ajoutez un message d'erreur pour les saisies utilisateur non valides. Utilisez une expression Apache FreeMarker qui inclut la propriété system.entityToResolve.value.userInput. Par exemple, ${system.entityToResolve.value.userInput!'This'}' is not a valid pizza type.
    • Pour permettre aux utilisateurs de sélectionner plusieurs valeurs dans une entité de liste de valeurs, activez l'option Valeurs multiples. Lorsque vous activez cette option, les valeurs s'affichent sous la forme d'une liste numérotée.
      Il s'agit d'une image de la liste à valeurs multiples numérotées.
      La désactivation de cette option affiche les valeurs sous la forme d'une liste d'options n'autorisant qu'un seul choix.
    • Vous pouvez activer l'option Correspondance partielle pour augmenter les chances que la saisie utilisateur soit mise en correspondance avec une valeur, en particulier lorsque vos valeurs ne disposent pas d'un grand nombre de synonymes. La mise en correspondance partielle utilise la création de mots pour identifier les correspondances à partir de la saisie utilisateur. La désactivation de la mise en correspondance partielle applique une mise en correspondance stricte, ce qui signifie que la saisie utilisateur doit être une correspondance exacte avec les valeurs et les synonymes ; "cars" ne sera pas mis en correspondance avec une valeur "car", pas plus que "manager" ne sera mis en correspondance avec une valeur "development manager".
    • Pour les briques configurées avec un service de traduction, la mise en correspondance d'entités est basée sur la traduction de l'entrée. Si vous activez l'option Mettre en correspondance la valeur d'origine, l'entrée d'origine est également prise en compte dans la mise en correspondance d'entités, ce qui peut être utile pour la mise en correspondance des valeurs non traduisibles.
    • Pour forcer un utilisateur à sélectionner une seule valeur, activez l'option Invite de désambiguïsation et ajoutez une invite de désambiguïsation. Par défaut, ce message est Please select one value of <item name>, mais vous pouvez le remplacer par un message contenant uniquement du texte (You can only order one pizza at a time. Which pizza do you want to order? ou par une combinaison de texte et d'expressions FreeMarker. Par exemple :
      "I found multiple dates: <#list system.entityToResolve.value.disambiguationValues.Date as date>${date.date?number_to_date}<#sep> and </#list>. Which date should I use as expense date?"
    • Définissez une règle de validation à l'aide d'une expression FreeMarker.
      Remarque

      Vous pouvez uniquement ajouter des invites, une désambiguïsation et une validation aux entités intégrées lorsqu'elles appartiennent à un conteneur composite.
  5. Cliquez sur Créer.
  6. Etapes suivantes :
    1. Ajoutez l'entité à une intention. Cela permet d'informer la brique des valeurs qu'elle doit extraire à partir de la saisie utilisateur lors du traitement du langage. Reportez-vous à Ajout d'entités aux intentions.
    2. Dans le flux de dialogue, déclarez une variable pour l'entité.
    3. Accédez aux valeurs de variable à l'aide d'expressions Apache FreeMarker. Reportez-vous à Opérations de tableau FreeMarker intégrées.
    4. Cliquez sur Valider et examinez les messages de validation pour connaître les erreurs liées aux gestionnaires d'événements d'entité (le cas échéant), identifier les problèmes potentiels, tels que plusieurs valeurs dans une entité de liste de valeurs partageant le même synonyme, et obtenir des conseils sur l'application des meilleures pratiques, telles que l'ajout de plusieurs invites pour rendre la brique plus engageante.

Entités de liste de valeurs pour plusieurs langues

Lorsque vous disposez d'une brique ciblée sur plusieurs langues et utilisant la prise en charge des langues natives de Digital Assistant, vous pouvez définir des valeurs pour chaque langue dans la brique. Pour chaque valeur d'entité dans la langue principale d'une brique, vous devez désigner une valeur correspondante dans chaque langue supplémentaire.

Conseil :

Pour vous assurer que votre brique génère systématiquement les réponses dans la langue détectée, incluez toujours useFullEntityMatches: true dans les états Réponse commune, Résoudre les entités et Faire correspondre l'entité. Comme décrit dans Ajouter des langues prises en charge de façon native à une brique, la définition de cette propriété sur true (valeur par défaut) renvoie la valeur d'entité en tant qu'objet dont les propriétés différencient la langue principale de la langue détectée. Lorsqu'elles sont référencées dans des expressions Apache FreeMarker, ces propriétés garantissent que la langue appropriée s'affiche dans le texte et les libellés du message de la brique.

Prise en charge de la radicalation de mots dans une correspondance partielle

A partir de la version 22.10, la mise en correspondance partielle pour les entités de valeur de liste est basée sur la dérive de mot, où une correspondance de valeur est basée sur la racine lexicale du mot. Dans les versions précédentes, la correspondance partielle était activée via la correspondance partielle et la correction automatique. Bien que cette approche tolère les fautes de frappe dans la saisie utilisateur, y compris les mots transposés, elle peut également entraîner des correspondances avec plusieurs valeurs dans l'entité de liste de valeurs. Avec la dérivation, ce nuage de points est éliminé : les correspondances sont basées sur l'ordre des mots de l'entrée utilisateur, de sorte qu'une seule correspondance est effectuée, ou aucune du tout. Par exemple, "Lovers Veggie" n'entraînerait aucune correspondance, mais "Veggie Lover" correspondrait à la valeur Veggie Lovers d'une entité de type pizza. (Notez que "L'amant" est déduit.) Les mots vides, tels que les articles et les prépositions, sont ignorés dans les valeurs extraites, tout comme les caractères spéciaux. Par exemple, "Veggie l'Amant" et "Veggie////Amant" correspondraient à la valeur "Veggie Lovers".

Créer des entités d'apprentissage automatique

Les entités ML sont une approche basée sur des modèles pour l'extraction d'entités. Comme pour les intentions, vous créez des entités d'apprentissage automatique à partir de variations d'entraînement, probablement les mêmes variations d'entraînement que celles utilisées pour créer vos intentions. Toutefois, pour les entités d'apprentissage automatique, vous annotez les mots des variations d'entraînement qui correspondent à une entité.

Pour commencer, vous pouvez annoter certaines données d'entraînement vous-même, mais comme c'est le cas pour les intentions, vous pouvez développer un entraînement plus varié (et donc robuste) défini par crowd sourcing. Comme indiqué dans les instructions de formation, une détection d'entité robuste nécessite entre 600 et 5000 occurrences de chaque entité d'apprentissage automatique tout au long de l'ensemble d'entraînement. En outre, si les données d'entraînement d'intention sont déjà expansives, vous pouvez regrouper les sources au lieu d'annoter chaque variation vous-même. Dans les deux cas, vous devez analyser vos données d'entraînement pour savoir si les entités sont représentées uniformément et si les valeurs d'entité sont suffisamment variées. Une fois les annotations terminées, vous entraînez le modèle, puis vous le testez. Après avoir examiné les entités détectées dans les exécutions de test, vous pouvez continuer à mettre à jour le corpus et à effectuer un nouvel entraînement pour améliorer la précision.

Pour créer une entité d'apprentissage automatique, procédez comme suit :
  1. Cliquez sur + Ajouter une entité.
  2. Renseignez la boîte de dialogue Créer une entité. N'oubliez pas que le nom et la description apparaissent dans les pages du crowdworker pour les travaux d'annotation d'entité.
    • Entrez un nom qui identifie le contenu annoté. Un nom unique aide les crowdworkers.
    • Entrez une description. Bien qu'il s'agisse d'une propriété facultative, les crowdworkers l'utilisent, avec la propriété Name, pour différencier les entités.
    • Choisissez Entité ML dans la liste.
  3. Activez l'option Exclure les correspondances d'entités système lorsque les annotations d'entraînement contiennent des noms, des emplacements, des numéros ou tout autre contenu susceptible d'entrer en conflit avec les valeurs d'entité système. La définition de cette option empêche le modèle d'extraire les valeurs d'entité système comprises dans l'entrée résolue en cette entité d'apprentissage automatique. Il applique une limite autour de cette entrée afin que le modèle la reconnaisse uniquement comme une valeur d'entité ML et ne l'analyse pas davantage pour les valeurs d'entité système. Vous pouvez définir cette option pour les entités de conteneur composite qui référencent des entités d'apprentissage automatique.
  4. Cliquez sur Créer.
  5. Cliquez sur +Value Répertorier les entités pour associer cette entité à cinq entités de liste de valeurs au maximum. Cette option est facultative, mais l'association d'une entité ML à une entité de liste de valeurs combine l'extraction contextuelle de l'entité ML et l'extraction contextuelle de l'entité de liste de valeurs.
  6. Cliquez sur l'onglet DataSet. Cette page répertorie toutes les variations de chaque entité d'apprentissage automatique de votre brique, y compris les variations que vous avez vous-même ajoutées pour initialiser l'entité, celles soumises à partir de travaux de sourcing groupé ou celles importées en tant qu'objets JSON. A partir de cette page, vous pouvez ajouter des variations manuellement ou en masse en téléchargeant un fichier JSON. Vous pouvez également gérer les variations à partir de cette page en les modifiant (notamment en les annotant ou en les réannotant), ou en les supprimant, en les important et en les exportant.
    • Ajoutez des variations manuellement :
      • Cliquez sur Ajouter une variation. Une fois la variation ajoutée, cliquez sur Modifier les annotations pour ouvrir la liste des entités.
        Remarque

        Vous ne pouvez ajouter qu'une seule variation à la fois. Si vous voulez ajouter des variations en masse, vous pouvez soit les ajouter via un travail d'annotation d'entité, soit télécharger un fichier JSON.
      • Mettez en surbrillance le texte correspondant à l'entité d'apprentissage automatique, puis complétez le libellé en sélectionnant l'entité d'apprentissage automatique dans la liste des entités. Vous pouvez enlever une annotation en cliquant sur x dans le libellé.
        Il s'agit d'une image de l'icône Supprimer sur une annotation.

    • Ajoutez des variations à partir d'un fichier JSON. Ce fichier JSON contient la liste des objets de variation.
      [
        {
          "Utterance": {
            "utterance": "I expensed $35.64 for group lunch at Joe's on 4/7/21",
            "languageTag": "en",
            "entities": [
              {
                "entityValue": "Joe's"   
                "entityName": "VendorName",
                "beginOffset": 37,
                "endOffset": 42
              }
            ]
          }
        },
        {
          "Utterance": {
            "utterance": "Give me my $30 for Coffee Klatch on 7/20",
            "languageTag": "en",
            "entities": [
              {
                "entityName": "VendorName",
                "beginOffset": 19,
                "endOffset": 32
              }
            ]
          }
        }
      ]
      Vous pouvez le télécharger en cliquant sur Plus > Importer pour l'extraire du système local.
      L'objet entities décrit les entités d'apprentissage automatique qui ont été identifiées dans la variation. Bien que l'exemple précédent illustre un seul objet entities pour chaque variation, une variation peut contenir plusieurs entités d'apprentissage automatique, ce qui signifie plusieurs objets entities :
      [
        {
          "Utterance": {
            "utterance": "I want this and that",
            "languageTag": "en",
            "entities": [
              {
                "entityName": "ML_This",
                "beginOffset": 7,
                "endOffset": 11
              },
              {
                "entityName": "ML_That",
                "beginOffset": 16,
                "endOffset": 20
              }
            ]
          }
        },
        {
          "Utterance": {
            "utterance": "I want less of this and none of that",
            "languageTag": "en",
            "entities": [
              {
                "entityName": "ML_This",
                "beginOffset": 15,
                "endOffset": 19
              },
              {
                "entityName": "ML_That",
                "beginOffset": 32,
                "endOffset": 36
              }
            ]
          }
        }
      ]
      entityName identifie l'entité d'apprentissage automatique elle-même et entityValue identifie le texte libellé pour l'entité. entityValue est une clé facultative que vous pouvez utiliser pour valider le texte libellé par rapport aux modifications apportées à la variation. Le libellé lui-même est identifié par les propriétés beginOffset et endOffset, qui représentent le décalage des caractères qui commencent et terminent le libellé. Ce décalage est déterminé par caractère, et non par mot, et est calculé à partir du premier caractère de la variation (0-1).
      Remarque

      Vous ne pouvez pas créer les entités d'apprentissage automatique à partir de ce JSON. Ils doivent exister avant que vous ne chargiez le fichier.
      Si vous ne voulez pas déterminer les décalages, vous pouvez laisser l'objet entities non défini, puis appliquer les libellés après le téléchargement du fichier JSON.
      [
        {
          "Utterance": {
            "utterance": "I expensed $35.64 for group lunch at Joe's on 4/7/21",
            "languageTag": "en",
            "entities": []
              
            
          }
        },
        {
          "Utterance": {
            "utterance": "Give me my $30 for Coffee Klatch on 7/20",
            "languageTag": "en",
            "entities": []
            
          }
        }
      ]
      Le système recherche les doublons afin d'éviter les entrées redondantes. Seules les modifications apportées à la définition entities dans le fichier JSON sont appliquées. Si une variation a été modifiée dans le fichier JSON, elle est considérée comme une nouvelle variation.
    • Modifiez une variation annotée :
      • Cliquez sur Modifier Image de l'icône Modifier l'entité d'apprentissage automatique. pour enlever l'annotation.
        Remarque

        Une variation modifiée est considérée comme une nouvelle variation (non annotée).
      • Cliquez sur Modifier les annotations pour ouvrir la liste des entités.
      • Mettez le texte en surbrillance, puis sélectionnez une entité ML dans la liste des entités.
      • Si vous devez enlever une annotation, cliquez sur x dans le libellé.
  7. Une fois l'annotation des variations terminée. Cliquez sur Entraîner pour mettre à jour le formateur Tm et le modèle d'entité.
  8. Testez la reconnaissance en entrant une phrase de test dans le testeur de variations, idéalement une phrase avec une valeur introuvable dans les données d'entraînement. Vérifiez les résultats pour savoir si le modèle a détecté la bonne entité ML et si le texte a été étiqueté correctement et complètement.
  9. Associez l'entité d'apprentissage automatique à une intention.

Exclure les correspondances d'entités système

L'activation de l'option Exclure les correspondances d'entité système empêche le modèle de remplacer les valeurs d'entité système précédemment extraites par des valeurs concurrentes trouvées dans les limites d'une entité d'apprentissage automatique. Lorsque cette option est activée, "Créer une réunion le lundi pour discuter du livrable du mardi" permet de séparer les valeurs d'entité DATE_TIME et ML en résolvant l'entité DATE_TIME applicable (lundi) et en ignorant "Mardi" dans le texte reconnu comme l'entité ML ("discuter du livrable du mardi").

Lorsque cette option est désactivée, la brique résout à la place deux valeurs d'entité DATE_TIME, lundi et mardi. Les conflits de valeurs de ce type diminuent l'expérience de l'utilisateur en mettant à jour une valeur d'entité précédemment insérée avec une valeur inattendue ou en interjectant une invite de désambiguïsation qui interrompt le flux de la conversation.
Remarque

Vous pouvez définir l'option Exclure les correspondances d'entité système pour les entités de conteneur composite qui référencent une entité d'apprentissage automatique.

Import d'entités de liste de valeurs à partir d'un fichier CSV

Au lieu de créer vos entités une par une, vous pouvez en créer des ensembles entiers lorsque vous importez un fichier CSV contenant les définitions d'entité.

Ce fichier CSV contient des colonnes pour le nom d'entité (entity), la valeur d'entité (value) et les synonymes (synonyms). Vous pouvez créer ce fichier à partir de zéro, ou réutiliser et adapter un fichier CSV créé à partir d'un export.

Que vous commenciez de zéro ou que vous utilisiez un fichier exporté, vous devez tenir compte de la version de la brique vers laquelle vous effectuez votre import en raison des modifications de format et de contenu apportées à la prise en charge des langues natives dans la version 20.12. Bien que vous puissiez importer un fichier CSV d'une version antérieure vers une brique de version 20.12 sans incident dans la plupart des cas, il reste des problèmes de compatibilité que vous devrez peut-être résoudre. Auparavant, examinons le format d'un fichier de version antérieure à la version 20.12. Ce fichier est composé de trois colonnes : entity, value et synonyms. Par exemple :
entity,value,synonyms
PizzaSize,Large,lrg:lrge:big
PizzaSize,Medium,med
PizzaSize,Small,little
Pour les briques créées avec la version 20.12 ou mises à niveau vers cette version, les fichiers d'import contiennent des balises de langue ajoutées aux en-têtes de colonne value et synonyms. Par exemple, si la langue native principale de la brique est l'anglais (en), les colonnes value et synonyms sont en:value et en:synonyms :
entity,en:value,en:synonyms
PizzaSize,Large,lrg:lrge:big
PizzaSize,Medium,med
PizzaSize,Small,
PizzaSize,Extra Large,XL
Les fichiers CSV qui prennent en charge plusieurs langues natives nécessitent des ensembles de colonnes value et synonyms supplémentaires pour chaque langue secondaire. Si la langue secondaire d'une brique de langue native anglaise est le français (fr), le fichier CSV comporte les colonnes fr:value et fr:synonyms comme équivalents aux colonnes en :
entity,en:value,en:synonyms,fr:value,fr:synonyms
PizzaSize,Large,lrg:lrge:big,grande,grde:g
PizzaSize,Medium,med,moyenne,moy
PizzaSize,Small,,petite,p
PizzaSize,Extra Large,XL,pizza extra large,
Voici quelques points à noter si vous prévoyez d'importer des fichiers CSV entre différentes versions :
  • Si vous importez un fichier CSV de version antérieure à la version 20.12 vers une brique 20.12 (y compris avec prise en charge des langues natives ou utilisation de services de traduction), les valeurs et les synonymes sont importés en tant que langues principales.
  • Toutes les valeurs d'entité pour les langues principale et secondaire doivent être uniques au sein d'une entité. Vous ne pouvez donc pas importer de fichier CSV si la même valeur a été définie plusieurs fois pour une même entité. Des valeurs en double peuvent apparaître dans les versions antérieures à la version 20.12, où les valeurs peuvent être considérées comme uniques en raison de variantes de casse. Cela n'est plus possible pour la version 20.12, où la casse est plus strictement appliquée. Par exemple, vous ne pouvez pas importer un fichier CSV s'il contient à la fois PizzaSize, Small et PizzaSize, SMALL. Si vous prévoyez une mise à niveau vers la version 20.12, vous devez d'abord distinguer toutes les valeurs d'entité qui sont identiques, mais uniquement différenciées par la casse avant d'effectuer la mise à niveau.
  • La prise en charge de la langue principale s'applique aux briques créées à l'aide de la version 20.12 et des versions ultérieures. Vous devez donc d'abord enlever les balises de langue et les entrées de langue secondaire pour pouvoir importer un fichier CSV de version 20.12 dans une brique créée avec une version antérieure.
Lorsque vous importez un fichier CSV 20.12 vers une brique 20.12 :
  • Vous pouvez importer un fichier CSV multilingue vers des briques qui n'utilisent pas la prise en charge des langues natives, y compris celles qui emploient des services de traduction.
  • Si vous importez un fichier CSV multilingue vers une brique qui prend en charge les langues natives ou utilise des services de traduction, seules les lignes fournissant une valeur valide pour la langue principale sont importées. Les autres sont ignorées.
Avec ces mises en garde en tête, procédez comme suit pour créer des entités via un import :
  1. Cliquez sur Entités (Il s'agit d'une image de l'icône Entités.) dans la barre de navigation latérale.

  2. Cliquez sur Plus, choisissez Importer des entités de liste de valeurs, puis sélectionnez le fichier .csv dans votre système local.
    Description de l'image import-entities.png
    Description de l'image import-entities.png

  3. Ajoutez les entités à une intention (ou à une liste d'entités, puis à une intention).

Export d'entités de liste de valeurs vers un fichier CSV

Vous pouvez exporter les valeurs et les synonymes dans un fichier CSV pour les réutiliser dans une autre brique. Les fichiers CSV exportés possèdent le même format que les fichiers CSV utilisés pour créer des entités via des imports : ils contiennent des colonnes entity, value et synonyms. Ces fichiers CSV s'accompagnent d'exigences propres à la version qui peuvent avoir un impact sur leur réutilisation.
  • Les fichiers CSV exportés à partir de briques créées avec la version 20.12 ou mises à niveau vers cette version prennent en charge les langues natives via les balises de langue principale (et parfois secondaire) ajoutées aux colonnes value et synonyms. Par exemple, le fichier CSV du fragment de code suivant comporte un ensemble de colonnes value et synonyms pour la langue principale de la brique, l'anglais (en), et un autre ensemble pour sa langue secondaire, le français (fr) :
    entity,en:value,en:synonyms,fr:value,fr:synonyms
    Les balises de langue principale sont incluses dans tous les fichiers CSV de version 20.12, quelle que soit la prise en charge des langues natives. Elles sont présentes dans les briques qui ne sont pas destinées à effectuer une traduction (native ou par l'intermédiaire d'un service de traduction) et dans les briques qui utilisent des services de traduction.
  • Les fichiers CSV exportés à partir des briques exécutées sur des versions antérieures à la version 20.12 comportent des colonnes d'entités, de valeurs et de synonymes, mais aucune balise de langue.
Pour exporter des entités de liste de valeurs, procédez comme suit :
  1. Cliquez sur Entités (Il s'agit d'une image de l'icône Entités.) dans la barre de navigation latérale.

  2. Cliquez sur Plus, sélectionnez Exporter les entités de liste de valeurs et enregistrez le fichier.
    Description de l'image export-entities.png
    Description de l'illustration export-entities.png

    Le fichier .csv exporté est nommé pour votre brique. Si vous voulez utiliser ce fichier pour import, vous devrez peut-être effectuer certaines des modifications décrites dans Import d'intentions à partir d'un fichier CSV si vous comptez l'importer vers des briques de version 20.12 et versions antérieures, ou l'exporter vers ces briques.

Création d'entités dynamiques

Les valeurs d'entité dynamique sont gérées via les adresses de l'API des entités dynamiques qui sont décrites dans API REST pour Oracle Digital Assistant. Pour ajouter, modifier et supprimer des valeurs et des synonymes d'entité, vous devez d'abord créer une entité dynamique afin de générer l'élément entityId utilisé dans les appels REST.

Pour créer l'entité dynamique, procédez comme suit :
  1. Cliquez sur + Entité.
  2. Sélectionnez Entités dynamiques dans la liste Type.
  3. Si le service back-end n'est pas disponible ou n'a pas encore propagé de valeurs, ou si vous ne gérez pas le service, cliquez sur + Valeur pour ajouter des valeurs de simulation à utiliser à des fins de test. En règle générale, vous ajoutez ces valeurs statiques avant la mise en place de l'infrastructure d'entités dynamiques. Ces valeurs sont perdues lors du clonage, de la gestion des versions ou de l'export d'une brique. Après avoir provisionné les valeurs d'entité via l'API, vous pouvez les écraser ou les conserver (mais dans la plupart des cas, vous les écraserez).
  4. Cliquez sur Créer.

Conseil :

Si l'API actualise les valeurs d'entité lors du test de la conversation, cliquez sur Réinitialiser pour redémarrer la conversation.
Quelques remarques pour les développeurs de services :
  • Vous pouvez rechercher les entités dynamiques configurées pour une brique à l'aide du script entityId généré avec botId. Vous incluez ces valeurs dans les appels pour créer les demandes Push et les objets qui mettent à jour les valeurs de l'entité.
  • Une entité ne peut pas posséder plus de 150 000 valeurs. Pour réduire le risque de dépasser cette limite lorsque vous traitez de grandes quantités de données, envoyez des demandes PATCH avec vos suppressions avant d'envoyer des demandes PATCH avec vos ajouts.
Remarque

Les entités dynamiques sont uniquement prises en charge sur les instances d'Oracle Digital Assistant provisionnées sur Oracle Cloud Infrastructure (parfois appelée infrastructure cloud Generation 2). Si votre instance est provisionnée sur Oracle Cloud Platform (comme toutes les instances de la version 19.4.1), vous ne pouvez pas utiliser la fonctionnalité.

Instructions pour la création d'entités d'apprentissage automatique

Voici une approche générale de la création d'une entité d'apprentissage automatique.
  1. Créez des entités d'apprentissage automatique concises. La définition d'entité d'apprentissage automatique est à la base d'un ensemble d'entraînement utile. La clarté est donc essentielle en termes de nom et de description qui aident les crowdworkers à annoter les variations.

    Etant donné que les crowdworkers s'appuient sur les descriptions et les noms des entités d'apprentissage automatique, vous devez vous assurer que vos entités d'apprentissage automatique peuvent être facilement distinguées les unes des autres, en particulier en cas de chevauchement potentiel. Si les différences ne sont pas claires pour vous, il est probable que les travailleurs de foule seront confus. Par exemple, les entités Marchand et Type de compte peuvent être difficiles à différencier dans certains cas. Dans "Transférer 100 $ de mon compte d'épargne à Pacific Gas and Electric", vous pouvez clairement étiqueter "économies" comme Type de compte et Pacific Gas and Electric comme Marchand. Cependant, la frontière entre les deux peut être floue dans des phrases comme "Besoin d'envoyer de l'argent à John, transférer 100 $ de mon épargne à son compte courant." Le "compte chèque" est-il un type de compte ou un nom de commerçant ? Dans ce cas, vous pouvez décider que tout destinataire doit toujours être un nom de commerçant plutôt qu'un type de compte.

  2. Pour préparer le sourcing groupé des variations d'entraînement, tenez compte de l'entrée utilisateur standard pour différents contextes d'extraction d'entité. Par exemple, la valeur peut-elle être extraite dans le message initial de l'utilisateur (contexte de variation initial) ou est-elle extraite des réponses aux invites de la brique (contexte de variation d'emplacement) ?
    Contexte Description Exemples de variations (valeurs d'entité ML détectées en gras)
    Contexte de variation initial Message généralement bien structuré et incluant des valeurs d'entité d'apprentissage automatique. Par exemple, pour une brique de reporting des dépenses, la variation inclut une valeur que le modèle peut détecter pour une entité d'apprentissage automatique appelée Marchand. Créez des frais pour le dîner d'équipe à la boutique de pâtes John pour 85 $ le 3 mai.
    Contexte de variation de créneau Message utilisateur qui fournit l'entité d'apprentissage automatique en réponse à une invite, soit en raison de la conception de la conversation (la brique invite à indiquer "Qui est le commerçant ?"), soit pour insérer une valeur car elle n'a pas été fournie par une réponse soumise précédemment.

    Dans d'autres cas, la valeur Entité d'apprentissage automatique a peut-être déjà été fournie, mais elle peut être incluse dans d'autres messages utilisateur de la même conversation. Par exemple, la brique peut inviter les utilisateurs à fournir des détails supplémentaires sur les dépenses ou à décrire l'image d'un justificatif chargé.

    • Le commerçant est John's Pasta Shop.
    • Dîner d'équipe. Montant 85 $. Boutique de pâtes John.
    • La description est TurboTaxi du domicile à l'aéroport CMH.
    • Réception Grandiose Shack Hotel pour le symposium sur le cloud
  3. Collectez vos données d'entraînement et de test.
    • Si vous disposez déjà d'un ensemble suffisant de variations, vous pouvez les évaluer pour la distribution d'entité et la diversité des valeurs d'entité avant de lancer un travail d'annotation d'entité.
    • Si vous ne disposez pas de suffisamment de données d'entraînement ou si vous recommencez à zéro, lancez un travail de paraphrase d'intention. Pour collecter des variations viables (et abondantes) à des fins d'entraînement et de test, intégrez le contexte d'entité au travail en créant des tâches pour chaque intention. Pour rassembler diverses phrases, pensez à décomposer chaque intention par contexte de conversation.
    • Pour l'invite de la tâche, fournissez le contexte des crowdworkers et demandez-leur : "Comment répondriez-vous ?" ou "Que diriez-vous ?" Utilisez les conseils associés pour fournir des exemples et illustrer différents contextes. Par exemple :
      Invite Conseil
      Vous parlez à un bot de reporting des dépenses et vous voulez créer une dépense. Quelle serait la première chose que vous diriez ? Assurez-vous que le nom du commerçant figure dans la variation. Vous pourriez dire quelque chose comme : "Créez une dépense pour le dîner d'équipe à John's Pasta Shop pour 85 $ le 3 mai."
      Cette tâche demande des expressions qui non seulement initient la conversation, mais incluent également un nom de commerçant. Vous pouvez également vouloir des variations qui reflètent les réponses demandées par la brique lorsque l'utilisateur ne fournit pas de valeur. Par exemple, "Merchant is John's Pasta Shop" en réponse à l'invite "Who is the merchant ?" de la brique.
      Invite Conseil
      Vous avez soumis une dépense à un bot de note de frais, mais vous n'avez pas fourni de nom de commerçant. Comment répondriez-vous ? Identifiez le commerçant. Par exemple, "Merchant is John's Pasta Shop".
      Vous avez chargé une image d'un justificatif dans un bot de note de frais. Il vous demande maintenant de décrire le reçu. Comment répondriez-vous ? Identifiez le nom du commerçant sur le reçu. Par exemple : "Réception Grandiose Shack Hotel pour le symposium sur le cloud".
      Pour tester les faux positifs à des fins de test (mots et expressions que le modèle ne doit pas identifier en tant qu'entités ML), vous pouvez également collecter des "exemples négatifs". Ces variations incluent une valeur d'entité d'apprentissage automatique.
      Contexte Exemples de variation
      Contexte de variation initial Remboursez-moi pour le dîner de mardi
      Contexte de variation de créneau
      • Pos dîner de présentation. Montant $50. 4 personnes.
      • Description xerox déjeuner pour 5
      • Reçu d'hôtel pour un séjour d'entretien
    • Réunissez un ensemble de formations volumineux en définissant un nombre approprié de paraphrases par intention. Pour que le modèle puisse être généralisé, l'ensemble de données doit contenir entre 500 et 5000 occurrences pour chaque entité d'apprentissage automatique. Idéalement, vous devriez éviter l'extrémité inférieure de cette plage.
  4. Une fois que les crowdworkers ont terminé le travail (ou ont terminé suffisamment de variations pour que vous puissiez annuler le travail), vous pouvez ajouter les variations ou lancer un travail de validation d'intention pour les vérifier. Vous pouvez également télécharger les résultats sur votre système local pour révision supplémentaire.
  5. Réservez environ 20 % des variations pour les tests. Pour créer des CSV pour le testeur de variations à partir des fichiers CSV téléchargés pour les travaux de paraphrase d'intention et de validation d'intention :
    • Pour les travaux de paraphrase d'intention : transférez le contenu de la colonne result (les variations fournies par les crowdworkers) vers la colonne utterance dans le fichier CSV du testeur de variations. Transférez le contenu de la colonne intentName vers la colonne expectedIntent dans le fichier CSV du testeur de variations.
    • Pour les travaux de validation d'intention : transférez le contenu de la colonne prompt (les variations fournies par les crowdworkers) vers la colonne utterance dans le fichier CSV du testeur de variations. Transférez le contenu de la colonne intentName vers la colonne expectedIntent dans le fichier CSV du testeur de variations.
  6. Ajoutez les variations restantes à un fichier CSV avec une seule colonne, utterance. Créez un travail d'annotation d'entité en téléchargeant ce fichier CSV. Etant donné que les salariés étiquetent les valeurs d'entité, ils classeront probablement les variations négatives comme "Je ne suis pas sûr" ou "Aucune des entités ne s'applique".
  7. Une fois le travail d'annotation d'entité terminé, vous pouvez ajouter les résultats ou lancer un travail de validation d'entité pour vérifier l'étiquetage. Seules les variations jugées correctes par les salariés dans un travail de validation d'entité peuvent être ajoutées au corpus.

    Conseil :

    Vous pouvez ajouter, supprimer ou ajuster les libellés d'annotation dans l'onglet Ensemble de données de la page Entités.
  8. Entraînez l'entité en sélectionnant Entité.
  9. Exécutez des cas de test pour évaluer la reconnaissance d'entité à l'aide des variations que vous avez réservées à partir du travail de paraphrase d'intention. Vous pouvez diviser ces variations en différentes séries de tests pour tester différents comportements (valeurs inconnues, ponctuation qui peut ne pas être présente dans les données d'entraînement, faux positifs, etc.). Etant donné qu'il peut y avoir un grand nombre de ces variations, vous pouvez créer des suites de tests en téléchargeant un fichier CSV dans le testeur de variations.

    Remarque

    Le testeur de variations affiche uniquement les libellés d'entité pour les cas de test de réussite. Utilisez plutôt un test rapide pour afficher les libellés des variations qui se résolvent en dessous du seuil de confiance.
  10. Utilisez les résultats pour affiner l'ensemble de données. Ajoutez, enlevez ou modifiez de manière itérative les variations d'entraînement jusqu'à ce que les résultats de l'exécution de test indiquent que le modèle identifie efficacement les entités d'apprentissage automatique.
    Remarque

    Pour éviter que des correspondances d'entité par inadvertance ne dégradent l'expérience utilisateur, activez l'option Exclure les correspondances d'entité système si les données d'entraînement contiennent des noms, des emplacements et des numéros.

Instructions de formation des entités ML

Le modèle généralise une entité en utilisant à la fois le contexte autour d'un mot (ou de mots) et les informations lexicales sur le mot lui-même. Pour que le modèle soit généralisé efficacement, nous recommandons que le nombre d'annotations par entité se situe entre 500 et 5000. Vous disposez peut-être déjà d'un ensemble d'entraînement suffisamment grand et présentant la variation des valeurs d'entité que vous attendez des utilisateurs finaux. Si tel est le cas, vous pouvez lancer une tâche d'annotation d'entité, puis incorporer les résultats dans les données d'entraînement. Toutefois, si vous ne disposez pas de suffisamment de données d'entraînement ou si les données dont vous disposez ne sont pas suffisamment couvertes pour toutes les entités d'apprentissage automatique, vous pouvez collecter des variations à partir de travaux de paraphrase d'intention d'origine collective.

Quelle que soit la source, la distribution des valeurs d'entité doit refléter votre idée générale des valeurs que le modèle peut rencontrer. Pour former correctement le modèle :
  • N'utilisez pas trop les mêmes valeurs d'entité dans vos données d'entraînement. Les valeurs d'entité répétitives dans vos données d'entraînement empêchent le modèle de se généraliser sur des valeurs inconnues. Par exemple, vous attendez que l'entité ML reconnaisse une variété de valeurs, mais l'entité n'est représentée que par 10 à 20 valeurs différentes dans votre jeu d'entraînement. Dans ce cas, le modèle ne généralisera pas, même s'il y a deux ou trois mille annotations.
  • Faites varier le nombre de mots pour chaque valeur d'entité. Si vous attendez des utilisateurs qu'ils entrent des valeurs d'entité de trois à cinq mots, mais que vos données d'entraînement sont annotées avec des valeurs d'entité de un ou deux mots, le modèle risque de ne pas identifier l'entité à mesure que le nombre de mots augmente. Dans certains cas, il ne peut identifier que partiellement l'entité. Le modèle suppose la limite d'entité à partir des variations que vous avez fournies. Si vous avez entraîné le modèle sur des valeurs comportant un ou deux mots, il suppose que la limite de l'entité ne comporte qu'un ou deux mots. L'ajout d'entités avec plus de mots permet au modèle de reconnaître des limites d'entité plus longues.
  • La longueur de variation doit refléter votre cas d'utilisation et la saisie utilisateur prévue. Vous pouvez entraîner le modèle à détecter les entités pour les messages de longueurs variables en collectant les variations courtes et longues. Les variations peuvent même comporter plusieurs expressions. Si vous attendez des variations courtes qui reflètent le contexte de remplissage des emplacements, collectez les données échantillon en conséquence. De même, si vous prévoyez des variations pour le scénario de contexte initial, l'ensemble d'entraînement doit contenir des expressions complètes.
  • Inclure la ponctuation. Si les noms d'entité nécessitent des caractères spéciaux, tels que '-' et '/', incluez-les dans les valeurs d'entité dans les données d'entraînement.
  • Assurez-vous que toutes les entités d'apprentissage automatique sont également représentées dans vos données d'entraînement. Un ensemble d'entraînement non équilibré contient trop d'instances d'une entité et trop peu d'instances d'une autre. Les modèles produits à partir d'ensembles d'entraînement non équilibrés ne détectent parfois pas l'entité avec trop peu d'instances et surprédisent les entités avec des instances disproportionnellement élevées. Cela conduit à des faux positifs.

Directives de test d'entité ML

Avant d'entraîner votre brique, vous devez réserver environ 20 % des variations non annotées pour savoir comment le modèle généralise lorsqu'il est présenté avec des variations ou des valeurs d'entité qui ne font pas partie de ses données d'entraînement. Cet ensemble de variations peut ne pas être votre seul ensemble de tests, en fonction des comportements que vous souhaitez évaluer. Par exemple :
  • Utilisez uniquement des variations de contexte de créneau pour déterminer dans quelle mesure le modèle prédit les entités avec moins de contexte.
  • Utilisez des variations avec des valeurs "inconnues" pour déterminer dans quelle mesure le modèle se généralise avec des valeurs qui ne sont pas présentes dans les données d'entraînement.
  • Utilisez des variations sans entités d'apprentissage automatique pour déterminer si le modèle détecte des faux positifs.
  • Utilisez des variations contenant des valeurs d'entité ML avec ponctuation pour déterminer les performances du modèle avec des valeurs d'entité inhabituelles.