base-llm 2.2.1 命名实体识别概要

一、命名实体识别简介

文本分类是一种对文本的宏观理解。
命名实体识别则,则是深入内部理解,学习如何精准是被出句子中的人名、地名等具有特定意义的词语或短语。是作为信息抽取、知识图谱构建、智能问答等众多高级应用的关键环节,NER的目标是从非结构化文本中,精准地定位并分类出业务所关心的实体对象。

1.1 什么是命名实体?

命名实体就是现实世界中事物的名称,是文本中哪些指向特定对象、具有可识别性和唯一性的词语或短语。NER任务就是找出这些名字并贴上预先定义好的标签。
常见实体类型:


image.png

词是否被视为实体,以及它属于哪种实体,完全由业务场景的需求来决定。
不同数据集的实体类型定义差异较大,实际项目应先明确标签集合。

1.2 NER的应用价值

文本分类是抓住主旨大衣,NER就是学会从文本中抓住重点,找出谁在那儿做了什么等关键信息。
NLP应用:

  • 知识图谱构建: 海量文本中抽取实体以及其关系
  • 信息抽取: 帮助机器从无结构文本中,整理出结构化信息
  • 搜索引擎优化: 识别查询中的实体,提供精准、更结构化的搜索结果
  • 智能问答/对话系统: 理解用户意图,从用户提问中抽取出关键实体,给出准确答案。

二、命名实体识别的应用场景

2.1 智能搜索

三、NER的数据标注

  • 人工标注: 质量高且可靠,但是成本高、耗时长
  • 大语言模型辅助标注: LLM对数据进行标注,然后再由人工进行校对和修正。 效率提高,但是需要人工审核。
  • 半监督/迭代式标注:人工标注一部分数据来训练一个学生模型,接着用这个模型去预测大量未标注的数据,然后人工检查和修正这些预测结果;最后将修正后的数据加入训练集,训练处更强的“学生”模型,并重复以上的过程。

四、命名实体识别的方法

4.1 基于字典和规则的匹配

维护包含各种实体词汇的字典,然后在文本中进行字符串匹配。
优点:实现简单、速度快,对与特定、封闭领域的实体,准确率可能很高。
缺点:泛化能力差,无法识别出字典外的新词,规则维护成本高。

4.2 序列标注模型

常见的NER视线方式。 将NER任务转化为了一个序列标注问题——即未文本序列中的每一个token打上了一个预定义的标签。

4.2.1 方案一:Token级别的标签预测 (BMES/BIO)

每个Token预测其在实体中扮演的橘色,是序列标注最经典的思想。


image.png

BMES 常用于文本分词和命名实体识别。

模型结构: Token Embedding 层 -> 序列模型层 -> Token 分类层

  • Token Embedding/Encoder表示: 可以使用静态nn.Embedding; 常见的是直接使用预训练Encoder(如BERT/RoBERTa/DeBERTa等)的上下文表示。
image.png

nn.Embeding 虽是科学系的向量表示,但是无法不同上下文语境的向量表示是一样的,所以是静态的。 预训练模型使用注意力机制,会包含上下文语境。

  • Token Classify:
    • Softmax: 对每个Token独立分类,类别总数为1(非实体)+ 实体类别数*4(以BMES为例)
  • CRF: 在Softmax基础上,额外学习标签之间的注意概率,对整个序列进行全局最优解码。对RNN/CNN等编码器通常有效,但在强大预训练Encoder 如BERT上收益在不少数据集上以改变,是否采用以实验为准。

CRF与HMM区别
序列模型层?

  • 缺点: 无法解决实体嵌套问题。 如北京,北京大学。 无法同事识别出地名和机构名。

4.2.2 方案二: 指针网络与片段网络

主要是为了解决实体嵌套问题,是当前处理复杂NER场景的主流方案之一。

  • 片段网络:
    • 思路: 枚举所有可能的连续片段,然后用一个分类器去判断每一个片段属于哪个实体类型(或是“非实体”)
    • 优点: 理论上可以解决实体嵌套问题
    • 缺点: 计算量大,样本不均衡(大多数都是非实体,政府样本严重失衡)
  • 指针网络:
    • 思路:为每个token训练多个独立的二分类器,分别判断是否是某类实体的开头以及某类实体的结尾。
    • 候选生成:得到预测之后,后处理程序会按实体类型分别进行开头结尾配对。
    • 缺点: 有边界模糊问题,比如北在北京和北京大学里,在北这个词进行分类的时候边界模糊,导致影响结果。


      image.png

这种配对方式,可以生成所有可能的实体片段,包括嵌套的。

  • 指针网络+判断网络:
    • 思路: 结合两者的长处,形成一个高效的两阶段流程。
  1. 候选生成(指针网络):预测所有可能的实体开头和结尾
  2. 候选组合: 配对,获取所有获选片段
  3. 候选分类(片段网络):再使用片段网络对这些候选片段进行分类。
    优点: 既能解决嵌套问题,有降低了计算量,是解决复杂NER有效方案。
image.png

4.2.3 方案三: 基于分词的分类

  • 思路: 将NER任务分解为两步:先用分词模型将文本切分成词语,然后对每个词语进行分类
  • 缺点: 依赖上游分词模型,分词出错,实体识别就不准确。

4.3 生成式模型

将NER任务统一到生成框架下,通过精心设计Prompt来指令模型完成任务。

  • 思路: 将原始文本作为输入的一部分,让模型直接生成包含实体信息的结构化文本。
  • 实现方式: 思路是设计不同的输入输出格式,将NER任务转化为一个seq2seq的生成任务。
    • 方式一: 标准Encoder-Decoder模式
      • 思路: 原始文本未给Encoder,训练Decoder生成格式化实体字符串。
    • 方案二: 带实体清单提示的Encoder-Decoder
      • 思路: 在原始文本后附加上下文提示,明确告知模型需要关注哪些实体类型,以约束模型的输出空间,提高准确性。
    • 方案三:续写式生成(Decoder-only)
      • 思路: 将输入和输出拼接成一个完整的字符串,训练一个GPT风格的自回归模型来续写出实体。
    • 优缺点:
      优点: 统一的生成框架: 实体抽取任务完全转化为一个文本到文本的任务,单个模型能直接生成包含复杂结构的结果,输出形式非常灵活。
      Few-shot/Zero-shot强大的LLMs能极大减少数据标注成本,很多场景下无序训练就能获得不错的效果。
    • 缺点: 输出不稳定,幻觉问题

五、项目实现思路

数据处理-> 模型构建-> 训练、评估与持久化

5.1 数据处理与增强

  • 主要流程:
  1. 分词/分Token: 原始文本切分为Token序列
  2. Token与ID映射: 构建词表,将每个Token映射为一个唯一的数字ID
  3. 标签与ID映射: 构建标签表,将B-LOC,I-LOC等映射为唯一的数字ID
  • 数据增强: 标注数据有限的情况下,通过代码创造一个新的、合理的数据,以提升模型的泛化能力和鲁棒性
    1. 实体替换: 同类型实体的词典,随机替换原始文本中的实体
    2. 引入噪声: 模拟真实输入数据中的错误,随机地对文本进行微小改动
    3. 随机遮盖:训练时随机将文本中的一小部分(非实体)词元替换为<UNK>未知标记; 目的是为了在部分确实的情况下依赖上下文做出判断,提升模型泛化能力
    4. 拼音替换: 将少量中文词替换为拼音,模拟弱规范输入。

在医疗等强约束领域做实体替换时,应确包替换后的样本不破坏实体间的真是语义关系,否则引入反效果。

5.2 模型构建与迁移学习

NER模型的经典组合:Embedding层+ 动态词向量编码器(BERT,Bi-LSTM等)+ Token分类层(如全连接层+Softmax/CRF)。
输入: [Batch_size, Seq_len] 内容是tokenId
输出:[Batch_size,Seq_len, Num_classes] 代表每个token在所有num_classes个类别上的置信度得分。

迁移学习与微调:
通常使用通用预训练好的模型作为初始化参数,常见微调策略:

  1. 冻结参数: 预训练参数冻结,只训练新增的分类层,速度快但效果受限
  2. 同等处理: 一起学习,有相同学习率和更新逻辑进行训练
  3. 差分学习率微调: 为迁移过来的参数设置非常小的学习率,保留通用知识基础上向任务靠近,新增参数设置正常学习率使其快速收敛。
  4. 分层冻结/部分冻结:例如仅冻结BERT的前所感层,让后几层与分类头共同更新,在算力有限或数据较少时是较好的这种。

5.3 训练、评估与持久化

  • 训练循环: 迭代train_dataloader, 在每个批次上执行模型前向传播、计算损失、反向传播和参数更新。

  • 评估循环与指标:

    • 迭代 eval_dataloader, 计算模型在验证集上的性能
    • Token级别指标: 计算Token分类的准确率、F1值,用于监控训练过程。
    • 实体级别指标(核心):计算实体片段的精确率、召回率和F1值。很广效果的核心标准。
  • 标签序列-> 实体片段

    1. 从左到右扫描标签序列,遇到B-T开始新片段
    2. 在BMES中,M-T继续片段,E-T结束片段;S-T表示单字实体;O表示非实体。
    3. 在BIO中,I-T继续片段,遇到类型不一致或O时关闭当前片段
    4. 记录每个片段(start,end,type)边界与类型,用于标注集对齐,计算评估回指标。
  • 持久化: 评估过程中,根据实体级别的评估指标结果(如F1值达到新高),决定将当前模型参数保存到磁盘。

总结

  1. NER: 目的是为了微观理解,精准识别出句子中的人名、地名等特定词语或短语。

  2. 应用: 知识图谱,信息抽取,搜索引擎优化,智能问答等 意图识别

  3. NER数据标注: 人工标注、大语言模型辅助标注,半监督/迭代式标注(学生模型)

  4. 实现方法:
    a. 基于字典和规则
    b. 序列标注模型:Token级别标签预测,指针网络与片段网络,基于分词的分类
    c. 生成式模型: Encoder-Deocder, Decoder-only等。设计prompt来指令模型完成任务。

  5. 项目实现:
    5.1 数据处理与增强:符号化过程,数据增强(实体替换,拼音替换,引入噪声,随机覆盖)
    5.2 模型构建与迁移学习
    5.3 训练、评估与持久化
    评估指标: eval性能, token级别(分类准确率,F1等),实体级别(精确率、召回率和F1)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容