ac_ca() reduz uma tabela de contingência documento/grupo x termo a
poucas dimensões, posicionando unidades e termos no mesmo espaço
geométrico (Greenacre, 2007). Unidades próximas entre si têm perfis de
vocabulário parecidos; termos próximos entre si são usados de forma
parecida pelos grupos. É
uma alternativa simples e determinística à Alocação de Dirichlet
Latente (LDA, já disponível em ac_lda()) para visualizar
associações entre vocabulário e grupos em duas dimensões: sem
assumir um número de tópicos latentes.
Como ler o mapa. As coordenadas de unidades e termos são principais (mapa "simétrico"). Nesse mapa, distâncias entre unidades (e entre termos) aproximam distâncias qui-quadrado entre perfis, mas a distância entre uma unidade e um termo não tem interpretação direta (Greenacre, 2007, cap. 8-9). Leia a relação unidade-termo pela direção: um termo longe da origem e na mesma direção de um grupo é sobrerrepresentado nele; termos perto da origem têm perfil parecido com a média (pouco distintivos).
É útil, por exemplo, para visualizar como o vocabulário difere entre categorias de atendimento ao cliente, entre seções de um conjunto de notícias, ou entre partidos/períodos legislativos: qualquer situação em que se queira um "mapa" conjunto de grupos e das palavras que os caracterizam.
Implementação: SVD (base::svd()) sobre os resíduos padronizados de
Pearson da tabela de contingência normalizada, no espírito do
algoritmo clássico de Análise de Correspondência (Greenacre, 2007).
Os sinais de cada dimensão são normalizados (a unidade com maior
coordenada em valor absoluto é sempre positiva), para que o
resultado seja determinístico entre execuções.
Arguments
- corpus
Objeto
ac_corpus.- by
Nome de uma coluna de metadados em
corpuspara definir os grupos (linhas da tabela de contingência). SeNULL(padrão), cada documento é uma linha.- top_n
Número máximo de termos (colunas) a manter, pelos mais frequentes no total. Padrão:
50.- min_count
Frequência total mínima de um termo para ele ser mantido. Padrão:
5.- n_dim
Número de dimensões a retornar. Padrão:
2.- drop_punct
Lógico, encaminhado para
ac_count(). Padrão:TRUE.
Value
Lista de classe ac_ca com:
row_coords: tibble comunit,dim1,dim2, ...,mass(massa/peso relativo da linha).col_coords: tibble comterm,dim1,dim2, ...,mass.eigenvalues: autovalores (inércia) de cada dimensão.variance_explained: proporção da inércia total explicada por cada dimensão.
References
Greenacre, M. (2007). Correspondence Analysis in Practice (2nd ed.). Chapman and Hall/CRC.
Examples
df <- data.frame(
id = paste0("d", 1:6),
texto = c(
"entrega atrasada rastreio sumiu",
"pedido atrasou muito, rastreio não atualiza",
"produto com defeito, chegou quebrado",
"veio quebrado, qualidade péssima",
"atendimento excelente, resolveram rápido",
"suporte educado e rápido, resolveu tudo"
),
categoria = c("entrega", "entrega", "produto", "produto",
"atendimento", "atendimento"),
stringsAsFactors = FALSE
)
corpus <- ac_corpus(df, text = texto, docid = id, meta = categoria)
ca <- ac_ca(corpus, by = "categoria", min_count = 1)
ca$variance_explained
#> [1] 0.5 0.5
