Python 如何存储spacy文档对象并正确重新加载它们?

Python 如何存储spacy文档对象并正确重新加载它们?,python,nlp,spacy,Python,Nlp,Spacy,我有大约90个文件,我已经与spacy处理 import spacy, os nlp = spacy.load('de') index = 1 for document in doc_collection: doc = nlp(document) doc.to_disk('doc_folder/' + str(index)) 它似乎工作得很好。之后,我希望稍后将文档文件作为生成器对象重新加载 def get_spacy_doc_list(): for file in

我有大约90个文件,我已经与spacy处理

import spacy, os

nlp = spacy.load('de')
index = 1
for document in doc_collection:
    doc = nlp(document)
    doc.to_disk('doc_folder/' + str(index))
它似乎工作得很好。之后,我希望稍后将文档文件作为生成器对象重新加载

def get_spacy_doc_list():
    for file in os.listdir(directory):
        filename = os.fsdecode(file)

        yield spacy.tokens.Doc(spacy.vocab.Vocab()).from_disk('doc_folder/' + filename)


for doc in get_spacy_doc_list():
    for token in doc:
        print(token.lemma_)
如果我尝试此操作,则会出现以下错误:

KeyError: "[E018] Can't retrieve string for hash '12397158900972795331'."
如何存储和加载spacy的doc对象而不出现此错误? 谢谢你的帮助

找到了解决方案:

yield spacy.tokens.Doc(spacy.vocab.Vocab()).from_disk('doc_folder/' + filename)
Vocab()-实例应该是nlp的特定实例

yield spacy.tokens.Doc(nlp.vocab).from_disk('doc_folder/' + filename)
找到解决方案:

yield spacy.tokens.Doc(spacy.vocab.Vocab()).from_disk('doc_folder/' + filename)
Vocab()-实例应该是nlp的特定实例

yield spacy.tokens.Doc(nlp.vocab).from_disk('doc_folder/' + filename)

添加到您的答案中:您还可以通过调用其。如果您已经添加或修改了它,这将特别有用。(对于共享同一个vocab的所有
Doc
对象,您只需执行一次操作。)要添加到您的答案中:您还可以通过调用其。如果您已经添加或修改了它,这将特别有用。(对于共享同一个vocab的所有
Doc
对象,您只需执行一次此操作。)