異構標註者覆蓋
為不同條目分配不同數量的標註者。配置預設上限、用於品質監控的分層重疊樣本、自適應分歧提升、每位標註者配額以及自動裁決路由。
異構覆蓋讓你能夠為不同條目分配不同數量的標註者,而不是採用統一上限。常見的研究設計是:對大多數條目使用一名標註者,並在 5–10% 的樣本上讓兩到三名標註者重疊以監控品質。Potato 通過 num_annotators_per_item 和 per_annotator_quota 配置塊來表達這一點。
每條目標註者上限
num_annotators_per_item 是規範鍵。它接受單個整數作為統一上限,或接受一個帶預設值、重疊樣本以及可選自適應提升的結構化對映:
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: 1max_annotations_per_item 現在是 num_annotators_per_item: <int> 的已棄用別名。
重疊樣本
overlap_sample 塊會在一個確定性的條目子集上提高上限以監控品質。取樣在啟動時進行一次,所選條目會被打上 required_annotations 標記,以便分配邏輯將它們視為高覆蓋條目。
| 欄位 | 類型 | 描述 |
|---|---|---|
fraction | (0, 1] 內的浮點數 | 要取樣的條目比例 |
count | int ≥ 2 | 取樣條目的標註者上限(必須超過 default) |
stratify_by | 字串(可選) | 用於對樣本進行分層的條目資料欄位 |
seed | int(可選) | RNG 種子;預設為全域 random_seed |
設定 stratify_by 時,比例會按層應用,因此每個類別都按比例貢獻。
自適應提升
自適應提升會擴大那些早期標註者出現分歧的條目的上限。一旦某個條目至少有兩個標註,且其分歧分數超過 disagreement_threshold,其上限就會提升到 boost_to,並且該條目會重新進入分配佇列。每個條目僅提升一次。
每位標註者配額
per_annotator_quota 控制為每位標註者分配多少條目,獨立於每條目上限:
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,就會被推入裁決佇列。低品質條目會在樣本飽和時立即顯現,而不必等到裁決者手動重建佇列。
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/。從倉庫根目錄執行:
python potato/flask_server.py start examples/advanced/heterogeneous-coverage/config.yaml -p 8000它使用了橫跨兩個領域的 20 個條目,按領域分層抽取 20% 用於 3 名標註者重疊,在閾值 0.5 處啟用自適應提升,定義了兩個專長層級,並將低一致性條目路由到裁決。
相關
有關實現細節,請參見源文件。