存储和加载包含单词矢量的spaCy文档



我有一堆文档要用spaCy处理。当我在lg模型中加载时,将为处理的每个文档生成单词向量。我想把所有这些信息存储到磁盘上,以便以后可以检索。原因是我在表演成对的相似性。

下面是我正在做的拯救他们

import spacy
nlp = spacy.load('en_core_web_lg')
doc = nlp(my_text)
doc.to_disk(my_file)

这是我正在做的恢复然后

import spacy
nlp = spacy.load('en_core_web_lg')
idoc = Doc(Vocab()).from_disk(os.path.join(saved_docs, all_docs[i]))
jdoc = Doc(Vocab()).from_disk(os.path.join(saved_docs, all_docs[j]))
print(idoc.similarity(jdoc))

这产生:

ModelsWarning:[W007]您使用的模型没有单词矢量加载,因此Doc.similarity方法的结果将基于标记器、解析器和NER,它们可能不会提供有用的相似性判断。如果你使用的是一个小型号,例如en_core_web_sm,它不附带单词矢量,只使用上下文敏感张量。你总是可以添加你自己的单词向量,或者如果可用,则使用较大型号中的一个。

就好像单词向量在to_disk/from_disk过程中没有存活一样。

保持这些信息的正确方法是什么?

我找到了一种方法,我不知道它是否是最有效的。但显然to_disk()功能并没有按照我想要的方式工作

import spacy
nlp = spacy.load('en_core_web_lg')
doc = nlp(my_text)
doc.to_disk(my_doc_file)
doc.vocab.to_disk(my_doc_dir)

import spacy
nlp = spacy.load('en_core_web_lg')
idoc = Doc(Vocab()).from_disk(my_doc_i_file)
idoc.vocab.from_disk(my_doc_i_dir)
jdoc = Doc(Vocab()).from_disk(my_doc_j_file)
jdoc.vocab.from_disk(my_doc_j_dir)
print(idoc.similarity(jdoc))

单词矢量(如果存在(存储在各个令牌对象中,如doc[0]。矢量将为第一个令牌提供单词矢量。简单地对Doc对象调用to_disk并不能填充这些单词向量。

最新更新