Utilisation de l'API Named entity recognition

Sterling fournit un service Named entity recognition (NER), qui analyse le texte en langage naturel et recherche les entités spécifiques à un domaine. Le service est étroitement intégré à Supply Chain Intelligence Suite data platform.

Le service named entity recognition utilise Supply Chain Intelligence Suite data platform comme source de données principale de sorte que vous n'avez pas besoin d'entraîner le service à reconnaître les entités nommées dans Control Tower. Le service est préconfiguré pour reconnaître les entités suivantes:
Mappage du type d'entité au modèle de données Supply Chain Intelligence Suite data platform
Type d'entité Supply Chain Intelligence Suite data platform objet Attribut Supply Chain Intelligence Suite data platform
category_name Catalogue code
location_locationIdentifier Emplacement locationIdentifier
location_name Emplacement locationName
location_group Emplacement locationGroupName
product_name Produit name
part_number Produit partNumber
product_plannerCode Produit plannerCode
organization_name Organisation name
organization_identifier Organisation organizationIdentifier
order_orderIdentifier Commande orderIdentifier

Méthodes

La méthode recognize analyse le texte en langage naturel en tant qu'entrée et renvoie un objet JSON avec des entités reconnues.
curl -X POST https://api.ibm.com/scassistant/bluerun/named-entities/na/recognize \
   --header 'Accept: application/json' \
   --header 'Content-Type: application/json' \
   --header 'X-IBM-Client-Id: <put Client-Id here>' \
   --header 'Authorization: Bearer <put JWT here>' \
   -d '{"text": "show me inventory for category pharma"}'
La réponse est un objet JSON qui contient toutes les mentions d'entités nommées trouvées dans le texte:
{
  "category_name": {
    "value": "Pharma",
    "literal": "pharma",
    "confidence": 1,
    "location": [
      31,
      37
    ],
    "values": [
      "Pharma"
    ],
    "count": 1,
    "list": [
      {
        "value": "Pharma",
        "literal": "pharma",
        "confidence": 1,
        "location": [
          31,
          37
        ]
      }
    ]
  },
  "@category_name": "Pharma"
}
La clé d'un objet JSON correspond à un type d'entité (par exemple, category_name ou location_city) alors que la valeur est un objet JSON lui-même et contient les zones suivantes:
littéral
Mention détectée d'une entité dans le texte d'entrée.
valeur
Valeur normalisée d'une entité (par exemple, Pharma ou San Francisco). Cette valeur peut être utilisée dans les requêtes GraphQL pour obtenir les données.
emplacement
Position de l'entité dans une phrase.
niveau de fiabilité
Valeur numérique comprise entre 0 et 1 pour représenter le niveau de confiance. La valeur 1 est 100% confiante.
valeurs
Tableau de chaînes contenant toutes les valeurs d'entité.
nombre
Nombre de valeurs d'entité différentes.
liste
Un tableau avec toutes les mentions d'entité.
Les propriétés values, countet list peuvent être utiles lorsque le texte d'entrée inclut plusieurs mentions du même type d'entité. Vous pouvez accéder à toutes les valeurs mentionnées ou poser des questions de suivi dans les cas où vous n'attendez pas plus d'une valeur.

Intégration de NER à Watson Assistant

Vous pouvez utiliser l'API /recognize directement à partir de votre compétence Watson Assistant . Vous devez configurer un webhook dans votre compétence pour appeler cette API. Pour plus d'informations sur les webhooks " Watson Assistant, voir Effectuer un appel programmatique à partir du dialogue.

Configuration du webhook

  1. Connectez-vous à Watson Assistant.
  2. Accédez à votre compétence de dialogue et cliquez sur Options.
  3. Définissez l'URL de webhook sur le noeud final recognize suivant.
    https://api.ibm.com/scassistant/bluerun/named-entities/na/recognize
  4. Définissez les en-têtes suivants.
    En-têtes pour webhook
    Nom d'en-tête Valeur d'en-tête
    Autorisation Utilisez cette valeur:
    Bearer $integrations.chat.private.jwt
    X-IBM®-Client-Id Votre ID client.

Appel du webhook

  1. Accédez au noeud de dialogue qui utilise le service NER.
  2. Cliquez sur Personnalisation.
  3. Activez Callout to webhooks / actions skill et sélectionnez Call a webhook.
  4. Sous Appel de mon webhook, indiquez le texte d'entrée de l'utilisateur.
    Clé Valeur
    texte "<? input.text ?>"
  5. Sous Variable de retour, vous pouvez placer le résultat dans une variable contextuelle telle que sterling_entities.
  6. Après avoir appelé le webhook, sous Si l'assistant reconnaît, vous pouvez utiliser la variable contextuelle pour vérifier si vous disposez d'entités. Pour vous conformer au format de réponse décrit dans la section Implémentation de l'interface de compétence, utilisez la fonction de réponse conditionnelle de Watson Assistant pour faire la distinction entre un appel réussi à l'API NER et les échecs, en ajoutant une condition anything else . Un échec de webhook doit renvoyer le code d'état de la réponse INTERNAL_ERROR.
  7. Lorsque vous testez votre noeud de dialogue avec l'option Try it out , vous pouvez accéder à l'onglet Manage Context pour créer manuellement la variable contextuelle de l'étape 4 afin de stocker vos données d'identification JWT à transmettre à l'API NER. Une fois l'appel renvoyé, vous pouvez voir les valeurs renvoyées par le webhook dans la valeur de variable de retour que vous avez définie à l'étape 5.

Désambigüisation

S'il existe plusieurs mentions du même type d'entité dans l'entrée, vous obtenez plusieurs éléments dans les tableaux values et list . Par exemple, la phrase What's available in San Francisco and New York? est reconnue comme contenant les entités suivantes.
{
  "location_city": {
    "value": "San Francisco",
    "literal": "San Francisco",
    "confidence": 1,
    "location": [20, 33],
    "values": ["San Francisco", "New York"],
    "count": 2,
    "list": [
      {
        "value": "San Francisco",
        "literal": "San Francisco",
        "confidence": 1,
        "location": [20, 33]
      },
      {
        "value": "New York",
        "literal": "New York",
        "confidence": 1,
        "location": [38, 46]
      }
    ]
  },
  "@location_city": "San Francisco"
}

Un modèle suggéré pour les assistants connectés à Sterling consiste à placer l'appel NER dans un noeud de dialogue dédié qui est exécuté au début de l'arborescence de dialogue avant tout autre traitement de dialogue. Les valeurs renvoyées par l'appel d'API sont ensuite placées dans une variable contextuelle. Cela garantit que toutes les entrées utilisateur sont présentées au service d'entité nommée pour la reconnaissance et évite d'avoir à appeler l'API d'entité nommée à partir de plusieurs noeuds de dialogue au sein de la compétence.