[论文笔记] [中文NER] Chinese NER Using Lattice LSTM

这篇论文的相关笔记还挺多的,但是第三章的模型部分公式比较多,看着看着就糊涂了,所以自己做了下笔记,并且尝试把Lattice LSTM部分用图画出来,方便自己理解。

3. 模型部分

主要记录不同模型的输入向量,以式(0)为例:
(0) 南 1 京 2 市 3 ∣ 长 4 江 5 大 6 桥 7 \frac{南}{1}\frac{京}{2}\frac{市}{3} | \frac{长}{4}\frac{江}{5}\frac{大}{6}\frac{桥}{7} \tag{0} 1234567(0)

  • 若以对句子进行分割,则句子表达如下:
    s = c 1 , c 2 , … , m s= c_1, c_2, \dots, _m s=c1,c2,,m
    其中 c j c_j cj表示句中第 j j j个字。
  • 若以对句子进行分割,则句子表达如下:
    s = w 1 , w 2 , … , w m s= w_1, w_2, \dots, w_m s=w1,w2,,wm
    其中 w i w_i wi表示句中第 i i i个词。
  • 对于某个字,可以用 t ( i , k ) = j t(i,k)=j t(i,k)=j表示第 j j j个字位于句子中第 i i i个词的第 k k k位,因此对于式(0)中的 长 4 , t ( 2 , 1 ) = 4 \frac{长}{4},t(2,1) = 4 4t(2,1)=4

下文中的公式编号对应原文中的编号,所以不是连续的。

3.1 Character-Based Model(基于字)

  • Char
    基于单字的模型输入向量如式(1):
    (1) x j e = e e ( c j ) \bold{x}_j^e=\bold{e}^e(c_j) \tag{1} xje=ee(cj)(1)
    其中 c j c_j cj表示每个字, e e \bold{e}^e ee表示单字的embedding。
  • Char + Bichar
    基于单字两字词的模型输入向量如式(3):
    (3) x j c = [ e c ( c j ) ; e b ( c j , c j + 1 ) ] \bold{x}_j^c=[\bold{e}^c(c_j);\bold{e}^b(c_j,c_{j+1})] \tag{3} xjc=[ec(cj);eb(cj,cj+1)](3)
    其中 e b \bold{e}^b eb两字词的embedding,分号表示连接两部分的向量。
  • Char + softword
    基于单字分词的模型输入向量如式(4):
    (4) x j c = [ e c ( c j ) ; e s ( s e g ( c j ) ) ] \bold{x}_j^c=[\bold{e}^c(c_j);\bold{e}^s(seg(c_j))] \tag{4} xjc=[ec(cj);es(seg(cj))](4)
    其中 e s \bold{e}^s es表示分词后的词embedding。

3.2 Word-Based Model(基于词)

  • Word
    基于的模型输入向量如式(6):
    (6) x i w = e w ( w i ) \bold{x}_i^w=\bold{e}^w(w_i) \tag{6} xiw=ew(wi)(6)
    其中 w i w_i wi表示每个词, e w \bold{e}^w ew表示词的embedding。

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

  • Word + char LSTM

  • Word + char LSTM’

  • Word + char CNN
    (9) x i c = m a x t ( i , 1 ) ≤ j ≤ t ( i , l e n ( i ) ) ( W C N N T [ e ( c j − k e − 1 3 ) … e ( c j − k e − 1 3 ) ] + b C N N ) \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}) xic=t(i,1)jt(i,len(i))max(WCNNTe(cj3ke1)e(cj3ke1)+bCNN)(9)
    其中 k e = 3 ke=3 ke=3表示kernal size, m a x max max表示max pooling。

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

  • 模型整体如下:
    在这里插入图片描述

  • 字LSTM部分(整体图中c加蓝色圈的部分)结构如下图及式(11):
    在这里插入图片描述
    (11) [ i j c o j c f j c c ~ j c ] = [ σ σ σ t a n h ] ( W c T [ x j c h j − 1 c ] + b c ) \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} ijcojcfjcc jc=σσσtanh(WcT[xjchj1c]+bc)(11)
    c j c = f j c ⊙ c j − 1 c + i j c ⊙ c ~ j c h j c = o j c ⊙ t a n h ( c j c ) \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) cjc=fjccj1c+ijcc jchjc=ojctanh(cjc)
    其中:
    x j c = e c ( c j ) \bold{x}_j^c=\bold{e}^c(c_j) xjc=ec(cj)表示词所对应的向量,即LSTM的输入向量( i n p u t   v e c t o r input \ vector input vector);
    h j − 1 c \bold{h}_{j-1}^c hj1c表示前一个字的LSTM cell的输出;
    c j − 1 c \bold{c}_{j-1}^c cj1c表示从前一个字和该字相关的词传过来的细胞状态;
    i j c , o j c , f j c \bold{i}_j^c, \bold{o}_j^c,\bold{f}_j^c ijc,ojc,fjc分别表示输入门( i n p u t   g a t e input\ gate input gate)、输出门( o u t p u t   g a t e output\ gate output gate)和遗忘门( f o r g e t   g a t e forget\ gate forget gate);
    σ , t a n h \sigma, tanh σ,tanh分别表示激活函数sigmod和tanh;
    ⊙ \odot 表示矩阵点积。

  • 词LSTM部分(整体图中红色阴影部分)结构如下图及式(12)(13):
    在这里插入图片描述
    (12) x b , e w = e w ( w b , e d ) \bold{x}_{b,e}^w=\bold{e}^w(w_{b,e}^d) \tag{12} xb,ew=ew(wb,ed)(12)
    (13) [ i b , e w f b , e w c ~ b , e w ] = [ σ σ t a n h ] ( W w T [ x b , e w h b c ] + b w ) c b , e w = f b , e w ⊙ c b c + i b , e w ⊙ c ~ b , e w \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 ib,ewfb,ewc b,ew=σσtanh(WwT[xb,ewhbc]+bw)cb,ew=fb,ewcbc+ib,ewc b,ew(13)
    其中:
    w b , e d w_{b,e}^d wb,ed表示从b开始到e结束的词的子序列,如 w 1 , 2 d w_{1,2}^d w1,2d=南京、 w 6 , 7 d w_{6,7}^d w6,7d=大桥;
    h b c \bold{h}_b^c hbc表示第 b b b个字的LSTM cell的输出;
    其他变量解释同上。
    可以发现词LSTM细胞中没有 o ( o u t p u t   g a t e ) \bold{o}(output\ gate) o(output gate),这是因为词LSTM之间没有联系,每个词LSTM的细胞状态都传给该词最后一个字的字LSTM细胞。

  • 词与字的关联
    整体图中每个字细胞都有两种类型的输入,黑色线表示从前一个字传过来的细胞状态,绿色线表示从以该字结尾的所有词传过来的细胞状态,不同的输入采用加权平均的方法传入,所以 c j c \bold{c}_j^c cjc不仅包含与第 j j j个字符有关的信息,还包含以第 j j j个字符结尾的词的信息,具体如式(15)(16):
    (15) c j c = ∑ b ∈ { b ′ ∣ w b ′ , j d ∈ D } α b , j c ⊙ c b , j w + α j c ⊙ c ~ j c \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} cjc=b{bwb,jdD}αb,jccb,jw+αjcc jc(15)
    其中:
    (16) α b , j c = e x p ( i b , j c ) e x p ( i j c ) + ∑ b ∈ { b ′ ∣ w b ′ , j d ∈ D } e x p ( i b ′ , j c ) α j c = e x p ( i j c ) e x p ( i j c ) + ∑ b ∈ { b ′ ∣ w b ′ , j d ∈ D } e x p ( i b ′ , j c ) \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)} αb,jc=exp(ijc)+b{bwb,jdD}exp(ib,jc)exp(ib,jc)αjc=exp(ijc)+b{bwb,jdD}exp(ib,jc)exp(ijc)(16)
    举个例子,对于 c 7 c \bold{c}_7^c c7c,包含了 x 7 c \bold{x}_7^c x7c(桥)、 c 6 , 7 w \bold{c}_{6,7}^w c6,7w(大桥)、 c 4 , 7 w \bold{c}_{4,7}^w c4,7w(长江大桥)的信息,所以:
    c 7 c = α 6 , 7 c ⊙ c 6 , 7 c + α 4 , 7 c ⊙ c 4 , 7 c + α 7 c ⊙ c ~ 7 c \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 c7c=α6,7cc6,7c+α4,7cc4,7c+α7cc 7c
    其中:
    α 6 , 7 c = e x p ( i 6 , 7 c ) e x p ( i 7 c ) + e x p ( i 6 , 7 c ) + e x p ( i 4 , 7 c ) α 4 , 7 c = e x p ( i 4 , 7 c ) e x p ( i 7 c ) + e x p ( i 6 , 7 c ) + e x p ( i 4 , 7 c ) α 7 c = e x p ( i 7 c ) e x p ( i 7 c ) + e x p ( i 6 , 7 c ) + e x p ( i 4 , 7 c ) \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)} α6,7c=exp(i7c)+exp(i6,7c)+exp(i4,7c)exp(i6,7c)α4,7c=exp(i7c)+exp(i6,7c)+exp(i4,7c)exp(i4,7c)α7c=exp(i7c)+exp(i6,7c)+exp(i4,7c)exp(i7c)

注:虽然模型看懂了,但对于怎么送变量进去思路还是有点混乱,等跟着作者github上的代码实现以后再来完善笔记。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值