加载en_core_web_sm时遇transformers模块BertTokenizerFast属性错误
解决spacy加载en_core_web_sm时的AttributeError问题
问题根源
这个错误的核心是transformers包版本不兼容或安装异常:BertTokenizerFast是transformers的标准类,找不到它说明要么你安装的transformers版本过旧(老版本未引入该类),要么安装的不是官方transformers包,或是spacy_curated_transformers依赖的transformers版本与当前环境不匹配。
解决步骤
1. 清理并重装兼容的transformers包
先卸载现有transformers,再安装与spaCy 3.7.x兼容的版本:
!pip uninstall -y transformers !pip install transformers>=4.20.0,<5.0.0
spaCy 3.7.x对transformers的兼容范围是4.20.0到5.0.0之间,这个区间能保证BertTokenizerFast存在且与spaCy生态兼容。
2. 用官方方式重装en_core_web_sm模型
手动下载tar.gz安装容易出现版本匹配问题,直接用pip安装对应版本的模型包:
!pip install en-core-web-sm==3.7.0
如果网络条件允许,也可以用spaCy自带的下载命令:
!python -m spacy download en_core_web_sm
3. 验证安装并测试
执行以下代码确认环境正常:
import spacy print(spacy.__version__) # 应输出3.7.2 import transformers print(transformers.__version__) # 应在4.20.0-5.0.0之间 print(hasattr(transformers, 'BertTokenizerFast')) # 需输出True nlp = spacy.load('en_core_web_sm') doc = nlp("Hello world") print(doc.text) # 输出"Hello world"则表示成功
额外排查点
- 如果
import transformers无报错但找不到类,检查当前工作目录是否有重名的transformers.py文件,若有则删除 - 确认Jupyter Lab使用的是Anaconda对应的Python环境,避免包被安装到其他无关环境中
内容的提问来源于stack exchange,提问作者hulio_entredas
相关产品推荐
相关产品推荐

