加载scispaCy模型en_ner_bc5cdr_md时遇TypeError错误求助
问题描述
使用spaCy分析医疗文本提取诊断内容,上周运行正常,重启电脑后加载scispaCy的en_ner_bc5cdr_md模型时触发TypeError: issubclass() arg 1 must be a class错误,无法完成模型加载。
运行环境:
- Anaconda发行版
- Python 3.8.8
- OSX Version 13.5.2 (22G91)
模型安装命令:
pip install https://s3-us-west-2.amazonaws.com/ai2-s2-scispacy/releases/v0.4.0/en_ner_bc5cdr_md-0.4.0.tar.gz
测试代码:
import spacy import scispacy import pandas as pd text = """The patient was diagnosed with pneumonia last year. He has a history of asthma and hypertension. His COPD symptoms have worsened over the last 2 months. The patient also suffers from migraines.""" nlp = spacy.load("en_ner_bc5cdr_md") doc = nlp(text) labels = [] counts = [] for ent in doc.ents: if ent.label_ == 'DISEASE': if ent.text not in labels: labels.append(ent.text) counts.append(1) else: idx = labels.index(ent.text) counts[idx] += 1 df = pd.DataFrame({'Diagnosis': labels, 'Count': counts}) print(df)
问题排查与解决方案
核心原因:依赖版本不兼容
scispaCy v0.4.0基于spaCy 2.x开发,若重启后环境中spaCy被自动升级到3.x版本,会因API结构变化导致模型加载时的类检查逻辑失效,触发issubclass()错误。
解决步骤
锁定spaCy兼容版本
卸载现有spaCy,安装scispaCy v0.4.0要求的匹配版本:pip uninstall -y spacy pip install spacy==2.3.7重装模型与依赖
清理已损坏的包缓存,重新安装scispaCy和目标模型:pip uninstall -y scispacy en_ner_bc5cdr_md pip install scispacy==0.4.0 pip install https://s3-us-west-2.amazonaws.com/ai2-s2-scispacy/releases/v0.4.0/en_ner_bc5cdr_md-0.4.0.tar.gz验证环境完整性
运行以下命令确认版本匹配:python -c "import spacy; import scispacy; print('spaCy:', spacy.__version__); print('scispaCy:', scispacy.__version__)"输出需为
spaCy: 2.3.7和scispaCy: 0.4.0
成功运行的参数
测试环境配置:
- Python 3.8.8
- spaCy 2.3.7
- scispaCy 0.4.0
- pandas 1.3.5
- OSX Version 13.6
运行代码后输出结果:
Diagnosis Count 0 pneumonia 1 1 asthma 1 2 hypertension 1 3 COPD 1 4 migraines 1
内容的提问来源于stack exchange,提问作者John Conor
相关产品推荐
相关产品推荐

