【发布时间】:2012-09-11 21:53:13
【问题描述】:
我想根据相似性对文档进行聚类。
我已经尝试过 ssdeep(相似性哈希),速度非常快,但有人告诉我 k-means 更快,而 flann 是所有实现中最快的,而且更准确,所以我正在尝试使用 python 绑定的 flann,但我找不到任何示例如何在文本上执行(它只支持数字数组)。
我对这个领域非常陌生(k-means,自然语言处理)。我需要的是速度和准确性。
我的问题是:
- 我们能否使用 KMeans 进行文档相似性分组/聚类(Flann 似乎不允许任何文本输入)
- Flann 是正确的选择吗?如果不是,请向我推荐支持文本/文档集群的高性能库,它具有 python 包装器/API。
- k-means 算法是否正确?
【问题讨论】:
-
这与stackoverflow.com/questions/8057442/document-clustering-basics 的问题几乎相同。我建议您查看 scikit-learn,它具有您需要的大部分内置功能,并且具有很好的可扩展性:scikit-learn.org/stable/auto_examples/document_clustering.html。或者,NLTK 也有 k-means:nltk.org/_modules/nltk/cluster/kmeans.html。
-
非常感谢。 scikit vs nltk 性能如何,你能评论一下吗?
-
我从未尝试过 NLTK 的聚类,但可以肯定的是,对于大型数据集,scikit-learn 的速度会快几个数量级。不过,NLTK 可能更易于使用。
-
如果您需要进行近似 k-NN 查询,那么 FLANN 是最先进的(据我所知,scikit-learn 和 NLTK 中没有近似 k-NN 查询模块)。但是 k-NN 查询和 K-Means 聚类并不能解决同一个问题。
标签: nlp cluster-analysis data-mining k-means text-mining