Lattice LSTM
由於中文的實體一般都是由詞語組成的,所以分詞與NER在中文領域具有很強的相關性,一般操作是先分詞,再做詞序列標註。很明顯的,分詞錯誤會導致ner的錯誤,尤其在開放領域,跨領域分詞仍然是一個難題。
簡單來說Lattice LSTM是利用字符作爲輸入的基礎上,加上了分詞的信息,就這樣,沒了,具體怎麼加的,看一下文章接下來來講
1、文章首先介紹了關於中文的兩種實體識別的方法,主題框架都是BiLSTM+CRF,原理上個博客都介紹過了,過程就是那樣, 找最優路徑就是維特比算法。兩種方法只是LSTM的輸入不同:
字向量:輸入是字,缺點是沒有利用相鄰字之間存在的語義信息
詞向量:輸入就是詞了,缺點就是分詞錯誤很可能會導致實體識別的錯誤
(不過大部分實驗證明,字向量比詞向量的效果好,不僅在實體識別,在其他領域文本分類等也是如此,大概是因爲網絡可 以學習到字之間存在的語義信息)
先定義一些符號方面下面的講解,一步一步看,絕對容易讀懂,即使是複雜的公式:
s=c1, c2,…… cm,其中每個小c表示每個字符
s=w1, w2,…… wn,其中每個小w表示每個詞
t(i,k)表示第i個詞中的第k個字,例如“南京市 長江大橋”,t(2,1)=4(長)
BIOES是標籤
- 字向量: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了。
Code晚點再奉上