spaCy加载en_core_web_md报[E002]找不到'tok2vec'工厂问题求助
问题解决方案
你遇到的报错核心原因是spaCy版本与预训练模型版本不兼容:
- 你当前安装的spaCy版本为2.3.5,属于spaCy v2版本线,该版本的pipeline组件没有内置
tok2vec模块 - 你下载的
en_core_web_md-3.1.0是spaCy v3.1对应的模型,内置了v2不支持的tok2vec组件,因此加载时触发工厂找不到的报错 - 你能正常运行的
en_core_web_sm是适配spaCy v2.3.x的版本,所以没有出现报错
解决方法
方案一:升级spaCy到v3.1版本(推荐)
如果没有旧项目依赖spaCy v2,直接升级spaCy到和模型匹配的版本即可解决:
- 先卸载旧版本spaCy
pip uninstall spacy -y
- 安装对应版本spaCy
pip install spacy==3.1.0
- 重启运行环境后再加载
en_core_web_md-3.1.0即可正常运行。
方案二:下载适配spaCy v2.3.5的en_core_web_md模型
如果不能升级spaCy版本,就替换当前的v3版本模型为v2.3对应的版本:
- 下载对应版本的模型包:
en_core_web_md-2.3.1(该版本适配spaCy 2.3.x全系列) - 本地加载时替换为对应版本的模型文件夹即可:
import spacy nlp = spacy.load('en_core_web_md-2.3.1')
内容的提问来源于stack exchange,提问作者Maria_DS
相关产品推荐
相关产品推荐

