- Introducción
- Configuración de su cuenta
- Equilibrio
- Clústeres
- Deriva del concepto
- Cobertura
- Conjuntos de datos
- Campos generales
- Etiquetas (predicciones, niveles de confianza, jerarquía de etiquetas y sentimiento de etiqueta)
- Modelos
- Transmisiones
- Clasificación del modelo
- Proyectos
- Precisión
- Recordar
- Mensajes anotados y no anotados
- Campos extraídos
- Fuentes
- Taxonomías
- Formación
- Predicciones positivas y negativas verdaderas y falsas
- Validación
- Mensajes
- Control y administración de acceso
- Gestionar fuentes y conjuntos de datos
- Comprender la estructura de datos y los permisos
- Crear o eliminar un origen de datos en la GUI
- Preparando datos para cargar archivos .CSV
- Cargar un archivo CSV en un origen
- Crear un conjunto de datos
- Fuentes y conjuntos de datos multilingües
- Habilitar sentimiento en un conjunto de datos
- Modificar la configuración del conjunto de datos
- Eliminar un mensaje
- Eliminar un conjunto de datos
- Exportar un conjunto de datos
- Utilizar integraciones de Exchange
- Entrenamiento y mantenimiento de modelos
- Comprender las etiquetas, los campos generales y los metadatos
- Jerarquía de etiquetas y mejores prácticas
- Comparar casos de uso de análisis y automatización
- Convertir tus objetivos en etiquetas
- Descripción general del proceso de entrenamiento del modelo
- Anotación generativa
- Estado de Dastaset
- Entrenamiento de modelos y mejores prácticas de anotación
- Entrenamiento con análisis de sentimiento de etiqueta habilitado
- Comprender los requisitos de datos
- Entrenamiento
- Introducción a Refinar
- Explicación de la precisión y la recuperación
- Precisión y recuperación
- Cómo funciona la validación
- Comprender y mejorar el rendimiento del modelo
- Razones para etiquetar una precisión media baja
- Entrenamiento utilizando la etiqueta Comprobar y la etiqueta Perdida
- Entrenamiento mediante la etiqueta de aprendizaje (refinar)
- Entrenamiento mediante Buscar (Refinar)
- Comprender y aumentar la cobertura
- Mejorar el equilibrio y utilizar Reequilibrar
- Cuándo dejar de entrenar tu modelo
- Uso de campos generales
- Extracción generativa
- Uso de análisis y supervisión
- Automations and Communications Mining™
- Desarrollador
- Uso de la API
- Tutorial de la API
- Fuentes
- Conjuntos de datos
- Comentarios
- Archivos adjuntos
- Predictions
- Crear una transmisión
- Actualizar una transmisión
- Obtener una transmisión por nombre
- Obtener todas las transmisiones
- Eliminar una transmisión
- Obtener resultados de la transmisión
- Obtener comentarios de una transmisión (heredado)
- Avanzar una transmisión
- Restablecer una transmisión
- Etiquetar una excepción
- Desetiquetar una excepción
- Eventos de auditoría
- Obtener todos los usuarios
- Cargar datos
- Descargando datos
- Integración de Exchange con el usuario del servicio de Azure
- Integración de Exchange con la autenticación de aplicaciones de Azure
- Integración de Exchange con Azure Application Authentication y Graph
- Guía de migración: servicios web de Exchange (EWS) a la API de Microsoft Graph
- Obtener datos para Tableau con Python
- Integración de Elasticsearch
- Extracción de campos general
- Integración de Exchange autohospedado
- Marco de automatización de UiPath®
- Actividades oficiales de UiPath®
- Cómo aprenden las máquinas a entender palabras: una guía para las incrustaciones en PNL
- Aprendizaje basado en solicitudes con Transformers
- Efficient Transformers II: destilación de conocimientos y ajuste
- Transformadores eficientes I: mecanismos de atención
- Modelado de intenciones jerárquico profundo no supervisado: obtener valor sin datos de entrenamiento
- Corregir el sesgo de anotación con Communications Mining™
- Aprendizaje activo: mejores modelos ML en menos tiempo
- Todo está en los números: evaluar el rendimiento del modelo con métricas
- Por qué es importante la validación del modelo
- Comparación de Communications Mining™ y Google AutoML para la inteligencia de datos conversacional
- Licencia
- Preguntas frecuentes y más

Guía del usuario de Communications Mining
Obtener resultados de la transmisión
Permisos necesarios: Consumir transmisiones, Ver etiquetas, Ver orígenes.
La ruta /results es la nueva forma de obtener comentarios y sus predicciones de una transmisión, reemplazando la ruta /fetch existente (Transmisiones - heredadas). Mantenemos la ruta /fetch para la compatibilidad heredada, pero recomendamos que todos los nuevos casos de uso utilicen la ruta /results , ya que admite todos los casos de uso posibles, incluidos los que utilizan la extracción generativa.
- Asignación de Bash
curl -X GET 'https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams/dispute/results?max_results=5&max_filtered=15' \
-H "Authorization: Bearer $REINFER_TOKEN"
curl -X GET 'https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams/dispute/results?max_results=5&max_filtered=15' \
-H "Authorization: Bearer $REINFER_TOKEN"
- Asignación de nodos
const request = require("request");
request.get(
{
url: "https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams/dispute/results?max_results=5&max_filtered=15",
headers: {
Authorization: "Bearer " + process.env.REINFER_TOKEN,
},
},
function (error, response, json) {
// digest response
console.log(JSON.stringify(json, null, 2));
}
);
const request = require("request");
request.get(
{
url: "https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams/dispute/results?max_results=5&max_filtered=15",
headers: {
Authorization: "Bearer " + process.env.REINFER_TOKEN,
},
},
function (error, response, json) {
// digest response
console.log(JSON.stringify(json, null, 2));
}
);
- Asignación de Python
import json
import os
import requests
response = requests.get(
"https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams/dispute/results",
headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
params={"max_results": 5, "max_filtered": 15},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))
import json
import os
import requests
response = requests.get(
"https://<my_api_endpoint>/api/v1/datasets/project1/collateral/streams/dispute/results",
headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
params={"max_results": 5, "max_filtered": 15},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))
- Asignación de respuesta
{
"status": "ok",
"results": [
{
"comment": {
"uid": "18ba5ce699f8da1f.0123456789abcdef",
"id": "0123456789abcdef",
"timestamp": "2018-09-17T09:54:56.332000Z",
"user_properties": {
"number:Messages": 1,
"string:Folder": "Sent (/ Sent)",
"string:Has Signature": "Yes",
"string:Message ID": "<abcdef@abc.company.com>",
"string:Sender": "alice@company.com",
"string:Sender Domain": "company.com",
"string:Thread": "<abcdef@abc.company.com>"
},
"messages": [
{
"from": "alice@company.com",
"to": [
"bob@organisation.org"
],
"sent_at": "2018-09-17T09:54:56.332000Z",
"body": {
"text": "Hi Bob,\n\nCould you send me today's figures?"
},
"subject": {
"text": "Today's figures"
},
"signature": {
"text": "Thanks,\nAlice"
}
}
],
"text_format": "plain",
"attachments": [],
"source_id": "18ba5ce699f8da1f",
"last_modified": "2024-07-03T13:30:53.991000Z",
"created_at": "2020-12-14T15:07:03.718000Z",
"context": "1",
"has_annotations": true
},
"prediction": {
"taxonomies": [
{
"name": "default",
"labels": [
{
"name": "Margin Call",
"occurrence_confidence": {
"value": 0.9905891418457031,
"thresholds": ["stream"]
},
"extraction_confidence": {
"value": 0.4712367373372217,
"thresholds": []
},
"fields": [
{
"name": "Notification Date",
"value": null
}
]
},
{
"name": "Margin Call > Interest Accrual",
"occurrence_confidence": {
"value": 0.9905891418457031,
"thresholds": []
},
"extraction_confidence": {
"value": 0.9905891418457031,
"thresholds": []
},
"fields": [
{
"name": "Amount",
"value": {
"formatted": "636,000.00"
}
},
{
"name": "Broker number",
"value": null
},
{
"name": "Client name",
"value": null
},
{
"name": "Currency",
"value": {
"formatted": "AUD"
}
}
]
}
],
"general_fields": [
{
"name": "monetary-quantity",
"value": {
"formatted": "636,000.00 GBP"
}
},
{
"name": "MarginCallDateType",
"value": {
"formatted": "2018-09-21 00:00 UTC"
}
},
{
"name": "client-name",
"value": {
"formatted": "Big Client Example Bank"
}
}
]
}
]
},
"continuation": "pmjKYXYBAAADqHUvPkQf1ypNCZFR37vu"
}
],
"num_filtered": 0,
"more_results": true,
"continuation": "pmjKYXYBAAAsXghZ2niXPNP6tOIJtL_8"
}
{
"status": "ok",
"results": [
{
"comment": {
"uid": "18ba5ce699f8da1f.0123456789abcdef",
"id": "0123456789abcdef",
"timestamp": "2018-09-17T09:54:56.332000Z",
"user_properties": {
"number:Messages": 1,
"string:Folder": "Sent (/ Sent)",
"string:Has Signature": "Yes",
"string:Message ID": "<abcdef@abc.company.com>",
"string:Sender": "alice@company.com",
"string:Sender Domain": "company.com",
"string:Thread": "<abcdef@abc.company.com>"
},
"messages": [
{
"from": "alice@company.com",
"to": [
"bob@organisation.org"
],
"sent_at": "2018-09-17T09:54:56.332000Z",
"body": {
"text": "Hi Bob,\n\nCould you send me today's figures?"
},
"subject": {
"text": "Today's figures"
},
"signature": {
"text": "Thanks,\nAlice"
}
}
],
"text_format": "plain",
"attachments": [],
"source_id": "18ba5ce699f8da1f",
"last_modified": "2024-07-03T13:30:53.991000Z",
"created_at": "2020-12-14T15:07:03.718000Z",
"context": "1",
"has_annotations": true
},
"prediction": {
"taxonomies": [
{
"name": "default",
"labels": [
{
"name": "Margin Call",
"occurrence_confidence": {
"value": 0.9905891418457031,
"thresholds": ["stream"]
},
"extraction_confidence": {
"value": 0.4712367373372217,
"thresholds": []
},
"fields": [
{
"name": "Notification Date",
"value": null
}
]
},
{
"name": "Margin Call > Interest Accrual",
"occurrence_confidence": {
"value": 0.9905891418457031,
"thresholds": []
},
"extraction_confidence": {
"value": 0.9905891418457031,
"thresholds": []
},
"fields": [
{
"name": "Amount",
"value": {
"formatted": "636,000.00"
}
},
{
"name": "Broker number",
"value": null
},
{
"name": "Client name",
"value": null
},
{
"name": "Currency",
"value": {
"formatted": "AUD"
}
}
]
}
],
"general_fields": [
{
"name": "monetary-quantity",
"value": {
"formatted": "636,000.00 GBP"
}
},
{
"name": "MarginCallDateType",
"value": {
"formatted": "2018-09-21 00:00 UTC"
}
},
{
"name": "client-name",
"value": {
"formatted": "Big Client Example Bank"
}
}
]
}
]
},
"continuation": "pmjKYXYBAAADqHUvPkQf1ypNCZFR37vu"
}
],
"num_filtered": 0,
"more_results": true,
"continuation": "pmjKYXYBAAAsXghZ2niXPNP6tOIJtL_8"
}
Una vez que creas una transmisión, puedes consultarla para obtener comentarios y sus predicciones. Esto incluye etiquetas, campos generales y extracciones de etiquetas, que contienen un conjunto de campos de extracción para cada instancia de esa etiqueta que se produce.
Cola de comentarios
Al crear una transmisión, estableces su posición inicial para que sea igual a su hora de creación. Si es necesario, puedes establecer la transmisión en una posición diferente (ya sea hacia adelante o hacia atrás en el tiempo), utilizando el punto final de restablecimiento. La transmisión devuelve comentarios a partir de su posición actual. La posición del comentario en la cola de comentarios se determina por el orden en el que se cargan los comentarios.
Avanzar en su posición en la cola
Como la transmisión solo devuelve comentarios desde su posición actual, debes avanzar a la siguiente posición después de cada solicitud de recuperación, utilizando el punto final de avance. De esta manera, la API garantiza al menos un procesamiento de todos los comentarios. Si tu aplicación falla al procesar un lote, recogerá el mismo lote al reiniciar.
Dado que una aplicación puede procesar correctamente un comentario pero fallar en el paso de avance, puedes observar que un comentario aparece varias veces.
Dependiendo del diseño de tu aplicación, puedes elegir entre:
- avanzando la transmisión una vez, para todo el lote. Utiliza el
continuationdel lote contenido en la respuesta. - avanzar la transmisión para cada comentario individual. Utiliza el
continuationdel comentario, contenido en la respuesta.
Filtro de comentarios
Si especificas un comment_filter al crear la transmisión, los resultados no incluyen comentarios que no coincidan con el filtro, pero siguen contando para el max_filtered solicitado. Puedes observar respuestas en las que se filtran todos los comentarios max_filtered , lo que lleva a una matriz results vacía. En el siguiente ejemplo, solicitas un lote de 8 comentarios, todos los cuales se filtran.
{
"filtered": 8,
"results": [],
"sequence_id": "qs8QcHIBAADJ1p3W2FtmBB3QiOJsCJlR",
"status": "ok"
}
{
"filtered": 8,
"results": [],
"sequence_id": "qs8QcHIBAADJ1p3W2FtmBB3QiOJsCJlR",
"status": "ok"
}
Pase el parámetro max_filtered opcional, para evitar que los comentarios filtrados cuenten para el max_results solicitado.
Umbrales de predicción
La ruta /fetch heredada no devuelve comentarios con predicciones que no alcanzaban el umbral de confianza. En esta nueva ruta /results , devuelves todas las predicciones para un comentario, y también el confidence``value . También indicas qué tipo(s) de umbral cumple.
"occurrence_confidence": {
"value": 0.9905891418457031,
"thresholds": ["stream"]
}
"occurrence_confidence": {
"value": 0.9905891418457031,
"thresholds": ["stream"]
}
El confidence para una predicción 0.9905.. y el valor thresholds indican que la predicción cumple con el umbral configurado para el stream.
Al crear una automatización, busca el valor stream para confirmar que la predicción cumple con el umbral que configuraste en la transmisión. Además, se pueden devolver umbrales automáticos , y los valores esperados para estos son: high_recall, high_precision y balanced.
Para obtener más información sobre las extracciones generadas y cómo trabajar con umbrales, consulta la página Comprender la validación en las extracciones y el rendimiento de las extracciones .
Formato de solicitud
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
max_results | Número | No | El número de comentarios a recuperar para esta transmisión. Devuelve menos comentarios si llega al final del lote, o si filtra los comentarios según el filtro de comentarios. El valor máximo es 32. El valor predeterminado es 16. |
max_filtered | Número | No | Parámetro de conveniencia para transmisiones con un filtro de comentarios. Cuando los proporciona, hasta max_filtered comentarios filtrados no cuentan para el max_results solicitado. Esto es útil si esperas que un gran número de comentarios no coincidan con el filtro. No tiene efecto en las transmisiones sin un filtro de comentarios. El valor máximo es 1024. El valor predeterminado es nulo. |
Formato de respuesta
| Nombre | Tipo | Descripción |
|---|---|---|
status | String | ok si la solicitud tiene éxito, o error, en caso de error. Para obtener más información sobre las respuestas de error, consulta la página Información general . |
num_filtered | Número | Número de comentarios que se filtraron en función de un filtro de comentarios. Si creaste la transmisión sin un filtro, este número siempre es 0. |
continuation | String | El token de continuación del lote. Úselo para confirmar el procesamiento de este lote y avanzar la transmisión al siguiente lote. |
more_results | Booleano | Verdadero si no hubo resultados adicionales en la transmisión, cuando realizó la solicitud. Falso en caso contrario. |
results | array<Result> | Una matriz que contiene objetos de resultado. |
Donde Result tiene el siguiente formato:
| Nombre | Tipo | Descripción |
|---|---|---|
comment | Comentario | Comentar datos. Para obtener una explicación detallada, consulta Referencia de comentarios. |
continuation | String | El token de continuación del comentario. Se utiliza para reconocer el procesamiento de este comentario y avanzar al siguiente comentario. |
prediction | array<Prediction> | La predicción para este comentario. Solo está disponible si la transmisión especifica una versión del modelo. Para obtener más información sobre las predicciones generativas, consulta la página Communications Mining™: comprensión de la validación en las extracciones y rendimiento de las extracciones . |
Prediction tiene el siguiente formato:
| Nombre | Tipo | Descripción |
|---|---|---|
taxonomies | array<TaxonomyPrediction> | Lista de predicciones de taxonomía. Actualmente solo defines una taxonomía por conjunto de datos, pero la proporcionas como una lista, para futura compatibilidad. |
TaxonomyPrediction tiene el siguiente formato:
| Nombre | Tipo | Descripción |
|---|---|---|
name | String | Nombre de la taxonomía. El único valor es actualmente default. |
labels | array<LabelPrediction> | Una lista de predicciones de etiquetas extraídas con sus occurrence_confidence, extraction_confidence y fields extraídas. Para obtener más información sobre las predicciones generativas, consulta la página Communications Mining: comprensión de la validación en las extracciones y rendimiento de las extracciones . |
general_fields | array<FieldPrediction> | Una lista de predicciones de campo generales extraídas con sus name y value extraídas. Para obtener más información sobre las predicciones generativas, consulta la página Communications Mining: comprensión de la validación en las extracciones y rendimiento de las extracciones . |