当前位置:   article > 正文

中文实体抽取(NER)论文笔记《Chinese NER Using Lattice LSTM》_中文 ner 论文

中文 ner 论文

原文链接
本文发表于自然语言处理领域顶级会议ACL 2018
原文代码实现

摘要

本文提出了一种用于中文NER的LSTM的格子模型,与传统使用字向量的模型相比,本文提出的模型显式地利用了字序列之间的关系。与传统使用词向量的模型相比,本文提出的模型能够很好的避免分词错误带来的影响。

介绍:

作为信息抽取任务的基本步骤,NER一直受到NLP学界的广泛关注。传统方法一般把NER看作是一个序列标记问题,同时预测序列中的实体边界以及实体所属的类别。
中文NER问题很大程度上取决于分词的效果,比如实体边界和单词的边界在中文NER问题中经常是一样的。所以在中文NER问题中,学者们通常先对文本进行分词然后再预测序列中单词的类别。这样一来会导致一个问题,即在分词中造成的错误会影响到NER的结果。

那么基于字向量的模型是不是就完美解决上述问题了呢?显然不会,因为如果单纯采用字向量的话会导致我们拆开了很多并不应该拆开的词语,从而丢失了它们本身的内在信息(比如“上海”这个词如果拆成字向量就成了“上”和“海”,这两个字的单独含义明显与它们组合起来的词的含义大相庭径)。

为了解决这个问题,本文提出了一种新型的格子结构(lattice structure),它能够将单词本身的含义加入基于字向量的模型中(比如LSTM-CRF)。
格子模型图解
如上图所示,格子结构最终会包含一个我们自动学出来的词典里的词(比如图中的“南京”,“市长”,“长江”,“大桥”,“南京市”,“长江大桥”),这样一来,我们的模型就会避免一些使用字向量造成的歧义,比如上图如果按照一个个字来组合的话还能组成“南京”,“市长”,“江大桥”这样的组合,由于“江大桥”不在词格中,我们的模型就很好的避免了这种歧义。

如上图所示,如果图中每条路径都去考虑的话,那么路径的个数是指数级增长的,所以我们利用模型来控制从头到尾的信息流。
词格门结构
如上图所示,模型中的LSTM门结构会控制每条路径到其它路径的信息流。
与其它模型相比,本文提出的模型老牛逼了。

模型

本文提出的模型是基于在英文NER领域取得了最佳效果的LSTM-CRF模型改进的。
首先,我们以字为基本单位定义一个输入句子s为:

s=c1,c2,...,cm

其中 cj为s的第 j

s又可以用词为基本单位被表示为:

s=w1,w2,...,wn

其中 wi为s的第 i

我们设t(i,k)为句子的第 i个词的第k个字在句子中的位置,比如“南京市,长江大桥”这句话中的“大”字,我们就有 t(2,3)=7,即“大”这个字是句子第2个词的第3个字,并且它在句子中的位置为第7个字。

接下来我们来比较三种模型的特点

  1. 基于字向量的模型
    这里写图片描述
    如上图所示,是一个基于字序列c1,c2,...,cm的模型,其中每一个字cj被表示为:
    xjc=ec(cj)

    其中ec是embedding层的权重矩阵,双向LSTM中每个方向每个时间点对应输入x1,x2,...,xm都会有一个隐含层状态,即h1c,h2c,...,hmc,和h1c,h2c,...,hmc
    那么隐含层的总输出就可以表示为:
    hjc=[hjc;hjc]

    上述公式的含义就是将hjchjc给concat(拼接)起来
  2. 基于词向量的模型
    词向量模型
    如上图所示,原理和字向量的大同小异,就是将输入由字序列改成了词序列而已,本文不做赘述。

  3. 词格模型(Lattice Model)
    这里写图片描述

    如图所示,和基于字向量的模型有些不同,cjc的计算考虑到了词格中的词语序列wb,ed,具体而言,每个wb,ed都会被embedding表示为:

    xb,ew=ew(wb,ed)

    其中ew是embedding矩阵。此外,word cell cb,ew被用来表示从句首开始的每一个xb,ew的递归状态。cb,ew可以由如下公式计算:
    [ib,ewfb,ewc~b,ew]=[σσtanh](WwT[xb,ewhbc]+bw)

    cb,ew=fb,ewcbc+ib,ewc~b,ew

    其中ib,ewfb,ew是LSTM的输入和遗忘门的集合。在词语的粒度上没有设置输出门,因为本文的模型本质上是一个基于字向量的模型。
    有了词格cb,ew之后,每个隐含层的cjc的计算就会受很多路径上的信息流的影响,比如途中的c3c就受x3cc1,3w以及上一个隐含层输出的同时影响。
    本文将所有的cb,ew和cell cec连接起来,我们使用一个额外的门ib,ec来控制cb,ewcb,ec的信息流:
    公式14
    于是cjc的计算公式可以表示为:
    这里写图片描述
    上式中ib,jcijc被归一化成了αb,jcαjc,故所有αb,jc的和为1,所有αjc的和也为1,归一化公式如下:
    这里写图片描述
    最后一个隐含层的输出hjc的计算公式为:
    hjc=ojctanh(cjc)

在得到所有隐含层的输出h1,h2,...,hτ之后(其中τ为一句话中字的个数),预测的label序列的概率y=l1,l2,...,lτ可以表示为:
这里写图片描述
其中y代表任意的label序列,WCRFli是模型中针对每个li的参数,bCRF(li1,li)是从li1li的bias

最后再使用first-order Viterbi算法找到概率最大的序列,就是最终的输出。
在给定人工标记的训练数据{(si,yi)}|i=1N,我们在句子粒度上定义的损失函数(使用了L2正则)可以表示为:
这里写图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号