我正在使用优秀的 scikit-learn 模块进行一些文本挖掘。我正在尝试对科学摘要进行聚类和分类。
我正在寻找一种方法来对我的一组 tf-id 表示进行聚类,而不必提前指定聚类的数量。我还没有找到一个可以做到这一点的好的算法,并且仍然可以很好地处理大型稀疏矩阵。我一直在研究简单地使用 scikit-learn 的 kmeans,但它没有办法确定最佳集群数量(例如使用 BIC)。我也尝试过使用高斯混合模型(使用最佳 BIC 分数来选择模型),但它们非常慢。
在对文档进行聚类后,我希望能够查看每个聚类的主题,即他们倾向于使用的词。给定数据矩阵和集群标签,有没有办法提取这些信息?也许取集群的平均值并使用 tf-id-vectorizer 对其进行逆变换?我之前曾尝试使用卡方和随机森林来对特征重要性进行排名,但这并没有说明哪个标签类使用什么。
我尝试使用 NMF 分解方法(仅使用 scikit-learns 网站上的示例代码)进行主题检测。它工作得很好,并且很快就产生了非常有意义的主题。但是,我没有找到一种方法来使用它将每个数据点分配给一个集群,也没有自动确定集群的“最佳”数量。但这是我正在寻找的东西。
我还在某处读到可以直接从拟合的 LDA 模型中提取主题信息,但我不明白它是如何完成的。由于我已经实现了 LDA 作为基线分类器和可视化工具,这可能是一个简单的解决方案。
如果我设法产生有意义的集群/主题,我会将它们与一些人造标签(不是基于主题)进行比较,看看它们是如何对应的。但这是另一个线程的主题:-)