Métricas de avaliação para modelos de compreensão da linguagem coloquial

Seu conjunto de dados é dividido em duas partes: um conjunto para treinamento e um conjunto para teste. O conjunto de treinamento é usado para treinar o modelo, enquanto o conjunto de teste é usado como um teste para o modelo após o treinamento para calcular o desempenho e a avaliação do modelo. O conjunto de testes não é introduzido no modelo por meio do processo de treinamento para garantir que o modelo seja testado em novos dados.

A avaliação do modelo é disparada automaticamente depois que o treinamento é concluído com êxito. O processo de avaliação começa usando o modelo treinado para prever intenções e entidades definidas pelo usuário para declarações no conjunto de teste. Em seguida, o processo os compara com as tags fornecidas para estabelecer uma linha de base verdadeira. Os resultados são retornados para que você possa revisar o desempenho do modelo. A compreensão da linguagem coloquial usa as seguintes métricas para a avaliação:

  • Precisão: Mede o quão preciso ou exato é o seu modelo. É a taxa entre os positivos identificados corretamente (verdadeiros positivos) e todos os positivos identificados. A métrica de precisão revela quantas das classes previstas estão rotuladas corretamente.

    Precision = #True_Positive / (#True_Positive + #False_Positive)

  • Recall: mede a capacidade do modelo de prever classes positivas reais. É a proporção entre os verdadeiros positivos previstos e o que foi marcado. A métrica de recall revelam quantas das classes previstas estão corretas.

    Recall = #True_Positive / (#True_Positive + #False_Negatives)

  • Pontuação F1: A pontuação F1 é uma função de precisão e recall. Ela é necessária quando você busca um equilíbrio entre precisão e recall.

    F1 Score = 2 * Precision * Recall / (Precision + Recall)

Precisão, recall e pontuação F1 são calculados para:

  • Cada entidade separadamente (avaliação em nível de entidade).
  • Cada intenção separadamente (avaliação em nível de intenção).
  • O modelo coletivamente (avaliação no nível do modelo).

As definições de precisão, recall e avaliação são as mesmas para avaliações em nível de entidade, em nível de intenção e em nível de modelo. No entanto, as contagens para verdadeiros positivos, falsos positivos e falsos negativos podem ser diferentes. Por exemplo, considere a seguinte mensagem de texto.

Exemplo

  • Responda com “muito obrigado.”
  • Responda dizendo "sim."
  • Verifique meu email, por favor.
  • Envie um email para Cynthia dizendo que o jantar da semana passada foi esplêndido.
  • Envie um email para Mike.

As intenções usadas são Reply, sendEmail, e readEmail. As entidades são contactName e message.

O modelo poderia fazer as seguintes previsões:

Enunciado Intenção prevista Intenção real Entidade prevista Entidade real
Responda com "muito obrigado" Responder Responder thank you very much como message thank you very much como message
Responder dizendo "sim" sendEmail Responder -- yes como message
Verifique meu email, por favor. readEmail readEmail -- --
Envie um email para Cynthia dizendo que o jantar da semana passada foi esplêndido Responder sendEmail dinner last week was splendid como message cynthia como contactName e dinner last week was splendid como message
Envie um email para Mike sendEmail sendEmail mike como message mike como contactName

Avaliação em nível de intenção para intenção de resposta

Chave Contagem Explicação
Verdadeiro positivo 1 O enunciado 1 foi previsto corretamente como Reply.
Falso positivo 1 A Elocução 4 foi erroneamente prevista como Reply.
Falso negativo 1 A Elocução 2 foi erroneamente prevista como sendEmail.

Precisão = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

Recall = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

Pontuação F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

Avaliação em nível de intenção para intenção sendEmail

Chave Contagem Explicação
Verdadeiro positivo 1 O enunciado 5 foi previsto corretamente como sendEmail.
Falso positivo 1 A Elocução 2 foi erroneamente prevista como sendEmail.
Falso negativo 1 A Elocução 4 foi erroneamente prevista como Reply.

Precisão = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

Recall = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

Pontuação F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

Avaliação em nível de intenção para a intenção readEmail

Chave Contagem Explicação
Verdadeiro positivo 1 O enunciado 3 foi previsto corretamente como readEmail.
Falso positivo 0 --
Falso negativo 0 --

Precisão = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1

Recall = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 0) = 1

Pontuação F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 1) / (1 + 1) = 1

Avaliação em nível de entidade para entidade contactName

Chave Contagem Explicação
Verdadeiro positivo 1 cynthia foi corretamente previsto como contactName no enunciado 4.
Falso positivo 0 --
Falso negativo 1 mike foi erroneamente previsto como message no enunciado 5.

Precisão = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1

Recall = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

Pontuação F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 0.5) / (1 + 0.5) = 0.67

Avaliação em nível de entidade para entidade de mensagem

Chave Contagem Explicação
Verdadeiro positivo 2 thank you very much foi corretamente previsto como message na expressão 1 e dinner last week was splendid foi corretamente previsto como message na expressão 4.
Falso positivo 1 mike foi erroneamente previsto como message no enunciado 5.
Falso negativo 1 yes não foi previsto como message no enunciado 2.

Precisão = #True_Positive / (#True_Positive + #False_Positive) = 2 / (2 + 1) = 0.67

Recall = #True_Positive / (#True_Positive + #False_Negatives) = 2 / (2 + 1) = 0.67

Medida f = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.67) / (0.67 + 0.67) = 0.67

Avaliação no nível do modelo para o modelo coletivo

Chave Contagem Explicação
Verdadeiro positivo 6 Soma dos verdadeiros positivos para todas as intenções e entidades.
Falso positivo 3 Soma de falsos positivos para todas as intenções e entidades.
Falso negativo 4 Soma de falsos negativos para todas as intenções e entidades.

Precisão = #True_Positive / (#True_Positive + #False_Positive) = 6 / (6 + 3) = 0.67

Recall = #True_Positive / (#True_Positive + #False_Negatives) = 6 / (6 + 4) = 0.60

Pontuação F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.60) / (0.67 + 0.60) = 0.63

Matriz de confusão

Uma matriz de confusão é uma matriz N x N usada para avaliação de desempenho do modelo, onde N é o número de entidades ou intenções. A matriz compara os rótulos esperados com os previstos pelo modelo. A matriz oferece uma visão holística do desempenho do modelo e dos tipos de erros que ele está cometendo.

Você pode usar a matriz de confusão para identificar intenções ou entidades que estão muito próximas umas das outras e muitas vezes se enganam (ambiguidade). Nesse caso, considere mesclar essas intenções ou entidades. Se a fusão não for possível, considere adicionar mais exemplos marcados de intenções ou entidades para ajudar o modelo a diferenciá-las.

A diagonal destacada na imagem a seguir mostra as entidades previstas corretamente, onde a tag prevista é igual à tag real.

Captura de tela que mostra um exemplo de matriz de confusão.

É possível calcular as métricas de avaliação no nível de entidade, intenção e modelo da matriz de confusão:

  • Os valores na diagonal são os verdadeiros valores positivos de cada intenção ou entidade.
  • A soma dos valores nas linhas da intenção ou das entidades (exceto a diagonal) é o Falso Positivo do modelo.
  • A soma dos valores nas colunas de intenções ou entidades (excluindo a diagonal) é o falso negativo do modelo.

Similarmente:

  • O verdadeiro positivo do modelo é a soma dos verdadeiros positivos para todas as intenções ou entidades.
  • O Falso Positivo do modelo é a soma dos Falsos Positivos de todas as intenções ou entidades.
  • O falso negativo do modelo é a soma dos falsos negativos para todas as intenções ou entidades.

Diretrizes

Depois de treinar seu modelo, você verá algumas orientações e recomendações sobre como melhorá-lo. Recomendamos que você tenha um modelo que cubra todos os pontos da seção de orientação.

  • O conjunto de treinamento possui dados suficientes: Quando uma intenção ou entidade tem menos de 15 instâncias rotuladas nos dados de treinamento, isso pode levar a uma precisão menor porque o modelo não é treinado adequadamente nessa intenção. Nesse caso, considere adicionar mais dados rotulados ao conjunto de treinamento. Você só deve considerar adicionar mais dados rotulados à sua entidade se sua entidade tiver um componente aprendido. Se a sua entidade for definida apenas por componentes de lista, pré-construídos e regex, essa recomendação não se aplica.
  • Todas as intenções ou entidades estão presentes no conjunto de teste: Quando os dados de teste não possuem instâncias rotuladas para uma intenção ou entidade, a avaliação do modelo é menos abrangente devido a cenários não testados. Considere ter dados de teste para cada intenção e entidade do seu modelo para garantir que tudo esteja sendo testado.
  • Distinção pouco clara entre intenções ou entidades: Quando os dados são semelhantes para diferentes intenções ou entidades, isso pode levar a uma menor precisão porque podem ser frequentemente classificados erroneamente entre si. Revise as seguintes intenções e entidades e considere mesclá-las se forem semelhantes. Caso contrário, adicione mais exemplos para distingui-los melhor uns dos outros. Você pode verificar a guia Matriz de confusão para obter mais orientações. Se você estiver vendo duas entidades sendo constantemente previstas para os mesmos períodos porque compartilham a mesma lista, componentes pré-construídos ou regex, certifique-se de adicionar um componente aprendido para cada entidade e torná-lo obrigatório. Saiba mais sobre os componentes de entidade.