本文主要内容如下:
- 介绍: 在命名实体识别任务中,BiLSTM模型中CRF层的通用思想
- 实例: 通过实例来一步步展示CRF的工作原理
- 实现: CRF层的一步步实现过程
备注: 需要有的基础知识:你只需要知道什么是命名实体识别,如果你不懂神经网络,条件随机场(CRF)或者其它相关知识,不必担心,本文将向你展示CRF层是如何工作的。本文将尽可能的讲的通俗易懂。
1.介绍
基于神经网络的方法,在命名实体识别任务中非常流行和普遍。在文献[1]中,作者提出了BiLSTM-CRF模型用于实体识别任务中,在模型中用到了字嵌入和词嵌入。本文将向你展示CRF层是如何工作的。
如果你不知道BiLSTM和CRF是什么,你只需要记住他们分别是命名实体识别模型中的两个层。
1.1开始之前
我们假设我们的数据集中有两类实体——人名
和地名
,与之相对应在我们的训练数据集中,有五类标签:
- B-Person
- I-Person
- B-Organization
- I-Organization
- O
假设句子由5个字符组成,即,其中为人名
实体,为组织
实体,其他字符的标签为"O"。
1.2 BiLSTM-CRF 模型
首先,对该模型进行简单的介绍,具体的模型结构,如下图所示:
-
句子中的每一个单元都代表着由字嵌入或词嵌入构成的向量。其中,字嵌入一般是随机初始化的,而词嵌入一般是通过一个预训练好的词向量模型得到的。所有的嵌入在训练过程中都会调整到最优。
-
这些字或词嵌入作为BiLSTM-CRF模型的输入,输出的是句子中每个单元的标签。
为了更容易了解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”。虽然我们可以得到句子中每个单元的正确标签,但是我们不能保证标签每次都是预测正确的。例如,如下图所示:
很显然,标签序列“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