Métricas de avaliação para modelos de compreensão de linguagem conversacional
Seu conjunto de dados é dividido em duas partes: um conjunto para treinamento e um conjunto para testes. O conjunto de treinamento é usado para treinar o modelo, enquanto o conjunto de testes é 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 através do processo de treinamento para garantir que o modelo seja testado em novos dados.
A avaliação do modelo é acionada automaticamente após a conclusão bem-sucedida do treinamento. O processo de avaliação começa usando o modelo treinado para prever intenções e entidades definidas pelo usuário para enunciados no conjunto de testes. Em seguida, o processo as compara com as tags fornecidas para estabelecer uma linha de base da verdade. Os resultados são retornados para que você possa analisar o desempenho do modelo. Para avaliação, a compreensão da linguagem conversacional usa as seguintes métricas:
Precisão: Mede o quão preciso ou exato é o seu modelo. É a relação entre os positivos corretamente identificados (verdadeiros positivos) e todos os positivos identificados. A métrica de precisão revela quantas das classes previstas estão corretamente rotuladas.
Precision = #True_Positive / (#True_Positive + #False_Positive)
Recall: Mede a capacidade do modelo de prever classes positivas reais. É a relação entre os verdadeiros positivos previstos e o que foi marcado. A métrica de recall revela 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 recordação. É necessário quando se procura um equilíbrio entre precisão e recordação.
F1 Score = 2 * Precision * Recall / (Precision + Recall)
A precisão, a recuperação e a pontuação F1 são calculadas para:
- Cada entidade separadamente (avaliação ao nível da entidade).
- Cada intenção separadamente (avaliação de nível de intenção).
- Para o modelo coletivamente (avaliação ao nível do modelo).
As definições de precisão, recordação e avaliação são as mesmas para avaliações em nível de entidade, nível de intenção e nível de modelo. No entanto, as contagens de verdadeiros positivos, falsos positivos e falsos negativos podem diferir. Por exemplo, considere o texto a seguir.
Exemplo
- Faça uma resposta com "muito obrigado".
- Responda dizendo "sim".
- Verifique o meu e-mail, por favor.
- E-mail para Cynthia que o jantar na semana passada foi esplêndido.
- Envie um e-mail para Mike.
As intenções utilizadas são Reply
, sendEmail
e readEmail
. As entidades são contactName
e message
.
O modelo poderia fazer as seguintes previsões:
Expressão | Intenção prevista | Intenção real | Entidade prevista | Entidade real |
---|---|---|---|---|
Faça uma resposta com "muito obrigado" | Resposta | Resposta | thank you very much como message |
thank you very much como message |
Responda dizendo "sim" | enviar e-mail | Resposta | -- | yes como message |
Verifique o meu e-mail por favor | lerE-mail | lerE-mail | -- | -- |
E-mail para Cynthia que o jantar na semana passada foi esplêndido | Resposta | enviar e-mail | dinner last week was splendid como message |
cynthia como contactName , dinner last week was splendid como message |
Enviar um e-mail para Mike | enviar e-mail | enviar e-mail | mike como message |
mike como contactName |
Avaliação de nível de intenção para intenção de resposta
Chave | Count | Explicação |
---|---|---|
Verdadeiro positivo | 1 | O enunciado 1 foi corretamente previsto como Reply . |
Falso positivo | 1 | O enunciado 4 foi erroneamente previsto como Reply . |
Falso negativo | 1 | O enunciado 2 foi erroneamente previsto como sendEmail . |
Precisão = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5
Relembre = #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 de nível de intenção para enviar intenção de e-mail
Chave | Count | Explicação |
---|---|---|
Verdadeiro positivo | 1 | O enunciado 5 foi corretamente previsto como sendEmail . |
Falso positivo | 1 | O enunciado 2 foi erroneamente previsto como sendEmail . |
Falso negativo | 1 | O enunciado 4 foi erroneamente previsto como Reply . |
Precisão = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5
Relembre = #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 de nível de intenção para leituraIntenção de e-mail
Chave | Count | Explicação |
---|---|---|
Verdadeiro positivo | 1 | O enunciado 3 foi corretamente previsto como readEmail . |
Falso positivo | 0 | -- |
Falso negativo | 0 | -- |
Precisão = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1
Relembre = #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 | Count | 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
Relembre = #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 | Count | Explicação |
---|---|---|
Verdadeiro positivo | 2 | thank you very much foi corretamente previsto como message no enunciado 1 e dinner last week was splendid foi corretamente previsto como message no enunciado 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
Relembre = #True_Positive / (#True_Positive + #False_Negatives) = 2 / (2 + 1) = 0.67
Pontuação F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.67) / (0.67 + 0.67) = 0.67
Avaliação ao nível do modelo para o modelo coletivo
Chave | Count | Explicação |
---|---|---|
Verdadeiro positivo | 6 | Soma de verdadeiros positivos para todos os propósitos e entidades. |
Falso positivo | 3 | Soma de falsos positivos para todos os propósitos e entidades. |
Falso negativo | 4 | Soma de falsos negativos para todos os efeitos e entidades. |
Precisão = #True_Positive / (#True_Positive + #False_Positive) = 6 / (6 + 3) = 0.67
Relembre = #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
A 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 dá uma visão holística do desempenho do modelo e dos tipos de erros que 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). Neste caso, considere fundir essas intenções ou entidades. Se a fusão não for possível, considere adicionar mais exemplos marcados de ambas as intenções ou entidades para ajudar o modelo a diferenciá-las.
A diagonal realçada na imagem a seguir mostra as entidades previstas corretamente, onde a tag prevista é a mesma que a tag real.
Você pode calcular as métricas de avaliação de nível de intenção ou de entidade e nível de modelo a partir 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 de intenção ou entidades (excluindo a diagonal) é o falso positivo do modelo.
- A soma dos valores nas colunas de intenção ou entidades (excluindo a diagonal) é o falso negativo do modelo.
Do mesmo modo:
- 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 para todas as intenções ou entidades.
- O falso negativo do modelo é a soma de falsos negativos para todas as intenções ou entidades.
Orientação
Depois de treinar seu modelo, você verá algumas orientações e recomendações sobre como melhorá-lo. Recomendamos que você tenha um modelo que abranja todos os pontos da seção de orientações.
- O conjunto de treinamento tem 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 no conjunto de treinamento. Você só deve considerar a adição de mais dados rotulados à sua entidade se ela tiver um componente aprendido. Se sua entidade for definida apenas por componentes de lista, pré-criados e regex, essa recomendação não se aplica.
- Todas as intenções ou entidades estão presentes no conjunto de testes: quando os dados de teste não têm 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 em 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 eles podem ser frequentemente classificados incorretamente uns como os outros. Analise as seguintes intenções e entidades e considere mesclá-las se forem semelhantes. Caso contrário, adicione mais exemplos para melhor distingui-los uns dos outros. Pode consultar o separador Matriz de confusão para obter mais orientações. Se você estiver vendo duas entidades sendo constantemente previstas para as mesmas extensões porque elas compartilham os mesmos componentes de lista, pré-construídos ou regex, certifique-se de adicionar um componente aprendido para cada entidade e torná-lo necessário. Saiba mais sobre os componentes da entidade.