根据文本与LDA主题/特征群集的相似性对文本进行分组

时间:2017-06-16 01:35:07

标签: python machine-learning nlp classification cluster-analysis

我正在开发一个包含论坛帖子内容的数据库(首发帖子+回复)。我想根据第一篇文章的主题对这些文档进行分组/聚类。

我计算了LDA / LSI主题并尝试了K-means群集,但我找不到有关如何从群集中获取相关文本文档的文档。我只获得了每个集群的主要功能,但我希望整个文档或者像每个集群中的一些ID相关联。

我还尝试了一种具有已知机器学习算法的分类器和推荐器,但是它们的结果并没有真正有用。我也尝试使用word2vec和doc2vec计算相似度,结果也不是很精确。

总而言之,我想基于类似的功能/主题对文本文档进行分组,而不会丢失其内容的链接(如ID)。我还有更先进的方法,但我希望这首先工作。目标是使用软件对来自具有相同问题的用户的帖子进行分组,这些问题的原因可能相同。

1 个答案:

答案 0 :(得分:1)

您可以使用Python中的lda库来创建文档的LDA表示,如下所示:

import lda
model = lda.LDA(n_topics=20, n_iter=1500, random_state=1)
model.fit(X)
lda_representation = model.doc_topic_

假设X是大小为 n_doc x n_vocab 的文档矩阵,并且您的lda表示大小为 n_doc x n_topics

然后使用k-means algorithm from sklearn

对lda_representations进行聚类
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=10, random_state=0)
kmeans.fit(lda_representation)
clusters = kmeans.labels_

其中群集的大小为 n_docs x 1 ,并且是每个文档的群集分配,例如 clusters [0] 0之间的数字 n_clusters - 1 它告诉你document_0属于集群n。