Skip to content

Ordenação por Diversidade

Reordene instâncias de anotação no Potato usando pontuação de diversidade baseada em embeddings para maximizar a cobertura do conjunto de dados e reduzir a redundância em grandes corpora não rotulados.

A ordenação por diversidade usa embeddings de sentence-transformers para agrupar itens semelhantes e, em seguida, amostra itens em rodízio entre diferentes clusters. Isso garante que os anotadores vejam conteúdo variado em vez de itens parecidos em sequência.

Benefícios

  • Reduzir a fadiga do anotador causada por conteúdo repetitivo
  • Melhorar a qualidade da anotação por meio de contexto variado
  • Cobertura mais rápida de todo o espaço de tópicos

Início Rápido

yaml
assignment_strategy: diversity_clustering
 
diversity_ordering:
  enabled: true
  prefill_count: 100

Como Funciona

  1. Inicialização: Os primeiros N itens são incorporados usando sentence-transformers e agrupados com k-means
  2. Atribuição: Os itens são amostrados em rodízio entre os clusters, garantindo variedade
  3. Anotação: Novos itens são incorporados de forma assíncrona à medida que são anotados
  4. Reagrupamento: Quando um usuário amostrou de todos os clusters, o sistema reagrupa

Configuração

yaml
diversity_ordering:
  enabled: true
 
  # Sentence-transformer model
  model_name: "all-MiniLM-L6-v2"
 
  # Clustering parameters
  num_clusters: 10
  items_per_cluster: 20
  auto_clusters: true           # Auto-calculate based on data size
 
  # Prefill on startup
  prefill_count: 100
  batch_size: 32
 
  # Re-clustering behavior
  recluster_threshold: 1.0      # Recluster when all clusters sampled
 
  # Order preservation
  preserve_visited: true
 
  # AI integration
  trigger_ai_prefetch: true

Referência de Configuração

OpçãoTipoPadrãoDescrição
enabledbooleanfalseHabilita a ordenação por diversidade
model_namestring"all-MiniLM-L6-v2"Modelo de sentence-transformers
num_clustersinteger10Número de clusters (quando auto_clusters=false)
items_per_clusterinteger20Tamanho-alvo do cluster (quando auto_clusters=true)
auto_clustersbooleantrueCalcula automaticamente a quantidade de clusters
prefill_countinteger100Itens a incorporar na inicialização
batch_sizeinteger32Tamanho do lote para o cálculo de embeddings
recluster_thresholdfloat1.0Fração de clusters a amostrar antes de reagrupar
preserve_visitedbooleantrueMantém os itens visitados/pulados em seus lugares
trigger_ai_prefetchbooleantrueAciona o cache de IA após a reordenação

Requisitos

bash
pip install sentence-transformers scikit-learn

Essas são dependências opcionais. Sem elas, o recurso será desabilitado com um aviso.

Desempenho

  • Inicialização: ~10 segundos para 100 itens, ~30 segundos para 500 itens (primeira execução; em cache depois)
  • Memória: ~1,5 KB por item (all-MiniLM-L6-v2), ~15 MB para 10.000 itens
  • Cache: Embeddings persistidos em disco em .diversity_cache/

Interação com Outros Recursos

  • Suporte de IA: Quando trigger_ai_prefetch: true, as dicas de IA são pré-buscadas automaticamente para os itens reordenados
  • Aprendizado Ativo: Pode ser combinado começando com o clustering por diversidade para a cobertura inicial e depois mudando para o aprendizado ativo
  • Preservação de Ordem: Quando preserve_visited: true, os itens vistos anteriormente mantêm sua posição

Exemplo Completo

yaml
annotation_task_name: "Diversity Ordering Test"
 
assignment_strategy: diversity_clustering
 
diversity_ordering:
  enabled: true
  model_name: "all-MiniLM-L6-v2"
  num_clusters: 5
  auto_clusters: false
  prefill_count: 100
  batch_size: 16
  recluster_threshold: 1.0
  preserve_visited: true
 
annotation_schemes:
  - annotation_type: radio
    name: topic
    description: "What is the main topic of this text?"
    labels:
      - name: Sports
      - name: Technology
      - name: Food
      - name: Travel
      - name: Health

Leitura Complementar

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