Skip to content

Heterogene Annotator-Abdeckung

Weisen Sie verschiedenen Elementen unterschiedlich viele Annotatoren zu. Konfigurieren Sie eine Standardobergrenze, eine geschichtete Überlappungsstichprobe zur Qualitätsüberwachung, adaptive Verstärkungen bei Uneinigkeit, Kontingente pro Annotator und automatisches Routing zur Schlichtung.

Heterogene Abdeckung ermöglicht es Ihnen, verschiedenen Elementen unterschiedlich viele Annotatoren zuzuweisen, statt einer einheitlichen Obergrenze. Das übliche Forschungsdesign ist ein Annotator für die meisten Elemente, wobei sich zwei oder drei auf einer Stichprobe von 5–10 % überlappen, um die Qualität zu überwachen. Potato drückt das über die Konfigurationsblöcke num_annotators_per_item und per_annotator_quota aus.

Annotator-Obergrenzen pro Element

num_annotators_per_item ist der kanonische Schlüssel. Er akzeptiert eine einzelne Ganzzahl für eine einheitliche Obergrenze oder eine strukturierte Zuordnung mit einem Standardwert, einer Überlappungsstichprobe und einer optionalen adaptiven Verstärkung:

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 ist nun ein veralteter Alias für num_annotators_per_item: <int>.

Überlappungsstichprobe

Der Block overlap_sample hebt die Obergrenze für eine deterministische Teilmenge von Elementen zur Qualitätsüberwachung an. Die Stichprobenziehung erfolgt einmalig beim Start, und die ausgewählten Elemente werden mit required_annotations markiert, sodass die Zuweisungslogik sie als hochgradig abgedeckt behandelt.

FeldTypBeschreibung
fractionFloat in (0, 1]Anteil der zu ziehenden Elemente
countint ≥ 2Annotator-Obergrenze für gezogene Elemente (muss default übersteigen)
stratify_byString (optional)Elementdatenfeld zur Schichtung der Stichprobe
seedint (optional)RNG-Seed; standardmäßig der globale random_seed

Wenn stratify_by gesetzt ist, wird der Anteil je Schicht angewendet, sodass jede Kategorie proportional beiträgt.

Adaptive Verstärkung

Die adaptive Verstärkung erweitert die Obergrenze eines Elements, bei dem die ersten Annotatoren uneinig waren. Sobald ein Element mindestens zwei Annotationen hat und sein Uneinigkeits-Score disagreement_threshold überschreitet, wird seine Obergrenze auf boost_to angehoben und das Element kehrt in die Zuweisungswarteschlange zurück. Die Verstärkung erfolgt einmalig pro Element.

Kontingent pro Annotator

per_annotator_quota steuert, wie viele Elemente jedem Annotator zugewiesen werden, unabhängig von den Obergrenzen pro Element:

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

Auflösungsreihenfolge: by_user[uid]by_user_role[user_roles[uid]]default.

Automatisches Routing zur Schlichtung

Wenn der Schlichtungsblock aktiviert ist, werden Elemente der Überlappungsstichprobe, die ihre Obergrenze erreichen, automatisch bewertet und in die Schlichtungswarteschlange geschoben, falls die Übereinstimmung unter agreement_threshold fällt. Elemente von geringer Qualität tauchen auf, sobald die Stichprobe gesättigt ist, und nicht erst, wenn ein Schlichter die Warteschlange manuell neu aufbaut.

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

Übereinstimmung prüfen

Sobald die Elemente der Überlappungsstichprobe gesättigt sind, stehen Übereinstimmungsstatistiken unter /admin/iaa zur Verfügung, das den für den annotation_type jedes Schemas passenden Metriksatz berechnet — zum Beispiel Cohen's und Fleiss' kappa für nominale Schemata, weighted kappa für ordinale und Token-Level-kappa plus span F1 für Spans. Im Leitfaden zur Inter-Annotator-Übereinstimmung erfahren Sie, was diese Metriken bedeuten.

Beispiel

Eine lauffähige Demonstration befindet sich unter examples/advanced/heterogeneous-coverage/. Vom Repository-Stammverzeichnis aus:

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

Sie verwendet 20 Elemente über zwei Domänen, zieht 20 % für eine nach Domäne geschichtete 3-Annotator-Überlappung, aktiviert eine adaptive Verstärkung bei Schwellenwert 0.5, definiert zwei Expertise-Stufen und routet Elemente mit geringer Übereinstimmung zur Schlichtung.

Verwandt

Implementierungsdetails finden Sie in der Quelldokumentation.