如何存储 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)
我用 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)