导入错误:无法从"spacy.lang.en"导入名称"LEMMA_INDEX"



我正试图在spaCy中制作一个lemmatizer,但当我运行现有代码时,这个错误不断出现。

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中,LemmatizerLookups对象而不是单个变量初始化。请参阅此处关于初始化lemmatizer的第二节:https://spacy.io/usage/v2-2#migrating

如果你安装包spacy-lookups-data,你可以访问默认的英文lemmatizer,如下所示:

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()

最新更新