python - ImportError:无法从“spacy.lang.en”导入名称“LEMMA_INDEX”
问题描述
我正在尝试在 spaCy 中创建词形还原器,但是当我运行我拥有的代码时,此错误不断弹出。
Traceback (most recent call last):
File "word_pract.py", line 46, in <module>
from spacy.lang.en import LEMMA_INDEX, LEMMA_EXC, LEMMA_RULES
ImportError: cannot import name 'LEMMA_INDEX' from 'spacy.lang.en'
这是代码,
import spacy
from spacy.lemmatizer import Lemmatizer
from spacy.lang.en import LEMMA_INDEX, LEMMA_EXC, LEMMA_RULES
nlp = spacy.load("en_core_web_sm")
lemmatizer = Lemmatizer(LEMMA_INDEX, LEMMA_EXC, LEMMA_RULES)
lemmas = lemmatizer(u'ducks', u'NOUN')
print(lemmas)
我的 spaCy 是最新的,并且在 conda 环境中使用 python 3.7.4。我也下载了en_core_web_sm,所以我不知道为什么它错了。
解决方案
这是由于从 v2.1 到 v2.2 的更改将大型查找表移出主库。lemmatizer 数据现在存储在单独的包中spacy-lookups-data
,并使用对象而不是单个变量Lemmatizer
进行初始化。Lookups
请参阅此处有关初始化 lemmatizers 的第二部分:https ://spacy.io/usage/v2-2#migrating
如果你安装了 package spacy-lookups-data
,你可以像这样访问默认的英语词形还原器:
from spacy.lang.en import English
lemmatizer = English.Defaults.create_lemmatizer()
如果数据可用,它会自动加载数据spacy-lookups-data
。如果它不可用,则引理将与文本中的标记相同。
如果您使用类似的英文模型en_core_web_sm
,则查找表包含在模型中,因此您不需要额外的包spacy-lookups-data
:
import spacy
nlp = spacy.load('en_core_web_sm')
lemmatizer = nlp.Defaults.create_lemmatizer()
推荐阅读
- android - 我不能这样设计
- c++ - C++ 函数作为参数二分查找
- javascript - 在 PDF 文档上拖放文本元素并使用删除的元素保存新 PDF
- java - 变量显示,但我不希望它显示
- excel - 打开网络文件/使用用户定义的函数启用内容时 Excel 间歇性崩溃
- crystal-reports - CrystalReports For Visual Studio 2017 NuGet 上的早期版本
- python - 对数据拟合对数正态分布并在 Python 和 R 中执行 Kolmogorov-Smirnov 检验
- java - Java - 以升序运行插入节点时出现运行时错误
- matlab - 如何从傅里叶光谱中恢复我的图像
- c++ - 检查窗口标题