- Documentos da API
- CLI
- Guias de integração
- Integração do Exchange com usuário do serviço do Azure
- Integração do Exchange com Autenticação de Aplicativo do Azure
- Automação em tempo real
- Como buscar dados para o Tableau com o Python
- Integração do Elasticsearch
- Integração do EWS auto-hospedado
- Estrutura de automação da UiPath
- Atividades do UiPath Marketplace
- Atividades oficiais da UiPath
- Blog
- 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 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 conversacional
Guia do desenvolvedor do Communications Mining
Integração do Elasticsearch
O Communications Mining oferece um conjunto avançado de ferramentas de análise integradas. No entanto, às vezes é necessário unir as previsões do Communications Mining com dados que não podem ser carregados como parte dos comentários do Communications Mining. Nesses casos, uma solução comum é indexar as previsões do Communications Mining e quaisquer dados adicionais no Elasticsearch e usar uma ferramenta como o Kibana para gerar análises. Este tutorial descreve como importar dados do Communications Mining para o Elasticsearch e visualizá-los no Kibana.
Os dados usados nos exemplos ao longo deste tutorial são e-mails fictícios gerados do domínio de seguros.
Primeiro, vamos definir os dados que queremos importar para o Elasticsearch. A API do Communications Mining fornece o texto dos comentários, os metadados dos comentários, os rótulos previstos e os campos gerais previstos em um objeto JSON aninhado. Abaixo encontra-se um exemplo de um comentário bruto fornecido pela API do Communications Mining. (Observe que você pode ver campos de metadados diferentes, dependendo de como seus dados foram ingeridos no Communications Mining. Saiba mais sobre os campos de objeto Comment aqui.)
{
"comment": {
"id": "c7a1c529-3f57-4be6-9102-c9f892b81ae51",
"uid": "49ba2c56a945386c.c7a1c529-3f57-4be6-9102-c9f892b81ae51",
"timestamp": "2021-03-29T08:36:25.607Z",
"messages": [
{
"body": {
"text": "The policyholder has changed their address to the new address: 19 Essex Gardens, SW17 2UL"
},
"subject": {
"text": "Change of address - Policy SFG48807871"
},
"from": "CPX8460080@broker.com",
"to": ["underwriter@insurer.com"],
"sent_at": "2021-03-29T08:36:25.607Z"
}
]
// (... more properties ...)
},
"labels": [
{
"name": ["Admin"],
"probability": 0.9995054006576538
},
{
"name": ["Admin", "Change of address"],
"probability": 0.9995054006576538
}
],
"entities": [
{
"name": "address-line-1",
"formatted_value": "19 Essex Gardens",
"span": {
"content_part": "body",
"message_index": 0,
"char_start": 63,
"char_end": 79,
"utf16_byte_start": 126,
"utf16_byte_end": 158
}
},
{
"name": "post-code",
"formatted_value": "SW17 2UL",
"span": {
"content_part": "body",
"message_index": 0,
"char_start": 81,
"char_end": 89,
"utf16_byte_start": 162,
"utf16_byte_end": 178
}
},
{
"name": "policy-number",
"formatted_value": "SFG48807871",
"span": {
"content_part": "subject",
"message_index": 0,
"char_start": 27,
"char_end": 38,
"utf16_byte_start": 54,
"utf16_byte_end": 76
}
}
]
}
{
"comment": {
"id": "c7a1c529-3f57-4be6-9102-c9f892b81ae51",
"uid": "49ba2c56a945386c.c7a1c529-3f57-4be6-9102-c9f892b81ae51",
"timestamp": "2021-03-29T08:36:25.607Z",
"messages": [
{
"body": {
"text": "The policyholder has changed their address to the new address: 19 Essex Gardens, SW17 2UL"
},
"subject": {
"text": "Change of address - Policy SFG48807871"
},
"from": "CPX8460080@broker.com",
"to": ["underwriter@insurer.com"],
"sent_at": "2021-03-29T08:36:25.607Z"
}
]
// (... more properties ...)
},
"labels": [
{
"name": ["Admin"],
"probability": 0.9995054006576538
},
{
"name": ["Admin", "Change of address"],
"probability": 0.9995054006576538
}
],
"entities": [
{
"name": "address-line-1",
"formatted_value": "19 Essex Gardens",
"span": {
"content_part": "body",
"message_index": 0,
"char_start": 63,
"char_end": 79,
"utf16_byte_start": 126,
"utf16_byte_end": 158
}
},
{
"name": "post-code",
"formatted_value": "SW17 2UL",
"span": {
"content_part": "body",
"message_index": 0,
"char_start": 81,
"char_end": 89,
"utf16_byte_start": 162,
"utf16_byte_end": 178
}
},
{
"name": "policy-number",
"formatted_value": "SFG48807871",
"span": {
"content_part": "subject",
"message_index": 0,
"char_start": 27,
"char_end": 38,
"utf16_byte_start": 54,
"utf16_byte_end": 76
}
}
]
}
O esquema dos comentários brutos retornados pela API do Communications Mining é inconveniente para filtrar e consultar esses dados no Elasticsearch, portanto, você deve alterar o esquema antes de ingerir os dados no Elasticsearch. Abaixo está um exemplo de esquema achatado que você pode usar. Você deve adicionar todos os campos necessários para seu caso de uso.
{
"id": "c7a1c529-3f57-4be6-9102-c9f892b81ae51",
"uid": "49ba2c56a945386c.c7a1c529-3f57-4be6-9102-c9f892b81ae51",
"timestamp": "2021-03-29T08:36:25.607Z",
"subject": "Change of address - Policy SFG48807871",
"body": "The policyholder has changed their address to the new address: 19 Essex Gardens, SW17 2UL",
// (... more fields ...)
"labels": ["Admin", "Admin > Change of address"],
"entities": {
"policy_number": ["SFG48807871"],
"address-line-1": ["19 Essex Gardens"],
"post-code": ["SW17 2UL"]
}
}
{
"id": "c7a1c529-3f57-4be6-9102-c9f892b81ae51",
"uid": "49ba2c56a945386c.c7a1c529-3f57-4be6-9102-c9f892b81ae51",
"timestamp": "2021-03-29T08:36:25.607Z",
"subject": "Change of address - Policy SFG48807871",
"body": "The policyholder has changed their address to the new address: 19 Essex Gardens, SW17 2UL",
// (... more fields ...)
"labels": ["Admin", "Admin > Change of address"],
"entities": {
"policy_number": ["SFG48807871"],
"address-line-1": ["19 Essex Gardens"],
"post-code": ["SW17 2UL"]
}
}
labels
precisa ser uma matriz. Além disso, se um ou mais tipos de campo gerais tiverem sido configurados para o conjunto de dados, um comentário terá zero, um ou mais campos gerais de cada tipo de campo geral. Os nomes de rótulos hierárquicos na resposta bruta da API são, eles próprios, matrizes (["Admin", "Change of address"]
) e devem ser convertidos em strings ("Admin > Change of address"
).
Para buscar os dados, recomendamos usar o arquivo . (Consulte aqui para obter uma visão geral de todos os métodos de download de dados disponíveis.) Ao criar um Stream, você deve definir os limites para cada rótulo para que os rótulos com pontuações de confiança abaixo do limite sejam descartados. Isso é mais fácil de fazer na interface gráfica do Communications Mining, acessando a página "Streams" de um conjunto de dados. Depois de usar as pontuações de confiança para determinar se um rótulo se aplica, você pode importar apenas os nomes dos rótulos para o Elasticsearch. (Consulte a seção Rótulos para análise para obter uma discussão sobre quando recomendamos descartar ou manter as pontuações de confiança do rótulo.)
Os campos gerais não têm pontuações de confiança, portanto, nenhum manuseio especial é necessário.
GESTÃO DE MUDANÇAS DE MODELO
Ao criar um Fluxo, você especifica uma versão do modelo. Essa versão do modelo é usada para fornecer previsões ao buscar comentários do Fluxo. Mesmo que os usuários continuem treinando novas versões de modelo na plataforma, seu Stream usará a versão de modelo que você especificou, fornecendo resultados deterministas.
Para atualizar para uma nova versão do modelo, você precisa criar um novo Stream que usa essa versão do modelo e, em seguida, atualizar seu código para usar o novo Stream. (Por esse motivo, recomendamos que você torne o nome do Stream configurável em seu código.) Para garantir que a análise que usa previsões permaneça consistente, você deve reingerir previsões para dados históricos usando a versão do modelo atualizado. Você pode fazer isso pela Transmissão para o carimbo de data/hora antes do seu comentário mais antigo e reingerir os dados do início.
Após indexar os dados no Elasticsearch, você pode começar a criar visualizações. Essa seção fornece exemplos simples para várias ferramentas de visualização comuns no Kibana.
Temporário
Você pode usar a seguinte expressão para produzir uma plotagem dos 5 principais rótulos mais comuns ao longo do tempo. Observe que isso mostra tanto os rótulos de categoria quanto de subcategoria.
.es(index=example-data,split=labels:5,timefield=@timestamp)
.label("$1", "^.* > labels:(.+) > .*")
.es(index=example-data,split=labels:5,timefield=@timestamp)
.label("$1", "^.* > labels:(.+) > .*")
Gráfico de Barras
Gráfico de Pizza