命名实体识别BiLSTM-CRF

命名实体识别BiLSTM-CRF – 潘登同学的NLP笔记

标签策略

IOB 比如识别人名:PER

  • B:begin表示人名起始点
  • O:out表示非人名
  • I:internal表示人名,但不是起始点(中部或者结尾点)

BMES 比如识别人名: PER

  • B:begin表示人名起始点
  • M:middle表示人名中部
  • S: single表示非人名
  • E:end表示人名结束点

早期方法

它是基于规则和字典的,即记录所有的单词,然后用字典匹配文章…

  • 优点:准确
  • 缺点:泛化能力差

基于统计学习的方法

  • HMM\CRF(jieba分词器)
  • 混合方法 统计学习方法之间或内部层叠融合(集成学习)规则、词典和机器学习方法之间的融合将各类模型、算法结合起来,将前一级模型的结果作为下一级的训练数据(stacking)

深度学习方法

  • NN/CNN-CRF
  • RNN-CRF/LSTM-CRF
  • 注意力机制
  • 迁移学习(BERT-BiLSTM-CRF)

BiLSTM-CRF

普通的BiLSTM最后接的的一个softmax层, 在处理序列标注问题的时候, softmax也没考虑到序列结果,如连续出现两个动词,在一句话中是不太可能的; 所以后面接一层CRF,CRF是使得最终的出现的结果序列Loss最小,从而能应用于序列标注问题上

  • 生成式模型: (统计学习方法,计算(联合)概率分布的参数,不一定要x,y,有的话更好) HMM GMM Naive-bayes
  • 判别式模型: (有判别式的,计算P(y|x)需要x,y来训练计算) CRF DT LR NN

我们假设我们有一个数据集有两类实体类型,Person 和 Organization。因此事实上在我们的数据集中,我们有 5 个实体标签:

  • B-Person
  • I- Person
  • B-Organization
  • I-Organization
  • O

进而,x 是一个句子包含 5 个词,命名实体识别BiLSTM-CRF。更多地,在句子 x, 命名实体识别BiLSTM-CRF 是一个 Person entity, 命名实体识别BiLSTM-CRF 是一个 Organization entity 和其它的是“O”

  • 首先, 在句子每个词,x 被表达为一个向量,向量由包含词的字嵌入和词嵌入组成。字的嵌入是随机初始化的。词嵌入通常是来自于预训练的词嵌入模型文件。在整个训练过程中所有的嵌入将会被细粒度的调优。
  • 其次, BiLSTM-CRF 模型的输入是那些嵌入向量,输出是对于句子 x 中词的预测标签
  • BiLSTM层的输出是一个类别的logist(就是softmax之间的Z),然后输入CRF层,CRF根据所有输入的Z,计算一条最有可能的路径(类似于维特比算法计算条件概率最大的那条路径),最后得到一整段输出

如果不加CRF层

不加CRF层

很明显,I-Organization I-Person和I-Organization I-Person这些输出是无效的。

CRF 层可以从训练数据学习限制

CRF 层可以加一些限制给最后的预测标签去确保它们是有效的。这些限制通过训练过程可以被 CRF 层从训练集数据中自动学到, 这些限制可以是

  • 句子开头首个词的标签应该是B- 或O, 而不是I-
  • B-label1 I-label2 I-label3 I-…, 在这个模式中, label1, label2, label3 … 应该是同样的命名实体标签 . 例如 , B-Person I-Person 是有效的 , 但 B-Person I-Organization是无效的;

有了这些有用的约束,无效的预测标签序列的数量急剧下降

CRF层

在 CRF 层的损失函数中,我们有两种类型的分数。这两分数是 CRF 层的关键;

Emission score(发射分数)

第一个是 emission score。这些 emission scores 来自于 BiLSTM 层(就是前面说的命名实体识别BiLSTM-CRF)

我们使用 命名实体识别BiLSTM-CRF 去表达一个 emission score。命名实体识别BiLSTM-CRF 是词的索引同时 命名实体识别BiLSTM-CRF 是标签的索引。例如,根据图,命名实体识别BiLSTM-CRF 这意味着 w1 作为 B-Organization 的分数是 0.1

Transition score(转移分数)

我们使用 命名实体识别BiLSTM-CRF 去表达一个 transition score。例如, (y_{B-Person},y_{I-Person})=0.9$ 意味着标签转移B−Person→I−Person 的分数是 0.9。因此, 我们有一个转移分数矩阵存储了所有的标签和标签之间的分数;

为了去使得转移分数矩阵更加的鲁棒,我们将多添加两个标签 START 和 END。START 意味着句子的开始,不是第一个词。END 意味着句子的结束。

例如

STARTB-PersonI-PersonB-OrganizationI-OrganizationOEND
START00.80.0070.70.00080.90.08
B-Person00.60.90.20.00060.60.009
I-Person-10.50.530.550.00030.850.008
B-Organization0.90.50.00030.250.80.770.006
I-Organization00.80.0070.70.650.760.2
O00.650.00070.70.00080.90.08
END0000000

事实上,这个矩阵是 BiLSTM-CRF 模型的参数。在你训练这个模型之前,你可以随机初始化矩阵中的所有转移分数。在模型的训练过程中所有随机的分数将会被自动地更新。换句话说, CRF 层可以由它自己学习那些限制。我们没有必要去手动建立这个矩阵。这些分数随着训练迭代的增加会逐渐变得越来越合理;

Loss函数

CRF 的损失函数,它由真正路径的分数和所有可能路径的总分数构成;

我们也有一个含有 5 个单词的句子。这些可能的路径将会是:

  1. START B-Person B-Person B-Person B-Person B-Person END
  2. START B-Person I-Person B-Person B-Person B-Person END
  1. START B-Person I-Person O B-Organization O END
  • O O O O O O O

假设每一个可能的路径有一个分数 命名实体识别BiLSTM-CRF,并且这里总共有 N 种可能的路径, 这些路径的
总分是
命名实体识别BiLSTM-CRF
其中,命名实体识别BiLSTM-CRF可以理解为一个路径的分数,命名实体识别BiLSTM-CRF 由两部分组成 命名实体识别BiLSTM-CRF (之所以用e,是与softmax类似)
命名实体识别BiLSTM-CRF

如果我们说 命名实体识别BiLSTM-CRF 路径是真实的标签路径, 换句话说, the 命名实体识别BiLSTM-CRF path 是由训练集提供的标签。分数 命名实体识别BiLSTM-CRF 它就应该是在所有可能路径中有最大比例的。下面给出的式子同时也是损失函数,在训练过程中,我们 BiLSTM-CRF 模型的参数值将会被不断的更新,为了保障真实路径的分数所占比例不断的增加。
命名实体识别BiLSTM-CRF

以START B-Person I-Person O B-Organization O END为例,
命名实体识别BiLSTM-CRF

对Loss函数取对数
命名实体识别BiLSTM-CRF
命名实体识别BiLSTM-CRF的计算方法已知,关键是如何计算命名实体识别BiLSTM-CRF

训练阶段-动态规划

目标:命名实体识别BiLSTM-CRF

这是过程是一个分数的累加。思想类似于动态规划,为了简化,我们假设句子长度为3,标签数量为2

Emission scores

命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF
命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF
命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF
命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF

Transition scores

命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF
命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF
命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF
  • 第一个字命名实体识别BiLSTM-CRF

命名实体识别BiLSTM-CRF

在第一个单词,我们没有之前的结果,因此previous是空,另外,我们只能观测第一个单词的发射分数是命名实体识别BiLSTM-CRF,此时命名实体识别BiLSTM-CRF的所有路径的总分数
命名实体识别BiLSTM-CRF

更新命名实体识别BiLSTM-CRF

  • 第二个字命名实体识别BiLSTM-CRF

命名实体识别BiLSTM-CRF(Obs与previous的长度始终等于标签数量)

扩展previous为
命名实体识别BiLSTM-CRF

扩展Obs为
命名实体识别BiLSTM-CRF

加和previous,obs和transition scores
命名实体识别BiLSTM-CRF

transition scores是转移分数,所以前面两个矩阵的第二个下标,要与transition scores的下标对上,第一个矩阵中元素的第二个下标,是transition scores中的第一个下标; 第二个矩阵中元素的第二个下标,是transition scores中的第二个下标

更新命名实体识别BiLSTM-CRF

计算总分
命名实体识别BiLSTM-CRF

上式是我们目标命名实体识别BiLSTM-CRF的具体表达。更一般地说,我们将进一步推动它。

  • 第三个字命名实体识别BiLSTM-CRF

命名实体识别BiLSTM-CRF

扩展previous为
命名实体识别BiLSTM-CRF

扩展Obs为
命名实体识别BiLSTM-CRF

加和previous,obs和transition scores
命名实体识别BiLSTM-CRF

更新命名实体识别BiLSTM-CRF

计算总分
命名实体识别BiLSTM-CRF

可以发现,计算总分数其实是穷举法,但是只是列出的表达式看上去是穷举(第二个词的时候TotalScore是由四个路径构成,第三个词的时候TotalScore则是由八个路径构成),但是实际上计算的时候,一直都是Obj,previous与transition scores这三个矩阵的加法,所以动规解决了很多计算量…

推理阶段-动态规划

与上述相同的步骤

  • 计算当前Obs(Emission scores)
  • 计算scores
    命名实体识别BiLSTM-CRF
  • 更新命名实体识别BiLSTM-CRF, previous装的是到当前时刻,从前面过来,到当前时刻该标签的分数最大的那条路径
  • 将分数保留在命名实体识别BiLSTM-CRF里,对应列索引保留在命名实体识别BiLSTM-CRF里(命名实体识别BiLSTM-CRF表示上一个节点是什么标签,关键是命名实体识别BiLSTM-CRF矩阵(transition scores)的下标,)
    命名实体识别BiLSTM-CRF

以三个词为例,命名实体识别BiLSTM-CRF命名实体识别BiLSTM-CRF中存储的最终值如下
命名实体识别BiLSTM-CRF
我们选择最大的分数0.9,0.9本身是标签2,他的前一个节点是标签0,在前一个节点是标签1,所以就能得到路径,具体路径选择如下图所示

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2022年5月6日
下一篇 2022年5月7日

相关推荐