Flujos de Trabajo Multifase
Construye flujos de trabajo de anotación complejos con encuestas, entrenamiento y lógica de ramificación.
Flujos de Trabajo Multifase
Potato 2.0 soporta flujos de trabajo de anotación estructurados con múltiples fases secuenciales incluyendo consentimiento, encuestas de pre-estudio, instrucciones, entrenamiento, anotación y retroalimentación post-estudio.
Fases Disponibles
| Fase | Descripción |
|---|---|
consent | Recopilación de consentimiento informado |
prestudy | Encuestas pre-anotación (demografía, selección) |
instructions | Directrices e información de la tarea |
training | Preguntas de práctica con retroalimentación |
annotation | Tarea principal de anotación (siempre requerida) |
poststudy | Encuestas y retroalimentación post-anotación |
Configuración Básica
Usa la sección phases en tu configuración:
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"Tipos de Preguntas de Encuesta
Las fases de encuesta soportan estos tipos de preguntas:
Radio (Opción Única)
{
"name": "experience",
"type": "radio",
"description": "How much annotation experience do you have?",
"labels": ["None", "Some (< 10 hours)", "Moderate", "Extensive"],
"required": true
}Checkbox/Selección Múltiple
{
"name": "languages",
"type": "checkbox",
"description": "What languages do you speak fluently?",
"labels": ["English", "Spanish", "French", "German", "Chinese", "Other"]
}Entrada de Texto
{
"name": "occupation",
"type": "text",
"description": "What is your occupation?",
"required": true
}Entrada Numérica
{
"name": "years_experience",
"type": "number",
"description": "Years of professional experience",
"min": 0,
"max": 50
}Escala Likert
{
"name": "familiarity",
"type": "likert",
"description": "How familiar are you with this topic?",
"size": 5,
"min_label": "Not familiar",
"max_label": "Very familiar"
}Selección Desplegable
{
"name": "country",
"type": "select",
"description": "Select your country",
"labels": ["USA", "Canada", "UK", "Germany", "France", "Other"]
}Fase de Consentimiento
Recopila consentimiento informado antes de comenzar:
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
}
]El campo right_label especifica la respuesta requerida para continuar.
Encuestas de Pre-Estudio
Recopila datos demográficos o preguntas de selección:
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 de Instrucciones
Muestra las instrucciones de la tarea:
phases:
instructions:
enabled: true
content: "data/instructions.html"O usa contenido en línea:
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 de Entrenamiento
Preguntas de práctica con retroalimentación (consulta Fase de Entrenamiento para más detalles):
phases:
training:
enabled: true
data_file: "data/training.json"
schema_name: sentiment
passing_criteria:
min_correct: 8
total_questions: 10
show_explanations: trueEncuestas Post-Estudio
Recopila retroalimentación después de la anotación:
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
}
]Plantillas Incorporadas
Potato incluye conjuntos de etiquetas predefinidos para preguntas de encuesta comunes:
| Plantilla | Etiquetas |
|---|---|
countries | Lista de países |
languages | Idiomas comunes |
ethnicity | Opciones de etnicidad |
religion | Opciones de religión |
Usa plantillas en tus preguntas:
{
"name": "country",
"type": "select",
"description": "Select your country",
"template": "countries"
}Campos de Respuesta Libre
Agrega entrada de texto opcional junto a preguntas estructuradas:
{
"name": "topics",
"type": "checkbox",
"description": "Which topics interest you?",
"labels": ["Technology", "Sports", "Politics", "Entertainment"],
"free_response": true,
"free_response_label": "Other (please specify)"
}Encabezados de Página
Personaliza los encabezados de sección de la encuesta:
{
"page_header": "Demographics Survey",
"questions": [
{"name": "age", "type": "radio", ...},
{"name": "gender", "type": "radio", ...}
]
}Ejemplo Completo
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: trueConfiguración Heredada
El formato de configuración anterior surveyflow todavía es compatible por razones de retrocompatibilidad:
surveyflow:
enabled: true
phases:
- name: pre_survey
type: survey
questions: survey_questions.json
- name: main_annotation
type: annotationSin embargo, recomendamos migrar al nuevo formato phases para proyectos nuevos.
Mejores Prácticas
1. Mantén las Encuestas Concisas
Las encuestas largas reducen las tasas de finalización. Concéntrate solo en las preguntas esenciales.
2. Usa Entrenamiento para Tareas Complejas
Las fases de entrenamiento mejoran la calidad de la anotación, especialmente para tareas con matices.
3. Establece Criterios de Aprobación Razonables
# Too strict - may exclude good annotators
passing_criteria:
require_all_correct: true
# Better - allows for learning
passing_criteria:
min_correct: 8
total_questions: 104. Proporciona Instrucciones Claras
Incluye ejemplos en tu fase de instrucciones para aclarar las expectativas.
5. Prueba el Flujo Completo
Completa todo el flujo de trabajo tú mismo antes del despliegue para detectar problemas.
6. Usa Campos Obligatorios con Prudencia
Solo marca preguntas como obligatorias si son esenciales - las preguntas opcionales obtienen mejor calidad de respuesta.
Integración con Crowdsourcing
Para Prolific o MTurk, configura códigos de finalización:
phases:
poststudy:
enabled: true
data_file: "data/feedback.json"
show_completion_code: true
completion_code_format: "POTATO-{user_id}-{timestamp}"Consulta Crowdsourcing para más detalles.