ac_dictionary() conta, para cada documento de um ac_corpus,
quantas palavras caem em cada categoria de um dicionário:
generalização do método que ac_sentiment() já aplica só para
polaridade (positivo/negativo). Um dicionário aqui é qualquer lista
nomeada de listas de palavras: temas ("economia", "saúde"),
enquadramentos ("ameaça", "oportunidade"), categorias de produto, ou
qualquer taxonomia definida a priori pelo pesquisador.
Métodos de dicionário são o método mais antigo e mais transparente de
análise de conteúdo assistida por computador (Stone et al., 1966,
The General Inquirer; revisado em Grimmer & Stewart, 2013): toda
decisão de classificação é auditável: basta olhar a lista de
palavras. O preço é a falta de sensibilidade a contexto: a palavra
"não" imediatamente antes de um termo do dicionário não inverte a
contagem, e sarcasmo ou negação sofisticada passam batido. Para esses
casos, o pipeline de LLM (ac_qual_code()) é a alternativa: mais
caro, menos transparente, mas sensível a contexto.
Arguments
- corpus
Objeto
ac_corpus.- dictionary
Lista nomeada de vetores de caracteres: uma entrada por categoria, cada uma com as palavras daquela categoria (ver
ac_build_dictionary()). Palavras são comparadas a tokens individuais (correspondência exata, não substring).- by
Coluna(s) de agrupamento para agregar além do documento (ex.:
"categoria_produto"). Padrão:NULL(uma linha por documento).- case_insensitive
Lógico. Se
TRUE(padrão), ignora diferenças de maiúsculas/minúsculas na comparação.
Value
Tibble com uma linha por documento (ou grupo), contendo
total_tokens e, para cada categoria do dicionário, duas colunas:
<categoria>_n (contagem de palavras daquela categoria) e
<categoria>_prop (proporção sobre total_tokens).
References
Stone, P. J.; Dunphy, D. C.; Smith, M. S.; Ogilvie, D. M. (1966). The General Inquirer: A Computer Approach to Content Analysis. MIT Press.
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
# Reclamacoes de clientes, categorizadas por tema do problema
df <- data.frame(
id = paste0("c", 1:4),
texto = c(
"a entrega atrasou muito e o rastreio não funcionava",
"o produto chegou com defeito e quebrado na caixa",
"cobraram duas vezes no cartao e o reembolso demorou",
"entrega rápida mas o produto tinha um defeito de fabrica"
),
stringsAsFactors = FALSE
)
corpus <- ac_corpus(df, text = texto, docid = id)
dict <- ac_build_dictionary(
entrega = c("entrega", "atrasou", "rastreio", "rápida"),
produto = c("defeito", "quebrado", "fabrica"),
financeiro = c("cobraram", "cartao", "reembolso")
)
ac_dictionary(corpus, dict)
#> # A tibble: 4 × 8
#> doc_id total_tokens entrega_n produto_n financeiro_n entrega_prop produto_prop
#> <chr> <int> <int> <int> <int> <dbl> <dbl>
#> 1 c1 9 3 0 0 0.333 0
#> 2 c2 9 0 2 0 0 0.222
#> 3 c3 9 0 0 3 0 0
#> 4 c4 10 2 2 0 0.2 0.2
#> # ℹ 1 more variable: financeiro_prop <dbl>
