如何在纯文本中显示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
相关产品推荐
相关产品推荐

