Skip to content

不均一なアノテーターカバレッジ

項目ごとに異なる人数のアノテーターを割り当てます。デフォルトの上限、品質監視用の層化オーバーラップサンプル、適応的な不一致ブースト、アノテーターごとのクォータ、自動アジュディケーションルーティングを設定します。

**不均一なカバレッジを使うと、一律の上限ではなく、項目ごとに異なる人数のアノテーターを割り当てられます。**よくある研究設計は、大半の項目には1人のアノテーターを割り当て、品質を監視するために5〜10%のサンプルに2〜3人を重複させるというものです。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 を設定すると、割合は層ごとに適用されるため、すべてのカテゴリが比例して寄与します。

適応的ブースト

適応的ブーストは、初期のアノテーターが不一致だった項目の上限を拡張します。項目に少なくとも2つのアノテーションがあり、その不一致スコアが 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、スパンにはトークンレベルの kappa に加えて span F1 を計算します。これらの指標の意味については、アノテーター間一致度ガイドを参照してください。

実行可能なデモが examples/advanced/heterogeneous-coverage/ にあります。リポジトリのルートから実行します。

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

これは2つのドメインにまたがる20項目を使い、ドメインで層化して3人アノテーターのオーバーラップ用に20%をサンプリングし、しきい値0.5で適応的ブーストを有効にし、2つの専門性ティアを定義し、一致度の低い項目をアジュディケーションへルーティングします。

関連

実装の詳細については、ソースドキュメントを参照してください。