張晟旗,王元龍,李 茹,2,王笑月,王曉暉,閆智超
(1.山西大學計算機與信息技術學院,太原 030006;2.山西大學計算機智能與中文信息處理教育部重點實驗室,太原 030006)
自然語言處理任務中的文本深度語義理解是一項熱門研究課題。自然語言自身存在著模糊性、復雜性、多義性等多重特點,實體鏈接則是文本深度語義理解的有效解決方法。實體鏈接是將文本中實體與知識庫的相應實體信息進行鏈接的過程,即通過實體指稱項及其所在的上下文的文本信息,借助目標知識圖譜將文本實體鏈接到知識圖譜中正確的映射實體上,從而豐富文本的語義信息[1]。實體鏈接任務可分為實體識別和實體消歧2 個部分。在實體識別過程中,識別實體指稱項,是指源于待鏈接文本中的實體。在實體消歧過程中,先根據(jù)識別出的實體指稱項從知識庫中選擇待消歧實體信息,以生成該實體指稱項的候選實體集,再以實體指稱項的上下文信息為依據(jù)對候選實體集中的實體進行消歧。
傳統(tǒng)的實體鏈接任務主要對長文本進行處理,長文本中有更多更豐富的上下文信息,因而也更有利于鏈接[2]。相比長文本,短文本的實體鏈接則更具挑戰(zhàn)性,加之中文自身的靈活性、表達會意性、語法結(jié)構多樣性等特點,使得對中文短文本的深度理解變得更為困難。傳統(tǒng)的方法主要基于特征工程,這使得模型復雜、缺乏靈活性,弱化了模型的泛化能力并伴隨產(chǎn)生特征稀疏等問題。
本文針對中文短文本實體鏈接中的實體識別與實體消歧任務,構建一個基于局部注意力機制的中文短文本實體鏈接模型。在實體消歧過程中引入局部注意力機制,以增強實體鄰近上下文的語義信息,并在實體識別過程中使用半結(jié)構半指針的“01”標注方式代替?zhèn)鹘y(tǒng)的BIO 標注方式對實體進行標注。此外,根據(jù)數(shù)據(jù)集的特點采用容錯機制以提升鏈接結(jié)果的準確率與容錯性。
實體鏈接旨在通過查找出文本中的實體并根據(jù)該實體所在的上下文與知識庫中實體的語義關系來完成文本與知識庫的鏈接,在此過程中需要對每一個實體適當?shù)叵湟弥R庫中的實體的歧義[3]?,F(xiàn)有的實體鏈接方法大體可劃分為2 類:一類是級聯(lián)地對2 個任務進行獨立學習;另一類則是對2 個任務采用聯(lián)合學習的方法。
在早期的實體鏈接研究中,多數(shù)工作都是基于特征工程的,并且對實體識別與實體消歧這2 個任務是獨立處理的,即從每個子任務入手,根據(jù)任務的特點分別處理2 個任務。此類方法的實現(xiàn)基于以下2 個假設條件:1)前1 個任務的結(jié)果完全正確,并可以直接用于后續(xù)任務中;2)2 個任務之間沒有任何依賴關系。實體識別的方法是根據(jù)命名實體識別方法改進,再對不同類型的文本及實體特征加入特征選擇,如文獻[4-6]都是基于自己定義的實體特征與線性鏈條件隨機場結(jié)合的方法實現(xiàn)的。隨著深度學習的廣泛使用,文獻[7]使用具有長短時記憶特點的Bi-LSTM 來學習實體語義的特征并用于識別其范圍,文獻[8]使用自注意力機制來獲取輸入文本的全局信息,并最終證明自注意力機制在命名實體識別任務中的有效性。實體鏈接是一個相對下游的任務,其性能受限于命名實體識別任務的準確性,對于中文的實體鏈接任務而言,還會受到中文分詞任務的影響,上游任務的錯誤會對實體鏈接任務帶來不可避免的噪音[9]。實體消歧任務的主要目標是計算識別出的實體與候選實體間的相似度,在早期也是以特征過程以及各種相似度計算方法為主,如文獻[10]對實體流行度、語義關聯(lián)度等多種特征進行特征組合,提出半監(jiān)督算法。在深度學習方法以其能夠代替手工定義特征等優(yōu)勢被廣泛使用之后,文獻[11]提出使用實體表示和局部注意力機制來減少手工設置特征并加強實體的語義表示。但是這類方法有著明顯的弊端。首先,2 個任務是級聯(lián)進行的,第2 個任務的準確率很大程度上依賴于第1 個任務的準確率,這樣會導致訓練過程中存在著錯誤傳遞的問題;其次,早期研究人員忽略了2 個子任務之間存在著依賴關系,不應當看成單獨訓練的任務進行處理。
針對上述問題,國內(nèi)外研究者提出了聯(lián)合學習的方法。聯(lián)合學習方法能充分利用多個任務間的內(nèi)在依賴關系,有助于修復上階段傳播的錯誤[12]。文獻[13]根據(jù)中文分詞任務與中文命名實體識別任務之間的共同特性(即都需要進行實體邊界識別),使用對抗學習方法來聯(lián)合訓練命名實體識別任務和中文分詞任務,抽取共享的詞邊界信息。文獻[14]使用一個流行的命名實體識別模型以盡可能全地識別出實體,避免實體識別的效果對鏈接結(jié)果造成影響,對于剩余無需連接的實體則直接通過鏈接過程刪除。文獻[15]將待消歧實體和待消歧實體上下文語境映射到同一個空間,基于概率空間模型并根據(jù)實體的空間向量進行消歧。文獻[16]利用半條件隨機場對2 個任務進行聯(lián)合學習。文獻[17]提出對全局實體鏈接的動態(tài)上下文增強模型(Dynamic Context Augmentation,DCA),將已鏈接的實體知識作為動態(tài)上下文加入之后消歧過程的決策之中。文獻[18]提出端到端的實體鏈接模型RRWEL(Recurrent Random Walk based EL),通過使用卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)學習局部上下文、實體指稱項、實體以及實體類型信息的語義表征,并使用隨機游走網(wǎng)絡對文檔信息進行學習,結(jié)合局部信息和全局信息得到文檔中每個實體指稱項對應的正確實體。文獻[19]提出一個基于深度語義匹配模型和CNN 的實體鏈接模型,在候選實體生成階段采用構造同名字典的方法,并基于上下文進行字典擴充,通過匹配來選擇候選實體集。
自ELMO 模型[20]提出之后,大規(guī)模預訓練語言模型迅速成為主流方法,而文獻[21]提出的注意力機制更是奠定了BERT 預訓練語言模型[22]在自然語言處理領域的重要地位。此后,研究者針對不同任務對BERT 模型進行了改進,并取得了較好的效果。文獻[23]將BERT 預訓練語言模型引入實體鏈接任務,對實體指稱項的上下文以及候選實體的相關信息進行關聯(lián)度分析,通過提升語義分析的效果來優(yōu)化實體鏈接性能,并采用TextRank 關鍵詞提取技術增強目標實體綜合描述信息的主題信息,從而提高文本相似度度量的準確性,優(yōu)化模型效果。文獻[24]提出結(jié)合全局注意力機制與局部注意力機制的思想,前者在每次計算上下文向量時需要計算文本中的所有隱狀態(tài),而后者則僅考慮輸入序列子序列的隱狀態(tài)。本文將局部注意力機制應用到中文短文本的實體鏈接中,對待消歧文本與實體的知識描述文本進行拼接,然后利用局部注意力機制強化實體的上下文信息,從而增強短文本的語義信息。
本文針對中文短文本的實體鏈接任務,提出基于局部注意力機制的中文短文本實體鏈接模型,通過完成實體識別與實體消歧來實現(xiàn)待消歧文本與知識庫信息鏈接的管道模型。為緩解管道模型上游任務結(jié)果對下游任務結(jié)果產(chǎn)生的級聯(lián)影響,在實體識別與實體消歧任務的訓練過程中使用共享參數(shù)的方法實現(xiàn)聯(lián)合學習,在上游任務與下游任務之間利用其內(nèi)在聯(lián)系提升模型效果,減少上游任務的錯誤結(jié)果在下游任務中的傳播。本文中實體識別和實體消歧的模型都是基于BERT 模型進行改進的:實體識別使用BERT+條件隨機場(Conditional Random Field,CRF)模型,并以半結(jié)構半指針的“01”標注方法代替?zhèn)鹘y(tǒng)的BIO 標注方法,通過“0”和“1”來獲取實體表示以及實體的位置信息;實體消歧則是在BERT 模型基礎上加入局部注意力層來重點強化與實體鄰近的上下文信息并優(yōu)化消歧結(jié)果的容錯機制。
本文將實體識別任務作為一個序列標注任務進行處理,使用BERT+CRF 模型對文本序列中的實體進行位置標注。本文模型架構如圖1 所示。由于在本部分中考慮到模型訓練與預測的時間復雜度,因此未在模型內(nèi)部架構進行大規(guī)模調(diào)整改進,而是選擇使用更高效的半結(jié)構半指針的“01”標注方法替換傳統(tǒng)的BIO 標注方法,半結(jié)構半指針的“01”標注方法通過“0”與“1”這2 個標簽作為文本中的實體首尾位置的標記信息,以區(qū)分實體在文本中的范圍,相較于BIO 標注方法更簡潔更高效。
圖1 實體識別模型架構Fig.1 Framework of entity recognition model
首先,對輸入文本的長度進行標準化處理,所有文本長度以35個字符為界設限,少于35個字符的進行零填充,多于35個字符則將其截斷。在進行“01”標注時,創(chuàng)建2個與文本長度一致的序列并用“0”對其進行初始化,這2個序列則分別用來表示實體位置的首字符的位置與尾字符的位置,并將識別出的實體的首尾位置的“0”標記改為“1”,通過對2個序列中“1”標記的配對來識別實體。BIO標記法與“01”標記法的標注過程示例如圖2所示。此前考慮并嘗試其他標注方法,如將首尾標記序列合為一個序列,又可分為2種方法:一種是將識別出的實體位置全部標“1”,其余位置全部標“0”;另一種則是將識別出的實體的首尾位置標“1”,其余位置標“0”。這2種方法無法解決單字實體的標注問題,使得單字實體難以被識別與表示。BIO標注方法需要標記出整個實體的全部信息,而“01”標注方法只需標記實體的首尾位置,有利于降低標注實體錯誤的概率,因此,本文采用“01”標注方法對實體位置進行標注。
圖2 “01”標注與BIO 標注示例Fig.2 Example of‘01’annotation and BIO annotation
其次,對輸入文本中的字向量Ci與每個字所對應的位置向量Pi進行拼接得到文本的向量表示Ti,在Ti組成的輸入序列的相應位置加入CLS 與SEP 標記并以此序列作為模型輸入,其中:i表示字在句中的位置;n為文本長度。
經(jīng)過BERT 模型的編碼后,加入CRF 層用于得到實體標簽預測,使用CRF 對整個序列進行全局歸一化處理,得到概率最大的最優(yōu)序列作為最終結(jié)果。
輸入序列為X=(x1,x2,…,xn),輸出序列為Y=(y1,y2,…,yn),對輸出序列Y中所有的標簽序列的概率通過softmax 計算。解碼時使用argmax 函數(shù)對輸出序列的結(jié)果進行預測,以Yx表示輸入序列X的所有標注結(jié)果的序列集合。
實體識別結(jié)果中存在特殊符號以及錯別字,造成識別出的實體與知識庫中實體無法匹配,從而導致候選實體集中實體缺失。因此,本文引入容錯機制(Fault Tolerance Mechanism,F(xiàn)TM),將識別出的實體與數(shù)據(jù)預處理時構建的id_entity 字典中的實體進行比對,當識別出的實體與字典中實體只有f個字符不同時,將兩者認為是同一實體,并作為候選實體加入待消歧序列中。容錯機制可以避免因錯別字或某些語言差異導致的實體中某個字的不匹配而影響實體消歧的效果,但也會為實體消歧增加不少的時間成本。
本文采用管道模型來處理整個實體鏈接任務,為能利用實體識別以及實體消歧2 子任務的內(nèi)在關系,通過共享參數(shù)的方法進行聯(lián)合學習。本文將實體消歧任務直接看作一個對文本中實體與知識庫中實體的相關性排序問題,選擇使用BERT 模型來對文本進行編碼。考慮到待消歧文本的長度較短,所包含的供支撐上下文信息的內(nèi)容也大幅減少,將候選實體的知識三元組中的所有屬性(predicate)與屬性值(object)進行拼接,構成該實體的一條知識描述文本,并使用知識描述文本與待消歧文本拼接后作為模型的輸入序列,以豐富詞語的向量表示,也為后續(xù)的消歧工作提供更多的上下文信息。此外,經(jīng)統(tǒng)計得出知識描述文本的長度總體偏長。因此,考慮時間復雜度對大量過長的文本進行處理,對過長文本進行截斷,其中截斷閾值根據(jù)對知識描述文本的長度統(tǒng)計設為42 個字符,對文本長度大于42 個字符的文本按比例截斷。
文本拼接操作使得原來的短文本的長度大幅增加,而文本過長會使模型在訓練過程中帶來長距離依賴的問題,又考慮到模型訓練與預測的效率,因此,在模型表示層之后加入局部注意力機制,旨在對實體的鄰近上下文信息重點關注,強化實體鄰近信息,減弱較遠無關信息的影響,進而提升鏈接的準確率。實體消歧模型架構如圖3 所示。
圖3 實體消歧模型架構Fig.3 Framework of entity disambiguation model
根據(jù)識別出的實體的位置信息,將實體的隱狀態(tài)拼接作為實體的向量表示Tv,同時對序列中對應的隱狀態(tài)進行局部注意力機制計算得到Av。
其中:a和b分別表示該實體在句中的首尾位置;j表示滑動窗口區(qū)間內(nèi)字符所對應的位置。取CLS 位置的向量表示、候選實體的向量表示以及實體的局部注意力計算后的向量表示進行拼接得到Cv,在全連接層利用Sigmoid 激活函數(shù)得到候選實體的概率得分,最終對所有候選實體的概率得分進行排序,選擇概率得分最高的實體作為正確鏈接實體。
使用CCKS2019 和CCKS2020 數(shù)據(jù)集作為實驗對本文象對模型進行評估。CCKS2019 數(shù)據(jù)集適用于實體識別與實體消歧模型,而CCKS2020 數(shù)據(jù)集則適用于短文本場景下的多歧義實體消歧研究,可通過對數(shù)據(jù)集的相關操作,使其也適用于實體識別與實體消歧模型。2 個數(shù)據(jù)集中的文本內(nèi)容主要來源于搜索Query、微博、新聞標題、視頻標題、文章標題、用戶對話內(nèi)容等,主要特征是文本長度都較短,待鏈接文本的平均長度分別為25.7 個和39.8 個字符。CCKS2020 數(shù)據(jù)集中增加了多模任務場景下的文本源,同時調(diào)整了多歧義實體比例,大幅提升了實體消歧的難度。CCKS2019 數(shù)據(jù)集中包含90 000 條標注數(shù)據(jù),本文隨機抽取生成70 000 條訓練集、10 000 條驗證集以及10 000 條測試集,知識庫中包含39 925 條實體知識信息;CCKS2020 數(shù)據(jù)集中包含70 000 條訓練集、10 000 條驗證集以及10 000 條測試集,知識庫中包含324 418 條實體知識信息。
本文任務是文本與知識庫中實體的鏈接,筆者通過對數(shù)據(jù)集中文本的分析發(fā)現(xiàn),源自文本與知識庫的同名實體由于其中存在的某些特殊符號(如標點符號、英文字母的大小寫等)或者錯別字而無法匹配,最終會對實體消歧的結(jié)果產(chǎn)生影響。因此,先對文本以及知識庫中實體中包含的特殊符號進行標準化處理。
為方便實體消歧對實體識別結(jié)果的利用,根據(jù)數(shù)據(jù)集中的信息創(chuàng)建4 個字典,分別是id_text(知識庫中實體的id 與該實體的描述文本)、id_entity_type(知識庫中實體的id、實體名與實體類型)、id_entity(知識庫中實體id 與實體名)和entity_id(知識庫中實體名與對應的實體id)。
為避免錯誤傳遞帶來的影響,在進行實體識別與實體消歧的訓練過程中使用相同的超參數(shù)設置。模型中的表示層使用預訓練語言模型BERT 模型對文本進行編碼,在訓練過程中實體識別與實體消歧使用9 折交叉驗證法,并用生成的模型進行預測,最終對實體的結(jié)果以及鏈接的結(jié)果進行投票選擇。在模型中設置初始學習率為0.000 1,學習率縮減步長為0.000 5,dropout 為0.3,局部注意力層中的窗口大小為7,容錯度為1。
本文的實體識別及實體消歧模型均使用準確率P、召回率R和F1 值F1作為評價指標。具體計算方法如下:
其中:CT表示模型得出的正確結(jié)果的總量;PT表示模型得出的所有結(jié)果的總量;DT表示數(shù)據(jù)集中的數(shù)據(jù)的總量。
在CCKS2019 和CCKS2020 數(shù)據(jù)集上各方法的實體識別結(jié)果如表1 所示,主要包括使用BIO 標注方法以及“01”標注方法的實體識別的結(jié)果、模型在不同數(shù)據(jù)集上的效果以及模型在相同參數(shù)設置下完成一輪訓練的平均耗時。
表1 實體識別結(jié)果Table 1 Entity recognition results
表1 所示的實驗結(jié)果表明:
1)BIO 標注與“01”標注所最終識別出的實體結(jié)果相近,而“01”標注對較長實體的識別率更高,這是由于“01”標注只標注實體的首尾位置,比起B(yǎng)IO 需要對整個實體進行標注,標注過程中出錯的概率更大,也就導致其對較長實體的識別效果較差,相反“01”標注只判斷某一位置是否為實體的首尾位置,這樣判斷錯誤的概率就相對減小。
2)在相同的訓練參數(shù)設置下,無論在哪個數(shù)據(jù)集下,“01”標注方法的訓練時長都較BIO 標注方法的訓練時長明顯縮短,這也驗證了“01”標注在模型訓練時的高效性。
3)在2 個數(shù)據(jù)集中,使用“01”標注方法的實體識別的準確率都比BIO 標注方法的準確率要高,說明“01”標注方法識別出的實體更加準確;而使用BIO 標注的實體識別的召回率都比“01”標注的召回率高,說明BIO 標注方法能識別出的實體數(shù)量更多。但對比F1 值則得出,BIO 標注雖然識別出的實體數(shù)量較“01”標注得多,但準確率卻偏低,因此,“01”標注方法的總體效果優(yōu)于BIO 標注方法。
4)通過對相同標記方法下不同數(shù)據(jù)集的對比也發(fā)現(xiàn),CCKS2020 中實體識別出的結(jié)果較CCKS2019 的結(jié)果更好,造成這一結(jié)果的原因是CCKS2020 數(shù)據(jù)集中的錯別字較少,并且數(shù)據(jù)更加規(guī)范且特殊符號相對統(tǒng)一。
5)對比2 個數(shù)據(jù)集平均耗時可知,由于CCKS2020數(shù)據(jù)量比CCKS2019 的數(shù)據(jù)量大,因此CCKS2020 的數(shù)據(jù)集在一輪訓練中耗時較長。
本文方法實體識別的結(jié)果在目前方法的實體識別結(jié)果中并不算突出,主要原因是其并未在實體識別部分加入過于復雜的方法,而是更注重實體識別模型的效率。此外,數(shù)據(jù)集中的實體定義不夠明確,標注結(jié)果很大程度上依賴于標注人員的主觀性,并且數(shù)據(jù)集中有較多的錯別字、簡寫以及符號書寫不統(tǒng)一等問題,都限制了最終的識別效果。
實體消歧模型在不同滑動窗口下的實驗結(jié)果如表2 所示。為了確定適當?shù)幕瑒哟翱趨?shù),在消歧模型中對不同大小的滑動窗口進行實驗對比,結(jié)果表明:當滑動窗口大小為7 時,模型在CCKS2019 數(shù)據(jù)集中的F1 值最大,而在CCKS2020 數(shù)據(jù)集中滑動窗口為9 時F1 值最大。在實體識別完成后,對實體的長度進行統(tǒng)計,發(fā)現(xiàn)識別出的實體的平均長度為4.76,結(jié)合不同的滑動窗口實驗結(jié)果,考慮到運行效率,最終滑動窗口設為7 個字符。
表2 消岐模型在不同滑動窗口下的實驗結(jié)果Table 2 Experimental results of disambiguation model under different sliding windows %
實體消歧模型中不同容錯度下的實驗結(jié)果如表3 所示,其中:BIO 與01 代表標注方法;LA 表示局部注意力機制;FTM 表示容錯機制。由于錯別字、特殊符號的不一致性,導致實體識別后的實體無法與知識庫中的實體完全匹配,造成候選實體缺失。為解決這一問題,本文引入容錯機制,并針對不同的容錯度進行實驗并對比。實驗結(jié)果表明:當容錯度設置為1 時模型的效果達到最佳,并且隨著容錯度增大使得候選實體集擴大,導致消歧模型運行時間過長。當容錯度過大時,會使得候選實體過多,對消歧效率造成干擾,因此,1 個容錯度能最大程度上擴充候選實體集又不加入過多的無關實體信息,有助于緩解無法匹配導致的實體缺失問題。
表3 消歧模型在不同容錯度下的實驗結(jié)果Table 3 Experimental results of disambiguation model under different fault tolerance %
實體消歧在CCKS2019 和CCKS2020 數(shù)據(jù)集上的實驗結(jié)果如表4 所示,主要包括消歧模型在不同數(shù)據(jù)集中的效果、相同數(shù)據(jù)集下BIO 標注方法和“01”標注方法識別出的實體對消歧的影響,以及相同數(shù)據(jù)集下使用相同標注方法時加入局部注意力機制(LA)和容錯機制(FTM)的效果。
表4 實體消歧結(jié)果Table 4 Entity disambiguation results %
由以上實驗結(jié)果可以得到以下結(jié)論:
1)對比實驗1 和4 與實驗2 和5 可以發(fā)現(xiàn),同在CCKS2019 數(shù)據(jù)集中,使用相同的消歧模型和不同的標注方法,“01”標注方法由于識別出的實體更準確,因此其消歧的結(jié)果優(yōu)于使用BIO 標注方法識別出的實體進行消歧后的結(jié)果,同時還表明管道模型中上游任務的結(jié)果對下游任務結(jié)果有影響。
2)對比實驗1 和2、實驗5、6 和實驗8、9 可以發(fā)現(xiàn),在數(shù)據(jù)集相同且標注方法相同的條件下,加入局部注意力機制的效果明顯優(yōu)于未加入的效果,所有評價指標的提升都說明局部注意力機制的加入可使消歧結(jié)果得到明顯提高,這主要因為注意力機制對長文本的處理能力以及局部上下文信息對文本語義理解的重要性,即能強化鄰近文本信息的語義關聯(lián),弱化無關信息帶來的噪聲干擾。
3)實驗4、7、實驗5、8 和實驗6、9 的結(jié)果驗證了相同方法在不同數(shù)據(jù)集中消歧模型的有效性,此外也再次表明了局部注意力機制對文本語義理解的重要性。
4)對比實驗2、3、實驗5、6 和實驗8、9 發(fā)現(xiàn),加入容錯機制確實使得模型的召回率得到較明顯提升,最終結(jié)果也有提升,這也證明數(shù)據(jù)集中的特殊符號以及錯別字等無法匹配的問題較嚴重,解決這一問題能對最終結(jié)果帶來不小的提升,從而驗證了加入容錯機制的有效性。
5)CCKS2020 的效果提升沒有CCKS2019 的結(jié)果明顯,這是因為CCKS2020 數(shù)據(jù)集更加規(guī)范嚴謹。
本文面向中文短文本構建一個基于局部注意力機制的實體鏈接模型,并在CCKS2019 和CCKS2020數(shù)據(jù)集上進行驗證。實驗結(jié)果表明,局部注意力機制有助于在實體消歧過程中強化實體上下文信息和減弱無關字詞的干擾,并能提升鏈接的效果,也說明了局部上下文信息對語義理解與辨析的重要性。此外,“01”標注方法較BIO 標注方法對實體位置的標注有助于提升模型的運行速度。后續(xù)將在其他公開的實體鏈接數(shù)據(jù)集上驗證本文模型的有效性,同時優(yōu)化實體識別與實體消歧的方法,進一步提高中文短文本實體鏈接的準確率。