Skip to content
هذه الصفحة غير متوفرة بلغتك بعد. يتم عرض النسخة الإنجليزية.

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

FaseDescrizione
consentRaccolta del consenso informato
prestudySurvey pre-annotazione (dati demografici, screening)
instructionsLinee guida del compito e informazioni
trainingDomande pratiche con feedback
annotationCompito principale di annotazione (sempre richiesto)
poststudySurvey e feedback post-annotazione

Configurazione di Base

Usa la sezione phases nella tua configurazione:

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
 
  # 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)

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

Checkbox/Selezione Multipla

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

Input Testo

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

Input Numerico

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

Scala Likert

json
{
  "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

json
{
  "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:

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
  }
]

Il campo right_label specifica la risposta richiesta per procedere.

Survey Pre-Studio

Raccogli dati demografici o domande di screening:

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
  }
]

Fase delle Istruzioni

Mostra le istruzioni del compito:

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

Oppure usa il contenuto inline:

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>

Fase di Addestramento

Domande pratiche con feedback (vedi Fase di Addestramento per i dettagli):

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

Survey Post-Studio

Raccogli feedback dopo l'annotazione:

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
  }
]

Template Integrati

Potato include set di etichette predefiniti per le domande di survey comuni:

TemplateEtichette
countriesLista di paesi
languagesLingue comuni
ethnicityOpzioni di etnicità
religionOpzioni di religione

Usa i template nelle tue domande:

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

Campi a Risposta Libera

Aggiungi input di testo opzionale insieme alle domande strutturate:

json
{
  "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:

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

Esempio Completo

yaml
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: true

Configurazione Legacy

Il vecchio formato di configurazione surveyflow è ancora supportato per la compatibilità con le versioni precedenti:

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

Tuttavia, 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

yaml
# Troppo rigido - potrebbe escludere buoni annotatori
passing_criteria:
  require_all_correct: true
 
# Meglio - consente l'apprendimento
passing_criteria:
  min_correct: 8
  total_questions: 10

4. 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:

yaml
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.