Quero usar a Alocação de Dirichlet Latente para um projeto e estou usando o Python com a biblioteca gensim. Depois de encontrar os tópicos, gostaria de agrupar os documentos usando um algoritmo como o k-means (idealmente, gostaria de usar um bom para sobrepor clusters para que qualquer recomendação seja bem-vinda). Consegui obter os tópicos, mas eles estão na forma de:
0,041 * Ministro + 0,041 * Chave + 0,041 * momentos + 0,041 * controverso + 0,041 * Prime
Para aplicar um algoritmo de clustering e me corrigir se estiver errado, acredito que devo encontrar uma maneira de representar cada palavra como um número usando tfidf ou word2vec.
Você tem alguma idéia de como eu poderia "retirar" as informações textuais de, por exemplo, uma lista, para fazer isso e depois colocá-las de volta para fazer a multiplicação apropriada?
Por exemplo, da forma como vejo se a palavra Ministro tem um peso tfidf de 0,042 e assim por diante, para qualquer outra palavra dentro do mesmo tópico, devo calcular algo como:
0,041 * 0,42 + ... + 0,041 * tfidf (Prime) e obtenha um resultado que será usado mais tarde para agrupar os resultados.
Obrigado pelo seu tempo.
fonte
Respostas:
Supondo que a LDA tenha produzido uma lista de tópicos e colocado uma pontuação em cada tópico de cada documento, você poderia representar o documento e suas pontuações como um vetor:
Para obter as pontuações para cada documento, você pode executá-lo. como um saco de palavras, através de um modelo LDA treinado. Na documentação do gensim:
Em seguida, você pode executar o k-means nessa matriz e deve agrupar documentos semelhantes. O K-means, por padrão, é um algoritmo de agrupamento rígido que implica que ele classifica cada documento em um cluster. Você pode usar mecanismos de cluster suave que fornecerão uma pontuação de probabilidade de que um documento se encaixe dentro de um cluster - isso é chamado de k-means difuso . https://gist.github.com/mblondel/1451300 é uma essência do Python mostrando como você pode fazer isso com o scikit learn.
ps: Eu não posso postar mais de 2 links
fonte
Complementando a resposta anterior, é melhor não apenas executar kmeans diretamente nos dados de composição derivados da distribuição lda topic-doc, em vez disso, use alguma transformação de dados de composição para projetá-los no espaço euclidiano como ilr ou clr.
( Exemplo )
fonte