天天看點

FLAT——中文NER該怎麼做

來自ACL2020複旦大學邱錫鵬老師團隊的NER領域又一力作

FLAT——中文NER該怎麼做
FLAT——中文NER該怎麼做
  • 論文:FLAT: Chinese NER Using Flat-Lattice Transformer
  • 源碼:https://github.com/LeeSureman/Flat-Lattice-Transformer
  • Arxiv通路不友善的同學可以背景回複『0032』便捷擷取論文喔

「Key insight」: 本文在Lattice LSTM(ACL 2018)[1]的基礎上作出了兩方面的改進:

  • 作者提出了一種将Lattice圖結構無損轉換為扁平的Flat結構的方法,并将LSTM替換為了更先進的Transformer Encoder,該方法不僅彌補了Lattice LSTM無法「并行計算」(batchsize=1)的缺陷,而且更好地模組化了序列的「長期依賴關系」;
  • 作者提出了一種針對Flat結構的「相對位置編碼機制」,使得字元與詞彙得到了更充分更直接的資訊互動,在基于詞典的中文NER模型中取得了SOTA。

寫在前面

由于中文詞彙的稀疏性和模糊性,基于字元的序列标注模型往往比基于詞彙的序列标注模型表現更好,但在基于字元的模型中引入分詞資訊往往能夠帶來性能的提升,尤其是對于NER任務來說,詞彙能夠提供豐富的實體邊界資訊。

Lattice LSTM[2]首次提出使用Lattice結構在NER任務中融入詞彙資訊,如圖(a)所示,一個句子的Lattice結構是一個有向無環圖,每個節點是一個字或者一個詞。

FLAT——中文NER該怎麼做

近幾年有不少論文圍繞着中文NER中的詞彙增強進行了不少工作,一種方式是在字向量中嵌入詞級資訊(ACL 2020: Simplify the Usage of Lexicon in Chinese NER[3]),另一種方式是利用Lattice結構設計模型,這種方式又可以分為下面兩類:

1. 設計适應Lattice結構的模型
FLAT——中文NER該怎麼做
  • Lattice LSTM (ACL 2018)[4]: 将詞彙資訊引入中文NER的開篇之作,作者将詞節點編碼為向量,并在位元組點以注意力的方式融合詞向量。
  • Lexicon Rethink CNN(IJCAI 2019)[5]: 作者提出了含有rethink機制的CNN網絡解決Lattice LSTM的詞彙沖突問題。

「Drawback:」

  1. 由于Lattice結構的動态性,Lattice LSTM無法在GPU上并行訓練;
  2. RNN和CNN難以模組化長距離的依賴關系,且在Lattice LSTM中的字元隻能擷取前向資訊,沒有和詞彙進行足夠充分的全局互動。
2. 采用GNN對Lattice結構編碼:
  • Lexicon-based Graph Network (EMNLP 2019)[6]
  • Collaborative Graph Network (EMNLP 2019)[7]

「Drawback:」

GNN将NER任務轉化為節點分類任務,可以捕捉到Lattice的有向無環結構,但是這些模型都需要LSTM作為底層編碼器來編碼序列的歸納偏置,這導緻模型結構的複雜度較高。

FLAT

從Transformer的position representation得到啟發,作者給每一個token/span(字、詞)增加了兩個位置編碼,分别表示該span在sentence中開始(head)和結束(tail)的位置,對于字來說,head position和tail position是相同的。

FLAT——中文NER該怎麼做

值得注意的是,我們可以從這樣的标簽序列中無損地重建Lattice結構。同時,這樣扁平的結構允許我們使用Transformer Encoder,其中的self-attention機制允許任何字元和詞彙進行直接的互動。

模型

Muiti-head self-attention

有了位置編碼,容易想到可以像原始Transformer那樣将字向量直接和兩個位置向量相加,然後參與後續的self-attention:

\begin{aligned}

\mathrm{Attn}(\bf{A}, \bf{V})&=\mathrm{softmax}(\mathbf{A})\mathbf{V};\\\mathbf{A}_{ij}&=\left(\frac{\mathbf{Q}_i\mathbf{K}_j^\intercal}{\sqrt{d_{\mathrm{head}}}}\right);\\\left[\mathbf{Q, K, V}\right]&=E_x\left[\mathbf{W}_q, \mathbf{W}_k, \mathbf{W}_v\right]

\end{aligned}

不過這樣做肯定不算是有效編碼了位置資訊,這也是原始Transformer在NER任務上的性能比不過BiLSTM的原因之一。有效的位置編碼一直是改進Transformer的重要方向,「針對本文提出的Flat結構,作者借鑒并優化了Transformer-XL (ACL 2019)[8]中的相對位置編碼方法,有效地刻畫了span之間的相對位置資訊。」

Relative Position Encoding of Spans

FLAT——中文NER該怎麼做

span是字元和詞彙的總稱,span之間存在三種關系:交叉、包含、分離,然而作者沒有直接編碼這些位置關系,而是将其表示為一個稠密向量。作者用

head[i]

tail[i]

表示span的頭尾位置坐标,并從四個不同的角度來計算

x_i

x_j

的距離:

\begin{aligned}

d_{ij}^{(hh)}&=head[i]-head[j]\\

d_{ij}^{(ht)}&=head[i]-tail[j]\\

d_{ij}^{(th)}&=tail[i]-head[j]\\

d_{ij}^{(tt)}&=tail[i]-tail[j]\\

\end{aligned}

如圖2所示,這會得到四個相對距離矩陣:

d^{(hh)}, d^{(ht)}, d^{(th)}, d^{(tt)}

,其中

d_{ij}^{(hh)}

表示

x_i

的開始位置和

x_j

的開始位置的距離。然後将這四個距離拼接後作一個非線性變換,得到

x_i

x_j

的位置編碼向量

R_{ij}

R_{ij}=\mathrm{ReLU}(W_r(\mathbf{p}_{d_{ij}^{(hh)}}\oplus \mathbf{p}_{d_{ij}^{(th)}}\oplus \mathbf{p}_{d_{ij}^{(ht)}}\oplus \mathbf{p}_{d_{ij}^{(tt)}}))

其中

\mathbf{p}_d

是Transformer采用的絕對位置編碼:

\begin{aligned}

\mathbf{p}_d^{(2k)}&=\sin\left(d/10000^{2k/d_{model}}\right)\\

\mathbf{p}_d^{(2k+1)}&=\cos\left(d/10000^{2k/d_{model}}\right)

\end{aligned}

這樣,每一個span都可以與任意span進行充分且直接的互動,然後作者采用了Transformer-XL (ACL 2019)[9]中提出的基于相對位置編碼的self-attention:

\begin{align*}

\mathbf{A}_{i,j}^*&=\mathbf{W}_q^\intercal\mathbf{E}_{x_i}^\intercal\mathbf{E}_{x_j}\mathbf{W}_{k, E}+\mathbf{W}_q^\intercal\mathbf{E}_{x_i}^\intercal\mathbf{R}_{ij}\mathbf{W}_{k, R}\\

&+\mathbf{u}^\intercal\mathbf{E}_{x_j}\mathbf{W}_{k, E}+\mathbf{v}^\intercal\mathbf{R}_{ij}\mathbf{W}_{k, R}

\end{align*}

可以直覺地将前兩項分别看作是兩個span之間的内容互動和位置互動,後兩項為全局内容和位置bias,在Transformer-XL中

\mathbf{R}

是根據絕對位置編碼直接計算得出的,而這裡的

\mathbf{R}

經過了非線性變換的處理。最後,用

\mathbf{A}^*

替換式(1)中的

\mathbf{A}

,取出字的編碼表示,将其送入CRF層進行解碼得到預測的标簽序列。

實驗

作者在Ontonotes 4.0, MSRA, Resume, Weibo四個NER資料集上測試了具有單層Transformer的FLAT模型,給出了

F_1

分數。

Performance

FLAT——中文NER該怎麼做

由于模型隻使用單層的Transformer,是以可以嘗試mask部分字元之間的互動。上表的

msm

表示mask具有包含關系的span之間的注意力,

mld

表示mask距離過長(>10)的注意力。可以發現

msm

會導緻模型性能大幅下降,

mld

會導緻性能小幅下降,可見字元與包含它的詞彙之間的充分互動是很重要的。

Efficiency

FLAT——中文NER該怎麼做

由于FLAT模型沒有RNN結構,是以可以充分利用GPU的并行計算能力,大幅提升推斷速度。

加上BERT呢?

FLAT——中文NER該怎麼做

BERT預訓練模型的引入可以提高詞向量的表示品質,在越大的資料集上,引入BERT帶來的效果提升就越顯著。

總結

FLAT模型實際上繼承了作者之前的工作TENER: Adapting Transformer Encoder for Named Entity Recognition[10],與TENER相比,FLAT引入了詞彙資源和更好的相對位置編碼方式,為了對比這兩處改進所帶來的性能提升,作者給出了兩個評估名額:「Span F」和「Type Acc」,Span F隻考慮實體邊界的正确性,而Type Acc表示模型給出的預測中,邊界和類型完全正确的實體在僅考慮邊界正确的實體中的占比。

FLAT——中文NER該怎麼做

表3給出了三類模型的表現,與TENER相比,FLAT在兩個名額上的提升都很明顯,這表明詞彙資訊的引入不僅增強了模型對實體邊界的模組化,還給實體分類帶來了提升,而後者主要來自于優質詞向量的引入,而FLAT

_{head}

在Span F上相比FLAT有明顯的下降,這表明作者對相對位置編碼做出的改進也有一定的效果。

本文參考資料

[1]

Lattice LSTM(ACL 2018): https://arxiv.org/abs/1805.02023

[2]

Lattice LSTM: https://arxiv.org/abs/1805.02023

[3]

ACL 2020: Simplify the Usage of Lexicon in Chinese NER: https://arxiv.org/abs/1908.05969

[4]

Lattice LSTM (ACL 2018): https://arxiv.org/abs/1805.02023

[5]

Lexicon Rethink CNN(IJCAI 2019): https://www.ijcai.org/Proceedings/2019/0692.pdf

[6]

Lexicon-based Graph Network (EMNLP 2019): https://www.aclweb.org/anthology/D19-1096/

[7]

Collaborative Graph Network (EMNLP 2019): https://www.aclweb.org/anthology/D19-1396/

[8]

Transformer-XL (ACL 2019): https://arxiv.org/abs/1901.02860

[9]

Transformer-XL (ACL 2019): https://arxiv.org/abs/1901.02860

[10]

TENER: Adapting Transformer Encoder for Named Entity Recognition: https://arxiv.org/abs/1911.04474