5

我正在尝试尽快确定单个文档与大量文档(n ~= 100 万)中的每一个之间的文档相似性。更具体地说,我比较的文件是电子邮件;它们被分组(即,有文件夹或标签),我想确定哪个组最适合新电子邮件。快速性能至关重要。

我的先验假设是术语向量之间的余弦相似度适合此应用程序;请评论这是否是一个很好的措施!

我已经考虑了以下提高性能的可能性:

  1. 预归一化所有术语向量

  2. 为每个组(n ~= 10,000)而不是每封电子邮件(n ~= 1,000,000)计算一个术语向量;这对于我的申请可能是可以接受的,但是如果您能想到不这样做的理由,请告诉我!

我有几个问题:

  1. 如果一封新电子邮件有一个在以前的任何电子邮件中从未见过的新术语,这是否意味着我需要重新计算我所有的术语向量?这似乎很昂贵。

  2. 是否有一些聪明的方法来只考虑可能接近查询文档的向量?

  3. 有什么方法可以让我为所有这些向量使用的内存量更加节俭吗?

谢谢!

4

1 回答 1

4

使用贝叶斯过滤。提供的链接是指垃圾邮件过滤,但您可以很容易地将算法调整到多个类别/标签。

也有很多关于贝叶斯过滤的好问题

于 2010-05-13T18:29:03.370 回答