FLAT:中文NER屠榜之作!
文 |?JayLou婁杰
編 | YY
近年來,引入詞匯信息逐漸成為提升中文NER指標的重要手段。ACL2020中一篇來自復旦大學邱錫鵬老師團隊的 FLAT: Chinese NER Using Flat-Lattice Transformer 刷新了中文NER任務的新SOTA。
如上圖所示,在MSRA-NER任務中,FLAT+BERT登頂榜首;而單獨的FLAT(1層TransFormer)也超越了預訓練模型ERNIE。相比于之前引入詞匯信息的中文NER工作,FLAT主要創新點在于:
基于Transformer設計了一種巧妙position encoding來融合Lattice結構,可以無損的引入詞匯信息。
基于Transformer融合了詞匯信息的動態結構,支持并行化計算,可以大幅提升推斷速度。
下面讓我們看看FLAT是如何登頂榜首的~
論文鏈接:
https://arxiv.org/pdf/2004.11795.pdf
開源代碼:
https://github.com/LeeSureman/Flat-Lattice-Transformer
Arxiv訪問慢的小伙伴也可以在【夕小瑤的賣萌屋】訂閱號后臺回復關鍵詞【0907】下載論文PDF~
背景
中文NER為什么要引入詞匯信息?
不同于英文NER,中文NER通常以字符為單位進行序列標注建模。這主要是由于中文分詞存在誤差,導致 基于字符 通常要好于 基于詞匯 (經過分詞)的序列標注建模方法。
那中文NER是不是就不需要詞匯信息呢?答案當然是否定的。引入詞匯信息的好處在于:
引入詞匯信息往往可以強化實體邊界,特別是對于span較長的實體邊界更加有效。
引入詞匯信息也是一種增強方式。對于NLP分類任務增益明顯的數據增強方法,往往不能直接應用于NER任務,并且指標增益也極為有限。相反,引入詞匯信息的增強方式對于小樣本下的中文NER增益明顯。
下文將引入詞匯信息增強中文NER性能的方法稱為 詞匯增強。
詞匯增強的方式有哪些?
詞向量&詞匯列表:利用一個具備良好分詞結果的詞向量;亦或者不再利用詞向量,僅利用詞匯或者實體邊界信息,通常可通過圖網絡提取相關信息。這種增強方式,主要有2大范式:
Dynamic Architecture:設計一個動態抽取框架,能夠兼容詞匯輸入;本文所介紹的FLAT就屬于這一范式。
Adaptive Embedding:基于詞匯信息,構建自適應Embedding;與模型框架無關。ACL2020中的 Simplify the Usage of Lexicon in Chinese NER[1] 就屬于這一范式,僅僅在embedding層融合詞匯信息,對于詞匯信息的引入更加簡單有效,采取靜態加權的方法可以提前離線計算。
分詞器:單一的分詞器會造成邊界錯誤,可以引入多源分詞器并pooling不同分詞結果。ACL2020中有篇處理中文預訓練的文章[2]就將多種分詞結果中詞匯信息pooling對齊到字符編碼中。
如何在中文NER模型中引入詞匯信息,是近年來中文NER的一個研究重點。下圖展示了各大頂會中詞匯增強NER的主要進展:
由于篇幅所限,本文將包含FLAT在內多種詞匯增強方式進行了對比,感興趣的同學可以進一步閱讀有關文獻。
Lattice LSTM
要想更系統的理解FLAT,就必須掌握Lattice LSTM[3]這篇論文,這是針對中文NER任務引入詞匯信息的開篇之作。文中提出了一種Lattice LSTM用于融合詞匯信息。如下圖所示,當我們通過詞匯信息(詞典)匹配一個句子時,可以獲得一個類似Lattice的結構。
Lattice是一個有向無環圖,詞匯的開始和結束字符決定了格子位置。Lattice LSTM結構則融合了詞匯信息到原生的LSTM中:
如上圖所示,Lattice LSTM引入了word cell結構,對于當前的字符,融合以該字符結束的所有word信息,如「店」融合了「人和藥店」和「藥店」的信息。對于每一個字符,Lattice LSTM采取注意力機制去融合個數可變的word cell單元,其主要的數學形式化表達為:
本文不再堆砌繁雜的數學公式,具體看參考原論文。需要指出的是,當前字符有詞匯融入時,則采取上述公式進行計算;如當前字符沒有詞匯時,則采取原生的LSTM進行計算。雖然Lattice LSTM有效提升了NER性能,但也存在一些缺點:
信息損失:
每個字符只能獲取以它為結尾的詞匯信息。如對于「藥」,并無法獲得‘inside’的「人和藥店」信息。
由于RNN特性,采取BiLSTM時其前向和后向的詞匯信息不能共享。
Lattice LSTM并沒有利用前一時刻的記憶向量? ,即不保留對詞匯信息的持續記憶。
計算性能低下,不能batch并行化:究其原因主要是每個字符之間的增加word cell(看作節點)數目不一致;不過,后續也有工作[4] 將Lattice LSTM進行batch化。
可遷移性差:只適配于LSTM,不具備向其他網絡遷移的特性。
FLAT
由上文分析,Lattice-LSTM采取的RNN結構無法捕捉長距離依賴,同時引入詞匯信息是有損的,同時動態的Lattice結構也不能充分進行GPU并行。
此外,有一類圖網絡(如CGN[5] 和LGN[6])通過采取圖網絡來引入詞匯信息,雖然可以捕捉對于NER任務至關重要的順序結構,但它們通常需要RNN作為底層編碼器來捕捉順序性,模型結構更為復雜。
為解決計算效率低下、引入詞匯信息有損的這兩個問題,FLAT基于Transformer結構進行了兩大改進:
改進1:Flat-Lattice Transformer,無損引入詞匯信息
眾所周知,Transformer采取全連接的自注意力機制可以很好捕捉長距離依賴,由于自注意力機制對位置是無偏的,因此Transformer引入位置向量來保持位置信息。
受到位置向量表征的啟發,FLAT設計了一種巧妙position encoding來融合Lattice 結構,具體地情況如上圖所示,對于每一個字符和詞匯都構建兩個head position encoding 和tail position encoding,這種方式可以重構原有的Lattice結構。
也正是如此,FLAT可以直接建模字符與所有匹配的詞匯信息間的交互,例如,字符[藥]可以匹配詞匯[人和藥店]和[藥店]。
因此,我們可以將Lattice結構展平,將其從一個有向無環圖展平為一個平面的Flat-Lattice Transformer結構,由多個span構成:每個字符的head和tail是相同的,每個詞匯的head和tail是skipped的,如下圖所示:
改進2:相對位置編碼,讓Transformer適用NER任務
FLAT使用了兩個位置編碼(head position encoding 和 tail position encoding),那么是否可以采用絕對位置編碼呢?同樣來自邱錫鵬老師組的論文TENER: Adapting Transformer Encoder for Named Entity Recognition [7]給出答案:原生Transformer中的絕對位置編碼并不直接適用于NER任務。
TENER論文發現:對于NER任務來說,位置和方向信息是十分重要的。 如上圖所示,在「Inc.」前的單詞更可能的實體類型是「ORG」,在「in」后的單詞更可能為時間或地點。而對于方向性的感知會幫助單詞識別其鄰居是否構成一個連續的實體Span。可見,對于「距離」和「方向性」的感知對于Transformer適用于NER任務至關重要。
但是,原生Transformer的絕對位置編碼本身缺乏方向性,雖然具備距離感知,但還是被self-attention機制打破了。
仔細分析,BiLSTM在NER任務上的成功,一個關鍵就是BiLSTM能夠區分其上下文信息的方向性,來自左邊還是右邊。而對于Transformer,其區分上下文信息的方向性是困難的。因此,要想解決Transformer對于NER任務表現不佳的問題,必須提升Transformer的位置感知和方向感知。
因此,FLAT這篇論文采取XLNet論文中提出相對位置編碼計算attention score:
(向右滑動查看完整公式)
論文提出四種相對距離表示和? 之間的關系,同時也包含字符和詞匯之間的關系:
表示? 的head到? 的head距離,其余類似。相對位置encoding表達式為:
(向右滑動查看完整公式)
的計算方式與vanilla Transformer相同:
實驗結果
上圖給出了論文的實驗結果,具體地講:
引入詞匯信息的方法,都相較于baseline模型biLSTM+CRF有較大提升。可見引入詞匯信息可以有效提升中文NER性能。
采用相同詞表(詞向量)時,FLAT好于其他詞匯增強方法;
FLAT如果mask字符與詞匯間的attention,性能下降明顯,這表明FLAT有利于捕捉長距離依賴。
FLAT結合BERT效果會更佳。
如何更充分的利用詞匯信息、最大程度避免詞匯信息損失;
如何設計更為兼容詞匯的Architecture,加快推斷速度;
如上圖所示,在推斷速度方面,FLAT論文也與其他方法進行了對比,FLAT僅僅采用1層Transformer,在指標領先的同時、推斷速度也明顯優于其他方法。
總結
近年來,針對中文NER如何更好地引入詞匯信息,無論是Dynamic Architecture還是Adaptive Embedding,這些方法的出發點無外于兩個關鍵點:
FLAT就是對上述兩個關鍵點的集中體現:FLAT不去設計或改變原生編碼結構,設計巧妙的位置向量就融合了詞匯信息,既做到了信息無損,也大大加快了推斷速度。
本文介紹的詞匯增強方式不僅應用于中文NER任務,也可進一步探索其在關系抽取、事件抽取中的有效性。
文末福利
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
有頂會審稿人、大廠研究員、知乎大V和妹紙
等你來撩哦~
參考文獻
[1] Simplify the Usage of Lexicon in Chinese NER:
https://arxiv.org/abs/1908.05969
[2] Enhancing Pre-trained Chinese Character Representation with Word-aligned Attention:
https://arxiv.org/abs/1911.02821
[3] Chinese NER Using Lattice LSTM:
https://arxiv.org/pdf/1805.02023.pdf
[4] Batch_Parallel_LatticeLSTM:
https://github.com/LeeSureman/Batch_Parallel_LatticeLSTM
[5] Leverage Lexical Knowledge for Chinese Named Entity Recognition via Collaborative Graph Network:
https://www.aclweb.org/anthology/D19-1396.pdf
[6] A Lexicon-Based Graph Neural Network for Chinese NER:
https://www.aclweb.org/anthology/D19-1096.pdf
[7] TENER: Adapting Transformer Encoder for Named Entity Recognition:
https://arxiv.org/abs/1911.04474
總結
以上是生活随笔為你收集整理的FLAT:中文NER屠榜之作!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 还在用Tensorboard?机器学习实
- 下一篇: 百度研究院商业智能实验室招聘研究实习生!