导入bert-extractive-summarizer报sox警告及CpmTokenizer属性错误如何解决
bert-extractive-summarizer导入报错修复流程
步骤1:解决torchaudio sox后端弃用警告
该警告由旧版本torchaudio默认使用已废弃的sox后端触发,调整方法如下:
在所有第三方库导入代码的最开头,先切换torchaudio后端,再导入摘要相关库,示例代码如下:
import torchaudio # 切换为官方推荐的sox_io后端 torchaudio.set_audio_backend("sox_io") # 后续再导入summarizer相关组件 from summarizer import Summarizer, TransformerSummarizer
如果仍有警告弹出,可在代码开头新增警告过滤规则:
import warnings warnings.filterwarnings("ignore", message=".*sox backend is being deprecated.*")
步骤2:解决CpmTokenizer属性错误
该错误由bert-extractive-summarizer与高版本transformers库不兼容导致:旧版transformers中的CpmTokenizer在新版本中已被移除,可选择以下任意一种方式修复:
- 方式一:降级transformers到兼容版本(最简单稳妥,无需修改源码)
执行以下命令安装适配版本:pip uninstall -y transformers pip install transformers==4.1.1 - 方式二:保留现有transformers版本,修改summarizer源码
找到Python环境下site-packages/summarizer/transformer_summarizer.py文件,注释或删除所有引用CpmTokenizer的代码行即可。该操作不会影响BERT、GPT2等常用模型的摘要功能。
修复效果验证
执行以下测试代码确认功能正常:
import warnings import torchaudio warnings.filterwarnings("ignore", message=".*sox backend is being deprecated.*") torchaudio.set_audio_backend("sox_io") from summarizer import Summarizer # 测试用长文本 test_content = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。" # 调用BERT生成摘要 model = Summarizer() summary = model(test_content, num_sentences=2) print("生成摘要结果:", summary)
内容的提问来源于stack exchange,提问作者Uros Pocek
相关产品推荐
相关产品推荐

