潘麗君 陳艷平 黃瑞章 秦永彬
(1.貴州大學計算機科學與技術(shù)學院 貴陽 550025)(2.貴州大學貴州省公共大數(shù)據(jù)重點實驗室 貴陽 550025)
命名實體識別(Named Entity Recognition,NER)是信息抽取中的一項重要任務(wù),其目的是識別出文本中的命名實體并進行分類。命名實體包括人名、地名、組織名等,它在關(guān)系抽取,語法解析,知識問答等自然語言處理(NLP)系統(tǒng)中具有重要的作用。然而,命名實體(NE)存在主觀性、復雜性、多變性等特點,且命名實體在句子中的上下文特征稀疏,使得命名實體識別一直是NLP中一個重要且有挑戰(zhàn)性的研究課題[1]。
與英語NER 相比,中文NER 更具有挑戰(zhàn)性。第一,中文文本沒有關(guān)于NE的詞型特征,如首字母大寫等。第二,中文NE高度依賴上下文,幾乎每個漢字和詞語都可以用來構(gòu)建NE,且同一個詞在不同的上下文中有不同含義。例如“文獻是朝陽區(qū)區(qū)長”中,“文獻”是人名實體,而大多數(shù)情況下,“文獻”不是NE。第三,同一個詞語可以指代不同的實體類別。如“阿里”在“拳王阿里是個傳奇”中是人名實體,在“西藏阿里美不勝收”中是位置實體,在“杭州阿里吸引了很多人才”中是組織實體。第四,中文文本中沒有分隔符(如空格)來分隔單詞,使得識別實體邊界更加困難。例如,句子“習近平常與特朗普通電話”可以分詞為“習近/平常/與/特朗/普通/電話”,其中“特朗”被預(yù)測為人名實體,而事實上“習近平”及“特朗普”都是人名實體[2]。
在早期的研究工作中,通常將NER 視為序列標記問題,即為每個標記單元分配一個標簽,用以表示每個標記單元在命名實體中的角色,如實體開始(“B”),實體中部(“I”)和非實體(“O”)等。由于自然語言具有復雜的語義結(jié)構(gòu),嵌套實體無處不在。近幾年,NER領(lǐng)域提出了很多針對嵌套實體結(jié)構(gòu)的模型。一些工作通過修改序列模型以支持使嵌套命名實體識別。傳統(tǒng)算法使用的淺層序列標注模型存在嚴重的特征稀疏問題,深度學習算法雖然能解決上述問題,但序列標注模型只能識別扁平結(jié)構(gòu)的命名實體,無法識別句子中互相重疊的嵌套實體,因此基于深度學習的序列模型在嵌套命名實體識別中性能較低[3]。
為解決上述問題,嵌套命名實體識別領(lǐng)域提出了基于跨度(Span)的算法,即將實體識別視為一個跨度分類任務(wù),首先產(chǎn)生一定數(shù)量的跨度種子,再輸入分類器中進行識別。相對于序列標注算法,基于Span 的模型在識別性能上體現(xiàn)出較大優(yōu)勢。但是目前基于Span 的大部分模型都存在無法有效利用句子的全局信息的問題,如Chen 等[4]。提出的NNBA 模型。該模型生成跨度種子后,將句子分為三個語境:跨度種子左邊語境,跨度種子語境,跨度種子右邊語境,再分別仍進三個LSTM 模塊學習,拼接三個輸出結(jié)果后進行分類。因而損失了大量的跨度區(qū)域上下文語義信息,導致了檢測性能不高。
針對上述問題,本文提出了結(jié)合實體標簽的嵌套命名實體識別模型。首先用傳統(tǒng)的枚舉算法生成跨度種子(候選實體),為了減少計算量提高效率,設(shè)置最大的枚舉長度為7,然后將跨度區(qū)域的邊界信息作為實體標簽嵌入原句中,作為分類器輸入。實體標簽明顯標識出跨度種子在句子中的位置信息,模型除了學習到跨度種子的局部信息外,還能學習到跨度種子和上下文的語義信息,更好地幫助模型理解語義。模型把候選實體篩選的問題轉(zhuǎn)化為句子分類問題,簡化識別難度,提升了性能。
序列模型是NE 識別的常用算法,包括條件隨機場(CRF),隱馬爾可夫模型(HMM)和長短期記憶網(wǎng)絡(luò)(LSTM)等。序列模型假設(shè)輸入的結(jié)構(gòu)是扁平的,難以識別嵌套NE。為了解決嵌套結(jié)構(gòu)問題,研究者提出分層策略、級聯(lián)策略和結(jié)構(gòu)化標記策略。Zhou 和Zhang 等使用HMM 識別最外層實體,然后對內(nèi)層實體采用基于規(guī)則的算法進行識別。Settles 和McDonald 等[5]提出了結(jié)構(gòu)化多分類模型,該模型基于CRF,但不能識別類型相同的嵌套實體。當算法基于序列模型時,嵌套實體通常有多個標簽,這加大了識別難度。Tang 等[6]提出用不同標記區(qū)分實體的獨有和共享部分,并使用基于支持向量機(SVM)的判別算法,對輸出進行解析后,結(jié)合基于規(guī)則的識別算法對齊已識別的嵌套實體。淺層序列標注模型存在嚴重的特征稀疏問題,不能有效獲取上下文依賴信息,導致識別性能低下[3]。
將嵌套結(jié)構(gòu)轉(zhuǎn)換為平坦表示是嵌套NE識別的另一種算法。Lu 和Roth[7]首先提出了使用超圖表示法來識別嵌套命名實體。他們的模型可以有效地捕獲無限長的嵌套命名實體。Wang 等[8]提出了一個分段的超圖表示來捕獲特征和交互,將嵌套命名實體轉(zhuǎn)換為樹結(jié)構(gòu),再采用堆棧LSTM 模型識別嵌套NE。Katiyar 和Cardie[9]采用遞歸神經(jīng)網(wǎng)絡(luò)對有向超圖表示進行編碼。在基于解析的模型中,首先將句子解析為依賴樹,再通過對解析樹的節(jié)點進行分類來識別NE。Jie 等[10]構(gòu)建了一個可以獲取依賴樹全局信息來有效支撐最外層實體的識別的模型。
基于Span 的模型也被廣泛用于嵌套命名實體識別中。該框架首先收集一定跨度的候選實體,然后由分類器進一步評估。例如,Xu 和Jiang[11]以及Sohrab 和Miwa[12]詳盡地枚舉了一定長度內(nèi)所有可能的NE 候選。Xu 和Jiang 將句子被分為三個部分:候選實體左邊語境、NE候選語和候選實體右邊語境,每個部分被編碼成一個固定大小的表示,再拼接為一個整體進行分類。在Sohrab 和Miwa 的工作中,NE候選詞通過連接起始詞、結(jié)束詞和內(nèi)部詞來表示。Xia 等[13]設(shè)計了一個區(qū)域網(wǎng)絡(luò)來生成NE候選,然后使用分類網(wǎng)絡(luò)進行評估。Chen等[4]提出NNBA 模型,該模型首先檢測實體邊界(開始及結(jié)束邊界),再采用前向匹配的算法組合實體邊界得到候選實體,然后通過分類器對NE 候選進行識別和分類。事實證明基于Span 的算法針對多層嵌套實體是有效的。
目前提出了許多多目標或端到端框架來支持嵌套命名實體識別任務(wù)。Ju 等[14]提出了一種神經(jīng)分層模型,該模型通過層疊級聯(lián)平面模型識別嵌套實體。Lin等[15]使用頭部驅(qū)動短語結(jié)構(gòu)進行嵌套NE識別。在基于BERT 的模型中,F(xiàn)isher 和Vlachos[16]提出了一種合并和標記算法來組合單詞和預(yù)測嵌套實體。Shibuya 和Hovy[17]采用了一種序列模型,從最外層到內(nèi)部迭代提取嵌套實體。Straková等[18]將嵌套NE 識別轉(zhuǎn)化為序列問題。Wang 等[19]將一個句子映射到金字塔層中,其中嵌套的NE 被識別為句子的金字塔輸出。Li等[20]將嵌套的NE識別描述為一項機器閱讀理解任務(wù)。
越來越多的研究者嘗試用遷移學習解決嵌套命名實體識別問題,但基于span的方法在性能上仍具有競爭性優(yōu)勢。然而,目前基于span的模型在對跨度種子進行分類時,主要采取兩種方法:1)直接識別跨度種子;2)將句子分為三個部分,分別學習后拼接進行識別。這兩種方法都會丟失大量跨度種子和上下文之間的結(jié)構(gòu)語義信息,導致性能不佳。
模型總體框架如圖1 所示。結(jié)合實體標簽的嵌套命名實體識別模型可分為兩部分:實體標簽插入和候選實體篩選。在實體標簽插入中,采用傳統(tǒng)的枚舉法產(chǎn)生跨度種子(候選實體),并根據(jù)跨度種子的位置信息在原句子中插入表示實體邊界的標簽,以標識不同的候選實體。在候選實體篩選中,搭建了傳統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)模型,把帶實體標簽的句子作為輸入,對整個句子進行分類。

圖1 模型總體框架
令S=[x1,x2,…,xN](orx1:N)表示一個句子,其中xk∈S表示一個漢字。Cij=xi:j(1 ≤i≤j≤N)用于表示句子中可能的命名實體(跨度種子或候選實體),xi和xj是Cij的開始和結(jié)束邊界。
目前基于Span 的框架中,有兩種方法對候選實體進行分類。一種是將Cij作為分類器輸入,直接對其進行分類。該方法沒有使用候選實體在句子中的上下文特征,容易導致特征稀疏的問題。第二種是將句子S分為三個部分:候選實體左邊(x1:i-1),候選實體(Cij),候選實體右邊(xj+1:N)。然后分別作為神經(jīng)網(wǎng)絡(luò)模型的輸入,通過神經(jīng)網(wǎng)絡(luò)提取各部分的特征后再拼接為一個向量進行分類。該方法能利用候選實體上下文特征,但各個部分單獨提取特征丟失了候選實體與上下文之間的語義依賴。
為了充分學習候選實體與上下文全局語義信息,可以將整個句子作為模型輸入。然而,一個句子通常包含多個實體。所有實體共享相同的上下文特征。如果沒有關(guān)于候選實體的線索,模型就無法判斷當前需要識別的候選實體。為了解決這一問題,我們在句子中候選實體的兩邊插入實體標簽,然后將句子輸入神經(jīng)網(wǎng)絡(luò)模型中學習,從而獲取句子中相當于實體邊界的語義依賴特征。
在插入實體標簽之前,要先獲取實體標簽的插入位置。我們采用枚舉法獲取位置信息和生成跨度種子。為減少計算復雜度,設(shè)置最大的枚舉長度為7。并用兩個特殊標記“[S]”和“[E]”表示實體標簽,以指示跨度種子在句子中的開始和結(jié)束位置,標簽在神經(jīng)網(wǎng)絡(luò)中的表示是唯一的。帶實體標簽的句子稱為NE 實例。句子植入實體標簽后,NE實例?可以表示為

實體標簽有三個特點:1)實體標簽成對出現(xiàn);2)一個NE 實例只包含一對實體標簽;3)如果一個句子有K個NE 候選,它就對應(yīng)有K個NE 實例。將S?輸入神經(jīng)網(wǎng)絡(luò),對候選實體xi:j(1 ≤i≤j≤N)進行分類,模型可以根據(jù)標簽位置判斷不同候選實體,并學習出整個句子相對于實體邊界“[S]”和“[E]”的語義依賴特征,從而提升識別的性能。
在實體識別中,通過對插入實體標簽的句子進行分類具有三個優(yōu)點。首先,它對候選實體相對于整個句子的語義和結(jié)構(gòu)信息進行編碼;其次,實體標簽是基于插入的候選實體開始及結(jié)束標識,它獨立于候選實體的文本表達;最后,篩選候選實體對象時,候選實體的結(jié)構(gòu)嵌入在表示中。
本文采用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)構(gòu)建候選實體篩選分類器。此步驟的輸入是帶有實體標簽的句子,即所有的NE實例。通過對插入實體標簽的句子進行識別,本文將嵌套命名實體識別的問題轉(zhuǎn)化為句子分類任務(wù),降低了模型學習難度,獲得了更好的識別性能。
分類器主要分為嵌入層、RNN層、卷積層、MLP層。模型使用BERT[21]做詞嵌入,將句子映射到768 維向量中。對于給定的具有n 個字符的句子,將中第Ewi 表個示字詞符嵌xi入的查詞找嵌表入,表句示子為中的詞=通Ew過(x查i)。找其表轉(zhuǎn)換為分布式單詞表示形式。查找表從外部信息中學習得到,它對詞語的語義信息進行編碼。
RNN 層使用LSTM 模型。LSTM 是一種特殊的RNN 模型,它通過設(shè)計的門結(jié)構(gòu)選擇性地存儲上下文信息,克服了在長序列中引起的梯度消失和爆炸的問題。雙向遞歸神經(jīng)網(wǎng)絡(luò)層(Bi-LSTM)用于捕獲單詞間的前向和后向依賴關(guān)系。Bi-LSTM 的向前和向后隱藏狀態(tài)的輸出被連接為表示Bi-LSTM 的正向和反向輸出,最終獲得表示式為等式,其中[;]表示串聯(lián)。基于獲得的詞嵌入表示…,n)},我們使用Bi-LSTM 模型提取句子的語義信息。Bi-LSTM的隱藏狀態(tài)可以表示為式(1):

其中和表示Bi-LSTM 層的第i 個向前和向后隱藏狀態(tài)。我們將句子中每個字符的共享特征提取為。RNN 層將768 維向量映射到256 維(128×2)。
模型在Bi-LSTM 后接入TextCNN。TextCNN能夠有效獲取到句子局部特征,并篩選出句子最明顯特征。在TextCNN 中,我們使用使用濾波器Wf ?Rh×m對輸入進行卷積運算:

其中是從Bi-LSTM 輸出的子序列信息,符號*是帶偏置bf的卷積的點積運算,Relu是非線性激活函數(shù)。我們使用[2,3,4,5] 4 個不同的濾波器執(zhí)行卷積運算,每種濾波器設(shè)置64 個,并將結(jié)果特征表示為Ci。然后,計算最大池化層作為Ci的元素方式最大值以表示這部分輸出,輸出結(jié)果為256維向量:

在經(jīng)過以上步驟,輸出一個表示高階抽象特征的向量,再扔進MLP 層中,MLP 包含兩個密集層,用于提供全局調(diào)節(jié)。MLP 的密集層將輸入分別從256 映射到64,從64 映射到2(實體檢測)或8(實體識別)。為避免過擬合問題,Dropout 分別設(shè)置為0.9、0.5。最后使用softmax 進行規(guī)格化,獲得類別分數(shù):

本文使用ACE2005 中文語料庫來評估CEL 模型,包含了從新聞通訊社,廣播和博客收集到的633個文檔,其中定義7種實體類型——VEH(交通工具)、LOC(地名)、WEA(交通工具)、GPE(地理政治實體)、PER(人名或)、ORG(組織名)、FAC(基礎(chǔ)設(shè)施)。該語料庫標注了15264 個實體和33932 個實體提及,其中嵌套命名實體的比例為45.27%[3]。
語料庫按6∶2∶2 的比例生成訓練集,驗證集和測試集,并采用準確率、召回率、F1 值來衡量模型性能。在所有表格中,“Total”是識別7 個實體類型的結(jié)果,“Det”是實體檢測的結(jié)果,不區(qū)分實體的類型。
本文設(shè)計了三組實驗評估CEL 模型。實驗均在ACE2005 中文數(shù)據(jù)集上進行,且采用相同劃分方案、外部資源和評價標準。
為了實現(xiàn)CEL模型,設(shè)定輸入句子最大長度為110。設(shè)置CEL 模型的學習率,Epochs 和Batch Size分別為0.00002、6、64。結(jié)果如表1所示。

表1 CEL在ACE2005中文數(shù)據(jù)集的性能
表1的實驗結(jié)果證明,CEL模型多分類F1值達到84.18%,二分類達到89.89%,召回率比正確率高出兩個百分點,這是由于枚舉法可以獲取到很大一部分的正確實體(在中文中命名實體長度大于7 的占少數(shù)),提高了實體的召回率,加上對枚舉算法的長度限制,大幅度減少了負例對性能的影響。雖然限制長度有效減少了負例影響,但枚舉法產(chǎn)生的負例還是遠遠多于正例,因此,模型還有很大的改進空間,尤其是對枚舉算法的改進。
在四種不同模型(CEL、Bi-LSTM、TextCNN、Transformer)中,進行帶實體標簽“[S]”、“[E]”和不帶實體標簽的實驗。其中,Bi-LSTM、TextCNN、Transformer 將Word2Vector 作為詞嵌入,學習率、Epochs、Batch_size、優(yōu)化器分別為0.001、10、256、rmsprop。
實驗的二分類結(jié)果如表2 所示,可以明顯看到實體標簽對不同模型的性能都有很大影響。在句子中沒有實體標簽的情況下,每一種模型的性能都在60%左右。句子嵌入實體標簽后,四種模型的學習能力也大不相同。在相同的數(shù)據(jù)和參數(shù)設(shè)置下,Bi-LSTM的學習能力最強,源于Bi-LSTM能夠獲取到長距離的語義信息。在使用BERT 作詞嵌入后,CEL 模型的學習能力明顯增強,比其他模型高出6個百分點。實驗證明嵌入實體標簽對嵌套命名實體識別有很大提高。

表2 實體標簽性能影響
為了更好地評估CEL 模型,進行了兩種NE 識別方法的比較實驗:序列模型和嵌套模型。CEL性能如表1 所示。本文實現(xiàn)了兩個傳統(tǒng)的序列模型來識別嵌套的NEs。因為序列模型需要扁平的標簽序列,當嵌套的NEs 出現(xiàn)時,只能識別最內(nèi)層或最外層的NEs,即對應(yīng)于最內(nèi)層模型或最外層模型。提及的實體總數(shù)為33932,包含24731 個最外層和25766個最內(nèi)層實體提及。
結(jié)果如表3 所示,召回率根據(jù)總的實體提及次數(shù)進行調(diào)整。結(jié)果表明,無論是最內(nèi)層還是最外層的策略都會受到嵌套的NEs 導致的低召回率的影響。在序列模型實驗中,LSTM-BERT 性能大大提高,但是,忽略嵌套問題會成為任務(wù)的瓶頸,在性能上仍有很大的改進空間。

表3 序列模型性能
與嵌套模型的比較中,選取三種先進的嵌套算法進行比較:Alex 等討論的級聯(lián)模型(Cascading 模型)和分層模型(Layering 模型)以及NNBA 模型[4]。三者都使用與CEL 模型相同的數(shù)據(jù)和參數(shù)設(shè)置。實驗結(jié)果如表4所示。

表4 嵌套模型性能對比
在Cascading-Out 模型中,每種實體類型均由獨立BERT-Bi-LSTM-CRF模型識別。如果嵌套的命名實體具有相同類型,它只識別最外層實體。由于每個實體類型都可以由獨立的序列模型識別,不能有效使用帶注釋的數(shù)據(jù),導致實體類型“VEH”和“WEA”的性能非常低。Layering-Out 模型實現(xiàn)了兩個獨立的BERT-BiLSTM-CRF 模型,以識別最外層和最內(nèi)層實體,其中外層提及是可取的,然后再收集內(nèi)層的實體提及。該模型較Cascading-Out模型有明顯提升,多分類和二分類分別提升六個、八個百分點。NNBA 模型[4]使用Bi-LSTM-CRF 識別出實體的開始及結(jié)束邊界,再使用貪心策略匹配邊界,最后輸入一個Multi-LSTM 模型中進行識別。該模型對實體檢測有明顯提升,但是對實體識別提升不大,其原因是分類器無法有效利用全局語義信息,導致模型只能高效學習局部候選實體信息。
以上實驗結(jié)果證明,CEL模型除了在二分類任務(wù)中有競爭性的優(yōu)勢外,在多分類任務(wù)中比當前最優(yōu)的模型高出了四個百分點。特別地,在“VEH”這個類別的性能提升非常明顯,提升了49%。
深度神經(jīng)網(wǎng)絡(luò)可以從原始輸入中自動提取抽象特征。然而,如果沒有關(guān)于NE 候選詞的實體標簽,神經(jīng)網(wǎng)絡(luò)就無法學習候選實體和上下文之間的語義依賴關(guān)系。本文提出了結(jié)合實體標簽的嵌套命名實體識別模型,以解決基于span的模型無法有效利用全局語義信息,導致識別性能不高的問題,CEL模型在中文嵌套NE識別任務(wù)中取得了有競爭性的成績,為未來的工作提供了一種可能的解決方案。