使用XLNet做情感分类时tokenizer报NoneType无encode_plus属性错误
问题原因
XLNetTokenizer.from_pretrained执行时加载失败,返回了None,后续调用encode_plus方法自然会触发该AttributeError。加载失败的常见原因如下:
- 缺少核心依赖:XLNet分词器基于
sentencepiece库实现,该库不会随transformers默认安装,缺失时from_pretrained会静默失败返回None,是该问题的最高频触发原因 - 分词器文件损坏/下载不完整:网络波动导致xlnet-base-cased的分词器配置文件没有下载完整,缓存目录下的文件损坏,无法正常加载
- transformers版本兼容问题:过旧的transformers版本对XLNet的支持存在缺陷,也可能出现加载返回空的情况
解决步骤
- 安装缺失依赖,执行命令:
pip install sentencepiece
安装完成后重新运行代码测试,90%以上的该类问题都可以通过这一步解决。
2. 如果仍报错,清理损坏的模型缓存:找到huggingface的默认缓存目录(Linux/macOS为~/.cache/huggingface/hub,Windows为C:\Users\你的用户名\.cache\huggingface\hub),删除所有和xlnet-base-cased相关的文件夹,重新运行代码触发自动下载即可。
3. 若还是存在问题,升级transformers到稳定版本:
pip install --upgrade transformers
验证方法
加载完tokenizer后可先打印类型判断是否加载成功:
print(type(tokenizer)) # 正常输出应为 <class 'transformers.models.xlnet.tokenization_xlnet.XLNetTokenizer'>
内容的提问来源于stack exchange,提问作者nlpkind
相关产品推荐
相关产品推荐

