如何用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
相关产品推荐
相关产品推荐

