Skip to content

異構標註者覆蓋

為不同條目分配不同數量的標註者。配置預設上限、用於品質監控的分層重疊樣本、自適應分歧提升、每位標註者配額以及自動裁決路由。

異構覆蓋讓你能夠為不同條目分配不同數量的標註者,而不是採用統一上限。常見的研究設計是:對大多數條目使用一名標註者,並在 5–10% 的樣本上讓兩到三名標註者重疊以監控品質。Potato 通過 num_annotators_per_itemper_annotator_quota 配置塊來表達這一點。

每條目標註者上限

num_annotators_per_item 是規範鍵。它接受單個整數作為統一上限,或接受一個帶預設值、重疊樣本以及可選自適應提升的結構化對映:

yaml
num_annotators_per_item:
  default: 1
  overlap_sample:
    fraction: 0.1
    count: 3
    stratify_by: domain
    seed: 42
  adaptive:
    enabled: true
    disagreement_threshold: 0.5
    boost_to: 3
  min: 1

max_annotations_per_item 現在是 num_annotators_per_item: <int> 的已棄用別名。

重疊樣本

overlap_sample 塊會在一個確定性的條目子集上提高上限以監控品質。取樣在啟動時進行一次,所選條目會被打上 required_annotations 標記,以便分配邏輯將它們視為高覆蓋條目。

欄位類型描述
fraction(0, 1] 內的浮點數要取樣的條目比例
countint ≥ 2取樣條目的標註者上限(必須超過 default
stratify_by字串(可選)用於對樣本進行分層的條目資料欄位
seedint(可選)RNG 種子;預設為全域 random_seed

設定 stratify_by 時,比例會按層應用,因此每個類別都按比例貢獻。

自適應提升

自適應提升會擴大那些早期標註者出現分歧的條目的上限。一旦某個條目至少有兩個標註,且其分歧分數超過 disagreement_threshold,其上限就會提升到 boost_to,並且該條目會重新進入分配佇列。每個條目僅提升一次。

每位標註者配額

per_annotator_quota 控制為每位標註者分配多少條目,獨立於每條目上限:

yaml
per_annotator_quota:
  default: 100
  by_user:
    alice: 30
  by_user_role:
    expert: 30
    novice: 200
 
user_roles:
  alice: expert
  carol: novice

解析順序:by_user[uid]by_user_role[user_roles[uid]]default

裁決自動路由

當裁決塊啟用時,達到上限的重疊樣本條目會被自動評分,如果一致性低於 agreement_threshold,就會被推入裁決佇列。低品質條目會在樣本飽和時立即顯現,而不必等到裁決者手動重建佇列。

yaml
adjudication:
  enabled: true
  adjudicator_users: [admin]
  min_annotations: 2
  agreement_threshold: 0.75

檢查一致性

一旦重疊樣本條目飽和,一致性統計資料便可在 /admin/iaa 處獲取,它會計算適合每個模式 annotation_type 的指標集——例如,名義型方案使用 Cohen's 和 Fleiss' kappa,序數型方案使用加權 kappa,跨度(span)使用詞元級 kappa 加上 span F1。有關這些指標含義的說明,請參見標註者間一致性指南

示例

一個可執行的演示位於 examples/advanced/heterogeneous-coverage/。從倉庫根目錄執行:

bash
python potato/flask_server.py start examples/advanced/heterogeneous-coverage/config.yaml -p 8000

它使用了橫跨兩個領域的 20 個條目,按領域分層抽取 20% 用於 3 名標註者重疊,在閾值 0.5 處啟用自適應提升,定義了兩個專長層級,並將低一致性條目路由到裁決。

相關

有關實現細節,請參見源文件