Skip to content
Esta página aún no está disponible en su idioma. Se muestra la versión en inglés.

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:

EreignistypBeschreibungBeispiel-Ziel
clickMausklicks auf Elementelabel:positive, nav:next
focus_inElement erhält Fokustextbox:explanation
focus_outElement verliert Fokuslabel:negative
keypressTastaturkürzelkey:1, nav:ArrowRight
navigationInstanznavigationnext, prev, instance_load
saveAnnotations-Speicherereignisseinstance:123
annotation_changeLabel-Änderungenschema:sentiment

Nutzung von KI-Unterstützung

Vollständige Lebenszyklus-Verfolgung für KI-gestützte Annotation:

json
{
  "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:

json
{
  "timestamp": 1706500002.5,
  "schema_name": "sentiment",
  "label_name": "positive",
  "action": "select",
  "old_value": null,
  "new_value": true,
  "source": "user"
}

Quelltypen:

  • user – Direkte Benutzerinteraktion
  • ai_accept – Nutzer hat KI-Vorschlag akzeptiert
  • keyboard – Tastaturkürzel verwendet
  • prefill – Aus der Konfiguration vorausgefüllt

Datenformat

Jede Annotationsinstanz enthält ein behavioral_data-Objekt:

json
{
  "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:

javascript
// In browser console
window.interactionTracker.setDebugMode(true);

Analysebeispiele

Verhaltensdaten laden

python
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 data

Annotationszeit analysieren

python
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 stats

Verdächtiges Verhalten erkennen

python
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 suspicious

Admin-Dashboard-Integration

Das Admin-Dashboard enthält einen Verhaltensanalysen-Tab mit:

  1. Nutzer-Interaktions-Heatmap: Visuelle Darstellung von Interaktionsmustern
  2. KI-Unterstützungs-Metriken: Annahme-/Ablehnungsraten, Entscheidungszeiten
  3. Zeitverteilung: Histogramm der Annotationszeiten
  4. Verdächtigkeitswarnungen: Markierte Annotatoren, die Überprüfung benötigen

API-Endpunkte

Interaktionen verfolgen

http
POST /api/track_interactions
Content-Type: application/json
 
{
  "instance_id": "instance_123",
  "events": [...],
  "focus_time": {"element": ms},
  "scroll_depth": 75.5
}

Verhaltensdaten abrufen

http
GET /api/behavioral_data/<instance_id>

Gibt die vollständigen Verhaltensdaten für eine Instanz zurück.

Bewährte Vorgehensweisen

Für Forscher

  1. Baseline festlegen: Verhaltensdaten von bekannt guten Annotatoren sammeln, um Baselines zu etablieren
  2. Qualitätsmetriken: Verhaltensdaten zusammen mit Annotationsübereinstimmung für die Qualitätsbewertung nutzen
  3. Trainingsevaluierung: Verhaltensmuster vor und nach dem Training vergleichen
  4. KI-Wirkungsanalyse: Messen, wie KI-Unterstützung Annotationsqualität und -geschwindigkeit beeinflusst

Für Annotationsprojekte

  1. Echtzeit-Überwachung: Admin-Dashboard nutzen, um Probleme frühzeitig zu erkennen
  2. Schwellenwerte festlegen: Akzeptable Bereiche für Zeit- und Interaktionsmetriken definieren
  3. Feedback geben: Verhaltenseinblicke nutzen, um gezieltes Feedback an Annotatoren zu geben

Fehlerbehebung

Keine Verhaltensdaten werden erfasst

  1. Sicherstellen, dass interaction_tracker.js geladen ist (Browser-Netzwerk-Tab prüfen)
  2. Browser-Konsole auf JavaScript-Fehler prüfen
  3. API-Endpunkte auf Erreichbarkeit prüfen (/api/track_interactions)

Daten werden nicht gespeichert

  1. Prüfen, ob der Nutzerzustand gespeichert wird (nach user_state.json suchen)
  2. Sicherstellen, dass das Annotationsausgabeverzeichnis beschreibbar ist

Weiterführende Informationen

Implementierungsdetails finden Sie in der Quelldokumentation.