performance - 非常快的文档相似度

标签 performance search similarity trigonometry

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

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

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

  • 预归一化所有术语向量
  • 为每组(n ~= 10,000)而不是每封电子邮件(n ~= 1,000,000)计算一个词向量;这对于我的应用程序来说可能是可以接受的,但是如果您能想到不这样做的理由,请告诉我!

  • 我有几个问题:
  • 如果一封新电子邮件有一个以前从未在任何电子邮件中出现过的新术语,这是否意味着我需要重新计算所有术语向量?这似乎很贵。
  • 有没有一些聪明的方法来只考虑可能接近查询文档的向量?
  • 有什么方法可以让我对所有这些向量使用的内存量更加节俭吗?

  • 谢谢!

    最佳答案

    使用 Bayesian filtering .提供的链接指的是垃圾邮件过滤,但您可以很容易地将该算法应用于多个类别/标签。

    好东西很多SO question about Bayesian filtering , 也。

    关于performance - 非常快的文档相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2829255/

    相关文章:

    r - 有什么方法可以提高 for 循环实现的查找和重新编码问题的性能(例如向量化)?

    java - 在 Java 中查找给定对话框源代码的有效方法

    time-series - 如何找到两个时间序列之间的偏移量以最小化它们的欧氏距离?

    python - 对二维 numpy 数组执行分组运算

    java - Java 如何高效地搜索 jar 文件中的类?

    MySQL 慢子查询

    javascript - 为什么这个简单的 Go 程序比对应的 Node.js 程序慢?

    Python 搜索带有键值的 Json

    visual-studio - 从 Visual Studio 搜索中排除特定文件

    php - 与php + gd的图像对比