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

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

任何修复这种或其他方法以达到相同结果的 idea 都是非常受欢迎的.

谢谢

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)

推荐答案

我try 了你的代码,我在下面的代码上解决了一些小问题.

Note that SaveTest.nlp is a binary file with your doc info and
SaveTest.voc is a folder with all the spacy model vocab information (vectors, strings among other).

我所做的改变:

  1. spacy.tokens导入Doc
  2. spacy.vocab导入Vocab
  3. 使用以下命令下载en_core_web_md型号:
python -m spacy download en_core_web_md

请注意,spacy针对每种语言都有多个模型,通常您必须先下载它(通常是smmdlg模型).阅读更多关于它的信息.

Code:

import spacy
from spacy.tokens import Doc
from spacy.vocab import Vocab

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)

让我知道这是否对你有帮助,如果没有,请将你的错误信息添加到原始问题中,以便我能提供帮助.

Python相关问答推荐

指示组内的rejected_time是否在creation_timestamp后5分钟内

如何让我的Tkinter应用程序适合整个窗口,无论大小如何?

jit JAX函数中的迭代器

提取两行之间的标题的常规表达

如何在图片中找到这个化学测试条?OpenCV精明边缘检测不会绘制边界框

Pandas 第二小值有条件

从webhook中的短代码(而不是电话号码)接收Twilio消息

我从带有langchain的mongoDB中的vector serch获得一个空数组

点到面的Y距离

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

Pandas Loc Select 到NaN和值列表

UNIQUE约束失败:customuser. username

用渐近模计算含符号的矩阵乘法

如何在达到end_time时自动将状态字段从1更改为0

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''

Odoo16:模板中使用的docs变量在哪里定义?

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

python的文件. truncate()意外地没有截断'

提取最内层嵌套链接

如何使用大量常量优化代码?