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:
- Marcação dos dados: as instâncias nos seus arquivos de dados são marcadas com categorias
- Avaliação no treinamento: as questões de treinamento também são marcadas com categorias
- Acompanhamento de desempenho: o sistema acompanha a precisão por categoria durante o treinamento
- Qualificação: os usuários que atingem o limiar de precisão ficam "qualificados"
- Atribuição: os usuários recebem apenas instâncias das categorias para as quais se qualificaram
Configuração
Configuração básica
# 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 nothingOpções de configuração
| Opção | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled | boolean | true | Habilita/desabilita a atribuição por categoria |
qualification.source | string | "training" | Origem: "training", "prestudy" ou "both" |
qualification.threshold | float | 0.7 | Precisão mínima (0.0-1.0) para qualificar |
qualification.min_questions | integer | 1 | Mínimo de questões por categoria |
fallback | string | "uncategorized" | Comportamento quando o usuário não se qualifica |
Opções de fallback
uncategorized: atribui instâncias que não têm categoriarandom: atribui aleatoriamente entre todas as instâncias restantesnone: não atribui nenhuma instância
Formato dos dados
Dados das instâncias
Inclua o campo de categoria nos seus arquivos de dados:
{"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:
{
"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:
- O sistema registra a categoria de cada questão
- 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:
- A precisão é calculada para cada categoria
- As categorias que atingem tanto o limiar QUANTO o mínimo de questões são adicionadas às "categorias qualificadas"
- As qualificações persistem durante a sessão
Exemplo
Se o limiar for 0.7 (70%) e min_questions for 2:
| Categoria | Questões | Corretas | Precisão | Qualificado? |
|---|---|---|---|---|
| Economia | 3 | 3 | 100% | Sim |
| Ciência | 2 | 1 | 50% | Não (abaixo do limiar) |
| Esportes | 1 | 1 | 100% | 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:
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.1Como funciona o modo dinâmico
- Estado inicial: todos os anotadores começam com expertise neutra (0.5) em todas as categorias
- Atribuição probabilística: categorias com maior expertise têm maior probabilidade de atribuição
- Processamento em segundo plano: calcula periodicamente o consenso e atualiza as pontuações de expertise
- Atualizações de expertise: as pontuações aumentam ao concordar com o consenso e diminuem ao discordar
Opções de configuração
| Opção | Tipo | Padrão | Descrição |
|---|---|---|---|
agreement_method | string | "majority_vote" | Como calcular o consenso |
min_annotations_for_consensus | integer | 2 | Mínimo de anotações antes de calcular |
learning_rate | float | 0.1 | Quão rapidamente as pontuações de expertise mudam |
base_probability | float | 0.1 | Probabilidade mínima para qualquer categoria |
Referência da API
Métodos de TrainingState
# 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
# 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
- Verifique se o usuário possui categorias qualificadas (revise o desempenho no treinamento)
- Há instâncias nessas categorias que ainda não foram anotadas?
- O
fallbackestá configurado de forma adequada?
Categorias não estão sendo rastreadas
- Verifique se
category_keyestá definido emitem_properties - As instâncias de treinamento têm o campo
category category_assignment.enabledestá comotrue
Leitura complementar
- Atribuição de Tarefas - Estratégias gerais de atribuição
- Fase de Treinamento - Configuração do treinamento
- Controle de Qualidade - Verificações de atenção e padrões-ouro
Para detalhes de implementação, consulte a documentação de origem.