Lattice LSTM

Lattice LSTM

由于中文的实体一般都是由词语组成的,所以分词与NER在中文领域具有很强的相关性,一般操作是先分词,再做词序列标注。很明显的,分词错误会导致ner的错误,尤其在开放领域,跨领域分词仍然是一个难题。

简单来说Lattice LSTM是利用字符作为输入的基础上,加上了分词的信息,就这样,没了,具体怎么加的,看一下文章接下来来讲

1、文章首先介绍了关于中文的两种实体识别的方法,主题框架都是BiLSTM+CRF,原理上个博客都介绍过了,过程就是那样,找最优路径就是维特比算法。两种方法只是LSTM的输入不同:

  1. 字向量:输入是字,缺点是没有利用相邻字之间存在的语义信息
  2. 词向量:输入就是词了,缺点就是分词错误很可能会导致实体识别的错误不过大部分实验证明,字向量比词向量的效果好,不仅在实体识别,在其他领域文本分类等也是如此,大概是因为网络可以学习到字之间存在的语义信息

      先定义一些符号方面下面的讲解,一步一步看,绝对容易读懂,即使是复杂的公式:

                                 s=c1, c2,…… cm,其中每个小c表示每个字符

                                 s=w1, w2,…… wn,其中每个小w表示每个词

                                 t(i,k)表示第i个词中的第k个字,例如“南京市 长江大桥”,t(2,1)=4(长)

                                 BIOES是标签

  1. 字向量:character-based model

                                 

           字向量的表示是啥呢?

                                           

                                            

         ec就是计算字向量的操作,有输入了,就可以得到双向lstm的两个方向隐含层的输出啦,那么

         第j个字的输出就是两个方向的合并啦,再放入CRF就ok了。

         稍微改进1:char+bichar

                             

                 也就是在计算输入向量的时候把这个字和下一个字合并词的向量说是这样可以加强相邻间的语义信息。

          稍微改进2:char+softword

                             

                 加入分词的信息,和bichar的差别应该很明显。但这个加入的过程和Lattice存在差别。

2、词向量:word-based-model

                                                                

                                     

                  和字向量一样,合并两个方向的h作为CRF层的输入。

                   integrating character representations

                                                      

                   就是加入了字向量

                   稍微改进1:word + char LSTM

                                                        

                          我个人理解这里是两层LSTM,第一层是计算每个词中所有字向量的输出作为公式

                          7中的第二个元素,然后呢,公式8中的元素含义:第一个->第i个词最后一个字的

                          正向的隐含层h;第二个->第i个词第一个字的反向的隐含层h。

                    稍微改进2:word + char LSTM2222222

                           作者说他调研了一些只使用单个LSTM获取两个方向h的word+charLSTM模型,但是没有使用高层。

                    稍微改进3:word + char CNN

                            没啥说的

3、Lattice Model

                                 

            个人理解,这种模型和之前char+word的意思一样,但就是加入的方法和过程不一样,这也就导致模型学习到的内容不一              样。该模型加入了word-based cells和additional gates,说白了就是新加了word单元和控制信息流的。

            还有一个东西就是分词的字典D,其中wdb,e的含义是这个词的begin和end位置,例如“南京市 长江大桥”中wd1,3是南              京市,wd4,7是长江大桥。(气死我了,d是w的上标,b,e是w的下标,一复制黏贴全都变了,下面如果看到一连串字                母,实际上是一个符号,一般情况下c、d和w是上标,c指的是字,d和w指的是词,接下来的一个或两个字母是下标,像              b,e或者一个j或者一个e

            四种向量:

                   input vectors:就是公式1

                   output hidden vectors: hcj,就是隐含层向量嘛,第j的词的

                  cell vectors:ccj,就是从句子开始到现在的一个信息流

                   gate vectors:就是LSTM的各个门

                                             

                  其中那个i,f,o就是输入门,忘记门和输出门,W就是模型参数矩阵,还有那个符号是激活函数。

                  和char-based model不同的是,新包含了词wdb,e的计算,每一个词的向量计算如下:

                                                       

                   如何利用这个Xwb,e呢?看公式13:

                                                       

                   这个Cwb,e是新加的cell,保留了从句子开始到现在Xwb,e的状态,大概也就是信息流,历史信息嘛。然后这里的i                     和f指的的输入和忘记门,没有输出门是因为标签是在字而不是在词

                   我们知道,公式11中的Ccj是字方面的信息流,也就是cell,然后Cwb,e是词方面的信息流,例如对“南京市长江大                       桥”这句话,第7个字此时为Cc7的输入包含了Xc7(桥)、Cw6,7(大桥)和Cw4,7(长江大桥)这三方面的信息。是                     不是看起来字和词两者融合起来就可以得到更完善的信息了(实验结果证明是这样,那就暂且这么理解吧)。然后                        呢,就像上面例子,“桥”的输入包含的词信息流中包含有多个词的“大桥”“长江大桥”,所以用公式所有存在的词表达                        出来:

                                          

                     Cce中的e指的就是“桥”这个字的位置,以它为结尾的所有出现在字典D中的词。然后新加一个门Icb,e来控制每个                        Cwb,e进入Cce的信息的多少。(论文中我觉得这个应该是Cce,而不是Ccb,e,因为上面已经说了,上面计算的                       Cwb,e的信息是作为计算Ccj的一个输入的,所以这里应该是Cce,j和e是一个意思。而是Ccb,e右上角的c指的                         是字,右下角b和e指的是一个词的开始和结束位置。

                                             

                     闲话扯完了,下面看具体怎么控制。

                                                 

                                                

                                                

                  看起来虽然有点复杂,但每个元素的含义上面都已经解释清楚了,例如Cc7为桥时,Icb,e就包含两个词的信息:                        Ic6,7(大桥)和Ic4,7(长江大桥)。xc7我们是知道的向量计算出来这两个门之后,计算Cc7时就是公式15了,                      相当于来说计算的时候就不用公式11中上一个Cc6了,(我觉得是不用了,如果用了的话在公式15中根本找不到呀)                    而是使用之前的词信息。懂了吧。再举个例子,当j=6(大)时,不存在以“大”结尾的词,也就是说不存b,那么公式                      15的计算就是公式11了。

  • 14
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Lattice-LSTMLattice Long Short-Term Memory)是一种扩展自标准LSTM(长短期记忆网络)的模型,用于处理自然语言处理任务中的词串或序列数据,特别适用于那些具有复杂结构和多种可能解读的输入,如语音识别或机器翻译中单词的不同发音。 Lattice-LSTM的主要创新点在于使用了词典或语言模型生成的概率 lattice(格子),每个节点代表一个可能的词或词组,边则表示这些词之间的概率关系。这使得模型能够考虑所有可能的路径和组合,而不是仅仅依赖于最直接的前向或后向遍历。 1. 实现流程通常包括: - **词典构建**:创建词到 lattice 结点的映射,每个节点可能有多个输入(取决于词的不同拼写或同义词)。 - **概率计算**:为每个节点分配概率值,根据上下文和词频信息。 - **LSTM 更新**:LSTM 对每个 lattice 节点进行处理,根据输入和先前状态更新隐藏状态。 - **路径搜索**:在训练时,可能使用束搜索等方法找到最有可能的路径;在预测时,选择具有最高总概率的路径。 2. **关键组件**: - **LSTM单元**:处理节点的输入和状态。 - **连接性**:节点之间可能存在多种连接,反映了语言的歧义性。 - **注意力机制**:有时会结合注意力机制,以集中处理关键部分的输入。 3. **应用与优点**: - 提高了对语言结构的处理能力,适用于需要考虑多种解释的任务。 - 在诸如语音识别中,它有助于减少错误的识别结果,提高性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值