BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用

BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用

连大赵露思

喜欢这篇文章可以关注公众号GoAI哟,都是感兴趣的在读研究生共同经营的,目前已收录计算机视觉和NLP的文章多篇

目录:
①BI-LSTM,BILSTM-CRF,Lattice-LSTM的基本原理
②BI-LSTM,BILSTM-CRF,Lattice-LSTM在NER中的作用

BI-LSTM,BILSTM-CRF,Lattice-LSTM的基本原理

BI-LSTM:
LSTM(long-short term memory)是RNN(recurrent neural network)的一种非常适合对时序数据(如文本数据)建模的算法。
Bi-LSTM(Bi-directional long-short term memory)由前项LSTM和后项LSTM组合而成的,两者在自然语言处理任务中都常被用来建模上下文信息。

Bi-LSTM由两个LSTM上下叠加在一起组成。输出由这两个LSTM的隐藏层的状态决定。
注意:Forward layer和Backward layer是不相连的,即x->y不会同时经过F和B层。
BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用

为什么选择BI-LSTM而不是LSTM
虽然LSTM相较于RNN已经有明显的改进,在一定程度上解决了梯度消失和梯度爆炸的问题。
但是,LSTM无法编码从后到前的信息,而BILSTM可以更好地捕捉双向的语义依赖。
举一个栗子,“这个火锅店脏得不行,没有隔壁好”,这里的“不行”是对“脏”的程度的一种修饰,通过BiLSTM可以更好的捕捉双向的语义依赖。

BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用

前向的依次输入“我”,“爱”,“中国”得到三个向量{ hL0, hL1, hL2 };
后向的依次输入“中国”,“爱”,“我”得到三个向量{ hR0, hR1, hR2 };
最后将前向和后向的隐向量进行拼接得到{ [hL0, hR2], [hL1, hR1], [hL2, hR0] },即{ h0, h1, h2 }。

BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用

对于情感分类任务来说,我们采用的句子的表示往往是[hL2, hR2]。因为其包含了前向与后向的所有信息。上图中softmax函数是神经网络的最后一层,又称归一化指数函数,它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来,使神经网络的输出由原本的不具有概率分布特性, 变为了具有概率分布的特性, 这样可以对神经网络的性能进行评估。

BILSTM-CRF

在我们开始了解BILSTM-CRF之前,我们假定在我们的数据集里有两个实体类型:Person和Organization。实际上在我们的数据集里,我们有五种标签类别:B-Person,I-Person,B-Organization,I-Organization和O这五种。

虽然,理解BILSTM层的细节并不是很重要,但是为了更容易理解CRF层,我们需要了解BILSTM层输出的含义。
首先,句子x中的每一个词都会被表示成一个向量,这个向量包含单词的character embedding 以及word embedding。这里的character embedding随机初始化,word embedding通常来自一个预训练的word embedding文件,所有的embeddings都会在训练过程中微调。
然后,BiLSTM-CRF模型的输入是这些embeddings,输出是句子x的所有单词的预测标签。

【embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。embedding向量的性质是能使距离相近的向量对应的物体有相近的含义,比如 Embedding(复仇者联盟)和Embedding(钢铁侠)之间的距离就会很接近,但 Embedding(复仇者联盟)和Embedding(乱世佳人)的距离就会远一些。】

BiLSTM的输出是该单词对应每一个类别的score,这些score作为CRF layer的输入。
CRF layer中,在所有的label sequence选择预测得分最高的序列作为最佳答案。
CRF layer 可以对最终的预测labels添加一些限制来确保结果是有效的。
这些限制可以由CRF layer在训练过程中自动的训练数据集中学到。

这些限制可以是:
句子的第一个单词应该是“B-”或 “O”,不可能是 “I-”;
Eg: “B-Person I-Person”是可以的,“B-Person I-Organization”无效,“O I-label” 不合法,命名实体的开始应该是“B-”而不是“I-”。添加了这些限制之后,预测结果中的无效序列会大幅减少。

BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用

为什么我们需要CRF这层,直接挑出最大的概率的那个不行吗?
还真不行,CRF会学习到合适的表达。
你或许会发现,尽管不加CRF层,我们依然可以训练得到一个BILSTM命名实体识别模型作为结果。

BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用

因为BILSTM每个词的输出都是标签的分数,我们选择每个词最高分数的的标签。

举个栗子,对于w0的最高分数是1.5即B-Person类别,因此我们选择B-Person作为w0的最好的预测标签。同理,我们选择I-Person作为w1的最好的预测标签,O作为w2的最好的预测标签,B-Organization作为w3的最好的预测标签,O作为w4的最好的预测标签。

虽然在这个例子里我们可以得到句子x的正确标签,但是结果并不总是好的。让我们用下面这张图片上的例子再试一次。

BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用

显然,此时的输出是无效的。I-Organization不能作为开头,开头应该以B或者O开头。而且I-Organization和I-Person是不能相邻的。

CRF layer
在 CRF 层的损失函数中,我们有两种类型的分数。这两个分数是 CRF 层的关键概念。
第一个是 emission 分数。这些 emission 分数来自 BiLSTM 层。如标记为 B-Person 的 w0 的分数为 1.5。
我们使用tyi,yj来表示 transition 分数。例如tB−Person,I−person= 0.9 表示标签的 transition,即B−Persion−>I−Person得分为 0.9。因此,我们有一个 transition 得分矩阵,它存储了所有标签之间的所有得分。为了使 transition 评分矩阵更健壮,我们将添加另外两个标签,START 和 END。START 是指一个句子的开头,而不是第一个单词。END 表示句子的结尾。
下面是一个 transition 得分矩阵的例子,包括额外添加的 START 和 END 标签。
BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用

如上表所示,我们可以发现 transition 矩阵已经学习了一些有用的约束。

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

CRF损失函数
CRF 损失函数由真实路径得分和所有可能路径的总得分组成。在所有可能的路径中,真实路径的得分应该是最高的。
假设我们有一个 5 个单词的句子。可能的路径是:
BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用

假设每条可能的路径都有一个分数 Pi​,并且总共有 N 条可能的路径,所有路径的总分数是 Ptotal=P1​+P2​+…+PN​

如果我们说第 10 条路径是真正的路径,换句话说,第 10 条路径是我们的训练数据集提供的黄金标准标签。在所有可能的路径中,得分P10应该是百分比最大的。

BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用

在训练过程中,我们的 BiLSTM-CRF 模型的参数值将会一次又一次的更新,以保持增加真实路径的分数百分比。

Lattice-LSTM

Lattice-LSTM(网格结构-长短期记忆网络)模型是在基于字的LSTM-CRF模型的基础上,加入潜在的多粒度词语的信息。将分词信息带入LSTM,能够将字符级别序列信息和该序列对应的词信息同时编码供模型自动取用,相较于字粒度(字符级)的编码,Lattice-LSTM加入了词信息,丰富了语义表达;相较于词粒度的编码,Lattice-LSTM可以避免分词错误带来的影响。以句子“支气管哮喘”为例:

BI-LSTM,BILSTM-CRF,Lattice-LSTM基本原理以及在NER中的应用


BI-LSTM,BILSTM-CRF,Lattice-LSTM在NER中的作用


NER(Named Entity Recognition,命名实体识别)又称作专名识别,是自然语言处理中常见的一项任务,使用的范围非常广。命名实体通常指的是文本中具有特别意义或者指代性非常强的实体,通常包括人名、地名、机构名、时间、专有名词等。

NER系统就是从非结构化的文本中抽取出上述实体,并且可以按照业务需求识别出更多类别的实体,比如产品名称、型号、价格等。因此实体这个概念可以很广,只要是业务需要的特殊文本片段都可以称为实体。

在中文命名实体识别中,目前的主流方法是基于字符的BILSTM-CRF模型。词语为命名实体识别提供了重要的边界信息,越来越多的研究利用单词信息提高识别的准确率,而在特定领域的命名实体识别中,由于专业术语的特殊性,未登录词常常会因为歧义造成识别错误。

目前,常用中文分词方法主要分为基于词典的方法、基于传统机器学习的方法和基于深度学习的方法。由于基于词典的方法简单高效,在一些实际应用中常常使用该方法。其中,基于词典的方法主要以词典为主,结合少量的词法、语法规则和语义解析。基于统计的方法来处理命名实体识别任务需要手动定义特征模版,基于深度学习的方法,由于不需要人为设定特征,能够从原始数据中自主的学习,因此可以减少人为对数据的干扰,找到更深层次和更加抽象的特征,近年来成为研究热点,但是深度学习的方法也存在特征学习不足的问题。

随着时代的进步,一些新词不断涌现,词典的规模也相应扩大,还会面临存在未登录词的问题。所以,越来越多的学者研究如何发现新词去扩充词典。

BILSTM-CRF

BILSTM-CRF将中文命名实体识别任务分为 2 步:先通过CRF进行分词,在分词的基础上再利用双向LSTM模型进行命名实体识别。在进行中文分词的时候使用CRF模型,CRF模型分词从“字组成词” 的构词思想,通过分析大规模的语料库,统计字在词中的相应位置出现的可能性。由于同时考虑词语出现的频率和上下文语境,因此具备了较好的上下文融合能力,同时CRF对于歧义词和未登录词也具有良好的识别效果。BILSTM 能够对任何长度的序列数据进行处理,适用于文本数据。因此,CRF分词和 BI- LSTM 实体识别相融合的方法可以有效地提升命名实体识别的性能。中文分词实质上就是序列标注的问题。

Lattice-LSTM
中文NER和分词有关,特别是实体的边界就是词的边界,一个lattice中的字-词会有指数级别的路径,所以构建了一个lattice-lstm结构自动控制信息流从句子开始流到句子结尾。
在传统的基于字的 LSTM 模型中加入潜在的粒度多样化的词语信息作为特征,并构建 Lattice-LSTM 来对这些词语进行建模。

多粒度中文分词的优势在于其应用于信息检索和机器翻译等任务时具有一定的容错性,可以减少分词错误对后续任务的影响。不同粒度的分词结果可以起到分词作用:一方面,粗粒度词语可以使模型更加准确地捕获信息从而进行分析;另一方面,细粒度词语可以减少数据稀疏性并且体现出对语言更深层次的理解,为后续任务打下良好的基础。

命名实体识别效果的评判主要看实体的边界是否划分正确以及实体的类型是否标注正确。(实体边界的识别更加困难)