【nlp学习】浅谈实体识别

文章目录

  • 前言
  • 一、实体识别简介
    • 1.实体识别
    • 2.复杂情况下的实体识别
  • 二、几种标注方法
    • 1.指针标注
    • 2.多头标注
    • 3.片段排列+分类
  • 三、数据层面的问题


前言

参考资料:刷爆3路榜单,信息抽取冠军方案分享:嵌套NER+关系抽取+实体标准化

一、实体识别简介

1.实体识别

实体识别的难点一方面在于一些复杂实体难以有效训练识别,另一方面在数据层面的问题。要做实体识别模型训练,那么就要进行实体标注。常见的标注策略就是使用BIO, BMEO, 或者BMEOS等形式,这些是比较常见的标注方式,按照这种标注方式其实就是对每一个token进行多分类,分类之后解码得到每个token的预测标签,常用的解码方式有CRF和softmax,常用的模型有BILSTM+CRF以及DNN+softmax之类的模型。

2.复杂情况下的实体识别

在实际应用中的实体识别往往较为复杂。

  • 嵌套实体
  • 非连续实体
  • 类型易混淆实体
    【nlp学习】浅谈实体识别_第1张图片
    虽然上述复杂情况也可以通过序列标注来训练模型解决,比如针对嵌套实体可以对句子进行多个序列标注然后将多分类任务转化为多标签分类任务,然而这种方式的学习难度比较大,且容易导致标签之间的依赖关系缺失;另外也可以将多个序列标注相对应位置一一合并,然后依然使用CRF或者softmax进行解码,然而这种方式指数级的增加了标签数量,而且对于多层嵌套以及标签稀疏问题更难解决。
    【nlp学习】浅谈实体识别_第2张图片
    为了更好的解决上述问题,研究人员提出了各种有效的标注策略

二、几种标注方法

1.指针标注

指针标注,分为层叠式指针标注和MRC-QA指针标注。

前者表示有多少个实体类型就构建多少层的标注label,每一层代表一个实体类型,标注时只标注实体的头和尾。可以看到每一层都有两个标签,分别表示是否是头start,是否是尾end,也就是每一层都有一个二元的sigmoid分类,这就导致有一个缺陷就是每一层的样本tag空间比较稀疏,比如下图中症状实体start和end都只有一个tag为1,而其他都为0,因此造成训练时收敛速度慢,特别是对于特别长的实体。
【nlp学习】浅谈实体识别_第3张图片
后者我们可以看到不再是多层,只有一层,因为他给每个训练样本都添加了一个query,形式上基本是“提及的xx是什么?”这个xx就是指实体类型,因此这里只要一层标注就行,只需要预测start和end的位置就可以,不需要对实体类型进行分类,因为这里的query就提供了实体类型的先验语义知识。这种方式同样有缺陷,如果有一个训练样本有多个实体类型在里面,那么就需要对该文本进行重复编码,以构造不同实体类型的query,这大大增加了训练时的计算量。

2.多头标注

构造一个span矩阵做标签,这解决了上述指针标注的0-1标签稀疏问题。
【nlp学习】浅谈实体识别_第4张图片

3.片段排列+分类

将句子按照特定的长度划分为若干个小片段然后对每一个片段使用softmax分类,如果句子长度为n,那么可划分的片段长度为1,2,3,,,n,总片段数目为n(n+1)/2个,如果文本长度较大的话,这将是一个高复杂度的多分类任务了,因此我们可以限制span的最大长度,如果超出这个最大长度则不做处理。
【nlp学习】浅谈实体识别_第5张图片

三、数据层面的问题

实体标注的成本是很高的,因此经常会遇到标注数量不足的情况,另外针对已经标注的训练样本也会存在漏标的情况,这样会造成数据集的噪声比较高,而命名实体识别任务对噪声十分敏感,如何解决这两个问题是我们要重点研究的。

你可能感兴趣的:(自然语言处理,学习,人工智能)