[論文筆記] [中文NER] Chinese NER Using Lattice LSTM

這篇論文的相關筆記還挺多的,但是第三章的模型部分公式比較多,看着看着就糊塗了,所以自己做了下筆記,並且嘗試把Lattice LSTM部分用圖畫出來,方便自己理解。

3. 模型部分

主要記錄不同模型的輸入向量,以式(0)爲例:
(0)1234567 \frac{南}{1}\frac{京}{2}\frac{市}{3} | \frac{長}{4}\frac{江}{5}\frac{大}{6}\frac{橋}{7} \tag{0}

  • 若以對句子進行分割,則句子表達如下:
    s=c1,c2,,m s= c_1, c_2, \dots, _m
    其中cjc_j表示句中第jj個字。
  • 若以對句子進行分割,則句子表達如下:
    s=w1,w2,,wm s= w_1, w_2, \dots, w_m
    其中wiw_i表示句中第ii個詞。
  • 對於某個字,可以用t(i,k)=jt(i,k)=j表示第jj個字位於句子中第ii個詞的第kk位,因此對於式(0)中的4t(2,1)=4\frac{長}{4},t(2,1) = 4

下文中的公式編號對應原文中的編號,所以不是連續的。

3.1 Character-Based Model(基於字)

  • Char
    基於單字的模型輸入向量如式(1):
    (1)xje=ee(cj) \bold{x}_j^e=\bold{e}^e(c_j) \tag{1}
    其中cjc_j表示每個字,ee\bold{e}^e表示單字的embedding。
  • Char + Bichar
    基於單字兩字詞的模型輸入向量如式(3):
    (3)xjc=[ec(cj);eb(cj,cj+1)] \bold{x}_j^c=[\bold{e}^c(c_j);\bold{e}^b(c_j,c_{j+1})] \tag{3}
    其中eb\bold{e}^b兩字詞的embedding,分號表示連接兩部分的向量。
  • Char + softword
    基於單字分詞的模型輸入向量如式(4):
    (4)xjc=[ec(cj);es(seg(cj))] \bold{x}_j^c=[\bold{e}^c(c_j);\bold{e}^s(seg(c_j))] \tag{4}
    其中es\bold{e}^s表示分詞後的詞embedding。

3.2 Word-Based Model(基於詞)

  • Word
    基於的模型輸入向量如式(6):
    (6)xiw=ew(wi) \bold{x}_i^w=\bold{e}^w(w_i) \tag{6}
    其中wiw_i表示每個詞,ew\bold{e}^w表示詞的embedding。

  • Integrating character representations
    基於加上詞所包含的字的模型輸入向量如式(7):
    (7)xiw=[ew(wi);xic] \bold{x}_i^w=[\bold{e}^w(w_i);\bold{x}_i^c] \tag{7}
    其中xic\bold{x}_i^c表示詞wiw_i所包含的字對應的向量。

  • Word + char LSTM

  • Word + char LSTM’

  • Word + char CNN
    (9)xic=maxt(i,1)jt(i,len(i))(WCNNT[e(cjke13)e(cjke13)]+bCNN) \bold{x}_i^c= \mathop{max}\limits_{t(i,1)\leq j \leq t(i, len(i))} (\bold{W}_{CNN}^T \begin{bmatrix} \bold{e}(c_{j-\frac{ke-1}{3}})\\ \dots \\ \bold{e}(c_{j-\frac{ke-1}{3}}) \tag{9} \end{bmatrix} +\bold{b}_{CNN})
    其中ke=3ke=3表示kernal size,maxmax表示max pooling。

3.3 Lattice Model (文章所提出的模型)

  • 模型整體如下:
    在這裏插入圖片描述

  • 字LSTM部分(整體圖中c加藍色圈的部分)結構如下圖及式(11):
    在這裏插入圖片描述
    (11)[ijcojcfjcc~jc]=[σσσtanh](WcT[xjchj1c]+bc) \begin{bmatrix} \bold{i}_j^c\\\bold{o}_j^c\\\bold{f}_j^c\\\bold{\widetilde{c}}_j^c \end{bmatrix} =\begin{bmatrix} \sigma\\\sigma\\\sigma\\tanh \end{bmatrix} (\bold{W}^{c^T} \begin{bmatrix} \bold{x}_j^c\\\bold{h}_{j-1}^c \end{bmatrix}+\bold{b}^c)\\ \tag{11}
    cjc=fjccj1c+ijcc~jchjc=ojctanh(cjc) \bold{c}_j^c=\bold{f}_j^c\odot\bold{c}_{j-1}^c+\bold{i}_j^c\odot\widetilde{c}_j^c\\ \bold{h}_j^c=\bold{o}_j^c\odot tanh(\bold{c}_j^c)
    其中:
    xjc=ec(cj)\bold{x}_j^c=\bold{e}^c(c_j)表示詞所對應的向量,即LSTM的輸入向量(input vectorinput \ vector);
    hj1c\bold{h}_{j-1}^c表示前一個字的LSTM cell的輸出;
    cj1c\bold{c}_{j-1}^c表示從前一個字和該字相關的詞傳過來的細胞狀態;
    ijc,ojc,fjc\bold{i}_j^c, \bold{o}_j^c,\bold{f}_j^c分別表示輸入門(input gateinput\ gate)、輸出門(output gateoutput\ gate)和遺忘門(forget gateforget\ gate);
    σ,tanh\sigma, tanh分別表示激活函數sigmod和tanh;
    \odot表示矩陣點積。

  • 詞LSTM部分(整體圖中紅色陰影部分)結構如下圖及式(12)(13):
    在這裏插入圖片描述
    (12)xb,ew=ew(wb,ed) \bold{x}_{b,e}^w=\bold{e}^w(w_{b,e}^d) \tag{12}
    (13)[ib,ewfb,ewc~b,ew]=[σσtanh](WwT[xb,ewhbc]+bw)cb,ew=fb,ewcbc+ib,ewc~b,ew \begin{bmatrix} \bold{i}_{b,e}^w \\ \bold{f}_{b,e}^w \\ \bold{\widetilde{c}}_{b,e}^w \end{bmatrix}= \begin{bmatrix} \sigma\\ \sigma \\ tanh \end{bmatrix} (\bold{W}^{w^T} \begin{bmatrix} \bold{x}_{b,e}^w \\ \bold{h}_b^c \end{bmatrix}+\bold{b}^w ) \tag{13}\\ \bold{c}_{b,e}^w=\bold{f}_{b,e}^w\odot\bold{c}_b^c+\bold{i}_{b,e}^w\odot\bold{\widetilde{c}}_{b,e}^w
    其中:
    wb,edw_{b,e}^d表示從b開始到e結束的詞的子序列,如w1,2dw_{1,2}^d=南京、w6,7dw_{6,7}^d=大橋;
    hbc\bold{h}_b^c表示第bb個字的LSTM cell的輸出;
    其他變量解釋同上。
    可以發現詞LSTM細胞中沒有o(output gate)\bold{o}(output\ gate),這是因爲詞LSTM之間沒有聯繫,每個詞LSTM的細胞狀態都傳給該詞最後一個字的字LSTM細胞。

  • 詞與字的關聯
    整體圖中每個字細胞都有兩種類型的輸入,黑色線表示從前一個字傳過來的細胞狀態,綠色線表示從以該字結尾的所有詞傳過來的細胞狀態,不同的輸入採用加權平均的方法傳入,所以cjc\bold{c}_j^c不僅包含與第jj個字符有關的信息,還包含以第jj個字符結尾的詞的信息,具體如式(15)(16):
    (15)cjc=b{bwb,jdD}αb,jccb,jw+αjcc~jc \bold{c}_j^c= \mathop{\sum}\limits_{b\in \{ b'|w_{b',j}^d \in \Bbb{D} \}} \boldsymbol{\alpha}_{b,j}^c\odot\bold{c}_{b,j}^w+ \boldsymbol{\alpha}_j^c\odot\bold{\widetilde{c}}_j^c \tag{15}
    其中:
    (16)αb,jc=exp(ib,jc)exp(ijc)+b{bwb,jdD}exp(ib,jc)αjc=exp(ijc)exp(ijc)+b{bwb,jdD}exp(ib,jc) \boldsymbol{\alpha}_{b,j}^c= \frac {exp(\bold{i}_{b,j}^c)} {exp(\bold{i}_j^c) + \sum_{b\in \{ b'|w_{b',j}^d \in \Bbb{D} \}}exp(\bold{i}_{b',j}^c)} \tag{16}\\ \boldsymbol{\alpha}_j^c= \frac {exp(\bold{i}_{j}^c)} {exp(\bold{i}_j^c) + \sum_{b\in \{ b'|w_{b',j}^d \in \Bbb{D} \}}exp(\bold{i}_{b',j}^c)}
    舉個例子,對於c7c\bold{c}_7^c,包含了x7c\bold{x}_7^c(橋)、c6,7w\bold{c}_{6,7}^w(大橋)、c4,7w\bold{c}_{4,7}^w(長江大橋)的信息,所以:
    c7c=α6,7cc6,7c+α4,7cc4,7c+α7cc~7c \bold{c}_7^c=\boldsymbol{\alpha}_{6,7}^c\odot\bold{c}_{6,7}^c+\boldsymbol{\alpha}_{4,7}^c\odot\bold{c}_{4,7}^c+\boldsymbol{\alpha}_7^c\odot\bold{\widetilde{c}}_7^c
    其中:
    α6,7c=exp(i6,7c)exp(i7c)+exp(i6,7c)+exp(i4,7c)α4,7c=exp(i4,7c)exp(i7c)+exp(i6,7c)+exp(i4,7c)α7c=exp(i7c)exp(i7c)+exp(i6,7c)+exp(i4,7c) \boldsymbol{\alpha}_{6,7}^c= \frac {exp(\bold{i}_{6,7}^c)} {exp(\bold{i}_7^c) + exp(\bold{i}_{6,7}^c) + exp(\bold{i}_{4,7}^c)}\\ \boldsymbol{\alpha}_{4,7}^c= \frac {exp(\bold{i}_{4,7}^c)} {exp(\bold{i}_7^c) + exp(\bold{i}_{6,7}^c) + exp(\bold{i}_{4,7}^c)}\\ \boldsymbol{\alpha}_7^c= \frac {exp(\bold{i}_{7}^c)} {exp(\bold{i}_7^c) + exp(\bold{i}_{6,7}^c) + exp(\bold{i}_{4,7}^c)}

注:雖然模型看懂了,但對於怎麼送變量進去思路還是有點混亂,等跟着作者github上的代碼實現以後再來完善筆記。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章