You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

spaCy自定义与预训练NER模型置信度获取及报错问题咨询

问题解答

报错原因

  • 你使用的代码适配的是spancat(跨度分类器)管线组件,但你加载的模型中默认集成的实体识别组件是ner,二者输出位置完全不同,ner的识别结果不会写入doc.spans["spancat"]字段,因此触发KeyError。
  • 你当前使用的spacy==3.1.2版本原生不支持获取NER实体置信度,该功能正式上线于spaCy 3.5及更高版本,版本不兼容也会导致功能无法使用。

置信度功能支持范围

  • 官方预训练NER模型:仅3.5版本及以上的官方预训练模型包内置的ner组件支持直接获取实体置信度,更低版本的预训练包无此功能。
  • 自定义训练的NER模型:如果是在spaCy 3.5及以上版本环境下训练,且训练配置中开启了store_scores = true参数,就可以正常获取置信度;旧版本环境下训练的自定义NER模型,需要在高版本环境下重新微调训练后才能支持该功能。
  • 如果你自定义训练的是spancat组件,只要模型管线中正确加载了训练好的spancat组件,就可以通过你现有代码获取跨度置信度。

操作示例

步骤1:升级spaCy到符合要求的版本

pip install -U spacy>=3.5.0

步骤2:NER组件获取置信度代码

自定义训练前,需在配置文件中[components.ner]配置段新增参数store_scores = true,训练完成的模型才会存储实体置信度,后续调取代码如下:

import spacy
# 加载符合版本要求的预训练/自定义NER模型
nlp = spacy.load("output/model-best")
doc = nlp("Sample data here")
# 遍历所有识别出的实体,打印文本、类型、置信度
for ent in doc.ents:
    print(f"实体文本:{ent.text},实体类型:{ent.label_},置信度:{ent._.score}")

内容的提问来源于stack exchange,提问作者user17179901

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:45:04