gpt4 book ai didi

python - 使用 Spacy 计算多个文档相似度的有效方法

转载 作者:行者123 更新时间:2023-12-02 01:41:12 25 4
gpt4 key购买 nike

我有大约 10k 文档(主要是 1-2 个句子),并且希望为每个文档找到 60k 文档集合中的 10 个最相似的文档。因此,我想使用spacy库。由于文档数量很大,这需要高效,所以我的第一个想法是计算 60k 文档中的每一个以及 10k 文档的文档向量 ( https://spacy.io/api/doc#vector ) 并将它们保存在两个矩阵中。这两个矩阵可以相乘得到点积,可以解释为相似度。现在,我基本上有两个问题:

  1. 这实际上是最有效的方法还是有一个巧妙的技巧可以加快这个过程
  2. 如果没有其他聪明的方法,我想知道是否至少有一种聪明的方法来加速计算文档向量矩阵的过程。目前我正在使用 for 循环,这显然不是很快:
import spacy
nlp = spacy.load('en_core_web_lg')
doc_matrix = np.zeros((len(train_list), 300))
for i in range(len(train_list)):
doc = nlp(train_list[i]) #the train list contains the single documents
doc_matrix[i] = doc.vector

是否有一种并行化的方法?

最佳答案

不要进行大矩阵运算,而是将文档向量放入近似最近邻存储中( annoy 易于使用)并查询每个向量的最近项目。

进行大矩阵运算将进行 n * n 比较,但使用近似最近邻技术将划分空间以执行更少的计算。对于整体运行时而言,这比您使用 spaCy 所做的任何事情都重要得多。

也就是说,还要检查 spaCy speed FAQ .

关于python - 使用 Spacy 计算多个文档相似度的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71586725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com