实体识别与抽取
一、任务定义:从文本中识别实体边界与类型
实体识别(Entity Recognition)的输入是一段非结构化文本,输出是文本中的实体片段(Span)及其类型(Type)。例如输入:「爱因斯坦 1921 年 在 斯德哥尔摩 获得 诺贝尔物理学奖。」输出可以是:(爱因斯坦, Person)、(1921年, Time)、(斯德哥尔摩, Place)、(诺贝尔物理学奖, Award)。边界即字符或词级别的起止位置;类型通常来自预定义集合(如 PER、LOC、ORG、TIME,或更细的领域类型)。
该任务与实体链接(Entity Linking)不同:识别只负责「这里有一个实体、类型是 X」,不负责「这个实体对应知识库里的哪个 URI」;链接是下一步,在后续章节讨论。实体识别是知识图谱构建流水线的第一环:先抽实体,再抽关系、再做链接与融合。
二、基于规则与词典的方法
在标注数据少、或实体形态较规则时,可用规则与词典做识别。
- 正则表达式:匹配日期(如 \d{4}年)、金额、身份证号等固定模式;适合格式规整的实体。
- 词典匹配:维护「实体名 → 类型」的词表(如城市名、机构名、产品名),在文本中扫描匹配;可结合分词与最长匹配。词典可从知识库、业务列表或爬取得到。
- 规则组合:如「大写开头 + 连续若干词」视为可能的人名或机构;「在 … 举行」中「在」与「举行」之间的片段视为地点。规则可写成正则、上下文模式或小脚本。
优点:可解释、易调试、不依赖标注数据;适合领域固定、实体形式较规范的场景。局限:难以覆盖多样表述、新实体与歧义;规则膨胀后维护成本高。实践中常与学习模型结合:规则做高置信召回,模型做细粒度与长尾。
三、命名实体识别(NER)与序列标注
命名实体识别(Named Entity Recognition, NER)把任务形式化为序列标注:对每个词(或字)打一个标签,表示「是否属于某类实体的开始/内部/外部」。常用标注方案有 BIO:B-XXX 表示某类实体的开始,I-XXX 表示该实体的后续词,O 表示非实体。例如:「爱因斯坦 在 巴黎 工作」→ B-PER, O, B-LOC, O。还有 BIOES(E 为实体结束,S 为单字实体),便于还原 span。
模型从早期的CRF、BiLSTM-CRF,到现在的预训练语言模型 + 分类头(如 BERT 接一个线性层对每个 token 预测标签)。类型集通常包含 PER、LOC、ORG、TIME 等;领域图谱可扩展为 Disease、Drug、Product 等。训练需要标注数据(每个 token 的标签);可用公开 NER 数据集(如 CoNLL-2003)或自建领域语料。
规则与词典
正则、词表匹配、上下文规则;可解释、无标注依赖;适合格式规整、领域固定。
NER / 序列标注
BIO(BIOES)、CRF/BiLSTM-CRF/预训练+头;需标注数据;泛化与长尾更好。
领域适配与少样本
微调、少样本提示、主动学习;解决领域偏移与标注不足。
四、领域适配与少样本
通用 NER 模型在新闻等语料上训练,迁移到医疗、法律、金融等领域时,往往出现领域偏移:术语不同、句式不同、实体类型不同。此时需要领域适配。
- 微调(Fine-tuning):在领域标注数据上继续训练预训练模型(或仅训练 NER 头),使模型适应领域用词与类型集。
- 少样本与零样本:标注极少时,可用提示学习(Prompting)、原型网络或大模型 in-context 示例,让模型根据少量示例或类型描述识别实体。
- 主动学习:优先标注模型最不确定的样本,用较少标注量提升效果。
- 领域词典与规则辅助:用领域词表做候选 span,再用模型做类型判断或边界修正,减少对大规模标注的依赖。
一句话: 实体识别从非结构化文本中识别实体边界与类型,是图谱构建流水线的上游。规则与词典适合格式规整、可解释;NER/序列标注(BIO、CRF、预训练+头)泛化更好但需标注。领域适配与少样本通过微调、提示、主动学习与词典辅助,解决领域偏移与标注不足。识别只产出 span+类型,与知识库的对应由下一环实体链接完成。
五、小结
实体识别输入文本、输出 (span, type);与实体链接区分开。规则与词典:正则、词表、上下文规则,可解释、无标注,适合规整场景。NER:BIO/BIOES 序列标注,CRF/BiLSTM-CRF/预训练+头,需标注数据。领域适配:微调、少样本、主动学习、词典辅助,应对领域偏移与标注少。下一章讲关系抽取方法:从文本中抽「谁与谁、什么关系」。