
Identificar colocações com medidas de associação estatística
Source:R/ac_collocations.R
ac_collocations.Rdac_collocations() identifica pares (ou trincas) de palavras que
aparecem juntas com mais frequência do que o esperado pelo acaso:
colocações como "reforma tributária", "não recomendo" ou "atendimento
ao cliente", usando medidas de associação estatística em vez de
frequência bruta de bigramas/trigramas.
A diferença importa: bigramas puramente frequentes tendem a ser
dominados por combinações de palavras funcionais comuns ("de o",
"que a"), que são frequentes mas não informativas. As medidas de
associação penalizam esse efeito, destacando combinações que ocorrem
juntas mais do que a frequência individual de cada palavra sugeriria:
o uso típico é alimentar um dicionário customizado (ver
ac_build_dictionary()) ou simplesmente explorar expressões
compostas específicas de um domínio (jurídico, médico, técnico) antes
de uma análise de frequência ou nuvem de palavras.
Usage
ac_collocations(
corpus,
n = 2L,
measure = c("pmi", "ll", "chi2"),
min_count = 5L,
drop_punct = TRUE
)Arguments
- corpus
Objeto
ac_corpus.- n
Tamanho do n-grama:
2(padrão, bigramas) ou3(trigramas). Para trigramas, a tabela 2x2 compara a primeira palavra com o bigrama formado pelas duas seguintes (ex.: "atendimento" × "ao cliente"), e o PMI usa a mesma decomposição: \(\log_2[f(w_1 w_2 w_3) N / (f(w_1) f(w_2 w_3))]\).- measure
Medida de associação:
"pmi"(padrão): Pointwise Mutual Information (Church & Hanks, 1990): quanto mais alto, mais a coocorrência surpreende em relação ao esperado pelo acaso. Tende a favorecer pares raros."ll": log-likelihood ratio, G² (Dunning, 1993): mais confiável que o qui-quadrado e que o PMI para eventos raros, porque não supõe normalidade das contagens (Dunning, 1993; Evert, 2005). Atenção: não é a medida doquanteda.textstats::textstat_collocations(), que usa o lambda de Blaheta & Johnson (2001) e seu escore z."chi2": qui-quadrado de associação, mesma lógica deac_keyness()aplicada a pares de palavras adjacentes em vez de grupos de documentos.
- min_count
Frequência mínima do n-grama para ser considerado. Padrão:
5. Medidas de associação são instáveis para n-gramas muito raros.- drop_punct
Lógico. Se
TRUE(padrão), ignora n-gramas que incluem tokens de pontuação pura.
Value
Tibble ordenado por associação decrescente, com colunas:
collocation: o n-grama (palavras separadas por espaço);count: frequência absoluta do n-grama no corpus;association: valor da medida escolhida emmeasure.
References
Church, K. W.; Hanks, P. (1990). Word association norms, mutual information, and lexicography. Computational Linguistics, 16(1), 22-29.
Dunning, T. (1993). Accurate methods for the statistics of surprise and coincidence. Computational Linguistics, 19(1), 61-74.
Evert, S. (2005). The Statistics of Word Cooccurrences: Word Pairs and Collocations. Tese (Doutorado), Universität Stuttgart.
Blaheta, D.; Johnson, M. (2001). Unsupervised learning of multi-word verbs. Proceedings of the ACL Workshop on Collocations, 54-60.
Examples
# Reviews de um restaurante com expressoes compostas recorrentes
df <- data.frame(
id = paste0("r", 1:6),
texto = c(
"atendimento ao cliente impecavel, super recomendo o lugar",
"o atendimento ao cliente deixou a desejar dessa vez",
"comida boa mas atendimento ao cliente lento",
"não recomendo, atendimento ao cliente horrivel",
"ambiente agradável e atendimento ao cliente rápido",
"preco justo, atendimento ao cliente cordial sempre"
),
stringsAsFactors = FALSE
)
corpus <- ac_corpus(df, text = texto, docid = id)
ac_collocations(corpus, min_count = 2)
#> # A tibble: 2 × 3
#> collocation count association
#> <chr> <int> <dbl>
#> 1 ao cliente 6 2.87
#> 2 atendimento ao 6 2.87