Verhaltens-Tracking
Detaillierte Interaktionsdaten für Qualitätsanalyse und Forschung erfassen.
Verhaltens-Tracking
Potatos Verhaltens-Tracking-System erfasst detaillierte Interaktionsdaten während Annotationssitzungen, was es Forschern ermöglicht, Annotatorverhalten, Zeitmuster, die Nutzung von KI-Unterstützung und Entscheidungsprozesse zu analysieren.
Übersicht
Das Verhaltens-Tracking-System erfasst:
- Jede Annotationsaktion: Label-Auswahl, Span-Annotationen, Texteingaben
- Präzise Zeitstempel: Server- und clientseitige Zeitstempel
- Nutzung von KI-Unterstützung: Wann Vorschläge gezeigt und ob sie akzeptiert wurden
- Fokus- und Zeitdaten: Auf jedem Element verbrachte Zeit, Scroll-Tiefe
- Navigationsverlauf: Vollständiger Pfad durch Instanzen
Was verfolgt wird
Interaktionsereignisse
Jede Benutzerinteraktion mit der Annotationsoberfläche wird erfasst:
| Ereignistyp | Beschreibung | Beispiel-Ziel |
|---|---|---|
click | Mausklicks auf Elemente | label:positive, nav:next |
focus_in | Element erhält Fokus | textbox:explanation |
focus_out | Element verliert Fokus | label:negative |
keypress | Tastaturkürzel | key:1, nav:ArrowRight |
navigation | Instanznavigation | next, prev, instance_load |
save | Annotations-Speicherereignisse | instance:123 |
annotation_change | Label-Änderungen | schema:sentiment |
Nutzung von KI-Unterstützung
Vollständige Lebenszyklus-Verfolgung für KI-gestützte Annotation:
{
"request_timestamp": 1706500010.0,
"response_timestamp": 1706500012.5,
"schema_name": "sentiment",
"suggestions_shown": ["positive", "neutral"],
"suggestion_accepted": "positive",
"time_to_decision_ms": 3500
}Annotationsänderungen
Detaillierter Änderungsverlauf für alle Annotationen:
{
"timestamp": 1706500002.5,
"schema_name": "sentiment",
"label_name": "positive",
"action": "select",
"old_value": null,
"new_value": true,
"source": "user"
}Quelltypen:
user– Direkte Benutzerinteraktionai_accept– Nutzer hat KI-Vorschlag akzeptiertkeyboard– Tastaturkürzel verwendetprefill– Aus der Konfiguration vorausgefüllt
Datenformat
Jede Annotationsinstanz enthält ein behavioral_data-Objekt:
{
"id": "instance_123",
"annotations": {
"sentiment": {"positive": true}
},
"behavioral_data": {
"instance_id": "instance_123",
"session_start": 1706500000.0,
"session_end": 1706500045.0,
"total_time_ms": 45000,
"interactions": [...],
"ai_usage": [...],
"annotation_changes": [...],
"navigation_history": [...],
"focus_time_by_element": {
"label:positive": 2500,
"textbox:explanation": 8000
},
"scroll_depth_max": 75.5
}
}Konfiguration
Verhaltens-Tracking ist standardmäßig aktiviert. Keine zusätzliche Konfiguration erforderlich.
Frontend-Debug-Modus
So aktivieren Sie Debug-Logging für den Interaktions-Tracker:
// In browser console
window.interactionTracker.setDebugMode(true);Analysebeispiele
Verhaltensdaten laden
import json
from pathlib import Path
def load_behavioral_data(annotation_dir: str) -> dict:
data = {}
for user_dir in Path(annotation_dir).iterdir():
if not user_dir.is_dir():
continue
state_file = user_dir / 'user_state.json'
if state_file.exists():
with open(state_file) as f:
user_state = json.load(f)
user_id = user_state.get('user_id')
behavioral = user_state.get('instance_id_to_behavioral_data', {})
data[user_id] = behavioral
return dataAnnotationszeit analysieren
def analyze_annotation_time(behavioral_data: dict) -> dict:
stats = {}
for user_id, instances in behavioral_data.items():
times = []
for instance_id, bd in instances.items():
if 'total_time_ms' in bd:
times.append(bd['total_time_ms'] / 1000)
if times:
stats[user_id] = {
'mean_time': sum(times) / len(times),
'min_time': min(times),
'max_time': max(times),
'total_instances': len(times)
}
return statsVerdächtiges Verhalten erkennen
def detect_suspicious_annotators(behavioral_data: dict,
min_time_threshold: float = 2.0) -> list:
suspicious = []
for user_id, instances in behavioral_data.items():
fast_count = 0
for instance_id, bd in instances.items():
time_sec = bd.get('total_time_ms', 0) / 1000
if time_sec < min_time_threshold:
fast_count += 1
total = len(instances)
if total > 0:
fast_rate = fast_count / total
if fast_rate > 0.5:
suspicious.append({
'user_id': user_id,
'fast_rate': fast_rate,
'total_instances': total
})
return suspiciousAdmin-Dashboard-Integration
Das Admin-Dashboard enthält einen Verhaltensanalysen-Tab mit:
- Nutzer-Interaktions-Heatmap: Visuelle Darstellung von Interaktionsmustern
- KI-Unterstützungs-Metriken: Annahme-/Ablehnungsraten, Entscheidungszeiten
- Zeitverteilung: Histogramm der Annotationszeiten
- Verdächtigkeitswarnungen: Markierte Annotatoren, die Überprüfung benötigen
API-Endpunkte
Interaktionen verfolgen
POST /api/track_interactions
Content-Type: application/json
{
"instance_id": "instance_123",
"events": [...],
"focus_time": {"element": ms},
"scroll_depth": 75.5
}Verhaltensdaten abrufen
GET /api/behavioral_data/<instance_id>Gibt die vollständigen Verhaltensdaten für eine Instanz zurück.
Bewährte Vorgehensweisen
Für Forscher
- Baseline festlegen: Verhaltensdaten von bekannt guten Annotatoren sammeln, um Baselines zu etablieren
- Qualitätsmetriken: Verhaltensdaten zusammen mit Annotationsübereinstimmung für die Qualitätsbewertung nutzen
- Trainingsevaluierung: Verhaltensmuster vor und nach dem Training vergleichen
- KI-Wirkungsanalyse: Messen, wie KI-Unterstützung Annotationsqualität und -geschwindigkeit beeinflusst
Für Annotationsprojekte
- Echtzeit-Überwachung: Admin-Dashboard nutzen, um Probleme frühzeitig zu erkennen
- Schwellenwerte festlegen: Akzeptable Bereiche für Zeit- und Interaktionsmetriken definieren
- Feedback geben: Verhaltenseinblicke nutzen, um gezieltes Feedback an Annotatoren zu geben
Fehlerbehebung
Keine Verhaltensdaten werden erfasst
- Sicherstellen, dass
interaction_tracker.jsgeladen ist (Browser-Netzwerk-Tab prüfen) - Browser-Konsole auf JavaScript-Fehler prüfen
- API-Endpunkte auf Erreichbarkeit prüfen (
/api/track_interactions)
Daten werden nicht gespeichert
- Prüfen, ob der Nutzerzustand gespeichert wird (nach
user_state.jsonsuchen) - Sicherstellen, dass das Annotationsausgabeverzeichnis beschreibbar ist
Weiterführende Informationen
- Admin-Dashboard – Echtzeit-Überwachung
- Annotationsverlauf – Detaillierte Änderungsverfolgung
- Qualitätskontrolle – Automatisierte Qualitätsprüfungen
Implementierungsdetails finden Sie in der Quelldokumentation.