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

时间:2018-06-11 16:16:56

标签: 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))

似乎工作正常。之后,我想稍后重新加载doc文件作为生成器对象。

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对象? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

找到解决方案:

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)