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

如何使用displacy在spaCy 3中可视化NER训练数据及实体标注

spaCy 3 使用displacy验证NER标注数据的操作步骤

你只需要将自己的标注数据转换为spaCy可识别的Doc对象,即可直接调用displacy完成可视化验证,具体操作如下:


步骤1:导入依赖模块

import spacy
from spacy import displacy
from spacy.tokens import Doc, Span

步骤2:将自定义标注数据转换为Doc对象

默认你的数据集格式为(文本内容, 实体列表),其中每个实体的结构为(实体起始字符下标, 实体结束字符下标, 实体类型),转换代码示例:

# 加载空白语言pipeline,和你数据集的语言保持一致即可,英文填"en"、日文填"ja"
nlp = spacy.blank("zh")

# 示例标注数据,替换为你自己的数据集即可
sample_data = [
    ("小米公司2024年在北京发布了新款手机", [(0, 4, "ORG"), (5, 9, "DATE"), (10, 12, "GPE")]),
    ("张三昨天去上海迪士尼玩了一整天", [(0, 2, "PER"), (2, 4, "DATE"), (5, 10, "LOC")])
]

def convert_to_doc(text, entities, nlp):
    doc = nlp.make_doc(text)
    ents = []
    for start, end, label in entities:
        # 校验标注下标是否和文本分词结果匹配
        span = doc.char_span(start, end, label=label)
        if span is None:
            print(f"标注异常:文本「{text}」中的标注[{start}:{end}]{label} 不匹配分词边界")
        else:
            ents.append(span)
    doc.ents = ents
    return doc

# 批量转换所有标注数据
docs = [convert_to_doc(text, ents, nlp) for text, ents in sample_data]

注意:转换过程中输出的标注异常提示,就是你需要优先修正的标注错误,这类错误会直接影响后续NER模型的训练效果。

步骤3:调用displacy生成可视化结果

根据你的使用场景二选一即可:

  • 若在Jupyter Notebook/Lab环境下操作,可直接在单元格内渲染可视化结果:
# 渲染单条标注数据
displacy.render(docs[0], style="ent", jupyter=True)

# 批量渲染所有标注数据
displacy.render(docs, style="ent", jupyter=True)
  • 若在本地脚本中运行,可导出为HTML文件打开查看:
# 生成完整HTML内容
html_content = displacy.render(docs, style="ent", page=True)

# 保存到本地
with open("ner_annotation_verify.html", "w", encoding="utf-8") as f:
    f.write(html_content)

生成的可视化结果会用不同颜色标记不同类型的实体,你可以直接核对实体的标注范围、类型是否符合预期,快速排查漏标、多标、类型标错、下标错位等问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:27:03