資料集分成兩個部分:一組用於定型,而一組用於測試。 定型集是用來定型模型,而測試集則用來在定型之後作為模型的測試,以計算模型效能和評估。 系統不會透過定型程序將測試集導入模型,以確保已針對新資料上測試模型。
成功完成定型之後,就會自動觸發模型評估。 評估程序會使用已定型的模型來針對測試集中的文件預測使用者定義的實體,並將其與所提供的資料標籤比較 (而這會建立事實的基準)。 系統會傳回結果,以便您可以檢閱模型的效能。 針對評估,自訂 NER 會使用下列計量:
精確度:測量模型的精確/正確程度。 它是正確識別的陽性(真陽性)和所有已識別的陽性之間的比率。 精確度計量會顯示已正確標記的預測實體數目。
Precision = #True_Positive / (#True_Positive + #False_Positive)召回率:測量模型預測實際肯定類別的能力。 這是預測的真陽性與已標記數據之間的比例。 重新叫用計量會顯示有多少預測實體是正確的。
Recall = #True_Positive / (#True_Positive + #False_Negatives)F1 分數:F1 分數是您在精確度和召回率之間尋求平衡時使用的函數。
F1 Score = 2 * Precision * Recall / (Precision + Recall)
附註
精確度、召回率和 F1 分數會針對每個實體個別計算 (實體層級 評估) ,以及模型的整體計算 (模型層級 評估)。
模型層級和實體層級的評估計量
每個實體的精確度、重新叫用率及 F1 分數會分別針對每個實體 (實體層級評估) 計算,也會針對整個模型 (模型層級評估) 計算。
對於實體層級和模型層級的評估而言,精確度、重新叫用率和評估的定義都相同。 不過,「確判為真」、「誤判為真」和「誤判為假」的計數可能會有所不同。 例如,請參閱下列文字。
範例
此合約的甲方為 John Smith,居住在 5678 Main Rd., City of Frederick, state of Nebraska。 乙方是 Forrest Ray,居住在 123-345 Integer Rd., City of Corona, state of New Mexico。 還有范妮·托馬斯 (Fannie Thomas),居住在科羅拉多州科羅拉多斯普林斯市河路 7890 號。
從此文字擷取實體的模型可能會有下列預測:
| 單位 | 預測與 | 實際類型 |
|---|---|---|
| 約翰·史密斯 | 個人 | 個人 |
| Frederick | 個人 | City |
| Forrest | City | 個人 |
| 芬妮·托馬斯 | 個人 | 個人 |
| 科羅拉多斯普林斯 | City | City |
person 實體的實體層級評估
對於 person 實體,模型會有下列實體層級評估:
| Key | Count | 說明 |
|---|---|---|
| 真肯定 | 2 | John Smith 和 Fannie Thomas 正確地預測為 person。 |
| 誤判 | 1 | 弗雷德里克 被錯誤地預測為 人 ,而它應該是 城市。 |
| 誤否定 | 1 | 福雷斯特 被錯誤地預測為 城市 ,而它應該是 人。 |
-
精確度:
#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
city 實體的實體層級評估
對於 city 實體,模型會有下列實體層級評估:
| Key | Count | 說明 |
|---|---|---|
| 真肯定 | 1 | Colorado Springs 正確地預測為 city。 |
| 誤判 | 1 | 福雷斯特 被錯誤地預測為 城市 ,而它應該是 人。 |
| 誤否定 | 1 | 弗雷德里克 被錯誤地預測為 人 ,而它應該是 城市。 |
-
精確度 =
#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
集體模型的模型層級評估
此模型會對整個模型進行下列評估:
| Key | Count | 說明 |
|---|---|---|
| 真肯定 | 3 | John Smith 和 Fannie Thomas 正確地預測為 person。 Colorado Springs 正確地預測為 city。 此數字是所有實體的真陽性總和。 |
| 誤判 | 2 | 福雷斯特 被錯誤地預測為 城市 ,而它應該是 人。 弗雷德里克 被錯誤地預測為 人 ,而它應該是 城市。 此數字是所有實體的誤判為真加總。 |
| 誤否定 | 2 | 福雷斯特 被錯誤地預測為 城市 ,而它應該是 人。 弗雷德里克 被錯誤地預測為 人 ,而它應該是 城市。 此數字是所有實體的假陰性總和。 |
-
精確度 =
#True_Positive / (#True_Positive + #False_Positive)=3 / (3 + 2) = 0.6 -
重新叫用率 =
#True_Positive / (#True_Positive + #False_Negatives)=3 / (3 + 2) = 0.6 -
F1 分數 =
2 * Precision * Recall / (Precision + Recall)=(2 * 0.6 * 0.6) / (0.6 + 0.6) = 0.6
解讀實體層級的評估計量
那麼,對於特定實體而言,高精確度或高重新叫用率實際上的意思是什麼?
| 召回 | Precision | 解讀 |
|---|---|---|
| 高 | 高 | 模型識別了實體。 |
| 低 | 高 | 模型無法一律擷取此實體,但擷取時具有很高的置信度。 |
| 高 | 低 | 模型很好地提取了這個實體;然而,它的置信度很低,因為它有時被提取為另一種類型。 |
| 低 | 低 | 模型不會識別此實體類型,因為它通常不會擷取。 即使正常擷取,信賴度也不高。 |
指引
定型模型之後,您會看到一些如何改善模型的指引和建議。 建議使用涵蓋指導部分所有要點的模型。
訓練集有足夠的資料:當實體類型在訓練資料中的標記範例少於 15 個時,模型的準確度會下降。 出現這種結果是因為它缺乏對這些案例的充分接觸。 在此情況下,請考慮在定型集中新增更多已標記的資料。 您可以查看 [資料散發] 索引標籤以取得更多指引。
所有實體類型都存在於測試集中:當測試資料缺少實體類型的標記實例時,模型的測試效能可能會因為未測試的案例而變得不那麼全面。 您可以查看 [測試集資料散發] 索引標籤以取得更多指引。
實體類型在訓練集和測試集中保持平衡:當取樣偏差導致實體類型頻率表示不準確時,由於模型預期該實體類型出現太頻繁或太少,因此可能會導致準確性降低。 您可以查看 [資料散發] 索引標籤以取得更多指引。
實體類型在訓練集和測試集之間平均分佈:當定型集和測試集之間的實體類型混合不相符時,由於模型的訓練方式與測試方式不同,可能會導致測試準確性降低。 您可以查看 [資料散發] 索引標籤以取得更多指引。
定型集中的實體類型之間的區別不明顯:當定型資料與多個實體類型類似時,可能會導致較低的精確度,因為實體類型可能經常被誤分類為彼此。 檢閱下列實體類型,如果它們相似,請考慮合併它們。 否則,請新增更多範例,進一步加以區分。 您可以查看 [混淆矩陣] 索引標籤以取得更多指引。
混淆矩陣
混淆矩陣是用於模型效能評估的 N x N 矩陣,其中 N 是實體的數目。 矩陣會比較預期的標籤與模型所預測的標籤。 此矩陣可讓您全面瞭解模型的執行情況,以及它所犯的錯誤類型。
您可以使用混淆矩陣來識別彼此太接近且通常會弄錯 (模稜兩可) 的實體。 在此情況下,請考慮將這些實體類型合併在一起。 如果無法這麼做,請考慮針對兩個實體新增更多有標籤的範例,以協助模型加以區分。
下圖中醒目提示的對角線是正確預測的實體,其中預測的標籤與實際標籤相同。
您可以從混淆矩陣計算實體層級和模型層級的評估計量:
- 對角線中的值是每個實體的「確判為真」值。
- 實體資料列中的值加總 (不包括對角線) 是模型的「誤判為真」。
- 實體資料行中的值加總 (不包括對角線) 是模型的「誤判為假」。
同樣地,
- 模型的「確判為真」是所有實體的「確判為真」加總。
- 模型的「誤判為真」是所有實體的「誤判為真」加總。
- 模型的「誤判為假」是所有實體的「誤判為假」加總。