gpt4 book ai didi

python - 在 spacy 中保存和加载 nlp 结果

转载 作者:行者123 更新时间:2023-12-05 01:52:52 31 4
gpt4 key购买 nike

我想使用 SpaCy 分析许多小文本,我想存储 nlp 结果以供进一步使用以节省处理时间。我在 Storing and Loading spaCy Documents Containing Word Vectors 找到了代码但我收到一个错误,我找不到如何修复它。我是 python 的新手。

在下面的代码中,我将 nlp 结果存储到一个文件中并尝试再次读取它。我可以写第一个文件,但找不到第二个文件 (vocab)。我还收到两个错误:未定义 DocVocab

任何修复此方法或其他方法以达到相同结果的想法都非常受欢迎。

谢谢!

import spacy
nlp = spacy.load('en_core_web_md')
doc = nlp("He eats a green apple")
for token in doc:
print(token.text, token.lemma_, token.pos_, token.tag_, token.dep_,
token.shape_, token.is_alpha, token.is_stop)

NLP_FName = "E:\\SaveTest.nlp"
doc.to_disk(NLP_FName)
Vocab_FName = "E:\\SaveTest.voc"
doc.vocab.to_disk(Vocab_FName)

#To read the data again:
idoc = Doc(Vocab()).from_disk(NLP_FName)
idoc.vocab.from_disk(Vocab_FName)

for token in idoc:
print(token.text, token.lemma_, token.pos_, token.tag_, token.dep_,
token.shape_, token.is_alpha, token.is_stop)

最佳答案

执行此操作的有效方法是使用 DocBin 代替:https://spacy.io/usage/saving-loading#docs

改编自文档的示例(您可以使用 doc_bin.to/from_disk 而不是 to/from_bytes):

import spacy
from spacy.tokens import DocBin

doc_bin = DocBin()
texts = ["Some text", "Lots of texts...", "..."]
nlp = spacy.load("en_core_web_sm")
for doc in nlp.pipe(texts):
doc_bin.add(doc)

bytes_data = doc_bin.to_bytes()

# Deserialize later, e.g. in a new process
nlp = spacy.blank("en")
doc_bin = DocBin().from_bytes(bytes_data)
docs = list(doc_bin.get_docs(nlp.vocab))

关于python - 在 spacy 中保存和加载 nlp 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71427521/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com