Fluxos de trabalho multifásicos
Construa fluxos de anotação em múltiplos estágios no Potato — combine fases de treinamento, tarefas de anotação e páginas de pesquisa personalizadas com termos de consentimento e ramificação condicional.
O Potato 2.0 suporta fluxos de anotação estruturados com várias fases sequenciais, incluindo consentimento, pesquisas de pré-estudo, instruções, treinamento, anotação e feedback de pós-estudo.
Fases disponíveis
| Fase | Descrição |
|---|---|
consent | Coleta de consentimento informado |
prestudy | Pesquisas de pré-anotação (demografia, triagem) |
instructions | Diretrizes e informações da tarefa |
training | Perguntas de prática com feedback |
annotation | Tarefa principal de anotação (sempre obrigatória) |
poststudy | Pesquisas e feedback de pós-anotação |
Configuração básica
Use a seção phases na sua configuração:
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 perguntas de pesquisa
As fases de pesquisa suportam estes tipos de perguntas:
Rádio (escolha única)
{
"name": "experience",
"type": "radio",
"description": "How much annotation experience do you have?",
"labels": ["None", "Some (< 10 hours)", "Moderate", "Extensive"],
"required": true
}Caixa de seleção/múltipla escolha
{
"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"
}Seleção em lista suspensa
{
"name": "country",
"type": "select",
"description": "Select your country",
"labels": ["USA", "Canada", "UK", "Germany", "France", "Other"]
}Fase de consentimento
Colete consentimento informado antes de começar:
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
}
]O campo right_label especifica a resposta exigida para prosseguir.
Pesquisas de pré-estudo
Colete dados demográficos ou perguntas de triagem:
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 instruções
Exiba as instruções da tarefa:
phases:
instructions:
enabled: true
content: "data/instructions.html"Ou use conteúdo embutido:
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 treinamento
Perguntas de prática com feedback (consulte Fase de treinamento para detalhes):
phases:
training:
enabled: true
data_file: "data/training.json"
schema_name: sentiment
passing_criteria:
min_correct: 8
total_questions: 10
show_explanations: truePesquisas de pós-estudo
Colete feedback após a anotação:
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
}
]Modelos integrados
O Potato inclui conjuntos de rótulos predefinidos para perguntas comuns de pesquisa:
| Modelo | Rótulos |
|---|---|
countries | Lista de países |
languages | Idiomas comuns |
ethnicity | Opções de etnia |
religion | Opções de religião |
Use modelos nas suas perguntas:
{
"name": "country",
"type": "select",
"description": "Select your country",
"template": "countries"
}Campos de resposta livre
Adicione entrada de texto opcional junto às perguntas estruturadas:
{
"name": "topics",
"type": "checkbox",
"description": "Which topics interest you?",
"labels": ["Technology", "Sports", "Politics", "Entertainment"],
"free_response": true,
"free_response_label": "Other (please specify)"
}Cabeçalhos de página
Personalize os cabeçalhos das seções da pesquisa:
{
"page_header": "Demographics Survey",
"questions": [
{"name": "age", "type": "radio", ...},
{"name": "gender", "type": "radio", ...}
]
}Exemplo 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: trueConfiguração legada
O formato de configuração surveyflow mais antigo ainda é suportado para compatibilidade retroativa:
surveyflow:
enabled: true
phases:
- name: pre_survey
type: survey
questions: survey_questions.json
- name: main_annotation
type: annotationNo entanto, recomendamos migrar para o novo formato phases em projetos novos.
Boas práticas
1. Mantenha as pesquisas concisas
Pesquisas longas reduzem as taxas de conclusão. Concentre-se apenas em perguntas essenciais.
2. Use treinamento para tarefas complexas
As fases de treinamento melhoram a qualidade da anotação, especialmente em tarefas sutis.
3. Defina critérios de aprovação razoáveis
# Too strict - may exclude good annotators
passing_criteria:
require_all_correct: true
# Better - allows for learning
passing_criteria:
min_correct: 8
total_questions: 104. Forneça instruções claras
Inclua exemplos na sua fase de instruções para esclarecer as expectativas.
5. Teste o fluxo completo
Conclua todo o fluxo de trabalho você mesmo antes da implantação para detectar problemas.
6. Use campos obrigatórios com critério
Marque perguntas como obrigatórias apenas se forem essenciais - perguntas opcionais obtêm respostas de melhor qualidade.
Integração com crowdsourcing
Para Prolific ou MTurk, configure códigos de conclusão:
phases:
poststudy:
enabled: true
data_file: "data/feedback.json"
show_completion_code: true
completion_code_format: "POTATO-{user_id}-{timestamp}"Consulte Crowdsourcing para mais detalhes.