文本聚类算法

数据挖掘 聚类 文本挖掘 算法 scikit-学习
2021-09-22 00:57:14

我有一个问题是按其含义将大量句子分组。这类似于当您有很多句子并希望按其含义对它们进行分组时的问题。

建议使用什么算法来做到这一点?我事先不知道集群的数量(随着更多数据的到来,集群也会发生变化),通常使用哪些特征来表示每个句子?

我现在正在尝试最简单的功能,只有单词列表和句子之间的距离定义为:

|AB \ AB|/|AB|

(A 和 B 是句子 A 和 B 中对应的词组)

这有意义吗?

我正在尝试将scikit 库中的 Mean-Shift算法应用到这个距离,因为它不需要提前的集群数量。

如果有人会针对该问题提出更好的方法/方法 - 将不胜感激,因为我对这个话题仍然很陌生。

1个回答

查看Stanford NLP Group的开源软件,特别是Stanford Classifier该软件是用 编写的Java,这可能会让您感到高兴,但也有一些其他语言的绑定。请注意,许可- 如果您计划在商业产品中使用他们的代码,您必须获得商业许可。

另一组有趣的开源库,恕我直言,适合这项任务等等,是机器学习 GraphLab 的并行框架,其中包括聚类库,实现各种聚类算法。它特别适用于非常大量的数据(就像您拥有的那样),因为它实现了MapReduce模型,因此支持多核多处理器 并行处理

您很可能知道以下内容,但我会提到它以防万一。自然语言工具包 (NLTK)包含用于Python对文本进行聚类/分类/分类的模块。查看NLTK Book中的相关章节

更新:

说到算法,您似乎已经尝试过 中的大部分算法,scikit-learn例如这个主题提取示例中的说明。但是,您可能会发现其他有用的库,它们实现了各种聚类算法,包括非负矩阵分解 (NMF)此类库之一是Python 矩阵分解 (PyMF)源代码)。另一个更有趣的库,也是基于 Python 的,是NIMFA,它实现了各种NMF 算法这是一篇研究论文,描述NIMFA这里是其文档中的一个示例,它提供了主题聚类非常相似的文本处理问题的解决方案。