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
| Phase | Beschreibung |
|---|---|
consent | Erfassung der informierten Einwilligung |
prestudy | Vorerhebungen (Demografie, Screening) |
instructions | Aufgabenrichtlinien und Informationen |
training | Übungsfragen mit Feedback |
annotation | Hauptannotationsaufgabe (immer erforderlich) |
poststudy | Nacherhebungen und Feedback |
Grundkonfiguration
Verwenden Sie den phases-Abschnitt in Ihrer Konfiguration:
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)
{
"name": "experience",
"type": "radio",
"description": "How much annotation experience do you have?",
"labels": ["None", "Some (< 10 hours)", "Moderate", "Extensive"],
"required": true
}Checkbox/Mehrfachauswahl
{
"name": "languages",
"type": "checkbox",
"description": "What languages do you speak fluently?",
"labels": ["English", "Spanish", "French", "German", "Chinese", "Other"]
}Texteingabe
{
"name": "occupation",
"type": "text",
"description": "What is your occupation?",
"required": true
}Zahleneingabe
{
"name": "years_experience",
"type": "number",
"description": "Years of professional experience",
"min": 0,
"max": 50
}Likert-Skala
{
"name": "familiarity",
"type": "likert",
"description": "How familiar are you with this topic?",
"size": 5,
"min_label": "Not familiar",
"max_label": "Very familiar"
}Dropdown-Auswahl
{
"name": "country",
"type": "select",
"description": "Select your country",
"labels": ["USA", "Canada", "UK", "Germany", "France", "Other"]
}Einwilligungsphase
Informierte Einwilligung vor dem Start einholen:
phases:
consent:
enabled: true
data_file: "data/consent.json"consent.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:
phases:
prestudy:
enabled: true
data_file: "data/demographics.json"demographics.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:
phases:
instructions:
enabled: true
content: "data/instructions.html"Oder eingebetteten Inhalt verwenden:
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):
phases:
training:
enabled: true
data_file: "data/training.json"
schema_name: sentiment
passing_criteria:
min_correct: 8
total_questions: 10
show_explanations: trueNacherhebungen
Feedback nach der Annotation sammeln:
phases:
poststudy:
enabled: true
data_file: "data/feedback.json"feedback.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:
| Vorlage | Labels |
|---|---|
countries | Liste der Länder |
languages | Gängige Sprachen |
ethnicity | Ethnizitätsoptionen |
religion | Religionsoptionen |
Vorlagen in Ihren Fragen verwenden:
{
"name": "country",
"type": "select",
"description": "Select your country",
"template": "countries"
}Freitextfelder
Optionale Texteingabe neben strukturierten Fragen hinzufügen:
{
"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:
{
"page_header": "Demographics Survey",
"questions": [
{"name": "age", "type": "radio", "...": "..."},
{"name": "gender", "type": "radio", "...": "..."}
]
}Vollständiges Beispiel
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: trueLegacy-Konfiguration
Das ältere surveyflow-Konfigurationsformat wird weiterhin für Rückwärtskompatibilität unterstützt:
surveyflow:
enabled: true
phases:
- name: pre_survey
type: survey
questions: survey_questions.json
- name: main_annotation
type: annotationFü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
# Too strict - may exclude good annotators
passing_criteria:
require_all_correct: true
# Better - allows for learning
passing_criteria:
min_correct: 8
total_questions: 104. 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:
phases:
poststudy:
enabled: true
data_file: "data/feedback.json"
show_completion_code: true
completion_code_format: "POTATO-{user_id}-{timestamp}"Weitere Details unter Crowdsourcing.