通俗易懂的BiLSTM-CRF,用命名实体识别任务来解释CRF(一)

0 导读

看了很多的CRF的介绍和讲解,这个感觉是最清楚的,结合实际的应用场景,让你了解的用处和用法。

预备知识

你需要知道的唯一的事情是什么是命名实体识别,如果你不知道神经网络,CRF或任何其他知识,请不要担心,后面会做直观解释。

1.介绍

对于命名实体识别任务,基于神经网络的方法非常普遍。例如,这篇文章https://arxiv.org/abs/1603.01360提出了使用一个使用词和字嵌入的BiLSTM-CRF命名实体识别模型。下文将以本文中的模型为例来解释CRF是如何工作的。
如果你不知道BiLSTM和CRF的细节,请记住它们是命名实体识别中的两个不同层。

1.1 开始之前

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

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

此外,x是包含5个单词的句子,w0,w1,w2,w3,w4。更重要的是,在句子x中,{w0,w1}是一个Person实体,[w3]是一个Organization实体,其他都是“O”。

1.2 BiLSTM-CRF模型

下文将对这个模型西做一个简单介绍。
如下图所示:

  • 首先,将句子x中的每个单词表示为一个向量,其中包括单词的嵌入和字符的嵌入。字符嵌入式随机初始化的。词嵌入通常是一个预训练的词嵌入文件导入的。所有的嵌入将在训练过程中进行微调。
  • 其次,BiLSTM-CRF模型的输入是这些嵌入,输出是句子x中的单词的预测标签。
    -在这里插入图片描述
    虽然不需要知道BiLSTM层的细节,但是为了更容易的理解CRF层,我们需要知道BiLSTM层输出的意义是什么。
    在这里插入图片描述
    上图说明BiLSTM层的输出是每个标签的分数,例如,对于w0,BiLSTM节点的输出为1.5(B-Person)、0.9(I-Person)、0.1(B-Organization)、0.08(I-Organization)和0.05(O),这些分数将作为CRF层的输入。
    然后,将BiLSTM层预测的所有分数输入CRF层,在CRF层中,选择预测得分最高的标签序列作为最佳答案。

1.3 如果没有CRF层会怎么样

你可能已经发现,即使没有CRF层,也就是说,我们可以训练一个BiLSTM命名实体识别模型,如下图所示:
在这里插入图片描述
因为每个单词的BiLSTM输出是标签的分数,我们可以选择每个单词得分最高的标签。
例如,对于w0,“B-Person”得分最高(1.5),因此我们可以选择“B-Person”作为其最佳预测标签。同样,我们可以为w1选择“I-Person”,为w2选择“O”,为w3选择“B-Organization”。为w4选择“O”。
虽然在这个例子中我们可以得到正确的句子x的标签,但是并不总是这样,再试一下下图图片中的例子。
在这里插入图片描述
显然这次的输出是无效的,“I-ORganization I-Person”和“B-Organization I-Person”。

1.4 CRF层可以训练数据中学习约束

CRF层可以向最终的预测标签添加一些约束,以确保它们是有效的。这些约束可以由CRF层再训练过程中从训练数据集自动学习。
约束条件可以是:

  • 句子中第一和单词的标签应该以“B-”或“O”开头,而不是“I-”
  • “N-label I-label2 I-label I-…”,在这个模式中,label1、label2、label3…应该是相同的命名实体标签。例如,“B-Person I-Person”是有效的,但是“B-Person I-Organization”是无效的。
  • “O I-label”无效。一个命名实体的第一个标签应该以“B-”而不是“I-”开头,换句话说,有效模式应该是“O B-label”

有了这些有用的约束,无效预测标签序列的数量将显著减少。

2. CRF层

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

2.1 Emission得分

第一个emission分数。这些emission分数来自BiLSTM。例如,如下图所示,标记为B-Person的w0的分数为1.5。
在这里插入图片描述
为方便起见,我们将给每一个标签一个索引号,如下图所示。
在这里插入图片描述
我们用 x i y i x_{iy_i} xiyi来表示emission分数。i是word的索引, y i y_i yi是label的索引。如上图所示, x i = 1 , y = 2 = x w 1 , B − O r g a n i z a t i o n = 0.1 , = 1 x_{i=1,y=2}=x_{w_{1,B-Organization}}=0.1,=1 xi=1,y=2=xw1,BOrganization=0.1,=1,即w1作为B-Oraganization的得分为0.1。

2.2 Transition得分

我们使用 t y i y j t_{y_iy_j} tyiyj来表示transition分数。例如, t B − P e r s o n , I − P e r s o n = 0.9 t_{B-Person,I-Person}=0.9 tBPerson,IPerson=0.9表示标签的transition,B-Person —>I-Person得分为0.9.因此,我们有一个transition得分矩阵,它存储了所有标签之间的所有得分。
为了是transition评分矩阵更健壮,我们将添加另外两个标签,START和END。START是指一个句子的开头,而不是第一个单词。END代表一个句子的结尾。
下面是一个transition得分矩阵的例子,包括额外添加的START和END标签。
在这里插入图片描述
如上表所示,我们可以发现transition矩阵已经学习了一些有用的约束。

  • 句子中第一个单词的标签应该以“B-”或“O”开头,而不是“I-”开头**(从“START”到“I-person”或I-Organization的分数非常低。)**
  • “B-label1 I-label2 I-label3 I-…”,在这个模式中,label1、label2、label3…应该是相同的命名实体标签。例如,“B-Person I-Person”是有效的,但是“B-Person I-Organization”是无效的。(例如,从“B-Organization”到“I-Person”的分数只有0.0003,比其他分数低很多)
  • O I-label”无效。一个被命名实体的第一个标签应该以“B-”而不是“I-”开头,换句话说,有效的模式应该是“O B-label”(同样,t_{O,I-Person}的分数非常小)

你可能想问一个关于矩阵的问题。在哪里或如何得到transition矩阵?

实际上,该矩阵是BiLSTM-CRF模型的一个参数。在训练模型之前,可以随机初始化矩阵中的所有transition分数。所有的随机分数将在你的训练过程中自动更新。换句话说,CRF层可以自己学习这些约束。我们不需要手动构建矩阵。随着训练迭代次数的增加,分数会逐渐趋于合理。

2.3 损失函数

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
  • 10)START B-Person I-Person O B-Organization O END
  • N)O O O O O O O
    在这里插入图片描述

2.4 实际路径得分

在这里插入图片描述
在这里插入图片描述

2.5所有可能的路径的得分

在这里插入图片描述在这里插入图片描述
步骤2: 回忆一下Emission和Transition得分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考链接

原文链接:12

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值