Skip to content

Atribuição por Categoria

Direcione instâncias de anotação para anotadores qualificados com base na expertise demonstrada no Potato. Configure regras de atribuição por categoria e filtragem por função.

A atribuição por categoria associa automaticamente os anotadores às instâncias de anotação com base na expertise que demonstraram. Os anotadores são avaliados durante as fases de treinamento por meio de questões específicas de cada categoria e recebem apenas instâncias das categorias para as quais foram qualificados.

Visão geral

O sistema de atribuição por categoria funciona da seguinte forma:

  1. Marcação dos dados: as instâncias nos seus arquivos de dados são marcadas com categorias
  2. Avaliação no treinamento: as questões de treinamento também são marcadas com categorias
  3. Acompanhamento de desempenho: o sistema acompanha a precisão por categoria durante o treinamento
  4. Qualificação: os usuários que atingem o limiar de precisão ficam "qualificados"
  5. Atribuição: os usuários recebem apenas instâncias das categorias para as quais se qualificaram

Configuração

Configuração básica

yaml
# Enable category-based assignment strategy
assignment_strategy: category_based
 
# Configure category key in item_properties
item_properties:
  id_key: id
  text_key: text
  category_key: category  # Field containing category
 
# Category assignment settings
category_assignment:
  enabled: true
  qualification:
    source: training      # Where qualification comes from
    threshold: 0.7        # 70% accuracy required
    min_questions: 2      # At least 2 questions per category
  fallback: uncategorized # What to do if user qualifies for nothing

Opções de configuração

OpçãoTipoPadrãoDescrição
enabledbooleantrueHabilita/desabilita a atribuição por categoria
qualification.sourcestring"training"Origem: "training", "prestudy" ou "both"
qualification.thresholdfloat0.7Precisão mínima (0.0-1.0) para qualificar
qualification.min_questionsinteger1Mínimo de questões por categoria
fallbackstring"uncategorized"Comportamento quando o usuário não se qualifica

Opções de fallback

  • uncategorized: atribui instâncias que não têm categoria
  • random: atribui aleatoriamente entre todas as instâncias restantes
  • none: não atribui nenhuma instância

Formato dos dados

Dados das instâncias

Inclua o campo de categoria nos seus arquivos de dados:

json
{"id": "econ_001", "text": "Market analysis...", "category": "economics"}
{"id": "sci_001", "text": "Research findings...", "category": "science"}
{"id": "multi_001", "text": "Interdisciplinary...", "category": ["economics", "science"]}
{"id": "general_001", "text": "General content...", "category": null}

Dados de treinamento

As instâncias de treinamento devem incluir categorias:

json
{
  "training_instances": [
    {
      "id": "train_econ_1",
      "text": "Question about economic concepts...",
      "category": "economics",
      "correct_answers": {"topic": "Economics"},
      "explanation": "This is an economics topic because..."
    }
  ]
}

Como funciona a qualificação

Durante o treinamento

À medida que os usuários respondem às questões de treinamento:

  1. O sistema registra a categoria de cada questão
  2. Para cada categoria, ele acompanha:
    • Total de questões respondidas
    • Número de respostas corretas
    • Precisão (corretas / total)

Após a conclusão do treinamento

Quando um usuário passa no treinamento:

  1. A precisão é calculada para cada categoria
  2. As categorias que atingem tanto o limiar QUANTO o mínimo de questões são adicionadas às "categorias qualificadas"
  3. As qualificações persistem durante a sessão

Exemplo

Se o limiar for 0.7 (70%) e min_questions for 2:

CategoriaQuestõesCorretasPrecisãoQualificado?
Economia33100%Sim
Ciência2150%Não (abaixo do limiar)
Esportes11100%Não (abaixo do mínimo de questões)

O usuário receberia apenas instâncias de "Economia".

Casos de uso

Roteamento por especialista

Direcione conteúdo especializado para anotadores qualificados:

  • Textos médicos para anotadores com conhecimento médico
  • Documentos jurídicos para quem domina a terminologia legal
  • Conteúdo técnico para quem tem expertise técnica

Controle de qualidade

Garanta a qualidade atribuindo conteúdo apenas a pessoas qualificadas:

  • Os anotadores comprovam sua competência antes de receberem trabalho real
  • Limiares de qualidade diferentes para tipos de conteúdo diferentes

Distribuição de carga de trabalho

Distribua o trabalho com base na expertise:

  • Itens de alta complexidade para anotadores especialistas
  • Itens gerais para todos os anotadores

Modo de expertise dinâmica

A expertise dinâmica permite a avaliação em tempo real durante a anotação, sem dados de treinamento rotulados como padrão-ouro:

yaml
category_assignment:
  enabled: true
  dynamic:
    enabled: true
    agreement_method: majority_vote
    min_annotations_for_consensus: 2
    learning_rate: 0.1
    update_interval_seconds: 60
    base_probability: 0.1

Como funciona o modo dinâmico

  1. Estado inicial: todos os anotadores começam com expertise neutra (0.5) em todas as categorias
  2. Atribuição probabilística: categorias com maior expertise têm maior probabilidade de atribuição
  3. Processamento em segundo plano: calcula periodicamente o consenso e atualiza as pontuações de expertise
  4. Atualizações de expertise: as pontuações aumentam ao concordar com o consenso e diminuem ao discordar

Opções de configuração

OpçãoTipoPadrãoDescrição
agreement_methodstring"majority_vote"Como calcular o consenso
min_annotations_for_consensusinteger2Mínimo de anotações antes de calcular
learning_ratefloat0.1Quão rapidamente as pontuações de expertise mudam
base_probabilityfloat0.1Probabilidade mínima para qualquer categoria

Referência da API

Métodos de TrainingState

python
# Record an answer for category tracking
training_state.record_category_answer(categories=['economics'], is_correct=True)
 
# Get score for a specific category
score = training_state.get_category_score('economics')
# Returns: {'correct': 3, 'total': 4, 'accuracy': 0.75}
 
# Get qualified categories based on threshold
qualified = training_state.get_qualified_categories(threshold=0.7, min_questions=2)

Métodos de UserState

python
# Add a qualified category
user_state.add_qualified_category('economics', score=0.85)
 
# Check if user is qualified for a category
is_qualified = user_state.is_qualified_for_category('economics')
 
# Get all qualified categories
categories = user_state.get_qualified_categories()

Solução de problemas

Usuários não estão recebendo instâncias atribuídas

  1. Verifique se o usuário possui categorias qualificadas (revise o desempenho no treinamento)
  2. Há instâncias nessas categorias que ainda não foram anotadas?
  3. O fallback está configurado de forma adequada?

Categorias não estão sendo rastreadas

  1. Verifique se category_key está definido em item_properties
  2. As instâncias de treinamento têm o campo category
  3. category_assignment.enabled está como true

Leitura complementar

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