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.
| 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
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"
}
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,
PharmaouSan 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é.
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
- Connectez-vous à Watson Assistant.
- Accédez à votre compétence de dialogue et cliquez sur Options.
- Définissez l'URL de webhook sur le noeud final recognize suivant.
https://api.ibm.com/scassistant/bluerun/named-entities/na/recognize - 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.jwtX-IBM®-Client-Id Votre ID client.
Appel du webhook
- Accédez au noeud de dialogue qui utilise le service NER.
- Cliquez sur Personnalisation.
- Activez Callout to webhooks / actions skill et sélectionnez Call a webhook.
- Sous Appel de mon webhook, indiquez le texte d'entrée de l'utilisateur.
Clé Valeur texte "<? input.text ?>" - Sous Variable de retour, vous pouvez placer le résultat dans une variable contextuelle telle que sterling_entities.
- 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. - 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
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.