- Introdução
- Configurando sua conta
- Balanceamento
- Clusters
- Desvio de conceito
- Cobertura
- Conjuntos de dados
- Campos gerais
- Rótulos (previsões, níveis de confiança, hierarquia do rótulo e sentimento do rótulo)
- Modelos
- Transmissões
- Classificação do Modelo
- Projetos
- Precisão
- Lembrar
- Mensagens anotadas e não anotadas
- Campos de extração
- Fontes
- Taxonomias
- Treinamento
- Previsões positivos e negativos verdadeiros e falsos
- Validação
- Mensagens
- Controle de acesso e administração
- Gerencie origens e conjuntos de dados
- Entender a estrutura de dados e permissões
- Criando ou excluindo uma origem de dados na GUI
- Preparando dados para carregamento de .CSV
- Carregar um arquivo CSV para uma origem
- Criação de um conjunto de dados
- Origens e conjuntos de dados multilíngues
- Habilitando o sentimento em um conjunto de dados
- Como corrigir as configurações do conjunto de dados
- Excluindo uma mensagem
- Exclusão de um conjunto de dados
- Exportação de um conjunto de dados
- Usando integrações do Exchange
- Treinamento e manutenção do modelo
- Noções Básicas sobre rótulos, campos gerais e metadados
- Hierarquia de rótulos e práticas recomendadas
- Comparação de casos de uso de análise e automação
- Transformando seus objetivos em rótulos
- Visão geral do processo de treinamento do modelo
- Anotação generativa
- Status do conjunto de dados
- Treinamento de modelos e práticas recomendadas de anotação
- Treinamento com análise de sentimento de rótulo habilitada
- Compreensão dos requisitos de dados
- Treinamento
- Introdução ao Refine
- Precisão e recall explicados
- Precisão e recall
- Como a validação funciona
- Compreender e melhorar o desempenho do modelo
- Motivos para baixa precisão média do rótulo
- Treinamento usando Check label e Perda de rótulo
- Treinamento usando Ensinar rótulo (Refinar)
- Treinamento usando a Pesquisa (Refinamento)
- Noções Básicas e Aumentando a Cobertura
- Melhorando o balanceamento e usando o Rebalanceamento
- Quando parar de treinar seu modelo
- Uso dos campos gerais
- Extração generativa
- Uso de análise e monitoramento
- Automations e Communications Mining™
- Desenvolvedor
- Carregamento de dados
- Baixando dados
- Integração do Exchange com usuário do serviço do Azure
- Integração do Exchange com Autenticação de Aplicativo do Azure
- Integração do Exchange com Autenticação de aplicativo e gráfico do Azure
- Migration Guide: Exchange Web Services (EWS) to Microsoft Graph API
- Como buscar dados para o Tableau com o Python
- Integração do Elasticsearch
- Extração de campo geral
- Integração auto-hospedada do Exchange
- Framework de automação da UiPath®
- Atividades oficiais da UiPath®
- Como as máquinas aprendem a entender as palavras: um guia para incorporações ao NLP
- Aprendizado baseado em solicitação com Transformers
- Efficient Transformers II: extração de conhecimento e ajustes finos
- Transformers eficientes I: mecanismos de atenção
- Modelagem de intenção hierárquica profunda não supervisionada: obtenção de valor sem dados de treinamento
- Corrigindo viés de anotação com o Communications Mining™
- Aprendizado ativo: melhores modelos de ML em menos tempo
- Está tudo nos números - avaliando o desempenho do modelo com métricas
- Por que a validação de modelos é importante
- Comparação do Communications Mining™ e do Google AutoML para inteligência de dados de conversa
- Licenciamento
- Perguntas frequentes e mais

Guia do usuário do Communications Mining
Obter resultados do stream
Permissões necessárias: consumir transmissões, exibir rótulos, exibir origens.
A rota /results é a nova maneira de buscar comentários e suas previsões de um stream, substituindo a rota /fetch existente (Streams - legado). Mantemos a rota /fetch para suporte legado, mas recomendamos que todos os novos casos de uso usem a rota /results , pois ela é compatível com todos os casos de uso possíveis, incluindo aqueles que usam a extração generativa.
- Atribuição 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"
- Atribuição de nó
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));
}
);
- Atribuição 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))
- Atribuição de resposta
{
"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"
}
Depois de criar um stream, você pode consulte-lo para buscar comentários e suas previsões. Isso inclui rótulos, campos gerais e extrações de rótulos, contendo um conjunto de campos de extração para cada instância da ocorrência desse rótulo.
Fila de Comentários
Ao criar um stream, você define sua posição inicial para ser igual ao seu tempo de criação. Se necessário, você pode definir o stream para uma posição diferente (seja para frente ou para trás no tempo), usando o endpoint de redefinição. O stream retorna comentários a partir de sua posição atual. Você determina a posição do comentário na fila de comentários pela ordem em que você carregou os comentários.
Avançando sua posição na fila
Como o stream só retorna comentários de sua posição atual, você deve avançar para a próxima posição após cada solicitação de busca, usando o endpoint avançado. Dessa forma, a API garante pelo menos uma vez o processamento de todos os comentários. Se o aplicativo falhar ao processar um lote, ele retomará o mesmo lote ao reiniciar.
Como um aplicativo pode processar com sucesso um comentário, mas falhar na etapa de avançar, você observará que um comentário aparece várias vezes.
Dependendo do design do seu aplicativo, você pode escolher entre:
- avançando o stream uma vez, para todo o lote. Use o
continuationdo lote contido na resposta. - avançar o fluxo para cada comentário individual. Use o
continuationdo comentário, contido na resposta.
Filtro do Comentário
Se você especificar um comment_filter ao criar o stream, os resultados não incluirão comentários que não correspondam ao filtro, mas ainda contarão para o max_filtered solicitado. Você pode observar respostas em que todos os comentários max_filtered são filtrados, levando a uma matriz results vazia. No exemplo a seguir, você solicita um lote de 8 comentários, todos os quais são filtrados.
{
"filtered": 8,
"results": [],
"sequence_id": "qs8QcHIBAADJ1p3W2FtmBB3QiOJsCJlR",
"status": "ok"
}
{
"filtered": 8,
"results": [],
"sequence_id": "qs8QcHIBAADJ1p3W2FtmBB3QiOJsCJlR",
"status": "ok"
}
Passe o parâmetro opcional max_filtered , para evitar que os comentários filtrados sejam contados no max_results solicitado.
Limites de previsão
A rota /fetch legada não retorna comentários com previsões que não atenderam ao limite de confiança. Nesta nova rota /results , você retorna todas as previsões para um comentário e a confidence``value também. Você também indica qual tipo(s) de limite ele atende.
"occurrence_confidence": {
"value": 0.9905891418457031,
"thresholds": ["stream"]
}
"occurrence_confidence": {
"value": 0.9905891418457031,
"thresholds": ["stream"]
}
O confidence para uma previsão 0.9905.. e o valor thresholds indica que a previsão atende ao limite configurado para o stream.
Ao criar uma automação, procure o valor stream para confirmar que a previsão atende ao limite que você configurou no stream. Além disso, os limites automáticos podem ser retornados, e os valores esperados para eles são: high_recall, high_precision e balanced.
Para obter mais informações sobre extrações geradas e como trabalhar com limites, consulte a página Entendendo a validação de extrações e desempenho de extração .
Formato de solicitação
| Nome | Tipo | Required | Descrição |
|---|---|---|---|
max_results | Número | não | O número de comentários a serem buscados para este fluxo. Retorna menos comentários se atingir o fim do lote ou se você filtrar os comentários de acordo com o filtro de comentários. O valor máximo é 32. O padrão é 16. |
max_filtered | Número | não | Parâmetro de conveniência para transmissões com um filtro de comentários. Quando você os fornece, até max_filtered comentários filtrados não são contabilizados para os max_results solicitados. Isso é útil se você espera que um grande número de comentários não corresponda ao filtro. Não tem efeito em transmissões sem um filtro de comentários. O valor máximo é 1024. O padrão é nulo. |
Formato da Resposta
| Nome | Tipo | Descrição |
|---|---|---|
status | String | ok se a solicitação for bem-sucedida, ou error, em caso de erro. Para saber mais sobre respostas de erros, consulte a página Visão geral . |
num_filtered | Número | Número de comentários que foram filtrados com base em um filtro de comentários. Se você criou o stream sem um filtro, esse número é sempre 0. |
continuation | String | O token de continuação de lote. Use-o para confirmar o processamento desse lote e avançar o stream para o próximo lote. |
more_results | Bool | Verdadeiro se não houvesse resultados adicionais no fluxo, quando você fez a solicitação. Caso contrário, falso. |
results | array<Result> | Uma matriz que contém objetos de resultado. |
Onde Result tem o seguinte formato:
| Nome | Tipo | Descrição |
|---|---|---|
comment | Comentar | Dados do comentário. Para uma explicação detalhada, consulte a Referência de comentário. |
continuation | String | O token de continuação do comentário. Usado para confirmar o processamento deste comentário e avançar para o próximo comentário. |
prediction | array<Prediction> | A previsão para este comentário. Está disponível apenas se o fluxo especificar uma versão do modelo. Para obter mais informações sobre previsões generativas, consulte a página: Communications Mining™ - Entendendo a validação em extrações e a página desempenho de extração . |
Prediction tem o seguinte formato:
| Nome | Tipo | Descrição |
|---|---|---|
taxonomies | array<TaxonomyPrediction> | Lista de previsões de taxonomia. Atualmente, você define apenas uma taxonomia por conjunto de dados, mas a fornece como uma lista, para compatibilidade futura. |
TaxonomyPrediction tem o seguinte formato:
| Nome | Tipo | Descrição |
|---|---|---|
name | String | Nome da taxonomia. O único valor no momento é default. |
labels | array<LabelPrediction> | Uma lista de previsões de rótulos extraídas com seus occurrence_confidence, extraction_confidence e fields extraídos. Para obter mais informações sobre previsões generativas, consulte a página Communications Mining - Entendendo a validação em extrações e desempenho de extração . |
general_fields | array<FieldPrediction> | Uma lista de previsões de campo geral extraídas com seus name e value extraídos. Para obter mais informações sobre previsões generativas, consulte a página Communications Mining - Entendendo a validação em extrações e desempenho de extração . |