BiLSTM中的CRF层详解
提纲
本篇文章包括以下几个部分:
- 1.简介
- 2.举例说明
- 3.BILSMT+CRF实现
本文翻译,原文地址:https://createmomo.github.io/2017/09/12/CRF_Layer_on_the_Top_of_BiLSTM_1/
一、简介
在命名实体识别任务中,基于神经网络的方法是非常流行和常用的。论文《Neural Architectures for Named Entity Recognition》[1]基于词嵌入和字嵌入提出了一种BiLstm-CRF模型,本文将基于这篇论文来举例说明CRF层是如何起作用的。
如果你不知道BiLSTM和CRF,那么你只需要记住他们是命名实体识别中两个完全不同的网络层。
1. 数据
我们规定在数据集中有两类实体,人名和组织机构名称。所以,在我们的数据集中总共有5类标签:
- B-Person (人名的开始部分)
- I- Person (人名的中间部分)
- B-Organization (组织机构的开始部分)
- I-Organization (组织机构的中间部分)
- O (非实体信息)
此外,假设输入句子x 是包含了5个单词的一句话(w0,w1,w2,w3,w4)。还有,在句子x中[w0,w1]是人名,[w3]是组织机构名称,其他都是“O”。
2. BiLSTM-CRF模型
简单介绍一下该模型。
首先,在句子x中每个单词被表征为向量形式(词向量或者字符向量)。字符嵌入向量一般选择随机初始化,而词嵌入向量一般可以使用预训练词向量。并且在整个训练过程中所有的嵌入向量都会被学习调整。
其次,BiLSTM-CRF的输入是词嵌入向量,输出是每个单词对应的预测标签。
(Tips:中文中词和英文词和字符表征不同,中文字符就是一个单词,英文字符是一个字母)
尽管不需要了解BiLSTM的实现细节,但为了更好的理解CRF层,我们还是需要知道一下BiLSTM的输出到底是什么意思。
如上图所示,BiLSTM层的输出表示每个单词对应各个类别的分数。如,BiLSTM节点的输出是1.5 (B-Person),0.9 (I-Person), 0.1 (B-Organization), 0.08 (I-Organization) 和0.05 (O)。这些分数将会是CRF层的输入。因此,所有的经BiLSTM层输出的分数将作为CRF层的输入,类别序列中分数最高的类别就是我们预测的最终结果。
3.没有CRF层会怎样
从上图可以发现,即使没有CRF层,仅仅训练一个BiLSTM模型也是可以作用于命名实体识别。
因为BiLSTM模型的结果是单词对应各类别的分数,我们可以选择分数最高的类别作为预测结果。如,“B-Person”的分数最高(1.5),那么我们可以选定“B-Person”作为预测结果。同样的,是“I-Person”,是“O”,是 “B-Organization” ,是 “O”。尽管我们在该例子中得到了正确的结果,但实际情况并不总是这样。来看下面的例子:
很明显,这个输出是不合法的,如“I-Organization I-Person” 和“B-Organization I-Person”等都是非法的输出。
4.CRF层约束力
当没有了CRF层,可以发现并不能保证输出是合法的序列,因此这里的CRF层可以加入一些约束来保证最终预测结果是有效的。这些约束可以在训练数据时被CRF层自动学习得到。
约束一般有如下:
- 句子的开头应该是“B-”或“O”,而不是“I-”。
- “B-label1 I-label2 I-label3…”,在该模式中,类别1,2,3应该是同一种实体类别。比如,“B-Person I-Person” 是正确的,而“B-Person I-Organization”则是错误的。
- “O I-label”是错误的,命名实体的开头应该是“B-”而不是“I-”。
- ...
有了这些约束,非法的预测序列将会被减少。
下一篇:
下一篇将会介绍CRF的Loss函数并举例说明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.