共用方式為


交談語言理解模型的評估計量

資料集分成兩個部分:一組用於定型,而一組用於測試。 定型集是用來定型模型,而測試集則用來在定型之後作為模型的測試,以計算模型效能和評估。 系統不會透過定型程序將測試集導入模型,以確保已針對新資料上測試模型。

成功完成定型之後,就會自動觸發模型評估。 評估流程會使用已定型的模型,來針對測試集中的表達預測使用者定義的意圖和實體,並將其與已提供的標記比較 (這會建立事實的基準)。 結果會傳回,讓您可以檢閱模型的效能。 若要進行評估,交談語言理解會使用下列計量:

  • 精確度:測量模型的精確/正確程度。 這是正確識別的肯定 (確判為真) 和所有識別的肯定之間的比率。 精確度計量會顯示已正確標記的預測類別數目。

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

  • 召回率:測量模型預測實際肯定類別的能力。 這是預測的確判為真與實際標記項目之間的比率。 召回率計量會顯示有多少預測類別是正確的。

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

  • F1 分數:F1 分數是精確度和召回率的函式。 當您在精確度和召回率之間尋求平衡時,需要用到此值。

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

精確度、重新叫用及 F1 分數的計算方式如下:

  • 個別針對每個實體 (實體層級評估)
  • 個別針對每個意圖 (意圖層級評估)
  • 集體針對模型 (模型層級評估)。

對於實體層級、意圖層級和模型層級的評估而言,精確度、重新叫用和評估的定義都相同。 不過,確判為真、誤判為真和誤判為假的計數,可能都不同。 例如,請考慮下列文字。

範例

  • 以「十分感謝您」做出回應。
  • 並回覆「是」。
  • 請檢查我的電子郵件。
  • 傳送電子郵件告訴 Cynthia 上週的晚餐超讚。
  • 請傳送電子郵件給 Mike

以下是已使用的意圖:回覆、sendEmail 和 readEmail。 以下是實體:contactName 和訊息。

該模型可能會進行下列預測:

表達 預測的意圖 實際意圖 預測的實體 實際實體
以「十分感謝您」做出回應 回覆 回覆 thank you very much 作為 message thank you very much 作為 message
並回覆「是」 sendEmail 回覆 -- yes 作為 message
請檢查我的電子郵件 readEmail readEmail -- --
傳送電子郵件告訴 Cynthia 上週的晚餐超讚 回覆 sendEmail dinner last week was splendid 作為 message cynthia 作為 contactName,以 dinner last week was splendid 作為 message
請傳送電子郵件給 Mike sendEmail sendEmail mike 作為 message mike 作為 contactName

回覆意圖的意圖層級評估

答案 Count 說明
真肯定 1 表達 1 已正確預測為回覆。
誤判 1 表達 4 錯誤地預測為回覆。
誤否定 1 表達 2 錯誤地預測為 sendEmail。

精確度 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

召回率 = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

F1 分數 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

sendEmail 意圖的意圖層級評估

答案 Count 說明
真肯定 1 表達 5 已正確預測為 sendEmail
誤判 1 表達 2 錯誤地預測為 sendEmail。
誤否定 1 表達 4 錯誤地預測為回覆。

精確度 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

召回率 = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

F1 分數 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

readEmail 意圖的意圖層級評估

答案 Count 說明
真肯定 1 表達 3 已正確預測為 readEmail。
誤判 0 --
誤否定 0 --

精確度 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1

召回率 = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 0) = 1

F1 分數 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 1) / (1 + 1) = 1

contactName 實體的實體層級評估

答案 Count 說明
真肯定 1 在表達 4 中,cynthia 正確預測為 contactName
誤判 0 --
誤否定 1 在表達 5 中,mike 錯誤地預測為 message

精確度 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1

召回率 = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

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

訊息實體的實體層級評估

答案 Count 說明
真肯定 2 在表達 1 中,thank you very much 正確預測為 message,且在表達 4 中,dinner last week was splendid 正確預測為 message
誤判 1 在表達 5 中,mike 錯誤地預測為 message
誤否定 1 在表達 2 中, yes 未預測為 message

精確度 = #True_Positive / (#True_Positive + #False_Positive) = 2 / (2 + 1) = 0.67

召回率 = #True_Positive / (#True_Positive + #False_Negatives) = 2 / (2 + 1) = 0.67

F1 分數 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.67) / (0.67 + 0.67) = 0.67

集體模型的模型層級評估

答案 Count 說明
真肯定 6 所有意圖和實體的 TP 總和
誤判 3 所有意圖和實體的 FP 總和
誤否定 4 所有意圖和實體的 FN 總和

精確度 = #True_Positive / (#True_Positive + #False_Positive) = 6 / (6 + 3) = 0.67

召回率 = #True_Positive / (#True_Positive + #False_Negatives) = 6 / (6 + 4) = 0.60

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

混淆矩陣

混淆矩陣是用於模型效能評估的 N x N 矩陣,其中 N 是實體或意圖的數目。 矩陣會比較預期的標籤與模型所預測的標籤。 這可讓您全面了解模型的表現,以及所犯的錯誤種類。

您可以使用混淆矩陣來識別彼此太接近,且通常會弄錯 (模稜兩可) 的意圖或實體。 在此情況下,請考慮將這些意圖或實體合併在一起。 如果無法這麼做,請考慮針對兩個意圖或實體,新增更多有標記的範例,以協助模型區分兩者。

下圖中反白顯示的對角線是正確預測的實體,其中預測的標記與實際標記相同。

範例混淆矩陣的螢幕擷取畫面。

您可以從混淆矩陣計算意圖層級或實體層級,以及模型層級的評估計量:

  • 對角線中的值是每個意圖或實體的「確判為真」值。
  • 意圖或實體資料列中,值的加總 (不包括對角線) 是模型的「誤判為真」。
  • 意圖或實體資料行中,值的加總 (不包括對角線) 是模型的「誤判為假」。

類似地,

  • 模型的「確判為真」是所有意圖或實體的「確判為真」加總。
  • 模型的「誤判為真」是所有意圖或實體的「誤判為真」加總。
  • 模型的「誤判為假」是所有意圖或實體的「誤判為假」加總。

指引

定型模型之後,您會看到有關如何改善模型的一些指引和建議。 建議您建立涵蓋指引一節中每個點的模型。

  • 定型集有足夠的資料:當意圖或實體在定型資料中具有少於 15 個標記的實例時,可能會導致精確度降低,因為模型未充分定型該意圖。 在此情況下,請考慮在定型集中新增更多已標記的資料。 如果您的實體具有已學習的元件,您就應該考慮將更多標籤的資料新增至實體。 如果您的實體只由 list、prebuilt 和 RegEx 元件定義,則此建議不適用。

  • 所有意圖或實體都存在於測試集中:當測試資料缺少意圖或實體的標記實例時,模型評估會因為未測試的案例而較不全面。 請考慮針對模型中的每個意圖和實體設定測試資料,以確保所有專案都會經過測試。

  • 意圖或實體之間不清楚的差異:當不同意圖或實體的資料類似時,可能會導致較低的精確度,因為它們可能經常被誤分類為彼此。 檢閱下列意圖和實體,並考慮將它們合併。 否則,請新增更多範例,進一步加以區分。 您可以查看 [混淆矩陣] 索引標籤以取得更多指引。 如果您看到兩個實體持續預測相同的範圍,因為它們共用相同的清單、預建或 Regex 元件,則請務必為每個實體新增 學習 的元件,並使其 成為必要專案。 深入瞭解 實體元件

下一步

在 Language Studio 中定型模型