Metriche di valutazione per i modelli di comprensione del linguaggio di conversazione

Il set di dati è suddiviso in due parti: un set per il training e un set per i test. Il set di training viene usato per eseguire il training del modello, mentre il set di test viene usato come test per il modello dopo il training per calcolare le prestazioni e la valutazione del modello. Il set di test non viene introdotto nel modello tramite il processo di training per verificare che il modello venga testato sui nuovi dati.

La valutazione del modello viene attivata automaticamente dopo che è stato eseguito il training correttamente. Il processo di valutazione inizia usando il modello sottoposto a training per stimare gli intenti e le entità definiti dall'utente per le espressioni nel set di test. Quindi il processo li confronta con i tag forniti per stabilire una linea di base di verità. I risultati vengono restituiti in modo da consentire l’esame delle prestazioni del modello. Per la valutazione, la comprensione del linguaggio conversazionale usa le metriche seguenti:

  • Precisione: misura la precisione o l'accuratezza del modello. È il rapporto tra i positivi identificati correttamente (veri positivi) e tutti i positivi identificati. La metrica Precision rivela quante delle classi stimate sono etichettate correttamente.

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

  • Richiamo: misura la capacità del modello di stimare le classi positive effettive. È il rapporto tra i veri positivi stimati e ciò che è stato contrassegnato. La metrica di richiamo rivela il numero di classi stimate corrette.

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

  • Punteggio F1: il punteggio F1 è una funzione della precisione e del richiamo. È necessario quando l’obiettivo è bilanciare precisione e richiamo.

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

La precisione, il richiamo e il punteggio F1 vengono calcolati per:

  • Ogni entità separatamente (valutazione a livello di entità).
  • Ogni intento separatamente (valutazione a livello di intento).
  • Per il modello collettivamente (valutazione a livello di modello).

Le definizioni di precisione, richiamo e valutazione sono le stesse per le valutazioni a livello di entità, a livello di intento e a livello di modello. Tuttavia, i conteggi per veri positivi, falsi positivi e falsi negativi possono variare. Si consideri ad esempio il testo seguente.

Esempio

  • Rispondere con un "grazie mille".
  • Rispondi con "sì".
  • Controlla il mio messaggio di posta elettronica.
  • Scrivi un'e-mail a Cynthia per dire che la cena della settimana scorsa è stata splendida.
  • Invia un'e-mail a Mike.

Gli intenti usati sono Reply, sendEmail e readEmail. Le entità sono contactName e message.

Il modello potrebbe eseguire le stime seguenti:

Espressione Intento stimato Intento effettivo Entità stimata Entità effettiva
Rispondere con un "grazie mille" Rispondi Rispondi thank you very much come message thank you very much come message
Rispondi con "sì" sendEmail Rispondi -- yes come message
Controlla il mio messaggio di posta elettronica readEmail readEmail -- --
Scrivi un'e-mail a Cynthia per dire che la cena della settimana scorsa è stata splendida Rispondi sendEmail dinner last week was splendid come message cynthia come contactName, dinner last week was splendid come message
Invia un'e-mail a Mike sendEmail sendEmail mike come message mike come contactName

Valutazione a livello di intento per l’intento di Replica

Chiave Conteggio Spiegazione
Vero positivo 1 L'espressione 1 è stata stimata correttamente come Reply.
Falso positivo 1 L'espressione 4 è stata stimata erroneamente come Reply.
Falso negativo 1 L'espressione 2 è stata stimata erroneamente come sendEmail.

Precisione = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

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

Punteggio F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

Valutazione a livello di intento per l’intento sendEmail

Chiave Conteggio Spiegazione
Vero positivo 1 L'espressione 5 è stata stimata correttamente come sendEmail.
Falso positivo 1 L'espressione 2 è stata stimata erroneamente come sendEmail.
Falso negativo 1 L'espressione 4 è stata stimata erroneamente come Reply.

Precisione = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

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

Punteggio F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

Valutazione a livello di intento per l’intento readEmail

Chiave Conteggio Spiegazione
Vero positivo 1 L'espressione 3 è stata stimata correttamente come readEmail.
Falso positivo 0 --
Falso negativo 0 --

Precisione = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1

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

Punteggio F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 1) / (1 + 1) = 1

Valutazione a livello di entità per l'entità contactName

Chiave Conteggio Spiegazione
Vero positivo 1 cynthia è stato stimato correttamente come contactName nell'espressione 4.
Falso positivo 0 --
Falso negativo 1 mike è stato erroneamente stimato come message nell'espressione 5.

Precisione = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1

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

Punteggio F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 0.5) / (1 + 0.5) = 0.67

Valutazione a livello di entità per l'entità messaggio

Chiave Conteggio Spiegazione
Vero positivo 2 thank you very much è stato stimato correttamente come message nell'espressione 1 e dinner last week was splendid è stato stimato correttamente come message nell'espressione 4.
Falso positivo 1 mike è stato erroneamente stimato come message nell'espressione 5.
Falso negativo 1 yes non è stato stimato come message nell'espressione 2.

Precisione = #True_Positive / (#True_Positive + #False_Positive) = 2 / (2 + 1) = 0.67

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

Punteggio F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.67) / (0.67 + 0.67) = 0.67

Valutazione a livello di modello per il modello collettivo

Chiave Conteggio Spiegazione
Vero positivo 6 Somma dei veri positivi per tutti gli intenti e le entità.
Falso positivo 3 Somma dei falsi positivi per tutti gli intenti e le entità.
Falso negativo 4 Somma dei falsi negativi per tutti gli intenti e le entità.

Precisione = #True_Positive / (#True_Positive + #False_Positive) = 6 / (6 + 3) = 0.67

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

Punteggio F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.60) / (0.67 + 0.60) = 0.63

Matrice di confusione

Una matrice di confusione è una matrice N x N usata per la valutazione delle prestazioni del modello, dove N è il numero di entità o intenti. La matrice confronta le etichette previste con quelle stimate dal modello. La matrice offre una visione olistica delle prestazioni del modello e dei tipi di errori che sta facendo.

È possibile usare la matrice di confusione per identificare gli intenti o entità troppi vicini tra loro che vengono spesso erroneamente classificati (ambiguità). In questo caso, prendere in considerazione l'unione di questi intenti o entità. Se l’unione non è possibile, valutare l’assegnazione di etichette di entrambi gli intenti o entità per facilitare la loro differenziazione nel modello.

La diagonale evidenziata nell'immagine seguente mostra l'entità stimata correttamente, in cui il tag stimato corrisponde al tag effettivo.

Screenshot che mostra un esempio di matrice di confusione.

È possibile calcolare le metriche di valutazione a livello di intento o a livello di entità e a livello di modello dalla matrice di confusione:

  • I valori nella diagonale sono i valori veri positivi di ogni intento o entità.
  • La somma dei valori nelle righe dell’intento o delle entità (esclusa la diagonale) è il falso positivo del modello.
  • La somma dei valori nelle colonne dell’intento o delle entità (esclusa la diagonale) è il falso negativo del modello.

Allo stesso modo:

  • Il vero positivo del modello è la somma dei veri positivi di tutti gli intenti o le entità.
  • Il falso positivo del modello è la somma di falsi positivi di tutti gli intenti o entità.
  • Il falso negativo del modello è la somma di falsi negativi di tutti gli intenti o entità.

Indicazioni

Dopo aver eseguito il training del modello, vengono visualizzate alcune indicazioni e consigli su come migliorare il modello. È consigliabile disporre di un modello che copre ogni punto nella sezione delle linee guida.

  • set di training dispone di dati sufficienti: quando un intento o un’entità ha meno di 15 istanze etichettate nei dati di training, l’accuratezza può essere minore a causa del fatto che il modello non viene sottoposto a training adeguato in tale intento. In questo caso, prendere in considerazione l'aggiunta di altri dati etichettati nel set di training. È consigliabile prendere in considerazione l'aggiunta di altri dati etichettati all'entità solo se l'entità ha un componente appreso. Se l'entità è definita solo da un elenco, da componenti predefiniti e regex, questa raccomandazione non si applica.
  • Tutte le finalità o le entità sono presenti nel set di test: quando i dati di test non dispongono di istanze etichettate per un intento o un'entità, la valutazione del modello è meno completa a causa di scenari non verificati. Prendere in considerazione la possibilità di avere dati di test per ogni finalità e entità nel modello per assicurarsi che tutto venga testato.
  • Distinzione poco chiara tra finalità o entità: quando i dati sono simili per intenti o entità diverse, può causare una minore accuratezza perché potrebbero essere spesso erroneamente classificati tra loro. Esaminare gli intenti e le entità seguenti e valutare la possibilità di unirle se sono simili. In caso contrario, aggiungere altri esempi per distinguerli meglio l'uno dall'altro. Per materiale sussidiario, è possibile controllare la Matrice di confusione. Se vengono visualizzate due entità costantemente stimate per gli stessi intervalli perché condividono lo stesso elenco, i componenti predefiniti o regex, assicurarsi di aggiungere un componente appreso per ogni entità e renderlo necessario. Altre informazioni sui componenti di entità.