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

如何用Python基于Hugging Face NER输出的偏移量高亮文本?

NER实体高亮可视化的Python库推荐

下面几个Python库可以帮你实现NER实体的高亮可视化,完美适配你现有Hugging Face pipeline输出的偏移量和实体标注信息:

1. spaCy Displacy

Displacy是spaCy自带的可视化工具,支持自定义实体数据,哪怕你没用spaCy做NER也能用。你只需要把Hugging Face的输出转换成它要求的格式即可:

from spacy import displacy

# 整理Hugging Face实体输出为Displacy兼容格式
entities = []
for ent in token_classifier(text):
    # 提取核心实体类型(如从B_LAST_NAME中取出LAST_NAME)
    ent_type = ent['entity_group'].split('_')[1]
    entities.append({
        "start": ent['start'],
        "end": ent['end'],
        "label": ent_type
    })

# 构造Displacy所需的文档结构
doc_data = {
    "text": text,
    "ents": entities,
    "title": "NER实体高亮展示"
}

# 在浏览器或Jupyter环境中渲染
displacy.render(doc_data, style="ent", jupyter=True, manual=True)

2. Rich

如果需要在终端里直接高亮文本,Rich是个实用的选择,它支持终端内彩色高亮,适合快速调试查看结果:

from rich import print
from rich.text import Text

# 初始化文本对象
highlighted_text = Text(text)

# 倒序处理实体(避免前面的偏移修改影响后续位置)
for ent in reversed(token_classifier(text)):
    ent_type = ent['entity_group'].split('_')[1]
    # 给不同实体类型设置高亮样式,这里用红色粗体示例
    highlighted_text.stylize("bold red", ent['start'], ent['end'])

# 打印高亮后的文本
print(highlighted_text)

3. LabelStudio SDK

如果需要更专业的可视化界面,甚至后续要编辑标注,LabelStudio的SDK可以导入你的数据并生成可视化页面:

from label_studio_sdk import Client

# 初始化LabelStudio客户端(需先启动本地LabelStudio服务)
ls = Client(url='http://localhost:8080', api_key='YOUR_API_KEY')

# 创建项目并定义实体标签配置
project = ls.create_project(title='Driver License NER', label_config='''
<View>
  <Text name="text" value="$text"/>
  <Labels name="labels" toName="text">
    <Label value="LAST_NAME" background="red"/>
    <Label value="FIRST_NAME" background="blue"/>
    <!-- 添加你需要的其他实体类型 -->
  </Labels>
</View>
''')

# 导入文本和标注数据
task = project.import_tasks([{
    "data": {"text": text},
    "annotations": [{
        "result": [
            {
                "value": {
                    "start": ent['start'],
                    "end": ent['end'],
                    "labels": [ent['entity_group'].split('_')[1]]
                },
                "from_name": "labels",
                "to_name": "text",
                "type": "labels"
            } for ent in token_classifier(text)
        ]
    }]
}])

# 打开项目页面查看可视化效果
print(f"可视化页面:{project.get_url()}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:33:38