命名实体识别
什么是命名实体识别(NER)、常见的标签集,以及如何在 Potato 中借助带颜色的跨度标签和提示文本构建 NER 标注任务。
命名实体识别(NER)是从文本中找出并分类有名称的事物的任务,包括人物、组织、地点、日期等。它是一种带有实体类型标签集的跨度标注任务。 NER 是搜索、知识图谱、脱敏和信息抽取的基础构件。
背景介绍参见命名实体识别。
选择标签集
从一个标准方案出发,再裁剪到你的领域:
- CoNLL-2003:
PER、ORG、LOC、MISC。一个不错的最小默认集。 - OntoNotes:18 种类型,包含日期、货币和百分比,适合更丰富的需求。
- 领域专用:生物医学(基因、疾病)、法律(法条、当事方)或金融。
类型越少、定义越清晰,一致性越高。只在真正有下游需求时才增加类型。
在 Potato 中构建任务
yaml
annotation_schemes:
- annotation_type: span
name: entities
description: "Highlight each named entity and select its type."
labels: [PERSON, ORGANIZATION, LOCATION, DATE, MISC]
allow_discontinuous: false
sequential_key_binding: true命名实体识别展示案例会用示例数据运行这份配置。
避免分歧的边界规则
NER 的多数分歧都关乎实体从哪里开始、到哪里结束,而非它是什么。请先决定并写入文档:
- 头衔算不算?("Dr. Jane Smith" 还是 "Dr. Jane Smith"。)
- 你是否把 "the" 包含进 "the United Nations"?
- 像 "Bank of England" 这样的嵌套实体怎么标?如果确实需要,请设置
allow_overlapping: true。
从标签到模型
导出为 CoNLL 或 spaCy 格式,它们用 BIO/IOB 标签表示实体。参见导出标注用于机器学习。