王寶祥 陳 渝 孫界平 琚生根
(1.四川大學(xué)計(jì)算機(jī)學(xué)院 成都 610065)(2.四川民族學(xué)院理工學(xué)院 康定 626001)
命名實(shí)體識別是自然語言處理領(lǐng)域中的一項(xiàng)重要的上游任務(wù),通過將文本句子進(jìn)行命名實(shí)體識別,可以提取出人名、地名、組織等重要的語言信息供下游任務(wù)使用。命名實(shí)體識別的準(zhǔn)確度,直接決定了下游任務(wù)的效果,是自然語言處理中非常重要的一個(gè)基礎(chǔ)問題。中文命名實(shí)體識別相比較英文命名實(shí)體識別難度更大,因?yàn)橹形牟缓杏⑽膯卧~的分詞特點(diǎn),若想以中文詞為單位就需要分詞,而分詞出現(xiàn)的錯(cuò)誤會對實(shí)體的識別產(chǎn)生很大的干擾,Yang[1]等使用分詞工具對輸入語句進(jìn)行分詞,進(jìn)行實(shí)體識別。但是這也不能避免分詞錯(cuò)誤。
現(xiàn)階段以字為單位的命名實(shí)體識別主要以BiLSTM-CRF[2]模型作為基線模型。文檔級記憶的命名實(shí)體識別近些年涌現(xiàn)出了很多優(yōu)秀的論文,主要將數(shù)據(jù)集中的數(shù)據(jù)作為記憶文檔,將輸入語句在記憶文檔中尋找相匹配的字或句子,將匹配到的信息運(yùn)用各種方法融入到當(dāng)前輸入句子中以達(dá)到更好的語義表達(dá)進(jìn)而得到更好的識別效果。
本文以文檔級記憶的中文命名實(shí)體識別開展研究,原因是我們發(fā)現(xiàn)文檔級記憶命名實(shí)體識別雖然能夠借助整個(gè)文檔的語義信息,但是同一個(gè)字可以有不同的標(biāo)簽,尤其在命名實(shí)體識別領(lǐng)域,字在實(shí)體中的位置對實(shí)體識別的影響很大,盲目地將記憶信息融入到當(dāng)前語句中甚至?xí)?dǎo)致學(xué)習(xí)到錯(cuò)誤的記憶信息。比如“北(B)京的霧霾問題越來越嚴(yán)重”、“張小北(E)是一位熱愛祖國的好同志”、“東北(M)虎是我國的一級保護(hù)動物”中的“北”屬于不同的標(biāo)簽,將這些不同的“北”字當(dāng)作記憶信息融入當(dāng)前識別語句中,會發(fā)現(xiàn)識別效果變差,基于此,我們對文檔級記憶信息展開了深入研究。
經(jīng)過不斷實(shí)驗(yàn),我們發(fā)現(xiàn)將不同標(biāo)簽的記憶信息分開處理會得到很好的實(shí)體識別效果。本文是第一個(gè)按標(biāo)簽類別將記憶信息分類處理的命名實(shí)體識別方法。
命名實(shí)體識別按大類來區(qū)分,主要包括四種方法:基于規(guī)則、基于無監(jiān)督方法、基于特征的機(jī)器學(xué)習(xí)方法、基于深度學(xué)習(xí)的方法?;谝?guī)則的方法主要是靠文字語義來制定規(guī)則,這種方法的優(yōu)點(diǎn)是不需要標(biāo)注數(shù)據(jù),缺點(diǎn)是制定規(guī)則和維護(hù)都很麻煩?;跓o監(jiān)督的方法,不需要標(biāo)注數(shù)據(jù),不過準(zhǔn)確度一般有限,目前應(yīng)用較少。基于特征的機(jī)器學(xué)習(xí)方法需要標(biāo)注數(shù)據(jù),主要通過一些機(jī)器學(xué)習(xí)算法來進(jìn)行實(shí)體抽取,Bikel[3]等最早提出了基于隱馬爾可夫模型的命名實(shí)體識別方法。Liao[4]提出了基于條件隨機(jī)場模型,采用半監(jiān)督的學(xué)習(xí)算法進(jìn)行命名實(shí)體識別。與此同時(shí),常用的實(shí)體識別機(jī)器學(xué)習(xí)算法還有HMM[5]等。
基于深度學(xué)習(xí)的方法是近幾年最火熱的方法,2015年Huang[2]等提出的雙向長短期記憶模型BiLSTM-CRF成為了命名實(shí)體識別領(lǐng)域的基線模型,隨后不斷涌現(xiàn)出深度學(xué)習(xí)模型大多是基于此基線模型展開的,Xu[6]等提出了多重嵌入模型,將詞嵌入、字嵌入和部首嵌入融合在一起輸入進(jìn)編碼層,豐富了語義的表達(dá)。Zhang[7]首先提出了利用詞典將詞信息與字信息一一匹配進(jìn)行實(shí)體識別的模型。Zhang和Huang[8]等提出了文檔級和語料級的模型進(jìn)行序列標(biāo)記任務(wù),利用全局信息提升了識別的準(zhǔn)確率。此前,Transfromer[9]模型由于無法很好地提取距離和方向信息,進(jìn)行命名實(shí)體識別的效果一直不盡人意,Yan[10]改進(jìn)了Transformer,將相對位置與方向加入其中,運(yùn)用正弦與余弦函數(shù)獲取到字和字之間的相對位置信息,使得命名實(shí)體識別效果更好。Luo[11]等提出了一個(gè)分層語義表示(句子級別和文檔級別)增強(qiáng)模型,解決了BiLSTM連續(xù)性和單一性輸入導(dǎo)致的模型無法更好的利用句子級和文檔級信息的缺陷。Li[12]改進(jìn)了Transfromer,提出了一種將Lattice圖結(jié)構(gòu)無損轉(zhuǎn)換為扁平的Flat結(jié)構(gòu)的方法,并將LSTM替換成了更先進(jìn)的Transformer Encoder,在基于詞典的中文NER模型中取得了很好的效果。Anwen[13]等利用多token實(shí)體信息來引導(dǎo)文檔級別的NER,提出了一個(gè)新穎的基于文檔級NER的注意力機(jī)制。Gui[14]等提出了一種Rethinking機(jī)制利用高層特征的語義優(yōu)化詞向量權(quán)重。Li[15]等采用閱讀理解的形式進(jìn)行命名實(shí)體識別,是命名實(shí)體識別領(lǐng)域比較新穎的模型。
本文在Peng和Ma[16]簡化詞典信息的使用的思想下得到啟發(fā),將記憶模塊中的字信息按標(biāo)簽分類融入BiLSTM的輸出向量中,這樣不僅可以使得模型充分考慮字的每一個(gè)類別的可能信息,也減少了記憶信息的冗雜程度,使記憶信息更清晰。給定LSTM模型,我們只需在第一個(gè)LSTM模型的輸出向量中融入記憶信息,融入后再通過第二個(gè)LSTM模型中,最后通過解碼層,完成識別。
Resume數(shù)據(jù)集是近年來命名實(shí)體識別的經(jīng)典數(shù)據(jù)集。運(yùn)用本文的方法在這個(gè)數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),得到了很好的實(shí)驗(yàn)效果,這說明了我們的分類記憶方法能在實(shí)用型簡歷領(lǐng)域數(shù)據(jù)集上有很好的效果。
首先,在處理數(shù)據(jù)集時(shí),將所有字以及它們的序號依次添加到記憶模塊中,如果記憶模塊中沒有這個(gè)字,就創(chuàng)建屬于該字的集合,已經(jīng)有這個(gè)字就繼續(xù)添加進(jìn)去,相同字放在相同的字集合里。
每個(gè)字的集合均包含B、M、E、S四個(gè)標(biāo)簽的子集合,若某個(gè)子集合沒有對應(yīng)的字信息,則用null表示。
圖1 記憶模塊的存儲表示
數(shù)據(jù)集在處理之后,會產(chǎn)生所有出現(xiàn)的字的序號并創(chuàng)建屬于它們的字嵌入向量集合和第一個(gè)LSTM輸出向量的集合。
圖2 整體結(jié)構(gòu)圖
讀取數(shù)據(jù)集,將數(shù)據(jù)集中的句子依次通過Bert預(yù)訓(xùn)練層,得到句子的預(yù)訓(xùn)練表示,使用Bert預(yù)訓(xùn)練字嵌入是因?yàn)锽ert預(yù)訓(xùn)練可以幫助我們更好地表示一個(gè)字在不同的上下文中的具體語義表示,方便根據(jù)上下文信息從記憶模塊中尋找字和字之間的相似度:
1)LSTM
長短期記憶網(wǎng)絡(luò)(LSTM)是比較經(jīng)典的序列建模結(jié)構(gòu),包含一個(gè)前向序列建模和一個(gè)反向序列建模。前向LSTM公式如下:
2)記憶信息按標(biāo)簽類別分類
命名實(shí)體識別的標(biāo)簽一般分為BMES,“B”、“M”、“E”分別表示這個(gè)字在所在實(shí)體中為開頭位置、中間位置、結(jié)尾位置,“S”表示這個(gè)字單獨(dú)為一個(gè)實(shí)體??紤]到不同標(biāo)簽類別的記憶信息對輸入向量的貢獻(xiàn)程度不一樣,如“北”這個(gè)字在“北京”“北極村”這兩個(gè)實(shí)體中是B標(biāo)簽,而在“張小北”這個(gè)實(shí)體中是E標(biāo)簽,所以若輸入的字在所在實(shí)體中屬于B標(biāo)簽,融入“張小北”中的“北”這個(gè)記憶字會讓模型對“北”的識別產(chǎn)生很大的誤導(dǎo),所以為了充分表示輸入字的不同標(biāo)簽的可能,讓模型能清晰地理解輸入字的記憶向量表示,本文將記憶信息按照BMES四個(gè)標(biāo)簽分開表示并拼接到一起。
3)分類記憶信息的提取
得到與記憶模塊中的字的相似度ein,再將相似度ein與記憶模塊中的輸出向量相乘,得到記憶向量:
根據(jù)yan[10]等對去掉縮放因子的注意力機(jī)制會更加敏銳地捕捉實(shí)體信息的研究,于是本文的注意力運(yùn)算將不使用縮放因子
記憶信息融入當(dāng)前輸入信息的方法有很多,比如記憶字嵌入信息和當(dāng)前字嵌入信息的融合、記憶輸出向量和當(dāng)前輸出向量的融合等,本文經(jīng)過不斷實(shí)驗(yàn)發(fā)現(xiàn)通過記憶字嵌入向量與輸入字嵌入向量做注意力機(jī)制運(yùn)算,可以充分得到輸入信息在記憶模塊中的語義相似度,將這個(gè)語義相似度乘以記憶輸出向量并融入當(dāng)前輸出向量可以得到最好的效果。
4)分類記憶信息的更新
經(jīng)過本輪次的記憶信息提取之后,對記憶信息進(jìn)行更新,將記憶模塊中對應(yīng)序號n的字嵌入向量與對應(yīng)的輸出向量依次更新為最新的字嵌入向量和輸出向量Hi。本輪訓(xùn)練未出現(xiàn)的序號則不更新。
其中比例α為超參數(shù)。
本文Ri的獲得區(qū)別以往的記憶信息的融合,因?yàn)楸疚氖菍⒂洃浶畔搭悇e分開融入,模型可以通過訓(xùn)練,在每一個(gè)標(biāo)簽類別中自動選取合適的記憶信息,避免了不同標(biāo)簽類別的記憶信息的盲目組合,破壞記憶信息。
圖3 記憶向量的更新
之后再將Ri輸入到第二個(gè)LSTM編碼層中得到最終的編碼信息Zi。加入第二個(gè)LSTM編碼層的原因是雖然融入記憶信息的輸出向量可以更加全面的表示字信息,但同時(shí)當(dāng)前識別的句子的上下文信息也會有所破壞。為了保證解碼層所獲得的信息是完整包含當(dāng)前句子的上下文信息,于是加入第二個(gè)LSTM編碼層。經(jīng)過實(shí)驗(yàn)也印證了我們的想法。
本文使用條件隨機(jī)場CRF對編碼信息進(jìn)行解碼,條件隨機(jī)場是在給定隨機(jī)變量X的條件下,隨機(jī)變量Y的馬爾可夫隨機(jī)場,現(xiàn)階段條件隨機(jī)場是命名實(shí)體識別領(lǐng)域經(jīng)典的解碼模型。本文將融合分類記憶信息的編碼信息運(yùn)用條件隨機(jī)場進(jìn)行解碼。公式如下:
y表示輸入句子對應(yīng)的可能的標(biāo)簽序列,Zi是第二個(gè)LSTM輸出后的輸出向量,W和b是權(quán)重和偏置,控制著標(biāo)簽的轉(zhuǎn)換分?jǐn)?shù)。
本文使用對數(shù)似然函數(shù)作為模型的損失函數(shù):
在訓(xùn)練階段,借助隨機(jī)梯度下降的方法,通過最小化句子級別的負(fù)對數(shù)似然函數(shù),即最小化L,不斷迭代訓(xùn)練。
在測試階段,運(yùn)用維特比算法找到最高分?jǐn)?shù)的標(biāo)簽序列作為最終的預(yù)測標(biāo)簽。
本文采用Resume簡歷數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。Resume數(shù)據(jù)集由Zhang和Yang在2018年創(chuàng)建,描述了大量中國公民的基本資料,如姓名、籍貫、工作單位等,內(nèi)含豐富實(shí)體,是中文命名實(shí)體識別領(lǐng)域具有代表性的數(shù)據(jù)集。Resume數(shù)據(jù)集采用“BMES”標(biāo)簽標(biāo)注數(shù)據(jù),詳細(xì)信息如表1。
表1 數(shù)據(jù)集描述
本文選用命名實(shí)體識別領(lǐng)域經(jīng)典評價(jià)指標(biāo)F1值進(jìn)行評測。F1值能較好地反映出模型的識別效果,公式如下:
本文方法使用Colab pro V100/P100/T4 GPU進(jìn)行實(shí)驗(yàn),詳細(xì)實(shí)驗(yàn)參數(shù)如表2。
表2 實(shí)驗(yàn)參數(shù)
說明:Batchsize、hidden_size和學(xué)習(xí)率是經(jīng)過數(shù)次實(shí)驗(yàn)總結(jié)出的最佳參數(shù)。關(guān)于記憶字個(gè)數(shù)和記憶權(quán)重的選取說明見下文。
在Resume數(shù)據(jù)集中驗(yàn)證集F1值變化趨勢如圖4。
圖4 驗(yàn)證集F1值變化趨勢
如圖可知,驗(yàn)證集上F1值開始時(shí)急速上升,到第44個(gè)epoch時(shí)趨于穩(wěn)定,到第52個(gè)epoch時(shí)到達(dá)最高值0.9594,之后隨時(shí)間變化波動越來越小。
本文以下列模型作為基線模型進(jìn)行對比。
1)BiLSTM-CRF為2015年提出的命名實(shí)體識別領(lǐng)域經(jīng)典模型。
2)BERT為2018年提出的當(dāng)下流行的基于上下文表示的預(yù)訓(xùn)練模型。
3)Lattice-LSTM為2018年提出的借助字典信息的中文命名實(shí)體識別模型。
4)BERT-FLAT為2020年提出的借助Bert預(yù)訓(xùn)練將Lattice模型轉(zhuǎn)換為平面網(wǎng)格結(jié)構(gòu),并加入了位置信息。
5)TENER為2019年提出的改進(jìn)的transformer模型。
6)LR-CNN為2019年提出的基于CNN的優(yōu)化詞向量權(quán)重的模型。
7)SoftLexicon為2020年提出的將詞典信息分類并和字信息結(jié)合的模型。
我們用Bert模型加在我們的分類別記憶模型中作為預(yù)訓(xùn)練進(jìn)行實(shí)驗(yàn)。Resume數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果如表3。
表3 實(shí)驗(yàn)結(jié)果
由表3可知,將記憶信息按類別區(qū)分融入到輸出向量信息中,可以更好地幫助模型進(jìn)行識別。BERT基線模型的F1值為95.78[17],BERT+FLAT的F1值為95.86,我們借助BERT的分類記憶模型F1值達(dá)到了96.05。
關(guān)于輸入字向量與不同記憶向量的相似度,我們用注意力分?jǐn)?shù)來表達(dá),注意力分?jǐn)?shù)可視化分析如圖5。
圖5 輸入字向量與該字的記憶向量的關(guān)聯(lián)熱力圖
由圖5可知,經(jīng)過Bert預(yù)訓(xùn)練嵌入后,輸入字“華”對記憶向量中同屬“E”標(biāo)簽的劉德“華”、任達(dá)“華”和其他錯(cuò)誤標(biāo)簽的“華”表現(xiàn)出的注意力分?jǐn)?shù)有差距,但差距不是很大。這說明如果不經(jīng)過分類別融入記憶信息,必然會導(dǎo)致很多錯(cuò)誤的記憶信息融入當(dāng)前字向量中。我們曾想過加大注意力分?jǐn)?shù)的方差來解決上述問題,但是加大注意力分?jǐn)?shù)的方差卻無法解決很多偶然性誤差,比如在某些語境中,可能會出現(xiàn)和當(dāng)前字不同標(biāo)簽的記憶字信息卻享有比相同標(biāo)簽的記憶字信息更高的注意力分?jǐn)?shù),這對模型的預(yù)測將會產(chǎn)生很大的干擾。
1)關(guān)于模型各部分的消融實(shí)驗(yàn)如表4。
表4 消融實(shí)驗(yàn)
在只加入記憶網(wǎng)絡(luò)而不將記憶信息分類別時(shí),為了體現(xiàn)消融的目的,我們將記憶量擴(kuò)大到120*4=480個(gè),同時(shí)將兩個(gè)LSTM的輸出維度統(tǒng)一,這樣的控制變量的方法能讓我們準(zhǔn)確定位將記憶分類別帶來的效果,此時(shí)的F1值為95.10,未超過BERT基線的F1值,這說明記憶信息不經(jīng)分類必定會融入錯(cuò)誤信息,干擾模型的識別。而我們的分類別記憶在用BERT作嵌入的情況下F1值達(dá)到了96.05??梢?,由于按類別區(qū)分了記憶信息,模型可以更輕易地分析出哪些記憶信息要著重參考。
2)關(guān)于記憶字個(gè)數(shù)的變化對結(jié)果的影響
由圖6可知,實(shí)驗(yàn)結(jié)果F1值隨著各類別記憶字個(gè)數(shù)的變化而變化,會發(fā)現(xiàn)若記憶字個(gè)數(shù)過少,導(dǎo)致記憶信息不充足,過多會導(dǎo)致記憶模塊中存儲過多空值,120個(gè)為最佳。
圖6 記憶字個(gè)數(shù)的影響
3)關(guān)于記憶權(quán)重的變化對結(jié)果的影響
由圖7可知,實(shí)驗(yàn)結(jié)果F1值隨著記憶模塊的占比變化而變化,且隨著記憶模塊占比增大而先增大后減小,在0.3處達(dá)到最大,即進(jìn)入第二個(gè)編碼層的向量由0.3比例的記憶向量和0.7比例的第一個(gè)編碼層的輸出向量相結(jié)合時(shí),模型效果最好。由實(shí)驗(yàn)可知,若記憶權(quán)重過小,記憶模塊對模型的影響過小,近似于沒有記憶模塊的加強(qiáng)功能。若記憶權(quán)重過大,則模型過于依賴記憶信息,容易忽略當(dāng)前語句的上下文信息,使得模型識別效果變差。
圖7 記憶權(quán)重對結(jié)果的影響
4)關(guān)于創(chuàng)新性與挑戰(zhàn)性的分析
我們的模型是第一個(gè)將記憶信息分類處理的模型,考慮到不同類別的記憶信息最后還是要作為一個(gè)整體融合到當(dāng)前輸入語句中,所以我們模型的難點(diǎn)在于以怎樣的權(quán)重融合記憶信息與當(dāng)前識別信息以及以怎樣的方法整合不同類別的記憶信息,經(jīng)過不斷實(shí)驗(yàn),我們探究出了合適的記憶權(quán)重α并確定了將按記憶類別分別相加后的輸出向量拼接在一起可以很好地整合記憶信息。
本文借助Bert預(yù)訓(xùn)練使用分類別的文檔級記憶信息對全局信息進(jìn)行抽取,融入了記憶信息的輸入數(shù)據(jù)更具有全局性,能夠捕獲同一個(gè)字在不同含義和不同語境下的信息,豐富了字向量的表達(dá),加強(qiáng)了對輸入表達(dá)比較模糊的語句的識別能力。通過注意力機(jī)制可以巧妙選擇最合適的記憶信息。將記憶信息分類別融入目標(biāo)向量中,可以讓模型更清晰的學(xué)習(xí)當(dāng)前字在不同標(biāo)簽類別下的表示信息,從而讓模型自動學(xué)習(xí)并選取更恰當(dāng)?shù)挠洃浶畔ⅰ1疚哪P驮赗esume數(shù)據(jù)集上取得了理想的效果。在未來的實(shí)驗(yàn)工作中,我們將嘗試各種不同的最新編碼層技術(shù)對模型的影響以及在對記憶字的選擇上努力探索。