本文主要内容如下:

  • 介绍: 在命名实体识别任务中,BiLSTM模型中CRF层的通用思想
  • 实例: 通过实例来一步步展示CRF的工作原理
  • 实现: CRF层的一步步实现过程

备注: 需要有的基础知识:你只需要知道什么是命名实体识别,如果你不懂神经网络,条件随机场(CRF)或者其它相关知识,不必担心,本文将向你展示CRF层是如何工作的。本文将尽可能的讲的通俗易懂。

1.介绍

基于神经网络的方法,在命名实体识别任务中非常流行和普遍。在文献[1]中,作者提出了BiLSTM-CRF模型用于实体识别任务中,在模型中用到了字嵌入和词嵌入。本文将向你展示CRF层是如何工作的。

如果你不知道BiLSTM和CRF是什么,你只需要记住他们分别是命名实体识别模型中的两个层。

1.1开始之前

我们假设我们的数据集中有两类实体——人名地名,与之相对应在我们的训练数据集中,有五类标签:

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

假设句子xx由5个字符组成,即x=(w0,w1,w2,w3,w4)x = (w_0,w_1,w_2,w_3,w_4),其中[w0,w1][w_0,w_1]人名实体,[w3][w_3]组织实体,其他字符的标签为"O"。

1.2 BiLSTM-CRF 模型

首先,对该模型进行简单的介绍,具体的模型结构,如下图所示:

从上图中,总的来说可以总结为以下两点:
  • 句子xx中的每一个单元都代表着由字嵌入或词嵌入构成的向量。其中,字嵌入一般是随机初始化的,而词嵌入一般是通过一个预训练好的词向量模型得到的。所有的嵌入在训练过程中都会调整到最优。

  • 这些字或词嵌入作为BiLSTM-CRF模型的输入,输出的是句子xx中每个单元的标签。

为了更容易了解CRF层的运行原理,我们需要知道BiLSTM的输出层。

如上图所示,BiLSTM层的输出为句子$x$中的每一个单元每一个标签的预测分值,例如,对于单元$w_0$,BiLSTM层输出的是1.5 (B-Person), 0.9 (I-Person), 0.1 (B-Organization), 0.08 (I-Organization) and 0.05 (O). 这些分值将作为CRF层的输入。

1.3 如果没有CRF层会怎样

你也许已经发现了,即使没有CRF层,我们也可以训练一个BiLSTM命名实体识别模型,如图下图所示:

由于BiLSTM的输出为每个单元的每一个标签预测分值,我们可以挑选分值最高的一个作为该单元的标签。例如,对于单元$w_0$,“B-Person”标签分值最高——1.5,因此我们可以将“B-Person”作为$w_0$的预测标签。同理,我们可以得到$w_1$—“I-Person”,$w_2$— “O” ,$w_3$—“B-Organization”,$w_4$—“O”。

虽然我们可以得到句子xx中每个单元的正确标签,但是我们不能保证标签每次都是预测正确的。例如,如下图所示:

很显然,标签序列“I-Organization I-Person” and “B-Organization I-Person”是错误的。

1.4 CRF层能从训练数据中学到约束规则

CRF层可以为最后预测的标签添加一些约束来保证预测的标签是合理的。在训练过程中,这些约束可以通过CRF层自动学习到。

这些约束可以是:

  • 句子中第一个词总是以标签“B-“ 或 “O”开始,而不是“I-”
  • 标签“B-label1 I-label2 I-label3 I-…”,label1, label2, label3应该属于同一类实体。例如,“B-Person I-Person” 是合理的序列, 但是“B-Person I-Organization” 是不合理标签序列.
  • 标签序列“O I-label” 是不合理的,实体标签的首个标签应该是 “B-“ ,而非 “I-“, 换句话说,有效的标签序列应该是“O B-label”。有了这些约束,标签序列预测中不合理序列出现的概率将会大大降低。

下一节,将通过CRF层的损失函数,解释CRF层如何从训练数据集中学习到这些约束。

参考文献

[1] Lample, G., Ballesteros, M., Subramanian, S., Kawakami, K. and Dyer, C., 2016. Neural architectures for named entity recognition. arXiv preprint arXiv:1603.01360.
https://arxiv.org/abs/1603.01360