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

如何在纯文本中显示spaCy命名实体?(spaCy3.7.2、Python3.11)

纯文本格式输出spaCy命名实体的简便方法

针对spaCy 3.7.2 + Python 3.11,有几种快速生成美观纯文本调试输出的方法:

方法1:自定义实体高亮输出(保留原句结构)

直接遍历文档实体,在原句基础上用标记突出实体并标注类型,适合快速查看实体在上下文的位置:

import spacy

nlp = spacy.load("zh_core_web_sm")  # 替换为你使用的语言模型
doc = nlp("张三在北京的微软公司工作,负责开发Python项目。")

output = []
start_idx = 0
for ent in doc.ents:
    # 拼接实体前的普通文本
    output.append(doc.text[start_idx:ent.start_char])
    # 用星号高亮实体,同时标注类型
    output.append(f"*{ent.text}*({ent.label_})")
    start_idx = ent.end_char
# 拼接最后一段普通文本
output.append(doc.text[start_idx:])

print("".join(output))

输出示例:

张三(PER)在北京(GPE)的微软公司(ORG)工作,负责开发Python(LANGUAGE)项目。

方法2:结构化实体列表输出

如果需要单独查看实体的详细信息,可生成简洁的实体-类型列表:

import spacy

nlp = spacy.load("zh_core_web_sm")
doc = nlp("张三在北京的微软公司工作,负责开发Python项目。")

for ent in doc.ents:
    print(f"[{ent.text}] → {ent.label_}")

输出示例:

[张三] → PER
[北京] → GPE
[微软公司] → ORG
[Python] → LANGUAGE

方法3:表格格式输出(可选)

如果需要更规整的结构化展示,可借助tabulate库生成纯文本表格:

from tabulate import tabulate
import spacy

nlp = spacy.load("zh_core_web_sm")
doc = nlp("张三在北京的微软公司工作,负责开发Python项目。")

# 整理实体数据
entity_data = [
    [ent.text, ent.label_, ent.start_char, ent.end_char]
    for ent in doc.ents
]

# 生成表格
print(tabulate(
    entity_data,
    headers=["实体文本", "实体类型", "起始索引", "结束索引"],
    tablefmt="simple"
))

输出示例:

实体文本 实体类型 起始索引 结束索引


张三 PER 0 2
北京 GPE 3 5
微软公司 ORG 6 10
Python LANGUAGE 16 22

注意:使用tabulate需先安装:pip install tabulate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:31:05