寫在前面
今天要跟大家分享的是西湖大學(xué)張岳老師2018年發(fā)表在頂會ACL上的一篇中文實體識別論文Lattice LSTM。
論文名稱:《Chinese NER Using Lattice LSTM》
論文鏈接:https://arxiv.org/pdf/1805.02023.pdf
代碼地址:https://github.com/jiesutd/LatticeLSTM
分享這個工作主要原因是:這個工作本身質(zhì)量比較高,可以說是利用詞匯增強中文NER的開篇之作,并且思路清晰,創(chuàng)新有理有據(jù)。
本篇文章主要內(nèi)容將圍繞下圖中的兩點展開:
1. 基于序列標注的實體識別所存在的問題
如下圖,這部分主要包含兩個內(nèi)容,即:經(jīng)典的LSTM-CRF實體識別模型及該類模型所存在的問題。
1.1 經(jīng)典LSTM-CRF模型
實體識別通常被當作序列標注任務(wù)來做,序列標注模型需要對實體邊界和實體類別進行預(yù)測,從而識別和提取出相應(yīng)的命名實體。在BERT出現(xiàn)以前,實體識別的SOTA模型是LSTM+CRF,模型本身很簡單:
首先利用嵌入方法將句子中的每個token轉(zhuǎn)化為向量再輸入LSTM(或BiLSTM);
然后使用LSTM對輸入的信息進行編碼;
最后利用CRF對LSTM的輸出結(jié)果進行序列標注。
LSTM+CRF用在中文NER上,又可進一步分為兩種:若token是詞,那么模型就屬于Word-based model;若token是字,那么模型就屬于Character-based Model。
(注:BERT+LSTM+CRF主要是將嵌入方法從Word2vec換成了BERT。)
1.2 誤差傳播與歧義問題
Word-based model存在誤差傳遞問題
Word-based model做實體識別需要先分詞,然后再對詞序列進行實體識別即詞序列標注。詞匯的邊界決定了實體的邊界,因此一旦出現(xiàn)分詞錯誤就會影響實體邊界的判定。比如上圖中,利用分詞工具,“東莞臺協(xié)” 和 ”會長“ 被拆分成了“東莞”、“臺”、”協(xié)會長“,最終導(dǎo)致 ”東莞臺“ 被識別為了GPE。換句話說,Word-based model具有和其他兩階段模型同樣的誤差傳遞問題。
Character-based model存在歧義問題
既然分詞會有問題,那就不分詞。Character-based model直接在字的粒度上進行實體識別即字序列標注。許多研究工作表明,在中文NER上基于字的方法優(yōu)于基于詞的方法。但是,相比詞單字不具備完整語義。沒有利用句子里的詞的信息,難以應(yīng)對歧義問題,識別結(jié)果可能差強人意。如上圖,“會” 字本來應(yīng)該和 “長” 一起組成 “會長” ,但是最終模型卻將 “會” 與 “東莞臺協(xié)” 視為一個語塊兒,并將 “東莞臺協(xié)會” 預(yù)測為ORG。
1.3 思考
既然Character-based model、Word-based model各有優(yōu)缺點,那是否可以結(jié)合二者進行互補呢?換句話說,我們在Character-based model里加入詞信息,這樣是不是就可以既利用了詞信息,又不會因為分詞錯誤影響識別結(jié)果呢?實際上,Lattice LSTM正是這樣做的。接下來我們一起跟隨文章的后續(xù)內(nèi)容來學(xué)習Lattice LSTM。
2. 模型細節(jié)
這一節(jié)我們首先會介紹最簡單的詞信息利用方方法,然后再對Lattice LSTM進行詳細介紹。
2.1 簡單直接的拼接法
如上圖所示,最容易想到同時也是最簡單的詞信息利用方法就是直接拼接詞表征與字向量或者直接拼接詞表征與LSTM的輸出。16年的論文《A Convolution BiLSTM Neural Network Model for Chinese Event Extraction》[1]就采用了這樣的方法構(gòu)建了中文事件抽取模型,其模型結(jié)構(gòu)如下圖所示:
當然這里詞表征可通過Word2Vec、Glove等詞向量模型獲得。也可以如16年的那篇事件抽取論文一樣利用CNN進一步卷積獲得更上層的Local Context features,再將其拼接到模型中:
當然這不是本文的重點,我們關(guān)注的是Lattice LSTM是如何引入詞信息的。
2.2 Lattice 與潛在詞
Lattice LSTM模型結(jié)構(gòu)如上圖右側(cè)所示。在正式開始介紹Lattice LSTM前,我們先來看看上圖左半部分。
(1)Lattice LSTM 名字來由
我們可以發(fā)現(xiàn)在上圖左側(cè)所示網(wǎng)絡(luò)中,除主干部分基于字的LSTM外,還連接了許多「格子」,每個「格子」里各含有一個潛在的詞,這些潛在詞所含有的信息將會與主干LSTM中相應(yīng)的Cell融合,看起來像一個「網(wǎng)格(Lattice)」。所以論文模型的名字就叫做Lattice LSTM,也就是有網(wǎng)格結(jié)構(gòu)的LSTM模型。
(2)詞典匹配獲得潛在詞
網(wǎng)格中的這些潛在詞是通過匹配輸入文本與詞典獲得的。比如通過匹配詞典, “南京市長江大橋”一句中就有“南京”、“市長”,“南京市”,“長江”,“大橋“,“長江大橋”等詞。
(3)潛在詞的影響
首先,“南京市長江大橋” 一句的正確結(jié)果應(yīng)當是 “南京市-地點”、“長江大橋-地點”。如果我們直接利用Character-based model來進行實體識別,可能獲得的結(jié)果是:“南京-地點”、“市長-職務(wù)”、“江大橋-人名”?,F(xiàn)在利用詞典信息獲得了文本句的潛在詞:“南京”、“市長”,“南京市”,“長江”,“大橋“,“長江大橋” 等潛在詞。其中,“長江”、“大橋” 與 “長江大橋” 等詞信息的引入有利于模型,可以幫助模型避免犯 “江大橋-人名” 這樣的錯誤;而 “市長” 這個詞的引入?yún)s可能會帶來歧義從而誤導(dǎo)模型,導(dǎo)致 “南京-地點”,“市長-職務(wù)” 這樣的錯誤。
換句話說,通過詞典引入的詞信息有的具有正向作用,有的則不然。當然,人為去篩除對模型不利的詞是不可能的,所以我們希望把潛在詞通通都丟給模型,讓模型自己去選擇有正向作用的詞,從而避免歧義。Lattice LSTM正是這么做的:它在Character-based LSTM+CRF的基礎(chǔ)上,將潛在詞匯信息融合進去,從而使得模型在獲得字信息的同時,也可以有效地利用詞的先驗信息。
2.3 Lattice LSTM 模型細節(jié)
如上圖所示,Lattice LSTM模型的主干部分是基于字的LSTM-CRF(Character-based LSTM+CRF):
若當前輸入的字在詞典中不存在任何以它結(jié)尾的詞時:主干上Cell之間的傳遞就和正常的LSTM一樣。也就是說,這個時候Lattice LSTM退化成了基本LSTM。
若當前輸入的字在詞典中存在以它結(jié)尾的詞時:需要通過紅色Cell (見2.2節(jié)圖右側(cè))引入相關(guān)的潛在詞信息,然后與主干上基于字的LSTM中相應(yīng)的Cell進行融合。
接下來,我們先簡單展示下LSTM的基本單元,再介紹紅色Cell,最后再介紹信息融合部分。
2.3.1 LSTM 單元
上圖左側(cè)展示了一個LSTM 單元(Cell)的內(nèi)部結(jié)構(gòu),右側(cè)展示了Cell的計算過程。在每個Cell中都有三個門控,即輸入門、遺忘門和輸出門。如上圖右側(cè)計算公式所示,這三個門實際上是0~1的小數(shù),其值是根據(jù)當前時刻輸入 和前一時刻Cell的輸出的hidden state計算得到的:
輸入門:決定當前輸入有多少可以加入Cell State,即 ;
遺忘門:決定Cell State要保留多少信息,即 。
輸出門:決定更新后的Cell State有多少可以被輸出,即 。
純粹的基于字的LSTM可以完全基于上述計算過程去計算,而Lattice LSTM則有所不同。
2.3.2紅色Cell
前面我們提過「如果當前字在詞典中存在以它結(jié)尾的詞時,需要通過紅色Cell引入相關(guān)潛在詞信息,與主干上基于字的LSTM中相應(yīng)Cell進行融合」。以下圖中 "市" 字為例,句子中潛在的以它結(jié)尾的詞有:"南京市"。所以,對于"市"字對應(yīng)的Cell而言,還需要考慮 “南京市” 這個詞的信息。
紅色Cell的內(nèi)部結(jié)構(gòu)與主干上LSTM的Cell很類似。接下來,我們具體來看下紅色Cell內(nèi)部計算過程。
(1) 紅色Cell 的輸入
與上圖左側(cè)LSTM的Cell對比,上圖右側(cè)紅色Cell有兩種類型的輸入:
潛在詞的首字對應(yīng)的LSTM單元輸出的Hidden State以及Cell State
潛在詞的詞向量。
(2) 紅色Cell 的輸出
???????????
可以發(fā)現(xiàn),因為序列標記是在字級別,所以與左側(cè)LSTM的Cell相比,紅色Cell沒有輸出門,即它不輸出hidden state。
以“市”字為例,其潛在詞為“南京市“,所以、 來自于"南”字, 代表“南京市”的詞向量,紅色Cell內(nèi)部具體計算過程如下圖右側(cè)所示:
依托 “南” 字的hidden state與 “南京市” 的詞向量 計算輸入門 、遺忘門 以及狀態(tài)更新量 :
依托 “南” 字的Cell state、與 “南京市” 相關(guān)的狀態(tài)更新量 計算 “南京市“ 的Cell State:
最終紅色Cell只會向 "市" 字傳遞Cell State。
2.3.3 信息融合
(1)潛在詞的輸入門
現(xiàn)在對于主干上的Cell來說,除狀態(tài)更新量 外,還多了一個來自潛在詞的Cell State。潛在詞的信息不會全部融入當前字的 Cell,需要進行取舍,所以Lattice LSTM設(shè)計了額外的輸入門,其計算如下:
(2) 加權(quán)融合
前面我們舉的例子中都只有一個潛在詞。但實際上,對部分字來說可能會在詞典中匹配上很多詞,例如 “橋” 這個字就可以在詞典中匹配出 “大橋” 和 “長江大橋” 。為了將這些潛在詞與字信息融合,Lattice LSTM做了一個類似Attention的操作:
簡單地說,就是當前字相應(yīng)的輸入門和所有以當前字為尾字的候選詞的輸入門做歸一計算出權(quán)重,然后利用計算出的權(quán)重進行向量加權(quán)融合。
以 “橋” 字為例,它有兩個潛在詞,即 “長江大橋” 與 “大橋” 。那么對 “橋” 字而言,它會收到三對值,分別是:“橋” 字的輸入門 與 狀態(tài) ;潛在詞 "長江大橋" 相關(guān)的輸入門 與Cell State;潛在詞 "大橋" 相關(guān)的輸入門 與Cell State,為了獲得最終 “橋” 的hidden State,需要經(jīng)過如下計算:
"長江大橋" 的權(quán)重:
“大橋” 的權(quán)重:
“橋“ 的權(quán)重:
加權(quán)融合獲得“橋“ 的Cell state:
“橋“ 的hidden state:
3. 實驗
論文在Onto Notes、MSRA、微博NER、簡歷這4個數(shù)據(jù)集上進行了實驗。從實驗結(jié)果可以看出Lattice LSTM比其他對比方法有一定的提升。本文不深入探討實驗部分,感興趣的讀者可下載論文原文進行閱讀。
總結(jié)
今天我們分享了中文實體識別模型Lattice LSTM,這是中文NLP領(lǐng)域非常重要的人物~張岳老師他們的工作。沒記錯的話,18年跟隨導(dǎo)師參加NLPCC會議時,第一次見到張岳老師,深刻感覺張岳老師除了學(xué)術(shù)能力強以外,為人也非常真誠,很nice。
對NLP感興趣的讀者可以關(guān)注下張岳教授他們的其他工作。當然還有國內(nèi)NLP領(lǐng)域的其他大師的工作,比如劉知遠老師、車萬翔老師、劉挺老師、孫茂松老師、邱錫鵬老師等等。想要往科研方向深入的,也可以申請去他們那里讀博。當然每個老師研究方向各有側(cè)重點,我記得當年關(guān)注到劉知遠老師是因為他們的知識圖譜表示學(xué)習工作(TransE等)。
關(guān)注公眾號的讀者里可能有些不是NLP方向的也建議可以關(guān)注關(guān)注以上老師的工作。其實當年我們參加這些會議的時候也不是做NLP方向的,但是交叉學(xué)科的工作多聽聽多看看總是有益處的。譬如我和我的同學(xué)們,現(xiàn)在多數(shù)都轉(zhuǎn)到了NLP方向,在各個公司里從事NLP算法研究員、NLP算法工程師等工作。
好了,本文就到這里,今天比較啰嗦,哈哈哈。還是一樣,如果本文對你有幫助的話,歡迎點贊&在看&分享,這對我繼續(xù)分享&創(chuàng)作優(yōu)質(zhì)文章非常重要。感謝!
參考資料 [1]
《A Convolution BiLSTM Neural Network Model for Chinese Event Extraction》: https://eprints.lancs.ac.uk/id/eprint/83783/1/160.pdf
審核編輯 :李倩
-
模型
+關(guān)注
關(guān)注
1文章
3121瀏覽量
48663 -
識別
+關(guān)注
關(guān)注
3文章
173瀏覽量
31934 -
LSTM
+關(guān)注
關(guān)注
0文章
58瀏覽量
3734
原文標題:一文詳解中文實體識別模型 Lattice LSTM
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論