把英文报道或业务文字中的人名、机构、地点整理成表,可以先用命名实体识别模型生成候选,再回到原文确认。本例用 BERT NER 导出类型、原文片段和字符位置,解决分词后名称不完整、复制名称难以追溯的问题。
模型能提取哪些字段
dslim/bert-base-NER 在英文 CoNLL-2003 数据上训练,标签包括 PER(人名)、ORG(机构)、LOC(地点)和 MISC(其他实体)。它不提供你自定义的订单号、金额、病历诊断等字段,也不会保证覆盖所有人名。本题是英文实体提取,不是扫描图片文字识别;中文材料应另选经过核验的中文模型。

示例面向有基础 Python 经验的读者,按 Transformers 4.57.1 接口编写。Windows 可用以下独立环境;macOS/Linux 用 python3 创建环境,并把后续解释器路径换为 .venv/bin/python。首次加载模型需要网络、磁盘和足够内存,CPU 可以执行但速度取决于机器。安装失败时先看 Python 版本与 pip 报错,不能把安装成功当成模型已跑通。
py -m venv .venv
.venv\Scripts\python -m pip install "torch>=2.6" "transformers==4.57.1" safetensors
把实体写成可追溯 CSV
保存为 ner_demo.py 并用独立环境解释器运行。aggregation_strategy=”simple” 将适合聚合的子词合为候选实体;CSV 的 text 从原文按偏移切出,而不是直接复制可能含分词标记的 word。
import csv
from transformers import pipeline
ner = pipeline("token-classification", model="dslim/bert-base-NER",
aggregation_strategy="simple", device=-1)
text = "Alice joined Microsoft in Berlin. Bob works in London."
entities = ner(text)
rows = []
for item in entities:
start, end = int(item["start"]), int(item["end"])
assert 0 <= start < end <= len(text)
rows.append({"type": item["entity_group"], "text": text[start:end],
"score": float(item["score"]), "start": start, "end": end})
with open("entities.csv", "w", newline="", encoding="utf-8-sig") as file:
writer = csv.DictWriter(file, fieldnames=["type", "text", "score", "start", "end"])
writer.writeheader()
writer.writerows(rows)
print(rows)
结果怎样才算有用
打开 entities.csv,逐项对照 Alice、Microsoft、Berlin、Bob、London 的原句,检查实体是否漏掉、类型是否正确、名称是否被拆开。不要把这些词一定会被识别当成实测承诺;它们是本例的人工复核目标。输出空表说明没有实体通过模型判定,不能解释成正文确定没有实体。
为何一定保留原文位置
start 与 end 是当前 text 的字符位置。若后续要展示实体高亮,保存同一份原文和文档编号;文本清洗前后最好同时记录版本。分词聚合并不等同于姓名消歧:同名人物仍可能是不同人,两个相邻机构也不能只因类别相同而合并。
遇到长文、术语和异常怎样处理
该检查点来自新闻语料,领域缩写和新名称可能识别不准。用十几条你自己确认的句子先检查典型类型和漏检,再决定是否采用。长文切片必须保存每块原文起点,并将实体偏移换算回整篇位置;块边缘的名字可能被截断,需要重叠与去重规则。此示例只处理一个短段落,没有实现整篇切片。
相关问答
能直接用实体结果去替换敏感姓名吗?不建议。漏检会留下原名,误检会改坏正文;隐私脱敏需要补充规则、人工或专门的验收集,并保存替换前后的对应关系。
本文已核对官方接口与模型资料,示例输入为人为构造;未在本文环境下载并实跑所列公开模型,未测速度或任务准确率。下面的检查方法由你在实际运行后执行,不能把演示代码当成质量评测结果。
官方资料与版本依据
- 英文命名实体识别及 token classification 的处理流程。
- 各任务 pipeline 参数、输出字段及单标签/多标签归一化语义。
- 英文CoNLL-2003训练、PER/ORG/LOC/MISC四类实体和领域限制。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31344.html