Skip to content

標註者間一致性詳解

一份關於標註者間一致性的實用指南,涵蓋百分比一致率、Cohen kappa、Fleiss kappa 與 Krippendorff alpha,說明何時使用各項指標,以及 Potato 如何報告它們。

標註者間一致性(IAA)衡量獨立標註者給出相同標籤的頻率。它是證明標註任務定義清晰、所得標籤可信的標準證據。 一致性偏低通常說明標註指南不夠清晰,而非標註者粗心。

這一主題的總稱是評分者間信度。Potato 會在管理後臺中即時計算一致性,參見品質控制。

為什麼原始百分比一致率還不夠

最簡單的指標是百分比一致率:標註者給出完全相同標籤的條目所佔比例。問題在於,部分一致是偶然發生的。如果兩位標註者都有 90% 的機率選擇"正面",那麼即便隨機標註,他們大多數時候也會一致。經過偶然性校正的指標能解決這一問題。

經過偶然性校正的係數具有如下形式:

text
        P_observed − P_expected
  κ =  ─────────────────────────
            1 − P_expected

其中 P_observed 是實際一致率,P_expected 是偶然情況下預期的一致率。取值為 1 表示完全一致,0 表示與隨機水平相當。

你真正會用到的三種指標

  • Cohen kappa:兩位標註者、分類標籤。成對標註的經典選擇。
  • Fleiss kappa:多於兩位標註者、分類標籤,且不同條目可能由不同評分者判定。
  • Krippendorff alpha:最通用的選擇。它適用於任意數量的標註者,能處理缺失資料,並支援名義、有序、等距和等比資料。這是 Potato 預設報告的指標。

成對的簡單分類任務用 kappa;當標註者較多、重疊不完整,或標籤為有序/連續值(此時"相差一級"應比"相差四級"扣分更少)時,則選用 Krippendorff alpha。

三名標註者時用 Fleiss' kappa 還是 Krippendorff's alpha?

如果三名標註者都標註了每一條資料,且標籤是無序類別,兩種係數都說得過去。如果有任何一條資料缺少標籤,或者標籤是有序的,就用 Krippendorff's alpha。

兩者的差別在於各自的假設:

  • 缺失標籤。 Fleiss' kappa 要求每條資料的評分數相同。如果三名標註者中有一人跳過了某條資料,你就得把這條資料刪掉。Krippendorff's alpha 會用上它拿到的每一個評分。
  • 測量層次。 Fleiss' kappa 把標籤當作無序的,因此在 1–5 分量表上,4 對 5 與 1 對 5 算作同樣的分歧。Krippendorff's alpha 使用距離度量(名義、定序、定距或定比),把相近的差異算作較小的分歧。
  • 小樣本。 Krippendorff's alpha 含有小樣本校正,所以在只有幾十條資料的試標中,即使資料同時適合兩者,兩者的結果也可能拉開。

在完整的名義資料上、資料量足夠時,兩者通常很接近。報告你所在領域慣用的那一個,並在論文中寫明係數和度量,因為"一致性為 0.72"在兩者之下含義不同。

Potato 會同時報告多個係數,而不是讓你事先只選一個。分類型標註方案會並列給出百分比一致率、Cohen's kappa、Fleiss' kappa 和名義 alpha,有序型標註方案則給出線性加權 kappa、二次加權 kappa、Spearman's rho 和定序 alpha。在 2.9 版本之前,帶文字標籤的 Likert 量表在計算定序 alpha 時按字母順序排列文字標籤,實際上成了名義 alpha,所以如果你用更早的版本報告過帶文字標籤量表的定序一致性,請重新計算。在 2.10.1 及更早的版本中,定序 alpha 按名次之間的簡單差值給分歧加權,這不是 Krippendorff 的定序度量。從 2.10.2 起,它與計算器給出的定序 alpha 一致,所以用更早版本報告過的定序 alpha 都應重新計算。你也可以用瀏覽器中的一致性計算器檢查一張標籤表,它會同時計算名義、定序和定距 alpha,以及 Cohen's kappa 和 Fleiss' kappa。

如何解讀這個數值

並不存在通用的判定閾值,但對於 alpha/kappa,常見的粗略參考是:

  • ≥ 0.80:足以信賴。
  • 0.67–0.80:可用於得出初步結論,但需排查分歧。
  • < 0.67:在信任這些標籤之前,先重新審視標註指南。

把這些數值當作進一步排查的提示,而非"通過/不通過"的硬性門檻。務必檢視是哪些條目和哪些標籤導致了分歧。

在 Potato 中進行測量

讓標註者在一個共享子集上重疊標註,然後啟用一致性報告:

yaml
agreement_metrics:
  enabled: true
  min_overlap: 2          # an item counts once this many annotators have answered it
  refresh_interval: 60    # seconds between dashboard updates

對於跨度(span)和結構化任務,應在你關心的層級上測量一致性,因為文件級指標會掩蓋邊界上的分歧。對於跨度標註方案,Potato 會報告詞元級 kappa、精確匹配和部分匹配的跨度 F1、基於逐字元標籤的 Krippendorff's alpha,以及 Mathet 的 gamma 的簡化形式,這樣你就能把對標籤的分歧和對跨度起點的分歧區分開。

當一致性偏低時

  1. 閱讀存在分歧的條目:是標註指南含糊,還是條目本身確實困難?
  2. 收緊定義,並把疑難案例作為示例補充進去。參見撰寫標註指南。
  3. 重新試標。如果在真正主觀的任務上一致性仍然偏低,可考慮直接記錄分歧本身,而不是強求唯一答案。

常見問題

以下問題涉及 Krippendorff's alpha 的取值範圍、它的計算方法,以及只有兩名標註者時的一致性。

Krippendorff's alpha 會小於 -1 嗎?

不會。當標註者之間的分歧多於偶然情況下的預期時,alpha 會低於 0,並且會趨近 -1 但不會達到 -1。兩名標註者在 N 個條目上全部不一致、且兩個標籤使用頻率相同時,alpha 恰好等於 -1 + 1/N,5 個條目時為 -0.8,20 個條目時為 -0.95。Krippendorff (2011) 給出的與信度相關的取值範圍是 0 到 1,並把低於 0 的值歸因於系統性分歧或抽樣誤差。明顯為負的 alpha 說明存在系統性分歧,例如標註者把量表的方向理解反了,這時應當檢查標註指南,而不是直接報告這個數值。

Krippendorff's alpha 怎麼計算?

alpha 等於 1 減去觀測分歧與偶然預期分歧之比。觀測分歧來自同一條目上所得標籤兩兩組成的配對,預期分歧來自從研究中全部標籤裡抽取的配對,並由距離度量(名義、定序、定距或定比)決定每處不一致計多少分。Potato 在 min_overlap 名標註者標註了同一條目之後,會在管理後臺中按標註方案分別計算 alpha;一致性計算器則在瀏覽器中根據一張標籤表計算名義、定序和定距 alpha。

只有兩名標註者能計算標註者間一致性嗎?

能。Cohen's kappa 正是為恰好兩名標註者、分類標籤的情形設計的,Krippendorff's alpha 在兩名標註者和更多標註者時都適用。兩種係數都要求這兩名標註者獨立標註了相同的條目,而且條目很少時估計值不穩定,所以報告係數時要同時報告條目數。

延伸閱讀