Named Entity Recognition (NER)
命名实体识别 (NER) 会找出文本中的人物、组织、地点、日期和金额,并为每个实体标注其类型。
命名实体识别 (NER) 是一项自然语言处理 (NLP)任务,用于找出文本中指代现实事物的片段,并为每个片段标注类型,例如人物、组织、地点、日期或金额。在“Marie Curie taught at the University of Paris from 1906.”(玛丽·居里自 1906 年起在巴黎大学任教。)中,NER 模型会将“Marie Curie”标注为人物,将“University of Paris”标注为组织,并将“1906”标注为日期。这样,搜索引擎、知识图谱、分析工具和隐私工具就能使用从电子邮件、报告、合同和转录文本中提取的结构化记录。20 世纪 90 年代的消息理解会议 (MUC) 将 NER 确立为标准评测任务,而 CoNLL-2003 共享任务则确定了至今仍用作基准的四种类型:人物、地点、组织和其他。OntoNotes 5.0 等更大型的体系定义了 18 种类型,其中包括日期、数量、产品和事件。
NER 的工作原理#
NER 通常被定义为序列标注任务。分词器会将文本切分为词元,模型则按照 BIO 方案为每个词元分配一个标签:B- 表示实体的开头,I- 表示实体内部的词元,O 表示实体之外的词元,这样“University of Paris”等多词名称就能保持完整。下面的代码会将模型预测的标签转换为实体片段:
# Token-level BIO tags, as predicted by an NER model for one sentence
tokens = ["Marie", "Curie", "taught", "at", "the", "University", "of", "Paris", "from", "1906", "."]
tags = ["B-PER", "I-PER", "O", "O", "O", "B-ORG", "I-ORG", "I-ORG", "O", "B-DATE", "O"]
# Merge each B- tag with the I- tags that follow it into one entity span
entities = []
for token, tag in zip(tokens, tags):
if tag.startswith("B-"):
entities.append([token, tag[2:]])
elif tag.startswith("I-") and entities and entities[-1][1] == tag[2:]:
entities[-1][0] += f" {token}"
print(entities)它会输出 [['Marie Curie', 'PER'], ['University of Paris', 'ORG'], ['1906', 'DATE']],也就是下游系统存储和查询的结构化结果。
过去三十多年来,用于预测这些标签的模型不断演变。早期系统使用手写规则和专名词表(已知名称的列表)。隐马尔可夫模型和条件随机场等统计标注器利用标注文本和人工设计的特征(如大小写和词尾)进行学习。2016 年,带 CRF 输出层的双向 LSTM 网络开始自行学习这些特征,随后出现了经过微调的 Transformer:BERT 在 CoNLL-2003 测试集上取得了 92.8 的 F1 分数。自注意力让这些模型能够利用整个句子作为上下文,因此,在“Apple released a new phone”中,“Apple”会被标注为组织;而在“I ate an apple.”中则不会被标注。系统使用实体级精确率、召回率和 F1 分数进行评分;只有当预测的跨度和类型都与参考标注完全匹配时,该预测才计为正确。
较新的模型不再采用固定的标签集合。GLiNER是一种紧凑型双向 Transformer,它以实体类型名称作为输入,即使某些类型在训练时从未出现过,也能找出匹配的片段;而大型语言模型可以在提示中提供架构并要求输出结构化结果,从而提取实体。
NER 与相关任务的比较#
- 实体链接:将每个识别出的提及关联到知识库中的特定条目,例如 Wikidata,从而判断“Paris”指的是巴黎这座城市还是 Paris Hilton。
- 关系抽取:识别实体之间的关联,例如某个人在哪个组织工作,通常以 NER 的输出为基础。
- 情感分析:衡量文本表达的观点。NER 会识别评论谈论的对象,情感分析则会衡量作者对该对象的感受。
- 目标检测:相当于 NER 的图像版本,用于定位图像中的区域并为每个区域标注类别。
GLiNER 的开放标签理念在视觉领域有直接对应的模型:YOLOE-26是Ultralytics YOLO26的开放词汇版本,推理时会将类别名称作为文本提示,并检测和分割这些类别的目标,包括训练类别之外的目标。
实际应用#
文档处理会将 NER 与光学字符识别 (OCR)结合起来:扫描发票、合同和表单后,由 OCR 读取文本,NER 提取供应商、日期和总金额等字段,供会计和合规系统使用。生产流水线会将不确定的预测发送给人工处理,并从人工修正中学习:
- 个人身份信息 (PII) 脱敏:Microsoft 开源的 Presidio 等隐私工具会结合使用 NER 和模式规则,在文本共享或用于训练之前查找并屏蔽姓名、地址和账号。
- 临床文本挖掘:临床 NER 会从医生的记录中提取药物、剂量、症状和诊断信息,让医院和研究人员能够大规模搜索和分析记录。
- 搜索与推荐:新闻网站和内容平台会为文章标注其中提到的人物、公司和地点,以此支持实体搜索并推荐相关报道。










