当前位置:   article > 正文

FLAT:Flat-LAttice Transformer

flat-lattice transformer

中文NLP的一个问题,就是中文的字除了句句之间有标点符号之外都是连在一起的,不像英文词语是单独分割的。中文NLP处理一般会有2种方式:

  1. 基于字的,char-level。现在比较常用的方法,但会缺少词组的语义信息

  1. 基于词的,word-level。词组一般是切词来的,相比字有更多的信息。但切词会引入错误词组。同时会有OOV的问题。

这2者有各自的优点和缺点。那有没有办法将2者进行结合呢?

Lattice LSTM

《Chinese NER Using Lattice LSTM》 2018

  1. 基于char-level的BiLSTM-CRF模型如下:

  1. 基于word-leve的BiLSTM-CRF模型如下:

  1. Lattice LSTM是一个有向无环图(DAG),将序列中的词汇信息(word-level)融入到了字信息(char-level)中。具体做法是将词汇信息融入到该词汇最后一个字的信息中。比如,如下图所示,它会将“南京市”的word embedding融入到“市”的word embedding中。

对于每个字符来说,会融合以该字符结束的所有词汇word信息,如对于「桥」融合了「长江大桥」和「大桥」信息。这里,词汇word个数不定,并采用注意力机制的方式进行融合。

Lattice LSTM有效的在char-level的基础上,融入word-level信息,并且不过分依赖word-level信息,避免因切词错误带来的传播误差。但其也存在一些缺点,比如1)性能差,batch不能并行,因为每个字符融合的word个数不一致;2)每个字符只记忆以其结尾的word,对于之前的词汇并无记忆;3)只使用lstm,无法迁移到其他模型。

FLAT

《FLAT: Chinese NER Using Flat-Lattice Transformer》2020

Flat-Lattice (展平的Lattice结构),是Lattice LSTM网络的展平的版本。FLAT为lattice结构引入了position encoding,对一个token增加了head position和end position。

我们可以看下如下2张图,图1是Lattice LSTM结构,图2是FLAT Lattice结构。我们可以想象一下,将图2中首尾位置相同的(比如‘重’)取出形成一条链,然后将位置不同的(比如‘重庆’)根据首尾位置信息,通过连线形成相应的跳转路径,即可得到图1的结构。

图2的这种结构有个好处,可以将图结构转换成简单的线性结构形式,从而可以并行计算,提高计算的性能。

FLAT将潜在词和输入的句子进行了拼接,潜在词和潜在词之间有 重叠、包含、分离 三种关系(例如上图中 人和药店 和 人和),采用绝对位置已经无法满足,因此本文提出相对位置关系。

位置i和位置j的相对位置计算方式如下:

Rij=RELU(Wr(pdij(h,h)⊕pdij(t,h)⊕pdij(h,t)⊕pdij(t,t)))

其中dij(h,h),dij(h,t),dij(t,h),dij(t,t)分别描述了单词和单词之间的关系。

dij(h,h)=head[i]−head[j]

dij(h,t)=head[i]−tail[j]

dij(t,h)=tail[i]−head[j]

dij(t,t)=tail[i]−tail[j]

pdij(h,h)就是对两个单词head和head之间相对关系的编码。

pd2k=sin(d/100002k/dmodel)

pd2k+1=cos(d/100002k/dmodel)

FLAT模型的整体架构如下图所示:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/455595
推荐阅读
相关标签
  

闽ICP备14008679号