You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

spaCy 3.3.1导入Lemmatizer报ModuleNotFoundError 已试方案无效

问题根因

spaCy 从3.2版本开始重构了词形还原模块的实现逻辑,3.1.x版本中使用的spacy.lemmatizer.Lemmatizer导入路径、spacy.lang.en下的LEMMA_INDEX/LEMMA_EXC/LEMMA_RULES三个全局常量已经被完全移除,因此3.3.1版本运行旧代码会触发ModuleNotFoundError报错。

适配3.3.1版本的实现方案

方案1:官方推荐用法(最简便)

直接加载英文语言管道调用词形还原能力,无需手动初始化Lemmatizer:

import spacy

# 首次运行前需先执行命令下载英文模型:python -m spacy download en_core_web_sm
nlp = spacy.load("en_core_web_sm")
doc = nlp("chuckles")
# 输出词形还原结果
print(doc[0].lemma_)

运行上述代码可得到预期输出chuckle。

方案2:手动初始化Lemmatizer(对齐旧代码调用逻辑)

如果需要单独调用Lemmatizer组件,可从英文语言类实例中获取组件,无需手动传入规则常量(规则已整合到组件内部):

from spacy.lang.en import English

nlp = English()
# 从管道中获取词形还原组件
lemmatizer = nlp.get_pipe("lemmatizer")
doc = nlp.make_doc("chuckles")
# 给目标token标注词性,和旧版调用传参的词性指定逻辑一致
doc[0].pos_ = "NOUN"
# 输出还原结果
print(lemmatizer.lemmatize(doc)[0])

注意:3.2及以上版本不再支持手动传入三个规则常量初始化Lemmatizer的旧写法,无兼容回退入口。

内容的提问来源于stack exchange,提问作者Aman Choudhary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:45:32