Python3运行spaCy代码报No module named 'spacy.lemmatizer'如何解决
spaCy ModuleNotFoundError: No module named 'spacy.lemmatizer' 修复方案
报错原因
该报错是由于spaCy v3.0及以上版本重构了词形还原模块的结构,移除了spacy.lemmatizer顶层导入路径,原有v2.x版本的API不再兼容。同时你提供的代码末尾存在变量名拼写错误,lemmattizer多写了一个t。
修复方案
方案1:适配spaCy v3.0+ 新API(推荐)
无需单独导入词形还原相关模块,直接从加载的模型管道中获取lemmatizer实例即可,示例代码如下:
import spacy nlp = spacy.load('en_core_web_sm') # 从管道中提取lemmatizer组件 lemmatizer = nlp.get_pipe("lemmatizer") # 执行词形还原 print(lemmatizer.lookup("chunkles", "NOUN"))
方案2:降级到spaCy v2.x 兼容旧代码
如果你需要沿用原有代码逻辑,可以将spaCy版本回退到最后一个v2.x稳定版,执行以下安装命令:
pip install spacy==2.3.9 # 安装对应版本的英文模型,需和spaCy版本严格匹配 pip install en_core_web_sm==2.3.1
降级完成后修正代码里的变量名拼写错误,即可正常运行原有逻辑。
验证方式
执行pip show spacy可查看当前安装的spaCy版本,确认和你使用的API版本匹配即可。
内容的提问来源于stack exchange,提问作者Ivonaldo Duarte de Araujo
相关产品推荐
相关产品推荐

