Flussi di Lavoro Multi-Fase
Crea flussi di lavoro di annotazione complessi con survey, addestramento e logica di ramificazione.
Flussi di Lavoro Multi-Fase
Potato 2.0 supporta flussi di lavoro di annotazione strutturati con più fasi sequenziali che includono consenso, survey pre-studio, istruzioni, addestramento, annotazione e feedback post-studio.
Fasi Disponibili
| Fase | Descrizione |
|---|---|
consent | Raccolta del consenso informato |
prestudy | Survey pre-annotazione (dati demografici, screening) |
instructions | Linee guida del compito e informazioni |
training | Domande pratiche con feedback |
annotation | Compito principale di annotazione (sempre richiesto) |
poststudy | Survey e feedback post-annotazione |
Configurazione di Base
Usa la sezione phases nella tua configurazione:
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
# la fase di annotazione è sempre abilitata
poststudy:
enabled: true
data_file: "data/feedback.json"Tipi di Domande per le Survey
Le fasi di survey supportano questi tipi di domande:
Radio (Scelta Singola)
{
"name": "experience",
"type": "radio",
"description": "How much annotation experience do you have?",
"labels": ["None", "Some (< 10 hours)", "Moderate", "Extensive"],
"required": true
}Checkbox/Selezione Multipla
{
"name": "languages",
"type": "checkbox",
"description": "What languages do you speak fluently?",
"labels": ["English", "Spanish", "French", "German", "Chinese", "Other"]
}Input Testo
{
"name": "occupation",
"type": "text",
"description": "What is your occupation?",
"required": true
}Input Numerico
{
"name": "years_experience",
"type": "number",
"description": "Years of professional experience",
"min": 0,
"max": 50
}Scala Likert
{
"name": "familiarity",
"type": "likert",
"description": "How familiar are you with this topic?",
"size": 5,
"min_label": "Not familiar",
"max_label": "Very familiar"
}Selezione a Elenco a Discesa
{
"name": "country",
"type": "select",
"description": "Select your country",
"labels": ["USA", "Canada", "UK", "Germany", "France", "Other"]
}Fase di Consenso
Raccogli il consenso informato prima di iniziare:
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
}
]Il campo right_label specifica la risposta richiesta per procedere.
Survey Pre-Studio
Raccogli dati demografici o domande di screening:
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
}
]Fase delle Istruzioni
Mostra le istruzioni del compito:
phases:
instructions:
enabled: true
content: "data/instructions.html"Oppure usa il contenuto inline:
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>Fase di Addestramento
Domande pratiche con feedback (vedi Fase di Addestramento per i dettagli):
phases:
training:
enabled: true
data_file: "data/training.json"
schema_name: sentiment
passing_criteria:
min_correct: 8
total_questions: 10
show_explanations: trueSurvey Post-Studio
Raccogli feedback dopo l'annotazione:
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
}
]Template Integrati
Potato include set di etichette predefiniti per le domande di survey comuni:
| Template | Etichette |
|---|---|
countries | Lista di paesi |
languages | Lingue comuni |
ethnicity | Opzioni di etnicità |
religion | Opzioni di religione |
Usa i template nelle tue domande:
{
"name": "country",
"type": "select",
"description": "Select your country",
"template": "countries"
}Campi a Risposta Libera
Aggiungi input di testo opzionale insieme alle domande strutturate:
{
"name": "topics",
"type": "checkbox",
"description": "Which topics interest you?",
"labels": ["Technology", "Sports", "Politics", "Entertainment"],
"free_response": true,
"free_response_label": "Other (please specify)"
}Intestazioni di Pagina
Personalizza le intestazioni delle sezioni della survey:
{
"page_header": "Demographics Survey",
"questions": [
{"name": "age", "type": "radio", ...},
{"name": "gender", "type": "radio", ...}
]
}Esempio Completo
task_name: "Sentiment Analysis Study"
task_dir: "."
port: 8000
# Configurazione dei dati
data_files:
- "data/reviews.json"
item_properties:
id_key: id
text_key: text
# Schema di annotazione
annotation_schemes:
- annotation_type: radio
name: sentiment
description: "What is the sentiment of this review?"
labels:
- Positive
- Negative
- Neutral
sequential_key_binding: true
# Flusso di lavoro multi-fase
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
# la fase di annotazione è sempre abilitata
poststudy:
enabled: true
data_file: "data/feedback.json"
# Output
output_annotation_dir: "output/"
output_annotation_format: "json"
# Accesso utenti
allow_all_users: trueConfigurazione Legacy
Il vecchio formato di configurazione surveyflow è ancora supportato per la compatibilità con le versioni precedenti:
surveyflow:
enabled: true
phases:
- name: pre_survey
type: survey
questions: survey_questions.json
- name: main_annotation
type: annotationTuttavia, raccomandiamo di migrare al nuovo formato phases per i nuovi progetti.
Best Practice
1. Mantieni le Survey Concise
Le survey lunghe riducono i tassi di completamento. Concentrati solo sulle domande essenziali.
2. Usa l'Addestramento per i Compiti Complessi
Le fasi di addestramento migliorano la qualità delle annotazioni, specialmente per i compiti sfumati.
3. Imposta Criteri di Passaggio Ragionevoli
# Troppo rigido - potrebbe escludere buoni annotatori
passing_criteria:
require_all_correct: true
# Meglio - consente l'apprendimento
passing_criteria:
min_correct: 8
total_questions: 104. Fornisci Istruzioni Chiare
Includi esempi nella tua fase di istruzioni per chiarire le aspettative.
5. Testa l'Intero Flusso
Completa l'intero flusso di lavoro tu stesso prima del deployment per individuare i problemi.
6. Usa i Campi Obbligatori con Saggezza
Contrassegna le domande come obbligatorie solo se sono essenziali - le domande opzionali ottengono una migliore qualità delle risposte.
Integrazione con il Crowdsourcing
Per Prolific o MTurk, configura i codici di completamento:
phases:
poststudy:
enabled: true
data_file: "data/feedback.json"
show_completion_code: true
completion_code_format: "POTATO-{user_id}-{timestamp}"Vedi Crowdsourcing per ulteriori dettagli.