如何 快速的 计算两个向量 的 相似度啊

线上200维向量 使用余弦相似度计算 耗时太长

请问有什么快速的计算方式吗

java的 谢谢

阅读 5.2k
1 个回答
In [18]: a.shape
Out[18]: (200,)

In [19]: b.shape
Out[19]: (200,)

In [20]: timeit dot(a, b)/(norm(a)*norm(b))
8.56 µs ± 929 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

我用numpy测试的耗时是8µs,java没理由比这慢的。难道你的系统要求耗时连µs都嫌慢?

要么就是你的问题没有描述清楚,是不是有大量的200维数组,然后找到其中和输入数组最相似的?

这种的话,就需要一定的前置筛选条件筛选出小范围的候选数组。

比如有十万篇文章,每篇文章都被向量化成200维数组,那每次应该先通过文章类别、发表时间等筛选出约100篇候选文章,然后再去算文章向量的相似度。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题