來源:知乎 作者:JayLou婁傑
連結:見文末閱讀原文
本文僅做學術分享,侵刪
本文對「詞彙增強」的系列方法進行介紹,包括Lattice LSTM/LR-CNN/CGN/LGN/WC-LSTM/Multi-digraph/Simple-Lexicon/FLAT 等8個方法進行串講,目錄如下:
1、為什麼對於中文NER任務,要進行「詞彙增強」?雖然基於字符的NER系統通常好於基於詞彙(經過分詞)的方法,但基於字符的NER沒有利用詞彙信息,而詞彙邊界對於實體邊界通常起著至關重要的作用。
如何在基於字符的NER系統中引入詞彙信息,是近年來NER的一個研究重點。本文將這種引入詞彙的方法稱之為「詞彙增強」,以表達引入詞彙信息可以增強NER性能。
從另一個角度看,由於NER標註數據資源的稀缺,BERT等預訓練語言模型在一些NER任務上表現不佳。特別是在一些中文NER任務上,詞彙增強的方法會好於或逼近BERT的性能。因此,關注「詞彙增強」方法在中文NER任務很有必要。
2、「詞彙增強」的主要方法有哪些?近年來,基於詞彙增強的中文NER主要分為2條主線[9]:
Dynamic Architecture:設計一個動態框架,能夠兼容詞彙輸入;
Adaptive Embedding :基於詞彙信息,構建自適應Embedding;
本文按照上述2條主線,將近年來各大頂會的相關論文歸納如下:
2.1 Dynamic Architecture範式Dynamic Architecture範式通常需要設計相應結構以融入詞彙信息。[1] Lattice LSTM:Chinese NER Using Lattice LSTM(ACL2018)
本文是基於詞彙增強方法的中文NER的開篇之作,提出了一種Lattice LSTM以融合詞彙信息。
具體地,當我們通過詞彙信息(詞典)匹配一個句子時,可以獲得一個類似Lattice的結構。
LatticeLattice是一個有向無環圖,詞彙的開始和結束字符決定了其位置。Lattice LSTM結構則融合了詞彙信息到原生的LSTM中:
Lattice LSTM如上圖所示,Lattice LSTM引入了一個word cell結構,對於當前的字符,融合以該字符結束的所有word信息,如對於「店」融合了「人和藥店」和「藥店」的信息。對於每一個字符,Lattice LSTM採取注意力機制去融合個數可變的word cell單元,其主要的數學形式化表達為:
本文不再堆砌繁雜的數學公式,具體看參考原論文。需要指出的是,當前字符有詞彙融入時,則採取上述公式進行計算;如當前字符沒有詞彙時,則採取原生的LSTM進行計算。當有詞彙信息時,Lattice LSTM並沒有利用前一時刻的記憶向量 ,即不保留對詞彙信息的持續記憶。
Lattice LSTM 的提出,將詞彙信息引入,有效提升了NER性能;但其也存在一些缺點:
計算性能低下,不能batch並行化。究其原因主要是每個字符之間的增加word cell(看作節點)數目不一致;
信息損失:1)每個字符只能獲取以它為結尾的詞彙信息,對於其之前的詞彙信息也沒有持續記憶。如對於「藥」,並無法獲得『inside』的「人和藥店」信息。2)由於RNN特性,採取BiLSTM時其前向和後向的詞彙信息不能共享。
可遷移性差:只適配於LSTM,不具備向其他網絡遷移的特性。
[2] LR-CNN:CNN-Based Chinese NER with Lexicon Rethinking(IJCAI2019)
Lattice LSTM採取RNN結構,導致其不能充分利用GPU進行並行化。此外,Lattice LSTM無法有效處理詞彙信息衝突問題,如上圖所示:字符 [長] 可以匹配到詞彙 [市長] 和 [長隆],不同的匹配會導致[長] 得到不同的標籤,而對於RNN結構:僅僅依靠前一步的信息輸入、而不是利用全局信息,無法有效處理這一衝突問題。顯而易見,對於中文NER,這種衝突問題很常見,在不參考整個句子上下文和高層信息的前提下很難有效解決。
LR-CNN本篇論文LR-CNN為解決這一問題,提出了Lexicon-Based CNNs和Refining Networks with Lexicon Rethinking。
Lexicon-Based CNNs:採取CNN對字符特徵進行編碼,感受野大小為2提取bi-gram特徵,堆疊多層獲得multi-gram信息;同時採取注意力機制融入詞彙信息(word embed);
Refining Networks with Lexicon Rethinking:由於上述提到的詞彙信息衝突問題,LR-CNN採取rethinking機制增加feedback layer來調整詞彙信息的權值:具體地,將高層特徵最為輸入通過注意力模塊調節每一層詞彙特徵分布。如上圖,高層特徵得到的 [廣州市] 和 [長隆]會降低 [市長] 在輸出特徵中的權重分布。最終對每一個字符位置提取對應的調整詞彙信息分布後的multi-gram特徵,餵入CRF中解碼。
LR-CNN最終相比於Lattice LSTM加速3.21倍,但LR-CNN仍然計算複雜,並且不具備可遷移性。
[3] CGN: Leverage Lexical Knowledge for Chinese Named Entity Recognition via Collaborative Graph Network( EMNLP2019)
由於Lattice LSTM存在信息損失,特別是無法獲得『inside』的詞彙信息。針對這一問題,本篇論文構建了基於協作的圖網絡,由編碼層、圖網絡層、融合層、解碼層組成。在圖網絡層,構建了三種不同的建圖方式:
Word-Character Containing graph (C-graph):字與字之間無連接,詞與其inside的字之間有連接。
Word-Character Transition graph(T-graph):相鄰字符相連接,詞與其前後字符連接。
Word-Character Lattice graph(L-graph):相鄰字符相連接,詞與其開始結束字符相連。
圖網絡層通過Graph Attention Network(GAN)進行特徵提取,提取3種圖網絡中的前n個字符節點的特徵:
特徵融合則將基於字符的上下文表徵H與圖網絡表徵加權融合:
涉及GAN的相關計算公式可參考原論文。
[4] LGN: A Lexicon-Based Graph Neural Network for Chinese NER(EMNLP2019)
本篇論文與LR-CNN出發點類似,Lattice LSTM這種RNN結構僅僅依靠前一步的信息輸入,而不是利用全局信息,如上圖所示:字符 [流]可以匹配到詞彙 [河流] 和 [流經]兩個詞彙信息,但Lattice LSTM卻只能利用 [河流] ;字符 [度]只能看到前序信息,不能充分利用 [印度河] 信息,從而造成標註衝突問題。
LGN本篇論文通過採取 lexicon-based graph neural network (LGN)來解決上述問題。如上圖所示,將每一個字符作為節點,匹配到的詞彙信息構成邊。通過圖結構實現局部信息的聚合,並增加全局節點進行全局信息融入。聚合方式採取Multi-Head Attention,具體計算公式可參考原論文。
[5] FLAT: Chinese NER Using Flat-Lattice Transformer(ACL2020)
本篇論文來自
@邱錫鵬
老師團隊。通過對上述4篇論文的介紹,我們可以發現:
Lattice-LSTM和LR-CNN採取的RNN和CNN結構無法捕捉長距離依賴,而動態的Lattice結構也不能充分進行GPU並行。
而CGN和LGN採取的圖網絡雖然可以捕捉對於NER任務至關重要的順序結構,但這兩者之間的gap是不可忽略的。其次,這類圖網絡通常需要RNN作為底層編碼器來捕捉順序性,通常需要複雜的模型結構。
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的。
FLAT結構在知乎專欄文章《如何解決Transformer在NER任務中效果不佳的問題?》,我們介紹了對於Tranformer結構,絕對位置編碼並不適用於NER任務。因此,FLAT這篇論文採取XLNet論文中提出相對位置編碼計算attention score:
論文提出四種相對距離表示和之間的關係,同時也考慮字符和詞彙之間的關係:
表示的head到的head距離,其餘類似。相對位置encoding為:
的計算方式與vanilla Transformer相同。
綜上,FLAT採取這種全連接自注意力結構,可以直接字符與其所匹配詞彙間的交互,同時捕捉長距離依賴。如果將字符與詞彙間的attention進行masked,性能下降明顯,可見引入詞彙信息對於中文NER 的重要性。此外,相關實驗表明,FLAT有效的原因是:新的相對位置encoding有利於定位實體span,而引入詞彙的word embedding有利於實體type的分類。
2.2 Adaptive Embedding範式Adaptive Embedding範式僅在embedding層對於詞彙信息進行自適應,後面通常接入LSTM+CRF和其他通用網絡,這種範式與模型無關,具備可遷移性。[6] WC-LSTM: An Encoding Strategy Based Word-Character LSTM for Chinese NER Lattice LSTM(NAACL2019)
WC-LSTMLattice LSTM中每個字符只能獲取以它為結尾的詞彙數量是動態的、不固定的,這也是導致Lattice LSTM不能batch並行化的原因。WC-LSTM為改進這一問題,採取Words Encoding Strategy,將每個字符為結尾的詞彙信息進行固定編碼表示,即每一個字符引入的詞彙表徵是靜態的、固定的,如果沒有對應的詞彙則用<PAD>代替,從而可以進行batch並行化。
這四種encoding策略分別為:最短詞彙信息、最長詞彙信息、average、self-attenion。以「average」為例:即將當前字符引入所有相關的詞彙信息對應的詞向量進行平均。
WC-LSTM仍然存在信息損失問題,無法獲得『inside』的詞彙信息,不能充分利用詞彙信息。雖然是Adaptive Embedding範式,但WC-LSTM仍然採取LSTM進行編碼,建模能力有限、存在效率問題。
[7] Multi-digraph: A Neural Multi-digraph Model for Chinese NER with Gazetteers(ACL2019)
不同於其他論文引入詞彙信息的方式是基於一個詞表(由論文Lattice LSTM 提供,沒有實體標籤,通常需要提取對應的word embedding),本篇論文引入詞彙信息的方式是利用實體詞典(Gazetteers,含實體類型標籤)。
雖然引入實體詞典等有關知識信息對NER性能可能會有所幫助,但實體詞典可能會包含不相關甚至錯誤的信息,這會損害系統的性能。如上圖所示,利用4個實體詞典:「PER1」、「PER2」、「LOC1」、「LOC2」進行匹配,錯誤實體就有2個。
Multi-digraph為了更好的利用詞典信息,本文提出了一種多圖結構更好地顯示建模字符和詞典的交互。如上圖所示,結合自適應的Gated Graph Sequence Neural Networks (GGNN)和LSTM+CRF,基於上下文信息對來自不同詞典的信息進行加權融合,解決詞典匹配衝突的問題。
具體地,本文通過圖結構建模Gazetteers信息,關鍵在於怎麼融入不同詞典的信息。上述圖結構中「邊」的label信息即包含字符間的連接信息,也包含來自不同m個Gazetteers的實體匹配信息,共有L個label:
而傳統的GGNN不能處理帶有不同label信息的「邊」,為了能夠處理上述的多圖結構,本文將鄰接矩陣A擴展為包括不同標籤的邊,對邊的每一個label分配相應的可訓練參數:
上述圖結構的隱狀態採用GRU更新,具體更新方式可參考原論文。最後,將基於GGNN提取字符所對應的特徵表示餵入LSTM+CRF中。
[8] Simple-Lexicon:Simplify the Usage of Lexicon in Chinese NER(ACL2020)
由上述分析可以發現Lattice LSTM只適配於LSTM,不具備向其他網絡遷移的特性,同樣Lattice LSTM存在的信息損失也不容小覷。本篇論文為避免設計複雜的模型結構、同時為便於遷移到其他序列標註框架,提出了一種在embedding層簡單利用詞彙的方法。本文先後對比了三種不同的融合詞彙的方式:
第一種:Softword
Softword,圖片來自[9]如上圖所示,Softword通過中文分詞模型後,對每一個字符進行BMESO的embedding嵌入。顯而易見,這種Softword方式存在由分詞造成的誤差傳播問題,同時也無法引入詞彙對應word embedding。
第二種:ExtendSoftword
ExtendSoftword ,圖片來自[9]ExtendSoftword則將所有可能匹配到的詞彙結果對字符進行編碼表示。如上圖中,對於字符「山」來說,其可匹配到的詞彙有中山、中山西、山西路,「山」隸屬 {B,M,E}。論文對於字符對應的詞彙信息按照BMESO編碼構建5維二元向量,如「山」表示為[1,1,1,0,0].
ExtendSoftword也會存在一些問題:1)仍然無法引入詞彙對應的word embedding;2)也會造成信息損失,無法恢復詞彙匹配結果,例如,假設有兩個詞彙列表[中山,山西,中山西路]和[中山,中山西,山西路],按照ExtendSoftword方式,兩個詞彙列表對應字符匹配結果是一致的;換句話說,當前ExtendSoftword匹配結果無法復原原始的詞彙信息是怎樣的,從而導致信息損失。
第三種:Soft-lexicon
Soft-lexicon,圖片來自[9]為了解決Softword和ExtendSoftword存在的問題,Soft-lexicon對當前字符,依次獲取BMES對應所有詞彙集合,然後再進行編碼表示。
由上圖可以看出,對於字符[語],其標籤B對應的詞彙集合涵蓋[語言,語言學];標籤M對應[中國語言];標籤E對應[國語、中國語];標籤S對應[語]。當前字符引入詞彙信息後的特徵表示為:
很容易理解,上述公式則將BMES對應的詞彙編碼 與字符編碼 進行拼接。表示當前標籤(BMES)下對應的詞彙集合編碼,其計算方式為:
為詞彙集合, 代表詞頻。考慮計算複雜度,本文沒有採取動態加權方法,而採取如同上式的靜態加權方法,即:對詞彙集合中的詞彙對應的word embedding通過其詞頻大小進行加權。詞頻根據訓練集和測試集可離線統計。
綜上可見,Soft-lexicon這種方法沒有造成信息損失,同時又可以引入word embedding,此外,本方法的一個特點就是模型無關,可以適配於其他序列標註框架。
3、總結與對比:關鍵結果分析通過第二部分對於「詞彙增強」方法主要論文的介紹,我們可以發現無論是Dynamic Architecture還是Adaptive Embedding,都是想如何更好的融入詞彙信息。這些方法的出發點無外於兩點:1)如何更充分的利用詞彙信息、最大程度避免詞彙信息損失;2)如何設計更為兼容詞彙的Architecture,加快推斷速度。
下面對於上述「詞彙增強」方法進行匯總:
ACL2020中的兩篇論文FLAT和Simple-Lexicon分別對應於Dynamic Architecture和Adaptive Embedding,這兩種方法相比於其他方法:1)能夠充分利用詞彙信息,避免信息損失;2)FLAT不去設計或改變原生編碼結構,設計巧妙的位置向量就融合了詞彙信息;Simple-Lexicon對於詞彙信息的引入更加簡單有效,採取靜態加權的方法可以提前離線計算。
最後,我們來看一下,上述各種「詞彙增強」方法在中文NER任務上的性能:
數據摘抄自各相關論文上圖可以發現:總的來看,ACL2020中的FLAT和Simple-Lexicon效果最佳。具體地說:
引入詞彙信息的方法,都相較於baseline模型biLSTM+CRF有較大提升,可見引入詞彙信息可以有效提升中文NER性能。
採用相同詞表對比時,FLAT和Simple-Lexicon好於其他方法。
結合BERT效果會更佳。
除了上述中文NER任務,筆者還在醫療NER任務(CCKS2019)上進行了簡單實驗:
數據來自DeepIE:具體參見https://github.com/loujie0822/DeepIE同樣也可以發現,詞彙增強可有效提升中文NER性能。
而在推斷速度方面,FLAT論文也與其他方法進行了對比,在指標領先的同時推斷速度明顯優於其他方法。
Reference
[1] Lattice LSTM:Chinese NER Using Lattice LSTM
[2] LR-CNN:CNN-Based Chinese NER with Lexicon Rethinking
[3] CGN:Leverage Lexical Knowledge for Chinese Named Entity Recognition via Collaborative Graph Network
[4] LGN: A Lexicon-Based Graph Neural Network for Chinese NER
[5] FLAT: Chinese NER Using Flat-Lattice Transformer
[6] WC-LSTM: An Encoding Strategy Based Word-Character LSTM for Chinese NER Lattice LSTM
[7] Multi-digraph: A Neural Multi-digraph Model for Chinese NER with Gazetteers
[8] Simple-Lexicon:Simplify the Usage of Lexicon in Chinese NER
[9] 結合詞典的中文命名實體識別 (復旦大學自然語言處理組)
下載1:四件套
在機器學習算法與自然語言處理公眾號後臺回復「四件套」,
即可獲取學習TensorFlow,Pytorch,機器學習,深度學習四件套!
下載2:倉庫地址共享
在機器學習算法與自然語言處理公眾號後臺回復「代碼」,
即可獲取195篇NAACL+295篇ACL2019有代碼開源的論文。開源地址如下:https://github.com/yizhen20133868/NLP-Conferences-Code
重磅!機器學習算法與自然語言處理交流群已正式成立!
群內有大量資源,歡迎大家進群學習!
額外贈送福利資源!深度學習與神經網絡,pytorch官方中文教程,利用Python進行數據分析,機器學習學習筆記,pandas官方文檔中文版,effective java(中文版)等20項福利資源
獲取方式:進入群後點開群公告即可領取下載連結
注意:請大家添加時修改備註為 [學校/公司 + 姓名 + 方向]
例如 —— 哈工大+張三+對話系統。
號主,微商請自覺繞道。謝謝!
推薦閱讀:
工業界求解NER問題的12條黃金法則
三步搞定機器學習核心:矩陣求導
神經網絡中的蒸餾技術,從Softmax開始說起