天天看點

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
Lattice LSTM

           字向量的表示是啥呢?

Lattice LSTM
Lattice LSTM

         ec就是計算字向量的操作,有輸入了,就可以得到雙向lstm的兩個方向隐含層的輸出啦,那麼

         第j個字的輸出就是兩個方向的合并啦,再放入CRF就ok了。

         稍微改進1:char+bichar

Lattice LSTM

                 也就是在計算輸入向量的時候把這個字和下一個字合并詞的向量說是這樣可以加強相鄰間的語義資訊。

          稍微改進2:char+softword

Lattice LSTM

                 加入分詞的資訊,和bichar的差别應該很明顯。但這個加入的過程和Lattice存在差别。

2、詞向量:word-based-model

Lattice LSTM
Lattice LSTM

                  和字向量一樣,合并兩個方向的h作為CRF層的輸入。

                   integrating character representations

Lattice LSTM

                   就是加入了字向量

                   稍微改進1:word + char LSTM

Lattice LSTM

                          我個人了解這裡是兩層LSTM,第一層是計算每個詞中所有字向量的輸出作為公式

                          7中的第二個元素,然後呢,公式8中的元素含義:第一個->第i個詞最後一個字的

                          正向的隐含層h;第二個->第i個詞第一個字的反向的隐含層h。

                    稍微改進2:word + char LSTM2222222

                           作者說他調研了一些隻使用單個LSTM擷取兩個方向h的word+charLSTM模型,但是沒有使用高層。

                    稍微改進3:word + char CNN

                            沒啥說的

3、Lattice Model

Lattice LSTM

            個人了解,這種模型和之前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的各個門

Lattice LSTM

                  其中那個i,f,o就是輸入門,忘記門和輸出門,W就是模型參數矩陣,還有那個符号是激活函數。

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

Lattice LSTM

                   如何利用這個Xwb,e呢?看公式13:

Lattice LSTM

                   這個Cwb,e是新加的cell,保留了從句子開始到現在Xwb,e的狀态,大概也就是資訊流,曆史資訊嘛。然後這裡的i                     和f指的的輸入和忘記門,沒有輸出門是因為标簽是在字而不是在詞

                   我們知道,公式11中的Ccj是字方面的資訊流,也就是cell,然後Cwb,e是詞方面的資訊流,例如對“南京市長江大                       橋”這句話,第7個字此時為Cc7的輸入包含了Xc7(橋)、Cw6,7(大橋)和Cw4,7(長江大橋)這三方面的資訊。是                     不是看起來字和詞兩者融合起來就可以得到更完善的資訊了(實驗結果證明是這樣,那就暫且這麼了解吧)。然後                        呢,就像上面例子,“橋”的輸入包含的詞資訊流中包含有多個詞的“大橋”“長江大橋”,是以用公式所有存在的詞表達                        出來:

Lattice LSTM

                     Cce中的e指的就是“橋”這個字的位置,以它為結尾的所有出現在字典D中的詞。然後新加一個門Icb,e來控制每個                        Cwb,e進入Cce的資訊的多少。(論文中我覺得這個應該是Cce,而不是Ccb,e,因為上面已經說了,上面計算的                       Cwb,e的資訊是作為計算Ccj的一個輸入的,是以這裡應該是Cce,j和e是一個意思。而是Ccb,e右上角的c指的                         是字,右下角b和e指的是一個詞的開始和結束位置。)

Lattice LSTM

                     閑話扯完了,下面看具體怎麼控制。

Lattice LSTM
Lattice LSTM
Lattice LSTM

                  看起來雖然有點複雜,但每個元素的含義上面都已經解釋清楚了,例如Cc7為橋時,Icb,e就包含兩個詞的資訊:                        Ic6,7(大橋)和Ic4,7(長江大橋)。xc7我們是知道的向量計算出來這兩個門之後,計算Cc7時就是公式15了,                      相當于來說計算的時候就不用公式11中上一個Cc6了,(我覺得是不用了,如果用了的話在公式15中根本找不到呀)                    而是使用之前的詞資訊。懂了吧。再舉個例子,當j=6(大)時,不存在以“大”結尾的詞,也就是說不存b,那麼公式                      15的計算就是公式11了。

繼續閱讀