ac_cooccurrence() calcula pares de termos que co-ocorrem dentro de
janelas deslizantes ou dentro do mesmo documento, retornando frequências
e medidas de associação (PMI, Dice).
Arguments
- corpus
Objeto
ac_corpusou tibble com colunasdoc_idetoken(saída deac_tokenize()).- window
Tamanho da janela deslizante (número de tokens de cada lado). Padrão:
5. Ignorado seunit = "document".- unit
Unidade de co-ocorrência:
"window"(padrão) ou"document".- measure
Medidas de associação a calcular. Um ou mais de:
"count"(frequência conjunta),"pmi"(pointwise mutual information),"dice"(coeficiente Dice). Padrão: as três.- min_count
Frequência mínima de co-ocorrência para incluir o par. Padrão:
2.- ...
Ignorado.
Value
Tibble com colunas:
word1,word2: par de termos (ordenado alfabeticamente);cooc: frequência de co-ocorrência. Comunit = "window", é o número de vezes em que os dois termos aparecem a atéwindowtokens um do outro (cada encontro conta uma vez); comunit = "document", é o número de documentos que contêm os dois;pmi(se solicitado): pointwise mutual information, em bits;dice(se solicitado): coeficiente Dice.
Details
PMI (Church & Hanks, 1990) compara a probabilidade conjunta com a
esperada sob independência: \(\log_2 [P(x,y) / (P(x)P(y))]\). Zero
indica que o par aparece junto tanto quanto o acaso preveria; valores
positivos, mais que o acaso. PMI superestima pares raros (Evert, 2005),
por isso use min_count para descartá-los.
Dice (Smadja, McKeown & Hatzivassiloglou, 1996) é \(2 f(x,y) / (f(x) + f(y))\), entre 0 e 1.
As probabilidades usam a mesma unidade da contagem conjunta: com
unit = "window", frequências de token e o total de tokens do corpus
(aproximação usual de Church & Hanks); com unit = "document",
frequência documental (em quantos documentos o termo aparece) e o
número de documentos. Pares de um termo com ele mesmo são ignorados.
References
Church, K. W.; Hanks, P. (1990). Word association norms, mutual information, and lexicography. Computational Linguistics, 16(1), 22-29.
Evert, S. (2005). The Statistics of Word Cooccurrences: Word Pairs and Collocations. Tese (Doutorado), Universität Stuttgart.
Smadja, F.; McKeown, K. R.; Hatzivassiloglou, V. (1996). Translating collocations for bilingual lexicons: A statistical approach. Computational Linguistics, 22(1), 1-38.
Examples
# Corpus tematico: coocorrência revela associações conceituais
# (que palavras "andam juntas" no discurso).
df <- data.frame(
id = paste0("d", 1:6),
texto = c(
"democracia participacao voto liberdade cidadania popular",
"cidadania direitos participacao democracia representacao politica",
"voto direitos liberdade cidadania soberania popular",
"mercado economia eficiência privatizacao competicao livre",
"privatizacao mercado livre eficiência produtividade lucro",
"economia crescimento investimento mercado capital juros"
),
stringsAsFactors = FALSE
)
corpus <- ac_corpus(df, text = texto, docid = id) |>
ac_clean()
tokens <- ac_tokenize(corpus)
# Janela de 3 tokens, sem filtro de frequência mínima
# (em corpora reais use min_count >= 5 para reduzir ruido)
cooc <- ac_cooccurrence(tokens, window = 3L, min_count = 1L)
head(cooc)
#> # A tibble: 6 × 5
#> word1 word2 cooc pmi dice
#> <chr> <chr> <int> <dbl> <dbl>
#> 1 cidadania direitos 2 3.58 0.2
#> 2 cidadania liberdade 2 3.58 0.182
#> 3 cidadania participacao 2 3.58 0.190
#> 4 cidadania popular 2 3.58 0.222
#> 5 cidadania voto 2 3.58 0.2
#> 6 democracia participacao 2 4.17 0.235
# Coocorrência com PMI (associação normalizada por acaso)
cooc_pmi <- ac_cooccurrence(tokens, window = 3L, measure = "pmi",
min_count = 1L)
head(cooc_pmi)
#> # A tibble: 6 × 4
#> word1 word2 cooc pmi
#> <chr> <chr> <int> <dbl>
#> 1 cidadania direitos 2 3.58
#> 2 cidadania liberdade 2 3.58
#> 3 cidadania participacao 2 3.58
#> 4 cidadania popular 2 3.58
#> 5 cidadania voto 2 3.58
#> 6 democracia participacao 2 4.17
