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.
É 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.