14

我的场景非常简单:我有一堆新闻文章(目前约为 1k),我知道其中一些文章涵盖了相同的故事/主题。我现在想根据共享的故事/主题(即,基于它们的相似性)对这些文章进行分组。

到目前为止,我所做的是应用基本的 NLP 技术,包括停用词删除和词干提取。我还计算了每篇文章的 tf-idf 向量,并且还可以根据这些 tf-idf 向量计算余弦相似度。但是现在随着文章的分组,我有点挣扎。我看到了两种主要的方法——可能是相关的——来做到这一点:

1)机器学习/聚类:我已经对现有的聚类库进行了一些尝试,或多或少取得了成功;看这里。一方面,诸如 k-means 之类的算法需要聚类的数量作为输入,我不知道。其他算法需要的参数也不能直观地指定(对我来说就是这样)。

2)图算法:我可以将我的数据表示为一个图,其中文章是节点,加权边表示文章之间的成对(余弦)相似度。例如,我可以首先删除所有低于某个阈值的边,然后可以应用图算法来寻找强连接子图。

简而言之,我不确定从这里最好去哪里——我在这个领域还是很新的。我想知道是否有一些最佳实践,或者某种指导方针,哪些方法/算法可以(不)应用于某些场景。

(编辑:忘记链接到我的相关问题)

4

3 回答 3

3

尝试具有单一和完整链接的层次凝聚聚类HAC算法类。

这些算法不需要集群的数量作为输入。

基本原理类似于在给定的一组数据点上生长最小生成树,然后根据阈值标准停止。一个密切相关的类是分裂聚类算法,它首先建立最小生成树,然后根据聚类间的相似性比率修剪掉树的一个分支。

于 2014-08-10T20:51:00.440 回答
1

您还可以尝试对 k-means 进行树冠变化,以相对快速地估计聚类数 (k)。

http://en.wikipedia.org/wiki/Canopy_clustering_algorithm

你会随着时间的推移重新计算还是只关心一组静态的新闻?我问是因为你的 k 可能会随着时间的推移而改变。

于 2014-08-11T14:52:42.893 回答
1

由于您可以将数据集建模为图形,因此您可以应用基于马尔可夫模型的随机聚类。以下是 MCL 算法资源的链接:

官方论文描述和代码库

MCL 的 Gephi 插件(用于实验和评估该方法)

于 2014-08-12T02:28:30.850 回答