Desenho da validação¶
Um modelo pequeno classificando milhares de resumos é útil só se soubermos quanto ele concorda com uma leitura cuidadosa dos mesmos textos. A validação mede isso numa amostra: pessoas (ou um anotador de referência) codificam os documentos às cegas, e o mapa compara as respostas, variável por variável. O registro técnico das decisões está no repositório; o passo a passo, em Codificar a amostra; a leitura das métricas, em Ler kappa e PABAK.
A amostra¶
- 200 documentos com resumo, sorteados uma vez, com semente registrada (7 no piloto).
- Estratificada por tópico: cada tópico recebe uma parte proporcional ao seu tamanho, com pelo menos um documento; os documentos sem tópico formam um estrato. Assim a amostra cobre os assuntos do corpus, inclusive os pequenos. No piloto, são 58 estratos (57 tópicos e o "sem tópico").
- A amostra vem primeiro na fila da classificação, e
--somente-amostraclassifica só ela: a validação pode começar antes de o corpus inteiro ficar pronto.
Codificação cega¶
Quem codifica vê só o codebook, o título e o resumo, nunca o que o modelo respondeu. Cada pessoa tem uma ordem própria na fila (tirada do nome), o que evita que todas cansem nos mesmos documentos. Pode marcar uma resposta como incerta e escrever uma nota, e isso aparece nas divergências.
Quem responde¶
Cada participante tem um tipo, que acompanha os números em todo lugar:
- pessoa (
humano): quem codificou pelo painel ou por um arquivo importado; - referência (
referencia): um anotador que não é uma pessoa, como um modelo muito maior lendo a amostra às cegas; - modelo: cada modelo local que classificou a amostra.
No piloto, a amostra foi codificada por uma referência: instâncias independentes do Claude (Opus), em 10 lotes de 20, cada um com acesso só ao codebook e aos textos do lote, sem ver o projeto, as respostas do modelo local nem os outros lotes. Os códigos foram importados como claude-opus. Ao revisar os lotes, apareceu um desvio da regra: alguns períodos analisados tinham sido deduzidos do ano embutido no identificador do artigo, fora do texto. Esses casos foram refeitos só com o título e o resumo antes da importação.
A concordância com uma referência responde a uma pergunta mais fraca que a validação humana: quanto o modelo local reproduz a leitura de um modelo muito maior, seguindo as mesmas definições. Ela é útil para achar definições ambíguas e comparar modelos locais, mas não autoriza dizer que a classificação "acerta". Quando uma pessoa codificar a amostra, o mesmo relatório passa a mostrar a comparação humana ao lado.
As métricas¶
Para cada variável e cada par de participantes, sobre os documentos que os dois responderam: concordância simples, kappa de Cohen com intervalo de 95% por bootstrap, PABAK, alfa de Krippendorff nominal, matriz de confusão e precisão, revocação e F1 por categoria. Entre dois modelos comparados com a mesma referência, o teste de McNemar exato. O kappa e a precisão/revocação são conferidos com o scikit-learn nos testes, e o alfa com o exemplo publicado por Krippendorff.
Cada par tem também a concordância em duas partes da amostra:
- por idioma do texto lido, quando a amostra tem mais de um. Um modelo pode ler pior os resumos em inglês do que os em português, e a média esconde isso;
- entre respostas informativas: só os documentos em que nenhum dos dois respondeu "não informado" ou "não se aplica". Numa variável que os resumos raramente informam, concordar que o resumo não diz nada é fácil e infla a concordância. O subconjunto mostra se os dois concordam quando há o que classificar. Ele não existe nas booleanas ("não" é uma resposta) nem nas variáveis sem a categoria "não informado".
Com menos de 20 documentos, o subconjunto mostra só quantos documentos tem: o kappa de 20 documentos já tem um intervalo de 0,3 a 0,5 de largura. Os subconjuntos não trazem matriz de confusão nem métricas por categoria: num grupo pequeno, elas mostrariam as respostas de cada documento.
O que o piloto mostrou¶
Na amostra de 200 artigos, qwen3.5:9b contra a referência claude-opus. São 199 pares: desde a 2.3.0, um dos documentos sorteados não tem resumo (o único que tinha era um fragmento), e o modelo deixou de classificá-lo:
| Variável | Concordância | Kappa (IC 95%) |
|---|---|---|
| Brasil como caso | 97% | 0,94 (0,89 a 0,98) |
| Recorte geográfico | 79% | 0,74 (0,68 a 0,81) |
| Abordagem metodológica | 77% | 0,67 (0,59 a 0,75) |
| Subárea | 68% | 0,63 (0,56 a 0,70) |
| Técnica ou fonte de dados | 45% | 0,37 (0,30 a 0,45) |
| Período analisado (texto) | 84% | — |
Os subconjuntos dizem onde estão as divergências. Entre as respostas informativas, a técnica sobe de 0,37 para 0,56 (124 documentos, 0,46 a 0,66): boa parte do desacordo é sobre o resumo informar ou não a técnica. Por idioma, o modelo concorda menos nos resumos em inglês (40 documentos) em quatro das cinco variáveis com kappa, como a abordagem (0,70 em português e 0,57 em inglês) e o recorte geográfico (0,78 e 0,58); a técnica é a exceção (0,37 e 0,41). Com 40 documentos, os intervalos do inglês são largos: 0,38 a 0,74 na abordagem.
A técnica de pesquisa é a variável fraca, e a matriz de confusão mostra por quê: em 43 das 110 divergências, a referência respondeu "bibliografia" e o modelo, "não informado". São ensaios teóricos: o modelo entende que o resumo não informa uma técnica, e a referência lê a literatura como a fonte do estudo. A definição de "bibliografia" no codebook de exemplo ("a literatura ou autores clássicos são a fonte principal, típico de textos teóricos e revisões") não diz o que fazer quando o resumo não fala da fonte. É um problema do codebook, não só do modelo, e o caminho é reescrever as definições, classificar de novo e medir outra vez (veja Ler kappa e PABAK).
O período analisado é uma variável de texto livre, sem kappa, e a maior parte dos 84% vem da ausência: 114 dos 167 acertos são "não se aplica" nos dois. Dizer se o resumo tem um período (e não "não se aplica" ou "não informado") concorda mais (93%, kappa 0,85); quando os dois dão um período, 77% coincidem; e, entre os 83 artigos em que algum dos dois deu um período, a concordância é de 64%. A variável também mostrou uma ambiguidade: resumos que dizem "a partir dos anos 1990" ou "nos últimos vinte anos" não têm um período fechado, e o codebook não diz como responder nesses casos.
Limitações¶
- Uma referência, não pessoas. Até que alguém codifique a amostra, os números do piloto medem concordância com outro modelo.
- 200 documentos. Categorias raras têm pouco suporte: o intervalo do kappa e o suporte por categoria vêm sempre ao lado.
- Uma rodada. O modelo foi medido com o codebook de exemplo, como ele está; um codebook revisado pede uma nova medida.
- Resumos, não artigos. Tanto o modelo quanto quem codifica leem só o título e o resumo. Uma categoria que o artigo deixa clara, mas o resumo não, sai "não informado" para os dois, e a concordância não mede isso.