不均一なアノテーターカバレッジ
項目ごとに異なる人数のアノテーターを割り当てます。デフォルトの上限、品質監視用の層化オーバーラップサンプル、適応的な不一致ブースト、アノテーターごとのクォータ、自動アジュディケーションルーティングを設定します。
**不均一なカバレッジを使うと、一律の上限ではなく、項目ごとに異なる人数のアノテーターを割り当てられます。**よくある研究設計は、大半の項目には1人のアノテーターを割り当て、品質を監視するために5〜10%のサンプルに2〜3人を重複させるというものです。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 を設定すると、割合は層ごとに適用されるため、すべてのカテゴリが比例して寄与します。
適応的ブースト
適応的ブーストは、初期のアノテーターが不一致だった項目の上限を拡張します。項目に少なくとも2つのアノテーションがあり、その不一致スコアが 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、スパンにはトークンレベルの kappa に加えて span F1 を計算します。これらの指標の意味については、アノテーター間一致度ガイドを参照してください。
例
実行可能なデモが examples/advanced/heterogeneous-coverage/ にあります。リポジトリのルートから実行します。
python potato/flask_server.py start examples/advanced/heterogeneous-coverage/config.yaml -p 8000これは2つのドメインにまたがる20項目を使い、ドメインで層化して3人アノテーターのオーバーラップ用に20%をサンプリングし、しきい値0.5で適応的ブーストを有効にし、2つの専門性ティアを定義し、一致度の低い項目をアジュディケーションへルーティングします。
関連
- タスク割り当て — 割り当て戦略
- アノテーター間一致度ガイド —
/admin/iaaの背後にある指標 - クラウドソーシング — MTurk および Prolific との連携
実装の詳細については、ソースドキュメントを参照してください。