communications-mining
latest
false
- Documents d’API
- CLI
- Guides d'intégration
- Intégration avec l'utilisateur du service Azure
- Intégration avec l'authentification d'application Azure
- Automatisation en temps réel
- Récupérer des données pour Tableau avec Python
- Intégration d'Elasticsearch
- Intégration EWS auto-hébergée
- Infrastructure d'automatisation UiPath
- Activités UiPath Marketplace
- Activités officielles UiPath
- Blog
- Comment les machines apprennent à comprendre les mots : guide d'intégration dans NLP
- Apprentissage basé sur des invites avec des Transformers
- Efficient Transformers II : Dilarisation des connaissances et affinement
- Transformateurs efficaces I : mécanismes d'attention
- Modélisation de l'intention hiérarchique profonde non supervisée : obtenir de la valeur sans données d'entraînement
- Correction du biais d'annotation avec Communications Mining
- Apprentissage actif : de meilleurs modèles d'ML en moins de temps
- Tout est dans les chiffres : évaluer les performances du modèle avec des métriques
- Pourquoi la validation du modèle est importante
- Comparaison de Communications Mining et de Google AutoML pour l'intelligence des données conversationnelles
Important :
Ce contenu a été traduit à l'aide d'une traduction automatique.
Guide du développeur Communications Mining
Dernière mise à jour 20 déc. 2024
Créer un flux
/api/v1/datasets/<project>/<dataset_name>/streams
/api/v1/datasets/<project>/<dataset_name>/streams
Autorisations requises : Administrateur des flux, afficher les libellés
- Bash
curl -X PUT 'https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "stream": { "comment_filter": { "user_properties": { "number:Spend": { "maximum": 100000, "minimum": 100 }, "number:Transactions": { "one_of": [ 1 ] }, "string:Country": { "one_of": [ "uk", "de" ] } } }, "description": "Used by ACME RPA to create tickets for disputes.", "model": { "label_thresholds": [ { "name": [ "Some Label" ], "threshold": 0.37 }, { "name": [ "Another Label" ], "threshold": 0.46 }, { "name": [ "Parent Label", "Child Label" ], "threshold": 0.41 } ], "version": 8 }, "name": "dispute", "title": "Collateral Disputes" } }'
curl -X PUT 'https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "stream": { "comment_filter": { "user_properties": { "number:Spend": { "maximum": 100000, "minimum": 100 }, "number:Transactions": { "one_of": [ 1 ] }, "string:Country": { "one_of": [ "uk", "de" ] } } }, "description": "Used by ACME RPA to create tickets for disputes.", "model": { "label_thresholds": [ { "name": [ "Some Label" ], "threshold": 0.37 }, { "name": [ "Another Label" ], "threshold": 0.46 }, { "name": [ "Parent Label", "Child Label" ], "threshold": 0.41 } ], "version": 8 }, "name": "dispute", "title": "Collateral Disputes" } }' - Nœud
const request = require("request"); request.put( { url: "https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { stream: { comment_filter: { user_properties: { "number:Spend": { maximum: 100000, minimum: 100 }, "number:Transactions": { one_of: [1] }, "string:Country": { one_of: ["uk", "de"] }, }, }, description: "Used by ACME RPA to create tickets for disputes.", model: { label_thresholds: [ { name: ["Some Label"], threshold: 0.37 }, { name: ["Another Label"], threshold: 0.46 }, { name: ["Parent Label", "Child Label"], threshold: 0.41 }, ], version: 8, }, name: "dispute", title: "Collateral Disputes", }, }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } );
const request = require("request"); request.put( { url: "https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { stream: { comment_filter: { user_properties: { "number:Spend": { maximum: 100000, minimum: 100 }, "number:Transactions": { one_of: [1] }, "string:Country": { one_of: ["uk", "de"] }, }, }, description: "Used by ACME RPA to create tickets for disputes.", model: { label_thresholds: [ { name: ["Some Label"], threshold: 0.37 }, { name: ["Another Label"], threshold: 0.46 }, { name: ["Parent Label", "Child Label"], threshold: 0.41 }, ], version: 8, }, name: "dispute", title: "Collateral Disputes", }, }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } ); - Python
import json import os import requests response = requests.put( "https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "stream": { "name": "dispute", "title": "Collateral Disputes", "description": "Used by ACME RPA to create tickets for disputes.", "model": { "version": 8, "label_thresholds": [ {"name": ["Some Label"], "threshold": 0.37}, {"name": ["Another Label"], "threshold": 0.46}, { "name": ["Parent Label", "Child Label"], "threshold": 0.41, }, ], }, "comment_filter": { "user_properties": { "string:Country": {"one_of": ["uk", "de"]}, "number:Spend": {"minimum": 100, "maximum": 100000}, "number:Transactions": {"one_of": [1]}, } }, } }, ) print(json.dumps(response.json(), indent=2, sort_keys=True))
import json import os import requests response = requests.put( "https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "stream": { "name": "dispute", "title": "Collateral Disputes", "description": "Used by ACME RPA to create tickets for disputes.", "model": { "version": 8, "label_thresholds": [ {"name": ["Some Label"], "threshold": 0.37}, {"name": ["Another Label"], "threshold": 0.46}, { "name": ["Parent Label", "Child Label"], "threshold": 0.41, }, ], }, "comment_filter": { "user_properties": { "string:Country": {"one_of": ["uk", "de"]}, "number:Spend": {"minimum": 100, "maximum": 100000}, "number:Transactions": {"one_of": [1]}, } }, } }, ) print(json.dumps(response.json(), indent=2, sort_keys=True)) - Réponse
{ "status": "ok", "stream": { "context": "0", "created_at": "2019-08-03T12:30:00.123456Z", "dataset_id": "abcdef0123456789", "description": "Used by ACME RPA to create tickets for disputes.", "id": "0123456789abcdef", "model": { "version": 8 }, "name": "dispute", "title": "Collateral Disputes", "updated_at": "2019-08-03T12:30:00.123456Z" } }
{ "status": "ok", "stream": { "context": "0", "created_at": "2019-08-03T12:30:00.123456Z", "dataset_id": "abcdef0123456789", "description": "Used by ACME RPA to create tickets for disputes.", "id": "0123456789abcdef", "model": { "version": 8 }, "name": "dispute", "title": "Collateral Disputes", "updated_at": "2019-08-03T12:30:00.123456Z" } }
Les flux permettent une itération persistante et avec état à travers les commentaires d'un ensemble de données, avec des libellés prédits et des champs généraux calculés à l'aide d'un modèle épinglé.
Une fois le flux créé, les méthodes et peuvent être utilisées pour parcourir les commentaires.
Nom | Saisie de texte | Requis | DESCRIPTION |
---|---|---|---|
name | string | oui | Nom d'API du flux, utilisé dans les URL. Doit être unique dans un ensemble de données et doit correspondre à [A-Za-z0-9-_]{1,256} .
|
title | string | non | Titre d'une ligne lisible par un humain pour le flux. |
description | string | non | Une description plus longue du flux. |
model | Modèle | non | Si ce champ est spécifié, les commentaires récupérés à partir de ce flux contiendront les prédictions d'un modèle épinglé. |
comment_filter | CommentFilter | non | Si ce champ est spécifié, les commentaires ne correspondant pas au filtre ne seront pas renvoyés. Voir plus d’informations sur la façon dont le filtre de commentaire affectera les résultats renvoyés par le flux. |
Où
Model
a le format suivant :
Nom | Saisie de texte | Requis | DESCRIPTION |
---|---|---|---|
version | Integer | oui | Une version de modèle qui a été épinglée via la page Modèles . |
label_thresholds | array<LabelThreshold> | non | Si cet élément est sélectionné, seules les valeurs correspondant à l'élément label_thresholds donné seront renvoyées. Si ce paramètre n’est pas défini, tous les libellés et toutes les valeurs de prédiction seront renvoyés.
|
Où
LabelThreshold
a le format suivant :
Nom | Saisie de texte | Requis | DESCRIPTION |
---|---|---|---|
name | array<string> | oui | Nom du libellé à renvoyer, formaté sous la forme d'une liste de libellés hiérarchisés. Par exemple, le libellé "Some Label" aura le format ["Some Label"] , tandis que le libellé "Parent Label > Child Label" aura le format ["Parent Label", "Child Label"] .
|
threshold | Numérique | oui | Le seuil de confiance à utiliser pour le libellé (un nombre compris entre 0,0 et 1,0). Le libellé ne sera renvoyé pour un commentaire que si sa prédiction est supérieure à ce seuil. |
Où
CommentFilter
a le format suivant :
Nom | Saisie de texte | Requis | DESCRIPTION |
---|---|---|---|
user_properties | UserPropertyFilter | non | Un filtre qui s'applique aux propriétés utilisateur d'un commentaire. Pour plus d'informations sur les propriétés utilisateur, consultez la référence du commentaire. |
Le
UserPropertyFilter
est une carte de nom de propriété utilisateur à filtrer. Les propriétés de chaîne peuvent être filtrées sur les valeurs d'un ensemble ({"one_of": ["val_1", "val_2"]}
). Les propriétés numériques peuvent être filtrées soit sur les valeurs d'un ensemble ({"one_of": [123, 456]}
), soit sur une plage ({"minimum": 123, "maximum": 456}
).