首页 > 解决方案 > 保存和加载由 gensim 相似性模型制作的多个分片

问题描述

我的数据有超过 100 万行,在训练 gensim 相似性模型时,它正在制作多个 .sav 文件(model.sav、model.sav.0、model.sav.1 等等)。问题是在加载时,它只加载一个子部分,而不是所有子部分,因此在预测中表现得很糟糕。根据 gensim 文档,参数/选项不起作用。

根据 gensim 文档 - https://radimrehurek.com/gensim/similarities/docsim.html 保存为文件句柄并提供以下参数应该有效 - :

  1. model.save(fname_or_handle,分别=无)
  2. model.load(文件路径,mmap = 'r')

甚至试图——

  1. 腌制 .sav 文件(这仅腌制第一个分片,即 model.sav)
  2. 将所有子部分压缩为 .gz 文件(这仅压缩一个分片,而不是所有子部分)并且还会产生某种泡菜错误。
tf_idf = gensim.models.TfidfModel(corpus)

sims = gensim.similarities.Similarity('./models/model.sav',tf_idf[corpus],
                                          num_features=len(dictionary))
sims.save('./models/model.sav')

sims1 = gensim.similarities.Similarity.load(./models/model.sav)

预期的结果应该给出来自语料库的所有匹配文档,但这仅来自 model.sav(加载时提到的文件)。它甚至不执行其他分片。我检查了每个分片的结果。

问题:如何使用 gensim 模型的所有子文件来预测我的测试文档的相似性,而不是单独遍历每个子文件,然后呈现这些结果的联合。

标签: pythonmodelgensim

解决方案


据我了解,“model.sav”是一种访问所有实际相似性分片的目录。

len(sims1) 的输出是什么?在包含 65,536 个条目的语料库上运行上述代码(恰好创建两个分片),我可以保存并加载语料库并检查它是否包含 65,536 个文档。我还可以添加文档并进一步保存/加载。


推荐阅读