Skip to content

Psychometrie-Engine

Item-Response-Theorie für die Annotation. Jedes Label bekommt eine Posterior-Wahrscheinlichkeit und ein Konfidenzintervall statt einer bloßen Mehrheitsentscheidung, und das Modell kommt dabei ohne Gold-Labels und ohne LLM aus.

Neu in v2.7.0

Potato kann eine Annotationsstudie als das behandeln, was sie tatsächlich ist: ein Messinstrument. Die Psychometrie-Schicht passt ein Modell der Item-Response-Theorie (IRT) live an, während die Annotationen eintreffen, und schätzt dabei gemeinsam das wahre Label jedes Elements als Wahrscheinlichkeit, die Fähigkeit jedes Annotators samt Standardfehler, die Schwierigkeit jedes Elements sowie eine Trennschärfe-Diagnose je Element, die wahrscheinliche Codebuch-Probleme markiert.

Gold-Labels sind nicht nötig, und ein LLM ist nicht beteiligt. Das Modell (eine Mehrklassen-Verallgemeinerung von GLAD, Whitehill et al. 2009) leitet alles allein aus dem Übereinstimmungsmuster ab, so wie ein standardisierter Test lernt, welche Fragen schwer sind, ohne dass es ihm jemand sagt. Die Anpassungen sind deterministisch und dauern im Maßstab einer Annotationsstudie Millisekunden.

Die Fähigkeit der Annotatoren wird live geschätzt, mit Konfidenzintervallen, sodass jedes Label eine Posterior-Wahrscheinlichkeit statt einer bloßen Stimmenzahl bekommt.

Konfiguration

yaml
# Adaptive routing is opt-in via the standard assignment strategy key.
# Omit this line to keep your existing strategy and use psychometrics
# as a pure analytics layer.
assignment_strategy: psychometric
 
# Give items a redundancy target so early-stopped items translate into
# concrete saved judgments on the dashboard.
num_annotators_per_item: 4
 
psychometrics:
  enabled: true
  schema: sarcasm            # scheme to model; default: first radio/likert scheme
  refit_interval: 5          # refit after this many new labels (fits are ~ms)
  min_observations: 20       # cold-start gate before adaptive routing engages
  min_annotators_per_item: 2 # never early-stop an item below this many annotators
  confidence_threshold: 0.95 # posterior at which an item counts as resolved
  cost_per_judgment: 0.08    # optional: expresses savings in currency
  discrimination_flag_threshold: -0.2  # codebook-bug flag sensitivity

Unterstützt werden kategoriale Einfachauswahl-Schemata: radio und likert (Likert-Punkte werden als nominale Kategorien behandelt). Mehrfachauswahl-Schemata werden nicht modelliert.

Labels mit Fehlerbalken

Statt sarcastic (2 of 3 votes) steht im Export sarcastic, p = 0.94 [0.88 – 0.97]. Die Wahrscheinlichkeit ist die Posterior-Wahrscheinlichkeit des Modells, die gewichtet, wer abgestimmt hat, und nicht nur, wie viele. Das Intervall ist ein Sensitivitätsband von ±1 Standardfehler über den Fähigkeitsschätzungen.

Weiter unten in der Pipeline lässt sich auf weichen Labels trainieren, ein Evaluationsset auf Elemente mit hoher Konfidenz einschränken oder Elemente mit niedriger Wahrscheinlichkeit als wirklich mehrdeutig statt als Rauschen behandeln. Der ergänzende Ansatz, Verteilungen direkt von den Annotatoren zu erheben, steht unter Soft-Label-Annotation.

Annotator-Fähigkeit, ehrlich dargestellt

Die Fähigkeit θ wird aus den Übereinstimmungsmustern geschätzt. Ein Wert von 1,0 ist der Prior für einen neuen Annotator, 0 heißt, dass die Labels keinerlei Information tragen, und negative Werte heißen systematisch falsch. Zu jeder Schätzung gehört ein Standardfehler: Wer 12 Labels vergeben hat, bekommt einen breiten Fehlerbalken, und das Dashboard sagt das auch.

Personalentscheidungen sollten nicht auf einem breiten Fehlerbalken beruhen. Die Standardfehler sind Näherungen (Fisher-Information am Modus) und konstruktionsbedingt leicht optimistisch.

Der Codebuch-Problem-Detektor

Die Schwierigkeit der Elemente wird gemeinsam mit der Fähigkeit geschätzt, aufschlussreicher ist aber die Trennschärfe: die Korrelation zwischen der Fähigkeit eines Annotators und der Korrektheit seiner Antwort bei einem Element.

Ist die Trennschärfe deutlich negativ, widersprechen also ausgerechnet die besten Annotatoren dem Mehrheitskonsens, dann ist bei diesem Element meist die Richtlinie falsch oder mehrdeutig und nicht die Annotatoren. Das Dashboard führt solche Fälle unter „Wahrscheinliche Codebuch-Probleme". Erst die Anweisungen korrigieren, dann erneut prüfen. Aufgelöst werden sie üblicherweise in Multiplayer-Räumen.

Adaptive Zuweisung

Mit assignment_strategy: psychometric werden die verbleibenden Elemente, sobald ein Annotator Arbeit anfordert, nach dem exakten einstufigen erwarteten Informationsgewinn sortiert, den dieser Annotator bei diesem Element liefert. Elemente mit hoher Unsicherheit gehen zuerst an Annotatoren mit hoher Fähigkeit, und Elemente, deren Posterior-Wahrscheinlichkeit bereits über confidence_threshold liegt (bei mindestens min_annotators_per_item Annotatoren), verbrauchen kein Budget mehr. Gegenüber einem festen Design mit N Annotationen pro Element werden die eingesparten Urteile im Dashboard gezählt und, wenn cost_per_judgment gesetzt ist, mit einem Preis versehen.

Zwei Hinweise für den Betrieb:

  • Kaltstart. Solange weniger als min_observations Labels vorliegen, fällt die Zuweisung auf Zufall zurück, denn das Modell braucht überlappende Annotatoren, bevor es Fähigkeit von Schwierigkeit trennen kann. Das Dashboard zeigt in dieser Phase eine Aufwärmanzeige.
  • Batching. Zugewiesen wird, wenn die Warteschlange eines Nutzers aufgefüllt wird. Die Sortierung ist am aktuellsten, wenn die Warteschlangen kurz sind; sehr große Batches pro Nutzer verwässern die Anpassungsfähigkeit.

Power-Analyse, bevor Geld fließt

Jedes Annotationsprojekt rät bei der Frage „wie viele Annotatoren pro Element?". Der Studiendesigner beantwortet sie mit einer Monte-Carlo-Simulation mit festem Seed:

bash
python -m potato.psychometrics.design --items 500 --accuracy 0.75 \
    --classes 3 --target-ci 0.10 --cost 0.08
text
ann/item   alpha     95% interval   width  majority acc  judgments       cost
       2   0.392 [ 0.330,  0.439]   0.109         0.751       1000      80.00
       3   0.388 [ 0.338,  0.431]   0.093         0.864       1500     120.00  <- recommended

Empfohlen wird die kleinste Redundanz, deren 95-%-Intervall für Krippendorffs α schmaler ist als --target-ci, also das günstigste Design, das noch eine belastbar präzise Übereinstimmungsschätzung liefert. Der Eingabewert --accuracy lässt sich am besten in einem kleinen Pilotlauf messen. Dieselbe Analyse gibt es im Dashboard und als Admin-API (GET /psychometrics/api/design).

Interaktiv im Browser läuft sie im Rechner für die Annotations-Teststärke.

Endpunkte

Alle Endpunkte erfordern Admin-Zugang (RBAC VIEW_ADMIN_DASHBOARD; Debug-Modus und der gemeinsame Admin-API-Schlüssel werden akzeptiert).

EndpunktZweck
GET /psychometrics/dashboardLive-Dashboard
GET /psychometrics/api/statsDashboard-Aggregate (erzwingt eine frische Anpassung)
GET /psychometrics/api/exportAngereicherter Export: Posterior-Wahrscheinlichkeiten, Bänder, Fähigkeiten
GET /psychometrics/api/designPower-Analyse

Verhältnis zu MACE

Potato liefert auch MACE mit, das Annotator-Kompetenz und vorhergesagte Labels als nachgelagerte Analyse schätzt. Die beiden sind Verwandte aus derselben Literatur mit unterschiedlichen Aufgaben.

MACEPsychometrie
AnnotatormodellKompetenz nach dem Prinzip Wissen gegen Ratenkontinuierliche Fähigkeit mit Standardfehlern
ElementmodellkeinesSchwierigkeit + Trennschärfe (Markierungen für Codebuch-Probleme)
Wann es läuftBatch-Analyse nach N Annotationenlive, in der Zuweisungsschleife
Steuert die Zuweisungneinja, über Routing nach Informationsgewinn und vorzeitiges Stoppen
Unsicherheit der LabelsEntropiePosterior-Wahrscheinlichkeit + Sensitivitätsintervall
Planung vor der StudieneinMonte-Carlo-Power-Analyse

MACE eignet sich für einen schnellen Kompetenzüberblick bei jedem kategorialen Schema (es deckt auch multiselect ab). Die Psychometrie eignet sich, wenn eine schwierigkeitsbewusste Messung gefragt ist, die während der laufenden Studie eingreift.

Fehlerbehebung

  • Das Dashboard bleibt dauerhaft im Aufwärmzustand. Das Modell braucht mindestens zwei verschiedene Labels und überlappende Annotatoren. Bei einem einzigen Annotator oder einstimmigen Labels ist die Anpassung konstruktionsbedingt entartet. Also Annotatoren ergänzen oder min_observations senken.
  • assignment_strategy: psychometric ist gesetzt, aber die Zuweisung wirkt zufällig. Das ist der Kaltstart-Rückfall. Aufwärmanzeige und min_observations prüfen.
  • Alle Fähigkeiten liegen nahe 1,0 mit großen Fehlerbalken. Es gibt noch zu wenig Überlappung. Die Fähigkeiten trennen sich, sobald die Annotatoren gemeinsame Elemente ansammeln.
  • 404 auf /psychometrics/.... Der Block psychometrics.enabled: true fehlt in der Konfiguration.

Weiterführende Informationen