【发布时间】:2020-03-11 03:42:44
【问题描述】:
我有一个包含 470 万个问题的数据集,我想比较它们的 tf-idf 向量并为每个问题检索最相似的对。
根据 gensim 文档,
当您需要索引中的文档相似度时,还有一种特殊的语法
到索引本身(即查询=索引文档本身)。这种特殊的语法
在内部使用更快的批量查询,非常适合所有与所有成对相似性:
for similarities in index: # yield similarities of the 1st indexed document, then 2nd... ...
pass
但是,由于我有大约 470 万个文档,similarities 应该是一个长度为 470 万的 numpy 数组,这也非常大,我无法存储在内存中。
index = Similarity.load('out/corpus.index')
idx1 = 0
for similarities in index: # <---- this part is slow
idx1 += 1
# and other stuff
有没有一种方法可以为每个问题找到最相似的配对?
【问题讨论】:
-
无论如何,您必须遍历整个索引才能解决您的问题。为了加快这个过程,如果问题相互独立,您是否可以在同一遍中检查多个问题?
-
澄清一下,我的问题是没有足够的内存来存储生成的numpy数组,所以系统开始使用交换空间,这使得它变慢了。我想知道是否有一种方法可以做到这一点,而无需一次生成整个数组并将其加载到内存中