Skip to content
Cette page n'est pas encore disponible dans votre langue. La version anglaise est affichée.

Mehrphasige Workflows

Komplexe Annotationsworkflows mit Umfragen, Training und Verzweigungslogik aufbauen.

Mehrphasige Workflows

Potato 2.0 unterstützt strukturierte Annotationsworkflows mit mehreren sequenziellen Phasen, einschließlich Einwilligung, Vorerhebungen, Anweisungen, Training, Annotation und Nacherhebungs-Feedback.

Verfügbare Phasen

PhaseBeschreibung
consentErfassung der informierten Einwilligung
prestudyVorerhebungen (Demografie, Screening)
instructionsAufgabenrichtlinien und Informationen
trainingÜbungsfragen mit Feedback
annotationHauptannotationsaufgabe (immer erforderlich)
poststudyNacherhebungen und Feedback

Grundkonfiguration

Verwenden Sie den phases-Abschnitt in Ihrer Konfiguration:

yaml
phases:
  consent:
    enabled: true
    data_file: "data/consent.json"
 
  prestudy:
    enabled: true
    data_file: "data/demographics.json"
 
  instructions:
    enabled: true
    content: "data/instructions.html"
 
  training:
    enabled: true
    data_file: "data/training.json"
    schema_name: sentiment
    passing_criteria:
      min_correct: 8
 
  # annotation phase is always enabled
 
  poststudy:
    enabled: true
    data_file: "data/feedback.json"

Umfragefragentypen

Umfragephasen unterstützen folgende Fragentypen:

Radio (Einfachauswahl)

json
{
  "name": "experience",
  "type": "radio",
  "description": "How much annotation experience do you have?",
  "labels": ["None", "Some (< 10 hours)", "Moderate", "Extensive"],
  "required": true
}

Checkbox/Mehrfachauswahl

json
{
  "name": "languages",
  "type": "checkbox",
  "description": "What languages do you speak fluently?",
  "labels": ["English", "Spanish", "French", "German", "Chinese", "Other"]
}

Texteingabe

json
{
  "name": "occupation",
  "type": "text",
  "description": "What is your occupation?",
  "required": true
}

Zahleneingabe

json
{
  "name": "years_experience",
  "type": "number",
  "description": "Years of professional experience",
  "min": 0,
  "max": 50
}

Likert-Skala

json
{
  "name": "familiarity",
  "type": "likert",
  "description": "How familiar are you with this topic?",
  "size": 5,
  "min_label": "Not familiar",
  "max_label": "Very familiar"
}
json
{
  "name": "country",
  "type": "select",
  "description": "Select your country",
  "labels": ["USA", "Canada", "UK", "Germany", "France", "Other"]
}

Einwilligungsphase

Informierte Einwilligung vor dem Start einholen:

yaml
phases:
  consent:
    enabled: true
    data_file: "data/consent.json"

consent.json:

json
[
  {
    "name": "consent_agreement",
    "type": "radio",
    "description": "I have read and understood the research consent form and agree to participate.",
    "labels": ["I agree", "I do not agree"],
    "right_label": "I agree",
    "required": true
  }
]

Das Feld right_label gibt die erforderliche Antwort zum Fortfahren an.

Vorerhebungen

Demografiedaten oder Screening-Fragen erfassen:

yaml
phases:
  prestudy:
    enabled: true
    data_file: "data/demographics.json"

demographics.json:

json
[
  {
    "name": "age_range",
    "type": "radio",
    "description": "What is your age range?",
    "labels": ["18-24", "25-34", "35-44", "45-54", "55+"],
    "required": true
  },
  {
    "name": "education",
    "type": "radio",
    "description": "Highest level of education completed",
    "labels": ["High school", "Bachelor's degree", "Master's degree", "Doctoral degree", "Other"],
    "required": true
  },
  {
    "name": "english_native",
    "type": "radio",
    "description": "Is English your native language?",
    "labels": ["Yes", "No"],
    "required": true
  }
]

Anweisungsphase

Aufgabenanweisungen anzeigen:

yaml
phases:
  instructions:
    enabled: true
    content: "data/instructions.html"

Oder eingebetteten Inhalt verwenden:

yaml
phases:
  instructions:
    enabled: true
    inline_content: |
      <h2>Task Instructions</h2>
      <p>In this task, you will classify the sentiment of product reviews.</p>
      <ul>
        <li><strong>Positive:</strong> Expresses satisfaction or praise</li>
        <li><strong>Negative:</strong> Expresses dissatisfaction or criticism</li>
        <li><strong>Neutral:</strong> Factual or mixed sentiment</li>
      </ul>

Trainingsphase

Übungsfragen mit Feedback (Details unter Trainingsphase):

yaml
phases:
  training:
    enabled: true
    data_file: "data/training.json"
    schema_name: sentiment
    passing_criteria:
      min_correct: 8
      total_questions: 10
    show_explanations: true

Nacherhebungen

Feedback nach der Annotation sammeln:

yaml
phases:
  poststudy:
    enabled: true
    data_file: "data/feedback.json"

feedback.json:

json
[
  {
    "name": "difficulty",
    "type": "likert",
    "description": "How difficult was this task?",
    "size": 5,
    "min_label": "Very easy",
    "max_label": "Very difficult"
  },
  {
    "name": "clarity",
    "type": "likert",
    "description": "How clear were the instructions?",
    "size": 5,
    "min_label": "Very unclear",
    "max_label": "Very clear"
  },
  {
    "name": "suggestions",
    "type": "text",
    "description": "Any suggestions for improvement?",
    "textarea": true,
    "required": false
  }
]

Eingebaute Vorlagen

Potato enthält vordefinierte Label-Sätze für häufige Umfragefragen:

VorlageLabels
countriesListe der Länder
languagesGängige Sprachen
ethnicityEthnizitätsoptionen
religionReligionsoptionen

Vorlagen in Ihren Fragen verwenden:

json
{
  "name": "country",
  "type": "select",
  "description": "Select your country",
  "template": "countries"
}

Freitextfelder

Optionale Texteingabe neben strukturierten Fragen hinzufügen:

json
{
  "name": "topics",
  "type": "checkbox",
  "description": "Which topics interest you?",
  "labels": ["Technology", "Sports", "Politics", "Entertainment"],
  "free_response": true,
  "free_response_label": "Other (please specify)"
}

Seitenüberschriften

Umfrage-Abschnittsüberschriften anpassen:

json
{
  "page_header": "Demographics Survey",
  "questions": [
    {"name": "age", "type": "radio", "...": "..."},
    {"name": "gender", "type": "radio", "...": "..."}
  ]
}

Vollständiges Beispiel

yaml
task_name: "Sentiment Analysis Study"
task_dir: "."
port: 8000
 
# Data configuration
data_files:
  - "data/reviews.json"
 
item_properties:
  id_key: id
  text_key: text
 
# Annotation scheme
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the sentiment of this review?"
    labels:
      - Positive
      - Negative
      - Neutral
    sequential_key_binding: true
 
# Multi-phase workflow
phases:
  consent:
    enabled: true
    data_file: "data/consent.json"
 
  prestudy:
    enabled: true
    data_file: "data/demographics.json"
 
  instructions:
    enabled: true
    content: "data/instructions.html"
 
  training:
    enabled: true
    data_file: "data/training.json"
    schema_name: sentiment
    passing_criteria:
      min_correct: 8
      total_questions: 10
    retries:
      enabled: true
      max_retries: 2
    show_explanations: true
 
  # annotation phase is always enabled
 
  poststudy:
    enabled: true
    data_file: "data/feedback.json"
 
# Output
output_annotation_dir: "output/"
output_annotation_format: "json"
 
# User access
allow_all_users: true

Legacy-Konfiguration

Das ältere surveyflow-Konfigurationsformat wird weiterhin für Rückwärtskompatibilität unterstützt:

yaml
surveyflow:
  enabled: true
  phases:
    - name: pre_survey
      type: survey
      questions: survey_questions.json
    - name: main_annotation
      type: annotation

Für neue Projekte empfehlen wir jedoch die Migration zum neuen phases-Format.

Bewährte Vorgehensweisen

1. Umfragen kurz halten

Lange Umfragen senken die Abschlussrate. Nur auf wesentliche Fragen konzentrieren.

2. Training für komplexe Aufgaben nutzen

Trainingsphasen verbessern die Annotationsqualität, besonders bei nuancierten Aufgaben.

3. Angemessene Bestehenskriterien festlegen

yaml
# Too strict - may exclude good annotators
passing_criteria:
  require_all_correct: true
 
# Better - allows for learning
passing_criteria:
  min_correct: 8
  total_questions: 10

4. Klare Anweisungen bereitstellen

Beispiele in Ihrer Anweisungsphase einfügen, um Erwartungen zu klären.

5. Gesamten Ablauf testen

Den gesamten Workflow selbst durchführen, bevor er eingesetzt wird, um Probleme zu erkennen.

6. Pflichtfelder sinnvoll einsetzen

Fragen nur als erforderlich markieren, wenn sie wirklich notwendig sind – optionale Fragen erhalten bessere Antwortqualität.

Crowdsourcing-Integration

Für Prolific oder MTurk Abschlusscodes konfigurieren:

yaml
phases:
  poststudy:
    enabled: true
    data_file: "data/feedback.json"
    show_completion_code: true
    completion_code_format: "POTATO-{user_id}-{timestamp}"

Weitere Details unter Crowdsourcing.