Skip to content

Fase de Treinamento

Crie fases de treinamento e qualificação no Potato com itens de prática, respostas de referência e limites de aprovação/reprovação para certificar anotadores antes da tarefa principal.

O Potato 2.0 inclui uma fase de treinamento opcional que ajuda a qualificar os anotadores antes que eles iniciem a tarefa principal de anotação. Os anotadores respondem a perguntas de prática com respostas corretas conhecidas e recebem feedback sobre seu desempenho.

Casos de uso

  • Garantir que os anotadores entendam a tarefa
  • Filtrar anotadores de baixa qualidade
  • Oferecer prática guiada antes das anotações reais
  • Coletar métricas de qualidade de referência
  • Ensinar as diretrizes de anotação por meio de exemplos

Como funciona

  1. Os anotadores completam um conjunto de perguntas de treinamento
  2. Eles recebem feedback imediato sobre cada resposta
  3. O progresso é acompanhado em relação aos critérios de aprovação
  4. Apenas os anotadores aprovados podem avançar para a tarefa principal

Configuração

Configuração básica

yaml
phases:
  training:
    enabled: true
    data_file: "data/training_data.json"
    schema_name: sentiment  # Which annotation scheme to train
 
    # Passing criteria
    passing_criteria:
      min_correct: 8  # Must get at least 8 correct
      total_questions: 10

Configuração completa

yaml
phases:
  training:
    enabled: true
    data_file: "data/training_data.json"
    schema_name: sentiment
 
    passing_criteria:
      # Different criteria options (choose one or combine)
      min_correct: 8
      require_all_correct: false
      max_mistakes: 3
      max_mistakes_per_question: 2
 
    # Allow retries
    retries:
      enabled: true
      max_retries: 3
 
    # Show explanations for incorrect answers
    show_explanations: true
 
    # Randomize question order
    randomize: true

Critérios de aprovação

Você pode definir vários critérios para aprovação na fase de treinamento:

Mínimo de acertos

yaml
passing_criteria:
  min_correct: 8
  total_questions: 10

O anotador deve acertar pelo menos 8 das 10 perguntas.

Exigir todas corretas

yaml
passing_criteria:
  require_all_correct: true

O anotador deve responder corretamente a todas as perguntas para ser aprovado.

Máximo de erros

yaml
passing_criteria:
  max_mistakes: 3

O anotador é desqualificado após 3 erros no total.

Máximo de erros por pergunta

yaml
passing_criteria:
  max_mistakes_per_question: 2

O anotador é desqualificado após 2 erros em qualquer pergunta individual.

Critérios combinados

yaml
passing_criteria:
  min_correct: 8
  max_mistakes_per_question: 3

Deve acertar 8 perguntas E não errar nenhuma pergunta individual mais de 3 vezes.

Formato dos dados de treinamento

Os dados de treinamento devem incluir respostas corretas e explicações opcionais:

json
[
  {
    "id": "train_1",
    "text": "I absolutely love this product! Best purchase ever!",
    "correct_answers": {
      "sentiment": "Positive"
    },
    "explanation": "This text expresses strong positive sentiment with words like 'love' and 'best'."
  },
  {
    "id": "train_2",
    "text": "This is the worst service I've ever experienced.",
    "correct_answers": {
      "sentiment": "Negative"
    },
    "explanation": "The words 'worst' and the overall complaint indicate negative sentiment."
  },
  {
    "id": "train_3",
    "text": "The package arrived on time.",
    "correct_answers": {
      "sentiment": "Neutral"
    },
    "explanation": "This is a factual statement without emotional indicators."
  }
]

Treinamento com múltiplos esquemas

Para tarefas com vários esquemas de anotação:

json
{
  "id": "train_1",
  "text": "Apple announced new iPhone features yesterday.",
  "correct_answers": {
    "sentiment": "Neutral",
    "topic": "Technology"
  },
  "explanation": {
    "sentiment": "This is a factual news statement.",
    "topic": "The text discusses Apple and iPhone, which are tech topics."
  }
}

Experiência do usuário

Fluxo de treinamento

  1. O usuário vê o indicador "Training Phase"
  2. A pergunta é exibida com o formulário de anotação
  3. O usuário envia sua resposta
  4. O feedback é mostrado imediatamente:
    • Correto: marca verde, avança para a próxima
    • Incorreto: X vermelho, explicação exibida, opção de tentar novamente

Exibição de feedback

Quando um anotador responde incorretamente:

  • A resposta correta é destacada
  • A explicação fornecida é exibida
  • O botão de tentar novamente aparece (se as novas tentativas estiverem habilitadas)
  • O progresso em relação aos critérios de aprovação é exibido

Monitoramento de administração

Acompanhe o desempenho do treinamento no painel de administração:

  • Taxas de conclusão
  • Média de respostas corretas
  • Taxas de aprovação/reprovação
  • Tempo gasto no treinamento
  • Precisão por pergunta

Acesse pelos endpoints da API /admin:

text
GET /api/admin/training/stats
GET /api/admin/training/user/{user_id}

Exemplo: treinamento de análise de sentimento

yaml
task_name: "Sentiment Analysis"
task_dir: "."
port: 8000
 
# Main annotation data
data_files:
  - "data/reviews.json"
 
item_properties:
  id_key: id
  text_key: text
 
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the sentiment of this review?"
    labels:
      - Positive
      - Negative
      - Neutral
 
# Training phase configuration
phases:
  training:
    enabled: true
    data_file: "data/training_questions.json"
    schema_name: sentiment
 
    passing_criteria:
      min_correct: 8
      total_questions: 10
      max_mistakes_per_question: 2
 
    retries:
      enabled: true
      max_retries: 3
 
    show_explanations: true
    randomize: true
 
output_annotation_dir: "output/"
output_annotation_format: "json"
allow_all_users: true

Exemplo: treinamento de NER

yaml
annotation_schemes:
  - annotation_type: span
    name: entities
    description: "Highlight named entities"
    labels:
      - Person
      - Organization
      - Location
      - Date
 
phases:
  training:
    enabled: true
    data_file: "data/ner_training.json"
    schema_name: entities
 
    passing_criteria:
      min_correct: 7
      total_questions: 10
 
    show_explanations: true

Dados de treinamento para anotação de span:

json
{
  "id": "train_1",
  "text": "Tim Cook announced that Apple will open a new store in New York on March 15.",
  "correct_answers": {
    "entities": [
      {"start": 0, "end": 8, "label": "Person"},
      {"start": 24, "end": 29, "label": "Organization"},
      {"start": 54, "end": 62, "label": "Location"},
      {"start": 66, "end": 74, "label": "Date"}
    ]
  },
  "explanation": "Tim Cook is a Person, Apple is an Organization, New York is a Location, and March 15 is a Date."
}

Boas práticas

1. Comece simples

Comece com exemplos diretos antes de introduzir casos extremos:

json
[
  {"text": "I love this!", "correct_answers": {"sentiment": "Positive"}},
  {"text": "I hate this!", "correct_answers": {"sentiment": "Negative"}},
  {"text": "It arrived yesterday.", "correct_answers": {"sentiment": "Neutral"}}
]

2. Cubra todos os rótulos

Garanta que o treinamento inclua exemplos de cada rótulo possível:

json
[
  {"correct_answers": {"sentiment": "Positive"}},
  {"correct_answers": {"sentiment": "Negative"}},
  {"correct_answers": {"sentiment": "Neutral"}}
]

3. Escreva explicações claras

As explicações devem ensinar as diretrizes de anotação:

json
{
  "explanation": "While this text mentions a problem, the overall tone is constructive and the reviewer expresses satisfaction with the resolution. This makes it Positive rather than Negative."
}

4. Defina critérios razoáveis

Não exija perfeição desnecessariamente:

yaml
# Too strict - may lose good annotators
passing_criteria:
  require_all_correct: true
 
# Better - allows for learning
passing_criteria:
  min_correct: 8
  total_questions: 10

5. Inclua casos extremos

Adicione exemplos complicados para preparar os anotadores:

json
{
  "text": "Not bad at all, I guess it could be worse.",
  "correct_answers": {"sentiment": "Neutral"},
  "explanation": "Despite negative words like 'not bad' and 'worse', this is actually a lukewarm endorsement - neutral rather than positive or negative."
}

Integração com fluxos de trabalho

O treinamento se integra a fluxos de trabalho de múltiplas fases:

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
 
  annotation:
    # Main task - always enabled
    enabled: true
 
  poststudy:
    enabled: true
    data_file: "data/feedback.json"

Considerações de desempenho

  • Os dados de treinamento são carregados na inicialização
  • O progresso é armazenado em memória por sessão
  • Impacto mínimo no desempenho da anotação principal
  • Considere separar treinamentos complexos em várias fases

Leitura adicional

Para detalhes de implementação, consulte a documentação de origem.