Skip to content

Cobertura heterogênea de anotadores

Atribua números diferentes de anotadores a itens diferentes. Configure um limite padrão, uma amostra de sobreposição estratificada para monitorar a qualidade, reforços adaptativos em caso de discordância, cotas por anotador e roteamento automático para arbitragem.

A cobertura heterogênea permite atribuir números diferentes de anotadores a itens diferentes em vez de um limite uniforme. O desenho de pesquisa comum é um anotador na maioria dos itens, com dois ou três se sobrepondo em uma amostra de 5 a 10 % para monitorar a qualidade. O Potato expressa isso por meio dos blocos de configuração num_annotators_per_item e per_annotator_quota.

Limites de anotadores por item

num_annotators_per_item é a chave canônica. Aceita um único inteiro para um limite uniforme, ou um mapeamento estruturado com um valor padrão, uma amostra de sobreposição e um reforço adaptativo opcional:

yaml
num_annotators_per_item:
  default: 1
  overlap_sample:
    fraction: 0.1
    count: 3
    stratify_by: domain
    seed: 42
  adaptive:
    enabled: true
    disagreement_threshold: 0.5
    boost_to: 3
  min: 1

max_annotations_per_item agora é um alias obsoleto de num_annotators_per_item: <int>.

Amostra de sobreposição

O bloco overlap_sample eleva o limite em um subconjunto determinístico de itens para monitorar a qualidade. A amostragem ocorre uma única vez na inicialização, e os itens escolhidos são marcados com required_annotations para que a lógica de atribuição os trate como de alta cobertura.

CampoTipoDescrição
fractionfloat em (0, 1]proporção de itens a amostrar
countint ≥ 2limite de anotadores para os itens amostrados (deve exceder default)
stratify_bystring (opcional)campo de dados do item usado para estratificar a amostra
seedint (opcional)semente do RNG; por padrão, o random_seed global

Quando stratify_by é definido, a fração é aplicada por estrato, de modo que cada categoria contribua proporcionalmente.

Reforço adaptativo

O reforço adaptativo amplia o limite de um item cujos primeiros anotadores discordaram. Assim que um item tem pelo menos duas anotações e seu escore de discordância ultrapassa disagreement_threshold, seu limite é elevado para boost_to e o item volta a entrar na fila de atribuição. O reforço ocorre uma única vez por item.

Cota por anotador

per_annotator_quota controla quantos itens são atribuídos a cada anotador, independentemente dos limites por item:

yaml
per_annotator_quota:
  default: 100
  by_user:
    alice: 30
  by_user_role:
    expert: 30
    novice: 200
 
user_roles:
  alice: expert
  carol: novice

Ordem de resolução: by_user[uid]by_user_role[user_roles[uid]]default.

Roteamento automático para arbitragem

Quando o bloco de arbitragem está habilitado, os itens da amostra de sobreposição que atingem seu limite são pontuados automaticamente e enviados para a fila de arbitragem se a concordância cair abaixo de agreement_threshold. Itens de baixa qualidade emergem assim que a amostra satura, em vez de quando um arbitrador reconstrói a fila manualmente.

yaml
adjudication:
  enabled: true
  adjudicator_users: [admin]
  min_annotations: 2
  agreement_threshold: 0.75

Inspeção da concordância

Assim que os itens da amostra de sobreposição saturam, as estatísticas de concordância ficam disponíveis em /admin/iaa, que calcula o conjunto de métricas apropriado ao annotation_type de cada esquema — por exemplo, kappa de Cohen e de Fleiss para esquemas nominais, weighted kappa para os ordinais e kappa em nível de token mais span F1 para os spans. Consulte o guia de concordância entre anotadores para entender o que essas métricas significam.

Exemplo

Uma demonstração executável fica em examples/advanced/heterogeneous-coverage/. A partir da raiz do repositório:

bash
python potato/flask_server.py start examples/advanced/heterogeneous-coverage/config.yaml -p 8000

Ela usa 20 itens em dois domínios, amostra 20 % para uma sobreposição de 3 anotadores estratificada por domínio, habilita um reforço adaptativo no limiar 0.5, define dois níveis de expertise e roteia itens de baixa concordância para arbitragem.

Relacionado

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