Skip to content

命名实体识别

什么是命名实体识别(NER)、常见的标签集,以及如何在 Potato 中借助带颜色的跨度标签和提示文本构建 NER 标注任务。

命名实体识别(NER)是从文本中找出并分类有名称的事物的任务,包括人物、组织、地点、日期等。它是一种带有实体类型标签集的跨度标注任务。 NER 是搜索、知识图谱、脱敏和信息抽取的基础构件。

背景介绍参见命名实体识别

选择标签集

从一个标准方案出发,再裁剪到你的领域:

  • CoNLL-2003PERORGLOCMISC。一个不错的最小默认集。
  • 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 标签表示实体。参见导出标注用于机器学习

延伸阅读