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