余弦相似性 - 一对多

时间:2013-02-26 22:43:23

标签: cosine-similarity

我想知道是否有任何使用余弦相似性的好方法来将单个文档与一组文档进行比较。显然,您可以计算单个文档与集合中每个文档之间的余弦相似度,但如果您这样做,那么您会采用平均值吗?您是否会根据您与原始文档进行比较的其他每个文档的大小来衡量?我也想知道是否有任何方法可以将你所比较的文档集合中的所有字数统计在一起,这样你最终只计算余弦相似度一次;原始文档和“聚合”文档之间。我问的原因是我有大约200,000个文档,我想与另外一组约50,000个文档进行比较。将200,000个文档与50,000个文档中的每一个进行比较是很多计算,我不知道它是否是实际上,如果我最终要采取某种平均值,那么实际上是必要的。我的汇总文件是一个很大的禁忌吗?

1 个答案:

答案 0 :(得分:0)

有一种方法可以显着提高速度。关键是要注意单词向量是稀疏的。因此,您希望将文档转换为按字列组织的表。每个单词一列。对于每列,您只存储非零条目。这是每个文档实际包含该单词的一行。然后通过遍历列计算部分总和并收集每个文档的结果。这具有额外的优点,即易于并行化。

为了进一步加快这一点,你可以为每个单词创建一个列,并且只为不同集合的文档计算和分配同一个单词的部分和。