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

How to store spacy doc objects and reload them correctly?

我用 spacy 处理了大约 90 个文档。

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 的文档对象? 感谢您的帮助!

找到解决方案:

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)