
Validar um dicionário contra codificação humana
Source:R/ac_dictionary_validate.R
ac_dictionary_validate.Rdac_dictionary_validate() compara a classificação por dicionário
(saída de ac_dictionary(), ac_emotion() ou ac_sentiment() com
categorias binarizadas) contra uma codificação de referência humana,
categoria por categoria: a mesma lógica de validação que
ac_qual_reliability() aplica à classificação por LLM (com
by_variable = TRUE), agora para o método de dicionário.
Nenhum dicionário deveria ser usado numa análise publicável sem essa etapa (Grimmer & Stewart, 2013): um dicionário construído à mão pode parecer razoável e ainda assim ter baixa precisão ou recall numa categoria específica: só a comparação com uma amostra codificada por humano revela isso.
Arguments
- scored
Tibble retornado por
ac_dictionary()ouac_emotion()(com colunasdoc_ide<categoria>_npor categoria).- human
Tibble com colunas
doc_ide uma coluna de categoria (vercat_col): a codificação humana de referência, no mesmo formato aceito porac_qual_reliability()(multilabel como string separada por"|").- cat_col
Nome da coluna de categoria em
human. Padrão:"categoria".- threshold
Contagem mínima em
<categoria>_npara o dicionário considerar a categoria presente no documento. Padrão:0(qualquer palavra da categoria presente já conta).
Value
Tibble com uma linha por categoria do dicionário e colunas
categoria, n, vp, fp, fn, vn, concordância,
precisao, recall, f1, gwet_ac1, krippendorff_alfa: as
mesmas colunas de attr(ac_qual_reliability(...), "by_variable").
Denominadores indefinidos (ex.: uma categoria que nenhum dos dois
lados marcou) geram NA, nunca 0 ou 1 artificiais.
References
Grimmer, J.; Stewart, B. M. (2013). Text as Data: The Promise and Pitfalls of Automatic Content Analysis Methods for Political Texts. Political Analysis, 21(3), 267-297.
Examples
df <- data.frame(
id = paste0("d", 1:4),
texto = c(
"a entrega atrasou muito",
"o produto chegou com defeito",
"cobraram duas vezes no cartao",
"entrega rápida e produto perfeito"
),
stringsAsFactors = FALSE
)
corpus <- ac_corpus(df, text = texto, docid = id)
dict <- ac_build_dictionary(
entrega = c("entrega", "atrasou", "rápida"),
produto = c("defeito", "perfeito")
)
scored <- ac_dictionary(corpus, dict)
# Codificacao humana de referência (simulada para o exemplo)
human <- tibble::tibble(
doc_id = paste0("d", 1:4),
categoria = c("entrega", "produto", NA, "entrega|produto")
)
ac_dictionary_validate(scored, human)
#> # A tibble: 2 × 12
#> categoria n vp fp fn vn concordancia precisao recall f1
#> <chr> <int> <int> <int> <int> <int> <dbl> <dbl> <dbl> <dbl>
#> 1 entrega 3 2 0 0 1 1 1 1 1
#> 2 produto 3 2 0 0 1 1 1 1 1
#> # ℹ 2 more variables: gwet_ac1 <dbl>, krippendorff_alfa <dbl>