我想根据相似性对文档进行聚类。
我已经尝试过 ssdeep (相似性哈希),速度非常快,但我被告知 k-means 更快,而 flann 是所有实现中最快的,而且更准确,所以我正在尝试使用 python 绑定(bind)的 flann,但我找不到任何示例如何在文本上执行(它只支持数字数组)。
我对这个领域非常陌生(k-means,自然语言处理)。我需要的是速度和准确性。
我的问题是:
最佳答案
您需要将文档表示为数字数组(又名向量)。有很多方法可以做到这一点,具体取决于您想要的复杂程度,但最简单的方法就是将其表示为字数的向量。
所以这就是你要做的:
这是一个例子。
如果您的“文档”是单个句子,并且它们看起来像(每行一个文档):
there is a dog who chased a cat
someone ate pizza for lunch
the dog and a cat walk down the street toward another dog
如果我的特征词集是
[dog, cat, street, pizza, lunch]
,然后我可以将每个文档转换为向量:[1, 1, 0, 0, 0] // dog 1 time, cat 1 time
[0, 0, 0, 1, 1] // pizza 1 time, lunch 1 time
[2, 1, 1, 0, 0] // dog 2 times, cat 1 time, street 1 time
您可以在您的 k-means 算法中使用这些向量,它有望将第一句和第三句组合在一起,因为它们是相似的,并且使第二句成为一个单独的集群,因为它非常不同。
关于nlp - 如何使用 k-means (Flann with python) 对文档进行聚类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497252/