spaCy中add_pipe()与analyze_pipes()报错求助
spaCy新手常见报错解决
错误1:添加tagger组件报错
报错代码
import spacy nlp = spacy.blank("en") nlp.add_pipe("tagger")
报错信息
ValueError: [E003] Not a valid pipeline component. Expected callable, but got 'tagger' (name: 'None').[E004] If you meant to add a built-in component, use
create_pipe:nlp.add_pipe(nlp.create_pipe('tagger'))
解决方法
这是spaCy版本差异导致的:
- 若使用v2.x版本:必须通过
nlp.create_pipe()创建组件实例再添加,修改后代码:import spacy nlp = spacy.blank("en") nlp.add_pipe(nlp.create_pipe("tagger")) - 若使用v3.x版本:
tagger已更名为pos_tagger,且空白模型无预训练权重,建议直接用预训练模型,或明确指定组件名:import spacy # 方式1:加载自带tagger的预训练模型 nlp = spacy.load("en_core_web_sm") # 方式2:给空白模型添加组件(需自行训练权重) nlp = spacy.blank("en") nlp.add_pipe("pos_tagger")
错误2:analyze_pipes方法不存在
报错代码
import spacy nlp = spacy.blank("en") nlp.add_pipe(nlp.create_pipe("tagger")) nlp.add_pipe(nlp.create_pipe("entity_linker")) analysis = nlp.analyze_pipes(pretty=True)
报错信息
AttributeError: 'English' object has no attribute 'analyze_pipes'
解决方法
analyze_pipes是spaCy v3.x新增方法,v2.x版本无此属性:
- 升级到spaCy v3.x:执行
pip install -U spacy,之后可正常使用nlp.analyze_pipes()查看管道信息。 - 若保留v2.x版本:用以下方式查看管道组件:
# 查看管道组件名称列表 print(nlp.pipe_names) # 查看管道组件实例及顺序 print(nlp.pipeline)
额外提示:entity_linker组件需配置知识库才能正常使用,无论哪个版本,直接添加都会报错,建议先加载带实体链接的预训练模型,或按官方文档配置知识库后再使用。
内容的提问来源于stack exchange,提问作者E.B
相关产品推荐
相关产品推荐

