Métricas de avaliação para modelos de compreensão de linguagem de conversação
O conjunto de dados é dividido em duas partes: um conjunto para preparação e um conjunto para teste. O conjunto de preparação é utilizado para preparar o modelo, enquanto o conjunto de testes é utilizado como um teste para o modelo após a preparação para calcular o desempenho e a avaliação do modelo. O conjunto de testes não é introduzido no modelo através do processo de preparação, para garantir que o modelo é testado em novos dados.
A avaliação do modelo é acionada automaticamente após a conclusão da preparação com êxito. O processo de avaliação começa por utilizar o modelo preparado para prever intenções e entidades definidas pelo utilizador para expressões no conjunto de teste e compara-as com as etiquetas fornecidas (que estabelece uma linha de base de verdade). Os resultados são devolvidos para que possa rever o desempenho do modelo. Para avaliação, a compreensão da linguagem de conversação utiliza as seguintes métricas:
Precisão: mede a precisão/precisão do modelo. É a proporção entre os positivos corretamente identificados (verdadeiros positivos) e todos os positivos identificados. A métrica de precisão revela quantas classes previstas estão etiquetadas corretamente.
Precision = #True_Positive / (#True_Positive + #False_Positive)
Revocação: mede a capacidade do modelo de prever classes positivas reais. É a proporção entre os verdadeiros positivos previstos e o que foi realmente marcado. A métrica de resgate revela quantas das classes previstas estão corretas.
Recall = #True_Positive / (#True_Positive + #False_Negatives)
Classificação F1: a classificação F1 é uma função de Precisão e Revocação. É necessário quando procura um equilíbrio entre Precisão e Revocação.
F1 Score = 2 * Precision * Recall / (Precision + Recall)
A precisão, a revocação e a classificação F1 são calculadas para:
- Cada entidade separadamente (avaliação ao nível da entidade)
- Cada intenção separadamente (avaliação ao nível da intenção)
- Para o modelo coletivamente (avaliação ao nível do modelo).
As definições de precisão, revocação e avaliação são as mesmas para avaliações ao nível da entidade, ao nível da intenção e ao nível do modelo. No entanto, as contagens de Verdadeiros Positivos, Falsos Positivos e Falsos Negativos podem ser diferentes. Por exemplo, considere o seguinte texto.
Exemplo
- Faça uma resposta com muito obrigado.
- responder com dizer sim.
- Verifique o meu e-mail por favor.
- e-mail para Cynthia que o jantar da semana passada foi esplêndido.
- enviar e-mail para o Microfone
Estas são as intenções utilizadas: Responder,enviarEmail,readEmail. Estas são as entidades: contactName, mensagem.
O modelo pode fazer as seguintes predições:
Expressão | Intenção prevista | Intenção real | Entidade prevista | Entidade real |
---|---|---|---|---|
Faça uma resposta com muito obrigado | Responder | Responder | thank you very much como message |
thank you very much como message |
responder com dizer sim | sendEmail | Responder | -- | yes como message |
Verifique o meu e-mail. | readEmail | readEmail | -- | -- |
e-mail para cynthia que o jantar da semana passada foi esplêndido | Responder | sendEmail | dinner last week was splendid como message |
cynthia como contactName , dinner last week was splendid como message |
enviar e-mail para o Microfone | sendEmail | sendEmail | mike como message |
mike como contactName |
Avaliação ao nível da intenção para a intenção Responder
Chave | de palavras | Explicação |
---|---|---|
Verdadeiro Positivo | 1 | A expressão 1 foi corretamente prevista como Resposta. |
Falso Positivo | 1 | A expressão 4 foi erradamente prevista como Resposta. |
Falso Negativo | 1 | A expressão 2 foi erradamente prevista como sendEmail. |
Precisão = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5
Revocação = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
Classificação F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5
Avaliação ao nível da intenção para a intenção sendEmail
Chave | de palavras | Explicação |
---|---|---|
Verdadeiro Positivo | 1 | A expressão 5 foi corretamente prevista como sendEmail |
Falso Positivo | 1 | A expressão 2 foi erradamente prevista como sendEmail. |
Falso Negativo | 1 | A expressão 4 foi erradamente prevista como Resposta. |
Precisão = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5
Revocação = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
Classificação F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5
Avaliação ao nível da intenção para a intenção readEmail
Chave | de palavras | Explicação |
---|---|---|
Verdadeiro Positivo | 1 | A expressão 3 foi corretamente prevista como readEmail. |
Falso Positivo | 0 | -- |
Falso Negativo | 0 | -- |
Precisão = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1
Revocação = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 0) = 1
Classificação F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 1) / (1 + 1) = 1
Avaliação ao nível da entidade do contactName
Chave | de palavras | Explicação |
---|---|---|
Verdadeiro Positivo | 1 | cynthia foi corretamente previsto como contactName na expressão 4 |
Falso Positivo | 0 | -- |
Falso Negativo | 1 | mike foi erroneamente previsto como message na expressão 5 |
Precisão = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1
Revocação = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
Classificação F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 0.5) / (1 + 0.5) = 0.67
Avaliação ao nível da entidade de entidade para a entidade de mensagem
Chave | de palavras | 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 na expressão 5 |
Falso Negativo | 1 | yes não foi previsto como message na expressão 2 |
Precisão = #True_Positive / (#True_Positive + #False_Positive) = 2 / (2 + 1) = 0.67
Revocação = #True_Positive / (#True_Positive + #False_Negatives) = 2 / (2 + 1) = 0.67
Classificaçã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 | de palavras | Explicação |
---|---|---|
Verdadeiro Positivo | 6 | Soma de TP para todas as intenções e entidades |
Falso Positivo | 3 | Soma de FP para todas as intenções e entidades |
Falso Negativo | 4 | Soma de FN para todas as intenções e entidades |
Precisão = #True_Positive / (#True_Positive + #False_Positive) = 6 / (6 + 3) = 0.67
Revocação = #True_Positive / (#True_Positive + #False_Negatives) = 6 / (6 + 4) = 0.60
Classificaçã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 utilizada para a avaliação do desempenho do modelo, em que N é o número de entidades ou intenções. A matriz compara as etiquetas esperadas com as previstas pelo modelo. Isto dá uma visão holística do desempenho do modelo e dos tipos de erros que está a efetuar.
Pode utilizar a Matriz de confusão para identificar intenções ou entidades demasiado próximas umas das outras e muitas vezes se enganam (ambiguidade). Neste caso, considere unir estas intenções ou entidades. Se isso não for possível, considere adicionar mais exemplos etiquetados de intenções ou entidades para ajudar o modelo a diferenciar as mesmas.
A diagonal realçada na imagem abaixo são as entidades corretamente previstas, em que a etiqueta prevista é igual à etiqueta real.
Pode calcular as métricas de avaliação ao nível da intenção ou ao nível da entidade e ao nível do modelo a partir da matriz de confusão:
- Os valores na diagonal são os valores Verdadeiro Positivo de cada intenção ou entidade.
- A soma dos valores nas linhas de intenções ou entidades (excluindo 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.
Da mesma forma:
- O verdadeiro positivo do modelo é a soma dos verdadeiros Positivos para todas as intenções ou entidades.
- O falso positivo do modelo é a soma de 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 preparar o modelo, verá algumas orientações e recomendações sobre como melhorar o modelo. Recomenda-se que tenha um modelo que abranja todos os pontos na secção de orientação.
O conjunto de preparação tem dados suficientes: quando uma intenção ou entidade tem menos de 15 instâncias etiquetadas nos dados de preparação, pode levar a uma menor precisão, porque o modelo não está a ser preparado adequadamente nessa intenção. Neste caso, considere adicionar mais dados etiquetados no conjunto de preparação. Só deve considerar adicionar mais dados etiquetados à sua entidade se a sua entidade tiver um componente aprendido. Se a sua entidade for definida apenas por componentes de lista, pré-criados e regex, esta recomendação não é aplicável.
Todas as intenções ou entidades estão presentes no conjunto de testes: quando os dados de teste não têm instâncias etiquetadas 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 no seu modelo para garantir que tudo está a ser testado.
Distinção pouco clara entre intenções ou entidades: quando os dados são semelhantes para diferentes intenções ou entidades, pode levar a uma menor precisão, uma vez que podem ser frequentemente mal classificados entre si. Reveja as seguintes intenções e entidades e considere intercalá-las se forem semelhantes. Caso contrário, adicione mais exemplos para os distinguir melhor uns dos outros. Pode verificar o separador matriz de confusão para obter mais orientações. Se estiver a ver duas entidades constantemente a serem previstas para os mesmos intervalos porque partilham a mesma lista, componentes pré-criados ou regex, certifique-se de que adiciona um componente aprendido para cada entidade e o torna necessário. Saiba mais sobre os componentes de entidades.