- 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
- Guia de migração: Exchange Web Services (EWS) para a API do Microsoft Graph
- 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
Predictions
Obter previsões para um modelo fixado
/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict
Permissões necessárias: Exibir rótulos, Exibir origens
Operação Faturável Será cobrado 1 AI Unit ou 0,2 Platform Units por comentário fornecido no corpo da solicitação.
- Bash
curl -X POST 'https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "documents": [ { "messages": [ { "body": { "text": "Hi Bob,\n\nCould you send me the figures for today?" }, "from": "alice@company.com", "sent_at": "2020-01-09T16:34:45Z", "signature": { "text": "Thanks,\nAlice" }, "subject": { "text": "Figures Request" }, "to": [ "bob@organisation.org" ] } ], "timestamp": "2013-09-12T20:01:20.000000+00:00", "user_properties": { "string:City": "London" } }, { "messages": [ { "body": { "text": "Alice,\n\nHere are the figures for today." }, "from": "bob@organisation.org", "sent_at": "2020-01-09T16:44:45Z", "signature": { "text": "Regards,\nBob" }, "subject": { "text": "Re: Figures Request" }, "to": [ "alice@company.com" ] } ], "timestamp": "2011-12-12T10:04:30.000000+00:00", "user_properties": { "string:City": "Bucharest" } } ], "threshold": 0.25 }'curl -X POST 'https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "documents": [ { "messages": [ { "body": { "text": "Hi Bob,\n\nCould you send me the figures for today?" }, "from": "alice@company.com", "sent_at": "2020-01-09T16:34:45Z", "signature": { "text": "Thanks,\nAlice" }, "subject": { "text": "Figures Request" }, "to": [ "bob@organisation.org" ] } ], "timestamp": "2013-09-12T20:01:20.000000+00:00", "user_properties": { "string:City": "London" } }, { "messages": [ { "body": { "text": "Alice,\n\nHere are the figures for today." }, "from": "bob@organisation.org", "sent_at": "2020-01-09T16:44:45Z", "signature": { "text": "Regards,\nBob" }, "subject": { "text": "Re: Figures Request" }, "to": [ "alice@company.com" ] } ], "timestamp": "2011-12-12T10:04:30.000000+00:00", "user_properties": { "string:City": "Bucharest" } } ], "threshold": 0.25 }' - Nó
const request = require("request"); request.post( { url: "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { documents: [ { messages: [ { body: { text: "Hi Bob,\n\nCould you send me the figures for today?", }, from: "alice@company.com", sent_at: "2020-01-09T16:34:45Z", signature: { text: "Thanks,\nAlice" }, subject: { text: "Figures Request" }, to: ["bob@organisation.org"], }, ], timestamp: "2013-09-12T20:01:20.000000+00:00", user_properties: { "string:City": "London" }, }, { messages: [ { body: { text: "Alice,\n\nHere are the figures for today." }, from: "bob@organisation.org", sent_at: "2020-01-09T16:44:45Z", signature: { text: "Regards,\nBob" }, subject: { text: "Re: Figures Request" }, to: ["alice@company.com"], }, ], timestamp: "2011-12-12T10:04:30.000000+00:00", user_properties: { "string:City": "Bucharest" }, }, ], threshold: 0.25, }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } );const request = require("request"); request.post( { url: "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { documents: [ { messages: [ { body: { text: "Hi Bob,\n\nCould you send me the figures for today?", }, from: "alice@company.com", sent_at: "2020-01-09T16:34:45Z", signature: { text: "Thanks,\nAlice" }, subject: { text: "Figures Request" }, to: ["bob@organisation.org"], }, ], timestamp: "2013-09-12T20:01:20.000000+00:00", user_properties: { "string:City": "London" }, }, { messages: [ { body: { text: "Alice,\n\nHere are the figures for today." }, from: "bob@organisation.org", sent_at: "2020-01-09T16:44:45Z", signature: { text: "Regards,\nBob" }, subject: { text: "Re: Figures Request" }, to: ["alice@company.com"], }, ], timestamp: "2011-12-12T10:04:30.000000+00:00", user_properties: { "string:City": "Bucharest" }, }, ], threshold: 0.25, }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } ); - Python
import json import os import requests response = requests.post( "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "documents": [ { "messages": [ { "from": "alice@company.com", "to": ["bob@organisation.org"], "sent_at": "2020-01-09T16:34:45Z", "body": { "text": "Hi Bob,\n\nCould you send me the figures for today?" }, "subject": {"text": "Figures Request"}, "signature": {"text": "Thanks,\nAlice"}, } ], "timestamp": "2013-09-12T20:01:20.000000+00:00", "user_properties": {"string:City": "London"}, }, { "messages": [ { "from": "bob@organisation.org", "to": ["alice@company.com"], "sent_at": "2020-01-09T16:44:45Z", "body": { "text": "Alice,\n\nHere are the figures for today." }, "subject": {"text": "Re: Figures Request"}, "signature": {"text": "Regards,\nBob"}, } ], "timestamp": "2011-12-12T10:04:30.000000+00:00", "user_properties": {"string:City": "Bucharest"}, }, ], "threshold": 0.25, }, ) print(json.dumps(response.json(), indent=2, sort_keys=True))import json import os import requests response = requests.post( "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "documents": [ { "messages": [ { "from": "alice@company.com", "to": ["bob@organisation.org"], "sent_at": "2020-01-09T16:34:45Z", "body": { "text": "Hi Bob,\n\nCould you send me the figures for today?" }, "subject": {"text": "Figures Request"}, "signature": {"text": "Thanks,\nAlice"}, } ], "timestamp": "2013-09-12T20:01:20.000000+00:00", "user_properties": {"string:City": "London"}, }, { "messages": [ { "from": "bob@organisation.org", "to": ["alice@company.com"], "sent_at": "2020-01-09T16:44:45Z", "body": { "text": "Alice,\n\nHere are the figures for today." }, "subject": {"text": "Re: Figures Request"}, "signature": {"text": "Regards,\nBob"}, } ], "timestamp": "2011-12-12T10:04:30.000000+00:00", "user_properties": {"string:City": "Bucharest"}, }, ], "threshold": 0.25, }, ) print(json.dumps(response.json(), indent=2, sort_keys=True)) - Resposta
{ "entities": [ [ { "capture_ids": [], "formatted_value": "Bob", "id": "76aebf2646577a1d", "kind": "person", "name": "person", "probability": null, "span": { "char_end": 6, "char_start": 3, "content_part": "body", "message_index": 0, "utf16_byte_end": 12, "utf16_byte_start": 6 } }, { "capture_ids": [], "formatted_value": "2020-01-09 00:00 UTC", "id": "20beddf4c5f5bb61", "kind": "date", "name": "date", "probability": null, "span": { "char_end": 48, "char_start": 43, "content_part": "body", "message_index": 0, "utf16_byte_end": 96, "utf16_byte_start": 86 } } ], [] ], "model": { "time": "2020-02-06T20:42:58.047000Z", "version": 5 }, "predictions": [ [ { "name": ["Some Label"], "probability": 0.8896465003490448 }, { "name": ["Parent Label", "Child Label"], "probability": 0.26687008142471313, "sentiment": 0.8762539502232571 } ], [ { "name": ["Other Label"], "probability": 0.6406207121908665 } ] ], "status": "ok" }{ "entities": [ [ { "capture_ids": [], "formatted_value": "Bob", "id": "76aebf2646577a1d", "kind": "person", "name": "person", "probability": null, "span": { "char_end": 6, "char_start": 3, "content_part": "body", "message_index": 0, "utf16_byte_end": 12, "utf16_byte_start": 6 } }, { "capture_ids": [], "formatted_value": "2020-01-09 00:00 UTC", "id": "20beddf4c5f5bb61", "kind": "date", "name": "date", "probability": null, "span": { "char_end": 48, "char_start": 43, "content_part": "body", "message_index": 0, "utf16_byte_end": 96, "utf16_byte_start": 86 } } ], [] ], "model": { "time": "2020-02-06T20:42:58.047000Z", "version": 5 }, "predictions": [ [ { "name": ["Some Label"], "probability": 0.8896465003490448 }, { "name": ["Parent Label", "Child Label"], "probability": 0.26687008142471313, "sentiment": 0.8762539502232571 } ], [ { "name": ["Other Label"], "probability": 0.6406207121908665 } ] ], "status": "ok" }
Você deve fornecer a versão do modelo que deseja consultar para previsões na solicitação. Você pode usar o número inteiro da versão ou os valores especiais live ou staging para consultar a versão atual do modelo Live ou Staging.
Formato de solicitação
| Nome | Tipo | Required | Descrição |
|---|---|---|---|
documents | array<Comment> | sim | Um lote de 4096 documentos no máximo, no formato descrito na Referência de comentário. Lotes maiores são mais rápidos (por documento) do que os menores. |
threshold | Número | não | O limite de confiança pelo qual filtrar os resultados do rótulo. Um número entre 1.0 e 0.0. 0.0 incluirá todos os resultados. Defina como "auto" para usar limites automáticos. Se não for definido, o limite padrão de 0.25 será usado. |
labels | array<Label> | não | Uma lista dos rótulos solicitados a serem retornados com a opção de limites específicos de rótulos. |
documents | array<Comment> | sim | Um lote de 4096 documentos no máximo, no formato descrito na Referência de comentário. Lotes maiores são mais rápidos (por documento) do que os menores. |
threshold | Número | não | O limite de confiança pelo qual filtrar os resultados do rótulo. Um número entre 1.0 e 0.0. 0.0 incluirá todos os resultados. Defina como "auto" para usar limites automáticos. Se não for definido, o limite padrão de 0.25 será usado. |
labels | array<Label> | não | Uma lista dos rótulos solicitados a serem retornados com a opção de limites específicos de rótulos. |
Onde Label tem o seguinte formato:
| Nome | Tipo | Required | Descrição |
|---|---|---|---|
name | array<string> | sim | O nome do rótulo a ser retornado, formatado como uma lista de rótulos hierárquicos. Por exemplo, o rótulo "Parent Label > Child Label" terá o formato ["Parent Label", "Child Label"]. |
threshold | Número | não | O limite de confiança a ser usado para o rótulo. Se não for especificado, o padrão será o limite especificado no nível superior. |
name | array<string> | sim | O nome do rótulo a ser retornado, formatado como uma lista de rótulos hierárquicos. Por exemplo, o rótulo "Parent Label > Child Label" terá o formato ["Parent Label", "Child Label"]. |
threshold | Número | não | O limite de confiança a ser usado para o rótulo. Se não for especificado, o padrão será o limite especificado no nível superior. |
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 Visão geral. |
predictions | array<array<Label>> | Uma lista de array<Label> na mesma ordem que os comentários na solicitação, onde cada Label tem o formato descrito aqui. |
entities | array<array<Entity>> | Uma lista de array<Entity> na mesma ordem que os comentários na solicitação, onde cada Entity tem o formato descrito aqui. |
label_properties | array<LabelProperty> | Uma matriz que contém as propriedades de rótulo previstas para este comentário, em que cada LabelProperty tem o formato descrito aqui. |
model | Modelo | Informações sobre o modelo que foi usado para fazer as previsões, no formato descrito aqui. |
status | String | ok se a solicitação for bem-sucedida, ou error em caso de erro. Para saber mais sobre respostas de erros, consulte Visão geral. |
predictions | array<array<Label>> | Uma lista de array<Label> na mesma ordem que os comentários na solicitação, onde cada Label tem o formato descrito aqui. |
entities | array<array<Entity>> | Uma lista de array<Entity> na mesma ordem que os comentários na solicitação, onde cada Entity tem o formato descrito aqui. |
label_properties | array<LabelProperty> | Uma matriz que contém as propriedades de rótulo previstas para este comentário, em que cada LabelProperty tem o formato descrito aqui. |
model | Modelo | Informações sobre o modelo que foi usado para fazer as previsões, no formato descrito aqui. |
Obter previsões para a versão mais recente do modelo
Para obter previsões da versão mais recente do modelo disponível para um conjunto de dados, consulte as instruções em Obter previsões para um modelo fixado, mas use latest em vez de uma versão de modelo fixada.
Obter previsões para um modelo fixado para emails brutos
/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-raw-emails
Permissões necessárias: Exibir rótulos, Exibir origens
Operação Faturável Será cobrada 1 AI Unit ou 0,2 Platform Units por email bruto fornecido no corpo da solicitação.
- Bash
curl -X POST 'https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-raw-emails' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "documents": [ { "raw_email": { "body": { "plain": "Hi Bob,\n\nCould you send me the figures for today?\n\nThanks,\nAlice" }, "headers": { "parsed": { "Date": "Thu, 09 Jan 2020 16:34:45 +0000", "From": "alice@company.com", "Message-ID": "abcdef@company.com", "References": "<01234@company.com> <56789@company.com>", "Subject": "Figures Request", "To": "bob@organisation.org" } } }, "user_properties": { "string:City": "London" } }, { "raw_email": { "body": { "html": "<p>Alice,</p><p>Here are the figures for today.</p><p>Regards,<br/>Bob</p>" }, "headers": { "raw": "Message-ID: 012345@company.com\nDate: Thu, 09 Jan 2020 16:44:45 +0000\nSubject: Re: Figures Request\nFrom: bob@organisation.org\nTo: alice@company.com" } }, "user_properties": { "string:City": "Bucharest" } } ], "include_comments": false, "threshold": 0.25, "transform_tag": "generic.0.CONVKER5" }'curl -X POST 'https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-raw-emails' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "documents": [ { "raw_email": { "body": { "plain": "Hi Bob,\n\nCould you send me the figures for today?\n\nThanks,\nAlice" }, "headers": { "parsed": { "Date": "Thu, 09 Jan 2020 16:34:45 +0000", "From": "alice@company.com", "Message-ID": "abcdef@company.com", "References": "<01234@company.com> <56789@company.com>", "Subject": "Figures Request", "To": "bob@organisation.org" } } }, "user_properties": { "string:City": "London" } }, { "raw_email": { "body": { "html": "<p>Alice,</p><p>Here are the figures for today.</p><p>Regards,<br/>Bob</p>" }, "headers": { "raw": "Message-ID: 012345@company.com\nDate: Thu, 09 Jan 2020 16:44:45 +0000\nSubject: Re: Figures Request\nFrom: bob@organisation.org\nTo: alice@company.com" } }, "user_properties": { "string:City": "Bucharest" } } ], "include_comments": false, "threshold": 0.25, "transform_tag": "generic.0.CONVKER5" }' - Nó
const request = require("request"); request.post( { url: "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-raw-emails", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { documents: [ { raw_email: { body: { plain: "Hi Bob,\n\nCould you send me the figures for today?\n\nThanks,\nAlice", }, headers: { parsed: { Date: "Thu, 09 Jan 2020 16:34:45 +0000", From: "alice@company.com", "Message-ID": "abcdef@company.com", References: "<01234@company.com> <56789@company.com>", Subject: "Figures Request", To: "bob@organisation.org", }, }, }, user_properties: { "string:City": "London" }, }, { raw_email: { body: { html: "<p>Alice,</p><p>Here are the figures for today.</p><p>Regards,<br/>Bob</p>", }, headers: { raw: "Message-ID: 012345@company.com\nDate: Thu, 09 Jan 2020 16:44:45 +0000\nSubject: Re: Figures Request\nFrom: bob@organisation.org\nTo: alice@company.com", }, }, user_properties: { "string:City": "Bucharest" }, }, ], include_comments: false, threshold: 0.25, transform_tag: "generic.0.CONVKER5", }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } );const request = require("request"); request.post( { url: "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-raw-emails", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { documents: [ { raw_email: { body: { plain: "Hi Bob,\n\nCould you send me the figures for today?\n\nThanks,\nAlice", }, headers: { parsed: { Date: "Thu, 09 Jan 2020 16:34:45 +0000", From: "alice@company.com", "Message-ID": "abcdef@company.com", References: "<01234@company.com> <56789@company.com>", Subject: "Figures Request", To: "bob@organisation.org", }, }, }, user_properties: { "string:City": "London" }, }, { raw_email: { body: { html: "<p>Alice,</p><p>Here are the figures for today.</p><p>Regards,<br/>Bob</p>", }, headers: { raw: "Message-ID: 012345@company.com\nDate: Thu, 09 Jan 2020 16:44:45 +0000\nSubject: Re: Figures Request\nFrom: bob@organisation.org\nTo: alice@company.com", }, }, user_properties: { "string:City": "Bucharest" }, }, ], include_comments: false, threshold: 0.25, transform_tag: "generic.0.CONVKER5", }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } ); - Python
import json import os import requests response = requests.post( "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-raw-emails", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "transform_tag": "generic.0.CONVKER5", "documents": [ { "raw_email": { "headers": { "parsed": { "Message-ID": "abcdef@company.com", "Date": "Thu, 09 Jan 2020 16:34:45 +0000", "Subject": "Figures Request", "From": "alice@company.com", "To": "bob@organisation.org", "References": "<01234@company.com> <56789@company.com>", } }, "body": { "plain": "Hi Bob,\n\nCould you send me the figures for today?\n\nThanks,\nAlice" }, }, "user_properties": {"string:City": "London"}, }, { "raw_email": { "headers": { "raw": "Message-ID: 012345@company.com\nDate: Thu, 09 Jan 2020 16:44:45 +0000\nSubject: Re: Figures Request\nFrom: bob@organisation.org\nTo: alice@company.com" }, "body": { "html": "<p>Alice,</p><p>Here are the figures for today.</p><p>Regards,<br/>Bob</p>" }, }, "user_properties": {"string:City": "Bucharest"}, }, ], "threshold": 0.25, "include_comments": False, }, ) print(json.dumps(response.json(), indent=2, sort_keys=True))import json import os import requests response = requests.post( "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-raw-emails", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "transform_tag": "generic.0.CONVKER5", "documents": [ { "raw_email": { "headers": { "parsed": { "Message-ID": "abcdef@company.com", "Date": "Thu, 09 Jan 2020 16:34:45 +0000", "Subject": "Figures Request", "From": "alice@company.com", "To": "bob@organisation.org", "References": "<01234@company.com> <56789@company.com>", } }, "body": { "plain": "Hi Bob,\n\nCould you send me the figures for today?\n\nThanks,\nAlice" }, }, "user_properties": {"string:City": "London"}, }, { "raw_email": { "headers": { "raw": "Message-ID: 012345@company.com\nDate: Thu, 09 Jan 2020 16:44:45 +0000\nSubject: Re: Figures Request\nFrom: bob@organisation.org\nTo: alice@company.com" }, "body": { "html": "<p>Alice,</p><p>Here are the figures for today.</p><p>Regards,<br/>Bob</p>" }, }, "user_properties": {"string:City": "Bucharest"}, }, ], "threshold": 0.25, "include_comments": False, }, ) print(json.dumps(response.json(), indent=2, sort_keys=True)) - Resposta
{ "entities": [ [ { "capture_ids": [], "formatted_value": "Bob", "id": "76aebf2646577a1d", "kind": "person", "name": "person", "probability": null, "span": { "char_end": 6, "char_start": 3, "content_part": "body", "message_index": 0, "utf16_byte_end": 12, "utf16_byte_start": 6 } }, { "capture_ids": [], "formatted_value": "2020-01-09 00:00 UTC", "id": "20beddf4c5f5bb61", "kind": "date", "name": "date", "probability": null, "span": { "char_end": 48, "char_start": 43, "content_part": "body", "message_index": 0, "utf16_byte_end": 96, "utf16_byte_start": 86 } } ], [] ], "model": { "time": "2020-02-06T20:42:58.047000Z", "version": 5 }, "predictions": [ [ { "name": ["Some Label"], "probability": 0.8896465003490448 }, { "name": ["Parent Label", "Child Label"], "probability": 0.26687008142471313, "sentiment": 0.8762539502232571 } ], [ { "name": ["Other Label"], "probability": 0.6406207121908665 } ] ], "status": "ok" }{ "entities": [ [ { "capture_ids": [], "formatted_value": "Bob", "id": "76aebf2646577a1d", "kind": "person", "name": "person", "probability": null, "span": { "char_end": 6, "char_start": 3, "content_part": "body", "message_index": 0, "utf16_byte_end": 12, "utf16_byte_start": 6 } }, { "capture_ids": [], "formatted_value": "2020-01-09 00:00 UTC", "id": "20beddf4c5f5bb61", "kind": "date", "name": "date", "probability": null, "span": { "char_end": 48, "char_start": 43, "content_part": "body", "message_index": 0, "utf16_byte_end": 96, "utf16_byte_start": 86 } } ], [] ], "model": { "time": "2020-02-06T20:42:58.047000Z", "version": 5 }, "predictions": [ [ { "name": ["Some Label"], "probability": 0.8896465003490448 }, { "name": ["Parent Label", "Child Label"], "probability": 0.26687008142471313, "sentiment": 0.8762539502232571 } ], [ { "name": ["Other Label"], "probability": 0.6406207121908665 } ] ], "status": "ok" }
Você deve fornecer a versão do modelo que deseja consultar para previsões na solicitação. Você pode usar o número inteiro da versão ou os valores especiais live ou staging para consultar a versão atual do modelo Live ou Staging.
Formato de solicitação
| Nome | Tipo | Required | Descrição |
|---|---|---|---|
transform_tag | String | sim | Uma tag que especifica como os dados brutos devem ser processados. |
documents | array<Document> | sim | Um lote de no máximo 4096 documentos no formato descrito na tabela a seguir. Lotes maiores são mais rápidos (por documento) do que os menores. |
threshold | Número | não | O limite de confiança pelo qual filtrar os resultados do rótulo. Um número entre 1.0 e 0.0. 0.0 incluirá todos os resultados. Defina como "auto" para usar limites automáticos. Se não for definido, o limite padrão de 0.25 será usado. |
labels | array<Label> | não | Uma lista dos rótulos solicitados a serem retornados com a opção de limites específicos de rótulos. |
include_comments | Booleano | não | Se definido como true, os comentários analisados dos e-mails serão retornados no corpo da resposta. |
transform_tag | String | sim | Uma tag que especifica como os dados brutos devem ser processados. |
documents | array<Document> | sim | Um lote de no máximo 4096 documentos no formato descrito na tabela a seguir. Lotes maiores são mais rápidos (por documento) do que os menores. |
threshold | Número | não | O limite de confiança pelo qual filtrar os resultados do rótulo. Um número entre 1.0 e 0.0. 0.0 incluirá todos os resultados. Defina como "auto" para usar limites automáticos. Se não for definido, o limite padrão de 0.25 será usado. |
labels | array<Label> | não | Uma lista dos rótulos solicitados a serem retornados com a opção de limites específicos de rótulos. |
include_comments | Booleano | não | Se definido como true, os comentários analisados dos e-mails serão retornados no corpo da resposta. |
Onde Document tem o seguinte formato:
| Nome | Tipo | Required | Descrição |
|---|---|---|---|
raw_email | RawEmail | sim | Dados de email no formato descrito Comentários. |
user_properties | `map<string, string | número >` | não |
Onde Label tem o seguinte formato:
| Nome | Tipo | Required | Descrição |
|---|---|---|---|
name | array<string> | sim | O nome do rótulo a ser retornado, formatado como uma lista de rótulos hierárquicos. Por exemplo, o rótulo "Parent Label > Child Label" terá o formato ["Parent Label", "Child Label"]. |
threshold | Número | não | O limite de confiança a ser usado para o rótulo. Se não for especificado, o padrão será o limite especificado no nível superior. |
name | array<string> | sim | O nome do rótulo a ser retornado, formatado como uma lista de rótulos hierárquicos. Por exemplo, o rótulo "Parent Label > Child Label" terá o formato ["Parent Label", "Child Label"]. |
threshold | Número | não | O limite de confiança a ser usado para o rótulo. Se não for especificado, o padrão será o limite especificado no nível superior. |
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 Visão geral. |
comments | array<Comment> | Uma lista de comentários analisados dos emails brutos carregados, no formato descrito na Referência do comentário. Retornado apenas se você definir include_comments na solicitação. |
predictions | array<array<Label>> | Uma lista de array<Label> na mesma ordem que os comentários na solicitação, onde cada Label tem o formato descrito aqui. |
entities | array<array<Entity>> | Uma lista de array<Entity> na mesma ordem que os comentários na solicitação, onde cada Entity tem o formato descrito aqui. |
label_properties | array<LabelProperty> | Uma matriz que contém as propriedades de rótulo previstas para este comentário, em que cada LabelProperty tem o formato descrito aqui. |
model | Modelo | Informações sobre o modelo que foi usado para fazer as previsões, no formato descrito aqui. |
status | String | ok se a solicitação for bem-sucedida, ou error em caso de erro. Para saber mais sobre respostas de erros, consulte Visão geral. |
comments | array<Comment> | Uma lista de comentários analisados dos emails brutos carregados, no formato descrito na Referência do comentário. Retornado apenas se você definir include_comments na solicitação. |
predictions | array<array<Label>> | Uma lista de array<Label> na mesma ordem que os comentários na solicitação, onde cada Label tem o formato descrito aqui. |
entities | array<array<Entity>> | Uma lista de array<Entity> na mesma ordem que os comentários na solicitação, onde cada Entity tem o formato descrito aqui. |
label_properties | array<LabelProperty> | Uma matriz que contém as propriedades de rótulo previstas para este comentário, em que cada LabelProperty tem o formato descrito aqui. |
model | Modelo | Informações sobre o modelo que foi usado para fazer as previsões, no formato descrito aqui. |
Para solicitações grandes, esse ponto de extremidade pode levar mais tempo para responder. Você deve aumentar o tempo limite do cliente.
Obter previsões para um modelo fixado por ID do comentário
/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-comments
Permissões necessárias: Exibir rótulos, Exibir origens
- Bash
curl -X POST 'https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-comments' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "threshold": 0.25, "uids": [ "18ba5ce699f8da1f.0001", "18ba5ce699f8da1f.0002" ] }'curl -X POST 'https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-comments' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "threshold": 0.25, "uids": [ "18ba5ce699f8da1f.0001", "18ba5ce699f8da1f.0002" ] }' - Nó
const request = require("request"); request.post( { url: "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-comments", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { threshold: 0.25, uids: ["18ba5ce699f8da1f.0001", "18ba5ce699f8da1f.0002"], }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } );const request = require("request"); request.post( { url: "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-comments", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { threshold: 0.25, uids: ["18ba5ce699f8da1f.0001", "18ba5ce699f8da1f.0002"], }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } ); - Python
import json import os import requests response = requests.post( "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-comments", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "uids": ["18ba5ce699f8da1f.0001", "18ba5ce699f8da1f.0002"], "threshold": 0.25, }, ) print(json.dumps(response.json(), indent=2, sort_keys=True))import json import os import requests response = requests.post( "https://<my_api_endpoint>/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-comments", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "uids": ["18ba5ce699f8da1f.0001", "18ba5ce699f8da1f.0002"], "threshold": 0.25, }, ) print(json.dumps(response.json(), indent=2, sort_keys=True)) - Resposta
{ "model": { "time": "2020-02-06T20:42:58.047000Z", "version": 5 }, "predictions": [ { "entities": [ { "capture_ids": [], "formatted_value": "Bob", "id": "76aebf2646577a1d", "kind": "person", "name": "person", "probability": null, "span": { "char_end": 6, "char_start": 3, "content_part": "body", "message_index": 0, "utf16_byte_end": 12, "utf16_byte_start": 6 } }, { "capture_ids": [], "formatted_value": "2020-01-09 00:00 UTC", "id": "20beddf4c5f5bb61", "kind": "date", "name": "date", "probability": null, "span": { "char_end": 48, "char_start": 43, "content_part": "body", "message_index": 0, "utf16_byte_end": 96, "utf16_byte_start": 86 } } ], "labels": [ { "name": ["Some Label"], "probability": 0.8896465003490448 }, { "name": ["Parent Label", "Child Label"], "probability": 0.26687008142471313, "sentiment": 0.8762539502232571 } ], "uid": "18ba5ce699f8da1f.0001" }, { "entities": [], "labels": [ { "name": ["Other Label"], "probability": 0.6406207121908665 } ], "uid": "18ba5ce699f8da1f.0002" } ], "status": "ok" }{ "model": { "time": "2020-02-06T20:42:58.047000Z", "version": 5 }, "predictions": [ { "entities": [ { "capture_ids": [], "formatted_value": "Bob", "id": "76aebf2646577a1d", "kind": "person", "name": "person", "probability": null, "span": { "char_end": 6, "char_start": 3, "content_part": "body", "message_index": 0, "utf16_byte_end": 12, "utf16_byte_start": 6 } }, { "capture_ids": [], "formatted_value": "2020-01-09 00:00 UTC", "id": "20beddf4c5f5bb61", "kind": "date", "name": "date", "probability": null, "span": { "char_end": 48, "char_start": 43, "content_part": "body", "message_index": 0, "utf16_byte_end": 96, "utf16_byte_start": 86 } } ], "labels": [ { "name": ["Some Label"], "probability": 0.8896465003490448 }, { "name": ["Parent Label", "Child Label"], "probability": 0.26687008142471313, "sentiment": 0.8762539502232571 } ], "uid": "18ba5ce699f8da1f.0001" }, { "entities": [], "labels": [ { "name": ["Other Label"], "probability": 0.6406207121908665 } ], "uid": "18ba5ce699f8da1f.0002" } ], "status": "ok" }
Você deve fornecer a versão do modelo que deseja consultar para previsões na solicitação. Você pode usar o número inteiro da versão ou os valores especiais live ou staging para consultar a versão atual do modelo Live ou Staging.
Formato de solicitação
| Nome | Tipo | Required | Descrição |
|---|---|---|---|
uids | array<string> | sim | Uma lista de no máximo 4096 -s source_ide comment_id-s combinados no formato source_id.comment_id. As origens não precisam pertencer ao conjunto de dados atual - para que você possa solicitar previsões de comentários para uma origem em um conjunto de dados diferente (ou nenhum). Listas maiores são mais rápidas (por comentário) do que listas menores. |
uids | array<string> | sim | Uma lista de no máximo 4096 -s source_ide comment_id-s combinados no formato source_id.comment_id. As origens não precisam pertencer ao conjunto de dados atual - para que você possa solicitar previsões de comentários para uma origem em um conjunto de dados diferente (ou nenhum). Listas maiores são mais rápidas (por comentário) do que listas menores. |
threshold | Número | não | O limite de confiança pelo qual filtrar os resultados do rótulo. Um número entre 1.0 e 0.0. 0.0 incluirá todos os resultados. Defina como "auto" para usar limites automáticos. Se não for definido, o limite padrão de 0.25 será usado. |
labels | array<Label> | não | Uma lista dos rótulos solicitados a serem retornados com a opção de limites específicos de rótulos. |
labels | array<Label> | não | Uma lista dos rótulos solicitados a serem retornados com a opção de limites específicos de rótulos. |
Onde Label tem o seguinte formato:
| Nome | Tipo | Required | Descrição |
|---|---|---|---|
name | array<string> | sim | O nome do rótulo a ser retornado, formatado como uma lista de rótulos hierárquicos. Por exemplo, o rótulo "Parent Label > Child Label" terá o formato ["Parent Label", "Child Label"]. |
name | array<string> | sim | O nome do rótulo a ser retornado, formatado como uma lista de rótulos hierárquicos. Por exemplo, o rótulo "Parent Label > Child Label" terá o formato ["Parent Label", "Child Label"]. |
threshold | Número | não | O limite de confiança a ser usado para o rótulo. Se não for especificado, o padrão será o limite especificado no nível superior. |
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 Visão geral. |
predictions | array<Prediction> | Uma lista de previsões no formato descrito na tabela a seguir. |
model | Modelo | Informações sobre o modelo que foi usado para fazer as previsões, no formato descrito aqui. |
status | String | ok se a solicitação for bem-sucedida, ou error em caso de erro. Para saber mais sobre respostas de erros, consulte Visão geral. |
predictions | array<Prediction> | Uma lista de previsões no formato descrito na tabela a seguir. |
model | Modelo | Informações sobre o modelo que foi usado para fazer as previsões, no formato descrito aqui. |
Onde Prediction tem o seguinte formato:
| Nome | Tipo | Descrição |
|---|---|---|
uid | String | Uma combinação de source_id e comment_id no formato de source_id.comment_id. |
labels | array<Label> | Uma matriz que contém rótulos previstos para este comentário, em que Label tem o formato descrito aqui. |
entities | array<Entity> | Uma matriz que contém entidades previstas para este comentário, em que Entity tem o formato descrito aqui. |
label_properties | array<LabelProperty> | Uma matriz que contém as propriedades de rótulo previstas para este comentário, em que cada LabelProperty tem o formato descrito aqui. |
uid | String | Uma combinação de source_id e comment_id no formato de source_id.comment_id. |
labels | array<Label> | Uma matriz que contém rótulos previstos para este comentário, em que Label tem o formato descrito aqui. |
entities | array<Entity> | Uma matriz que contém entidades previstas para este comentário, em que Entity tem o formato descrito aqui. |
label_properties | array<LabelProperty> | Uma matriz que contém as propriedades de rótulo previstas para este comentário, em que cada LabelProperty tem o formato descrito aqui. |
Para solicitações grandes, esse ponto de extremidade pode levar mais tempo para responder. Você deve aumentar o tempo limite do cliente.
Obter estatísticas de validação do modelo
/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/validation
Permissões necessárias: Exibir rótulos, Exibir origens
- Bash
curl -X GET 'https://<my_api_endpoint>/api/v1/datasets/project1/collateral/labellers/live/validation' \ -H "Authorization: Bearer $REINFER_TOKEN"curl -X GET 'https://<my_api_endpoint>/api/v1/datasets/project1/collateral/labellers/live/validation' \ -H "Authorization: Bearer $REINFER_TOKEN" - Nó
const request = require("request"); request.get( { url: "https://<my_api_endpoint>/api/v1/datasets/project1/collateral/labellers/live/validation", 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/labellers/live/validation", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } ); - Python
import json import os import requests response = requests.get( "https://<my_api_endpoint>/api/v1/datasets/project1/collateral/labellers/live/validation", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, ) 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/labellers/live/validation", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, ) print(json.dumps(response.json(), indent=2, sort_keys=True)) - Resposta
{ "status": "ok", "validation": { "coverage": 0.9119927883148193, "dataset_quality": "good", "labels": [ { "name": "Notification", "parts": ["Notification"] }, { "name": "Notification > Out of Office", "parts": ["Notification", "Out of Office"] }, { "name": "Notification > Public Holiday", "parts": ["Notification", "Public Holiday"] } ], "mean_average_precision_safe": 0.83, "num_amber_labels": 1, "num_labels": 3, "num_red_labels": 1, "num_reviewed_comments": 10251, "version": 5 } }{ "status": "ok", "validation": { "coverage": 0.9119927883148193, "dataset_quality": "good", "labels": [ { "name": "Notification", "parts": ["Notification"] }, { "name": "Notification > Out of Office", "parts": ["Notification", "Out of Office"] }, { "name": "Notification > Public Holiday", "parts": ["Notification", "Public Holiday"] } ], "mean_average_precision_safe": 0.83, "num_amber_labels": 1, "num_labels": 3, "num_red_labels": 1, "num_reviewed_comments": 10251, "version": 5 } }
Essa rota retorna estatísticas de como um modelo está funcionando. As mesmas estatísticas podem ser visualizadas na página Validação. As estatísticas de um modelo podem ser solicitadas com seu número inteiro version . Você pode usar os valores especiais live e staging para recuperar estatísticas para as versões atuais do modelo Live ou Staging, ou o valor especial latest para a versão do modelo mais recente disponível.
Embora esse ponto de extremidade aceite versões de modelo fixadas e não fixadas, recomendamos consultar as versões do modelo fixadas ou o valor especial latest, pois não é garantido que as estatísticas estejam disponíveis para versões de modelo não fixadas.
O objeto validation da resposta contém os campos a seguir:
| Nome | Tipo | Descrição |
|---|---|---|
mean_average_precision_safe | float | Pontuação de Precisão média média (entre 0.0 e 1.0). Este campo será null se o MAP não estiver disponível. |
num_labels | Número | Número de rótulos na taxonomia (no momento em que a versão do modelo foi fixada). |
labels | array<Label> | Lista de rótulos na taxonomia (no momento em que a versão do modelo foi fixada). Observação: como o exemplo de resposta demonstra, os rótulos pai são retornados como um rótulo separado além de serem retornados como parte dos rótulos filho. |
num_reviewed_comments | Número | Número de comentários revisados no conjunto de dados (no momento em que a versão do modelo foi fixada). |
version | Número | Versão do modelo. |
num_amber_labels | Número | Número de rótulos no estado de aviso laranja. |
num_red_labels | Número | Número de rótulos no estado de alerta vermelho. |
dataset_score | Número | Pontuação geral do conjunto de dados, entre 0 e 100. |
dataset_quality | String | Um "poor", "average", "good", "excellent", representando a classificação de qualidade geral do conjunto de dados. Pode ser null se não houver dados suficientes. |
balance | float | Uma medida da similaridade entre comentários revisados e não revisados (entre 0.0 e 1.0). Pode ser null se não houver dados suficientes. |
balance_quality | String | Um entre "poor", "average", "good", "excellent", representando a classificação de qualidade do saldo. Pode ser null se não houver dados suficientes. |
coverage | float | Um valor fracionário da cobertura do rótulo no conjunto de dados (entre 0.0 e 1.0). Pode ser null se não houver dados suficientes. |
coverage_quality | String | Uma "poor", "average", "good", "excellent", representando a classificação de qualidade da cobertura. Pode ser null se não houver dados suficientes. |
all_labels_quality | String | Um "poor", "average", "good", "excellent", representando toda a classificação de qualidade dos rótulos. Pode ser null se não houver dados suficientes. |
underperforming_labels_quality | String | Um entre "poor", "average", "good", "excellent", representando a classificação de qualidade dos rótulos de baixo desempenho. Pode ser null se não houver dados suficientes. |
Onde Label tem o seguinte formato:
| Nome | Tipo | Descrição |
|---|---|---|
name | String | O nome do rótulo, formatado como uma cadeia de caracteres. |
parts | array<string> | O nome do rótulo, formatado como uma lista de rótulos hierárquicos. Por exemplo, o rótulo "Parent Label > Child Label" terá o formato ["Parent Label", "Child Label"] |
name | String | O nome do rótulo, formatado como uma cadeia de caracteres. |
parts | array<string> | O nome do rótulo, formatado como uma lista de rótulos hierárquicos. Por exemplo, o rótulo "Parent Label > Child Label" terá o formato ["Parent Label", "Child Label"] |