ac_cluster_documents() particiona os documentos de um corpus em grupos
"duros" (hard clustering) com base na similaridade de vocabulário. Serve
para descobrir tipologias latentes, montar amostras estratificadas de
revisao humana ou produzir dendrogramas para relatórios metodologicos.
Não substitui ac_lda(): o LDA é um modelo de pertencimento misto
(cada documento vira uma mistura de tópicos), enquanto esta função
devolve uma etiqueta por documento.
Arguments
- corpus
Objeto
ac_corpus.- method
Algoritmo.
"hclust"(padrao) usa agrupamento hierarquico com ligacao Ward.D2;"kmeans"usa k-means comnstart = 25L;"pam"usa Partitioning Around Medoids (requerclusteremSuggests).- features
Como representar cada documento.
"tfidf"(padrao) pesa por TF-IDF;"count"usa contagens brutas.- k
Número de grupos. Se
NULL(padrao) emethod %in% c("hclust","kmeans"), tenta escolher automaticamente por silhouette entre 2 e 8; requercluster. Seclusternão estiver instalado,k = 3e o fallback.- distance
Métrica de dissimilaridade.
"cosine"(padrão) é o clássico em textos (Salton & McGill, 1983): compara a composição do vocabulário, não o tamanho do documento. Internamente ela é calculada como distância de corda, \(\sqrt{2(1 - \cos\theta)}\), que é a distância euclidiana entre os vetores normalizados para norma 1 (Legendre & Legendre, 2012). A ordem dos pares é a mesma de \(1 - \cos\theta\), mas a distância de corda é euclidiana, o que o critério de Ward (hclust) e o k-means exigem (Murtagh & Legendre, 2014). Com"cosine", o k-means também roda sobre os vetores normalizados."euclidean"usa os vetores brutos, sensíveis ao tamanho do documento.- min_docs
Mínimo de documentos para não emitir warning de corpus pequeno. Padrao:
15L.
Value
Objeto de classe ac_cluster com:
assignmentstibblecomdoc_idecluster(integer).fitObjeto bruto do algoritmo (
hclust,kmeansoupam).kNúmero final de grupos.
method,features,distanceParametros usados.
silhouetteSilhueta média (NA se
clusternão instalado).dtmMatriz documento-termo usada (para plotagem).
References
Legendre, P.; Legendre, L. (2012). Numerical Ecology (3rd ed.). Elsevier.
Murtagh, F.; Legendre, P. (2014). Ward's hierarchical agglomerative clustering method: Which algorithms implement Ward's criterion? Journal of Classification, 31(3), 274-295.
Rousseeuw, P. J. (1987). Silhouettes: a graphical aid to the interpretation and validation of cluster analysis. Journal of Computational and Applied Mathematics, 20, 53-65.
Salton, G.; McGill, M. J. (1983). Introduction to Modern Information Retrieval. McGraw-Hill.
Examples
# Corpus com dois blocos tematicos
df <- data.frame(
id = paste0("d", 1:8),
texto = c("democracia participacao voto liberdade",
"cidadania direitos participacao democracia",
"voto direitos liberdade cidadania",
"democracia voto participacao popular",
"mercado economia eficiência privatizacao",
"privatizacao mercado livre eficiência",
"economia crescimento investimento mercado",
"eficiência mercado economia livre"),
stringsAsFactors = FALSE
)
corpus <- ac_corpus(df, text = texto, docid = id)
clust <- ac_cluster_documents(corpus, k = 2)
#> Warning: Corpus pequeno: 8 documento(s).
#> ℹ Cluster analysis em corpus < 15 tende a ser ruidoso.
#> ℹ Considere revisar as etiquetas com `ac_qual_reliability()`.
clust$assignments
#> # A tibble: 8 × 2
#> doc_id cluster
#> <chr> <int>
#> 1 d1 1
#> 2 d2 1
#> 3 d3 1
#> 4 d4 1
#> 5 d5 2
#> 6 d6 2
#> 7 d7 2
#> 8 d8 2
