郭江濤,彭甫镕
(山西大學 大數據科學與產業研究院,太原 030006)
命名實體識別(Named Entity Recognition,NER)的目標是標記非結構化文本中的實體詞,并分為對應的類別,是自然語言處理(Natural Language Processing,NLP)領域的一項重要研究內容。由于語言的特殊性,中文命名實體識別相比英文更加復雜,在命名實體識別研究工作中備受關注。
命名實體識別任務的發展初期主要關注人名(PER)、地名(LOC)、機構名(ORG)等3 種專有名詞的識別,隨著任務的不斷完善,專有名詞的范圍被進一步擴大,逐步發展至對特定領域的特定類別實體進行識別。在生物醫學領域,命名實體識別任務更關注領域專有名詞的識別,如蛋白質、DNA 等,這也就意味著每個特定領域都需要標注新的數據集,但數據標注的代價是相當大的。研究[1]表明:對無標簽數據進行準確的標注需要該領域中大量的專家參與,并且標注數據花費的時間是無標簽數據的10 倍以上。
近年來,深度學習在命名實體識別中取得了相當不錯的成績,在標注豐富領域(如新聞)的數據集上表現較好,例 如FLAT[2]和SoftLexicon[3]模型在MSRA 和PeopleDaily 上的F1 值已經超過0.95。然而現有深度模型相對復雜,需要大量標記數據對模型參數進行迭代訓練。在這種情況下,設計一套面向標注稀缺領域的命名實體識別模型具有重要的現實意義和應用價值。
主動學習模仿了生物學習行為的內部過程,將過去學習到的經驗推廣到新的數據機制。通過對樣本進行不確定性排序,可以讓專家(人工)集中精力標注模型最不確定的樣本。這有助于模型更快地學習,使專家無需標注對模型幫助較小的數據,從而極大地減少所需標注的數據量。
現有基于主動學習的命名實體識別大多基于統計機器學習,并側重于設計不同的主動學習策略,例如:HUANG 等[4]基于條件隨機場(CRF)[5]模型設計一種融合K 均值聚類和信息熵的主動學習策略。基于主動學習的命名實體識別在深度學習方面的研究相對較少,如何將深度學習技術與已有主動學習策略相結合仍是一個挑戰。
理論而言,當數據量很小時,深度學習算法會表現不佳,但隨著大規模預訓練模型的發展,該問題會得到很大改善。SHEN 等[6]將深度學習技術用于基于主動學習的命名實體識別過程,設計一種CNNCNN-LSTM 模型,采用CNN 作為字編碼器和詞編碼器,使用LSTM 作為解碼器,但CNN 詞編碼器需要提前將文本分詞,使用自動分詞工具容易引入分詞錯誤,而人工分詞標注成本更高。Lattice LSTM[7]提出一種格柵思想,將字符所有可能的詞都輸入模型,由模型判斷最佳序列。FLAT[2]模型設計了Flat-Lattice 結構,使得模型可并行計算,有效提高了模型訓練速度。
本文提出一種基于全局節點和多片段的格柵命名實體識別模型。將FLAT 模型中基于全連接注意力機制的Transformer[8]改為融合全局節點和片段節點的注意力機制,減少結構復雜度,從而降低對標注數據的需求量?;谌止濣c的結構有助于獲取全局語義信息,確定詞匯邊界,片段節點用于捕獲局部的語義。同時,對Flat-Lattice 結構進行改進,可以較好地添加詞匯信息而不需要分詞。
在自然語言處理中,通過嵌入層將文本處理為可由計算機計算的數值數據。早期的嵌入層使用獨熱碼[9](One-hot)把語料轉化為向量表示,但這種方式得到的特征是高維離散稀疏的向量。之后,出現了Word2Vec[10]、GloVe[11]等靜態詞向量,靜態詞向量能夠考慮單詞的上下文相關詞,形成詞向量的固定表征,可以更好地解決詞性孤立且不連貫的問題,但存在一詞多義現象[12]。隨著預訓練模型的發展,Elmo[13]、GPT[14]、BERT[15]等動態詞向量技術相繼出現,動態詞向量技術能夠考慮詞之間的相關性,還能解決詞的多義性問題,從而有效提升最終效果。
目前,命名實體識別主要分為基于統計機器學習和基于深度學習?;诮y計機器學習的模型依賴于領域專家知識量和人工總結特征,但泛化能力高,可解釋性強。基于深度學習的模型使用深度學習自動發現隱藏特征,常結合統計機器學習模型以提升可解釋性。近年來,基于深度學習的NER 模型成為主流,并取得了較好的結果。
Bi-LSTM[16]是基于 深度學習的NER 模型中 比較經典的模型,但Bi-LSTM 在處理中文NER 時面臨分詞問題,基于詞編碼器的模型[17]容易引入分詞錯誤,基于字編碼器的模型[18-19]無需分詞,但在處理詞匯邊界問題時精度不高。
Lattice LSTM[7]對一系列輸入字符以及與詞典匹配的所有潛在詞進行編碼,顯式地利用了單詞和單詞序列信息,不存在切分錯誤,因此本文借鑒這種保留所有潛在詞的Lattice 結構。
SoftLexicon[3]把字典信息編碼到向量表示中來規避復雜的模型結構,提升運算速度,但仍基于LSTM 串行結構。TENER[20]通過帶位置感知的注意力機制來改進Transformer Encoder 結構,同時捕捉單詞的位置和方向信息,建模詞級別和字符級別的上下文信息。FLAT 將Lattice 結構轉換為由跨度組成的平面結構,憑借Transformer 和融入詞匯信息的位置編碼,克服了LSTM 串行結構的缺點,具有出色的并行化能力,但FLAT 基于全連接的Transformer,每個跨度之間都要進行注意力計算,這使得有較多的訓練參數,導致需要更多的標注數據來訓練這些參數。
LGN[21]設計一種具有全局語義的基于詞典的圖神經網絡,其中詞典知識用于連接字符以捕獲局部組成,而全局中繼節點可以捕獲全局語義和長距離依賴。Star Transformer[22]是一種Transformer 的輕量級替代方案,將全連接結構替換為星形拓撲,其中每兩個非相鄰節點通過共享中繼節點連接。因此,復雜性從二次型降低到線性型,同時保留捕獲局部組成和長期依賴的能力。本文借鑒該思路,對FLAT 模型進行改進,減少不必要的注意力連接和參數訓練,從而降低所需標注數據量。
大規模獲取命名實體識別標注數據的成本很高,主動學習可通過特定策略選擇要注釋的示例來改善這一問題,以更少的注釋獲得更高的性能。目前,有關命名實體識別中主動學習研究較少,基于主動學習的CNN-CNN-LSTM[6]模型使用CNN 作為字和詞編碼器,LSTM 作為解碼器,但CNN 詞編碼器需要提前將文本分詞,使用自動分詞工具容易引入分詞錯誤,人工分詞標注成本更高,并且長距離依賴對于文本處理具有重要意義,而CNN 在獲取長距離依賴方面相對欠缺。
綜上,當前命名實體識別模型對標注數據的要求較高,基于主動學習的命名實體識別模型還需分詞,相對落后。因此,本文綜合考慮已有命名實體識別模型和主動學習策略之間的互補性,提出一種基于全局節點和多片段的格柵命名實體識別模型,通過全局節點和多片段結構減少模型對標注數據的需求,利用Flat-Lattice 結構解決現有主動學習策略需要分詞的問題,從而在保證模型性能的前提下降低數據標注代價。
為了降低標注成本,建立一種基于全局節點和多片段的格柵命名實體識別模型,模型結構如圖1所示(彩色效果見《計算機工程》官網HTML 版)。該模型主要包括嵌入層、全局節點和多片段模塊、改進的平面格柵模塊、多頭注意力層和殘差網絡模塊、CRF 輸出層等5 個部分。

圖1 基于全局節點和多片段的格柵命名實體識別模型結構Fig.1 Structure of lattice named entity recognition model based on global nodes and multi-fragments
由預處理得到整個句子的字和詞后,生成一個跨度序列,一個跨度包括一個標記、一個頭部和一個尾部。跨度是一個字或一個詞。頭和尾表示原始序列中標記的第一個和最后一個字的位置索引,表示標記在格中的位置。對于字而言,頭部和尾部是相同的。所有字按照原本的句子順序位于整個序列前,詞按照頭部的順序排在字序列后。將整個序列輸入由預訓練語言模型BERT 組成的嵌入層得到部分跨度的向量表示。
在FLAT 模型中,每個字都與整個句子直接進行注意力計算,這使得注意力連接的復雜度為O(n2),其中n為單個句子長度,需要訓練的參數越多,需要標注的數據也越多。為了降低注意力連接的復雜度,借鑒Star-Transformer 中的連接方式,但刪除了其中用于多層疊加的ei節點,其中i代表編碼器的層數,因為在命名實體識別任務中僅需一層Transformer 編碼器??紤]僅靠一個全局節點可能不能捕獲所有非鄰居節點間的依賴,設計一種融合全局和局部節點的方案,為每個跨度向量hx構造上下文矩陣Cx,上下文矩陣Cx的計算方法如式(1)所示:
其中:x表示跨度在整個序列中的位置,將整個序列視為循環序列,當x=0 時x-1 代表跨度序列的最后一個跨度;每個句子平均分為A個片段,每個片段擁有一個片段節點Fa,Fa的初始值為片段內節點的均值;在全局節點G的作用下,每兩個不相鄰的節點都是兩跳鄰居,并通過與全局節點G的注意力計算獲取長距離依賴。在這種結構下,每個字僅與對應上下文矩陣Cx進行注意力計算,復雜度降為O(n)。
在中文命名實體識別中,詞匯信息能夠幫助確定實體邊界,平面格柵結構可以很好地支持并行計算并添加詞匯信息,根據當前模型結構對其進行改進。
相對距離計算方式如式(2)~式(5)所示:
相對距離編碼計算方式與Transformer 相同,具體如下:
其 中:d為表示位 置編碼 的維度索引。
跨度的最終相對距離編碼是4 個距離的簡單非線性變換,具體如下:
通過多頭注意力層和殘差網絡將相對距離編碼和跨度特征嵌入進行融合計算。Transformer 通過M個注意力頭分別對序列進行自注意力計算,然后將M注意力頭的結果拼接起來。
將自注意力計算改為將序列中每個跨度向量hx與對應上下文矩陣Cx進行注意力計算。為了簡單起見,忽略多頭注意力層的頭部索引,每個頭的計算公式如下:
多頭注意力層輸出作為殘差網絡的輸入,殘差網絡與Transformer 編碼器相同,殘差網絡輸出后舍去詞的嵌入表示,僅將字符表示嵌入CRF[5]輸出層。
注意力機制能夠對特征進行融合,得到每個跨度的最大概率分布和標簽,但標簽之間相互獨立,無法解決相鄰標簽之間的合理性問題。CRF 層通過在標簽之間添加轉移矩陣分數排除部分不合理標簽序列,從而更容易獲得最佳預測序列。
在MSRA[23]、OntoNotes 5.0[24]、PeopleDaily、Weibo[25]等4 個中文NER 數據集上評估所提模型:
1)MSRA 數據集是由微軟亞洲研究院發布的一個新聞領域NER 數據集,實體類型主要包括LOC、ORG、PER。中文分詞在訓練集中可用,但在測試集中不可用。
2)OntoNotes 5.0 是OntoNotes 數據集 的最后 一個版本,由BBN 科技公司、科羅拉多大學、賓夕法尼亞大學和南加州大學信息科學研究所合作構建。該語料庫由英語、漢語和阿拉伯語3 種語言的文本組成,本文僅使用其中的中文數據集。通過腳本將其處理為命名實體識別專用的BMES 格式后,包括數量、日期、事件、語言、法律、位置、金錢、組織、百分比、人名、產品、時間、藝術品等18 種粗粒度的實體類型。
3)PeopleDaily:由《人民日報》語料標注而成,并標注了LOC、ORG、PER 3 種命名實體,不包含人工標注分詞。
4)Weibo 數據集:由來自新浪微博的注釋NER信息組成。數據集包含PER、LOC、ORG、行政區名(GPE)等粗粒度實體類型,且每種實體都包括特指和泛指兩種細粒度實體類型。
采用BMES 標記格式,B 代表實體的首部,M 代表實體中部,E 代表實體尾部,O 代表非實體。由于BERT 輸入的最大長度限制為512,為了充分利用標注數據,對數據集進行分段處理,當句子長度大于200 時將句子以標點符號為分隔符將句子分為多個片段,標點劃分到之后片段的句首。根據數據集規模,按照不同比例劃分為訓練集、驗證集和測試集。處理后的數據集規模信息如表1 所示。

表1 數據集規模信息Table 1 Dataset scale information
采用F1 值作為模型精度評價指標,F1 值的計算方法如式(12)~式(14)所示:
其中:P代表精確率,即預測正確的實體數占所有預測為實體的數量的比例;R代表召回率,即預測正確的實體數占所有實際為實體的數量的比例;TP、FP、FN分別代表預測正確的實體數、預測為實體但實際不為實體的實體數、實際為實體但預測錯誤的實體數。
本文的目標是在保持精度的情況下降低數據標注代價,因此還需定義一種標注代價方面的評價指標。在命名實體識別中,數據標注代價與標注字數被認為正相關,且在主動學習過程中存在波動,因此設定在主動學習的多輪循環中添加標注數據,當3 輪訓練結果達到設定對應F1 閾值時,標注數據集的總字數更少則表現更好。
3.3.1 實驗設置
所有實驗都在主動學習框架下完成。將已有訓練集的2%初始化為標注數據集,其他放入待標注數據集(即不使用標注,僅使用文本評估可信度),實驗中的主動學習策略統一設定為最低可信度策略。每個主動學習循環添加2%訓練集的標注數據,每個主動學習循環通過主動學習策略從無標注數據集中選擇訓練集句子總數2%的句子轉到標注數據集(模擬現實中的人工標注)。模型僅使用標注數據集進行訓練,默認訓練100 個迭代(epoch),且25 次迭代沒有提升精度就結束訓練。主動學習算法的偽代碼如下:
3.3.2 對比模型
對比模型具體如下:
1)基于主動學習的CNN-CNN-LSTM[6]模型。
2)在主動學習框架中復現的FLAT[2]模型。
3)Star_Trans 模型:由Star Transformer[22]和平面格柵結構組合而來,在上下文向量Cx=cat(hx-1,hx,hx+1,ei,G)中保留Star Transformer 中用于多層疊加的ei節點。
3.3.3 對比實驗結果分析
按照實驗設置分別對4 個中文NER 數據集進行實驗,各數據集的實驗結果如圖2 所示。由圖2 可以看出,所提模型(簡稱為Star_Frag)在MSRA 數據集上明顯優于其他模型,且兩種基于全局節點的模型也都優于FLAT 模型;在OntoNotes 5.0 數據集上,兩種基于全局節點的模型相差不多,略優于FLAT 模型,明顯優于CNN-CNN-LSTM 模型;在Weibo 數據集上,Star_Frag 明顯優于其他模型,且兩種基于全局節點的模型也都優于FLAT 模型;在PeopleDaily 數據集上,3 種模型相差不多,在標注字數小于200 000時,FLAT 模型相對較差。

圖2 對比實驗結果Fig.2 Comparative experimental results
通過圖2 分析比較直觀,但不夠精確。由于數據標注代價與標注字數正相關,并且不同數據集在主動學習過程中存在波動,取模型3 次達到F1 閾值所需的標注字數為評價指標。F1 閾值的取值以使用20%標注數據時模型的平均結果為基準,結果如表2所示。根據表2 中的實驗結果可得,Star_Frag 模型在4 個數據集上所需標注代價更低,相較于FLAT 模型,達到對應F1 閾值所需的標注數據量分別降低了39.90%、2.17%、34.60% 和35.67%,取得了 最好的結果。

表2 3 次達到F1 閾值所需的標注字數Table 2 Required number of annotated words to reach F1 threshold three times 單位:字
消融實驗的實驗設置與對比實驗相同。
1)刪除片段節點(Star_withoutFa)。刪除片段節點Fa后的上下文矩陣Cx計算公式如下:
在相對距離編碼計算時,設定當P代表G時,都設定為1,表示所有跨度到全局節點的距離為1。
2)刪除全局節點(Star_withoutG)。刪除全局節點G后的上下文矩陣Cx計算公式如下:
在相對距離編碼計算時,設定當P代表Fa時,都設定為1,表示所有跨度到片段節點的距離為1。
消融實驗結果如圖3 所示,由圖3 可以看出:在MSRA 數據集上,刪除全局節點的模型表現最差,其次是刪除片段節點的模型,Star_Frag 模型表現最好;在OntoNotes 5.0 數據集上,3 種模型相差不大,無法明顯區分;在Weibo 數據集上,刪除片段節點的模型表現最差,其次是刪除全局節點的模型,Star_Frag 模型表現最好;在PeopleDaily 數據集上,3 種模型在200 000 字之前相差不大,在200 000 字之后Star_Frag 模型相對更好。

圖3 消融實驗結果Fig.3 Ablation experimental results
Transformer 和Star-Transformer 的編碼 器都設置了多層疊加結構,但在FLAT 模型中僅使用1 層。對此進行參數分析實驗,為了節約訓練時間,參數分析實驗僅進行10 個主動學習循環,每次添加100 句句子。實驗結果如圖4 所示,由圖4 可以看出,實驗結果沒有隨著編碼器疊加層數的增加而變好,在疊加3 層時F1 值甚至會出現明顯的下降趨勢,因此多層疊加編碼器在當前結構中不會帶來性能提升。

圖4 參數分析實驗結果Fig.4 Parameter analysis experimental results
本文提出一種融合全局節點和片段節點的格柵命名實體識別模型,通過全局節點和片段節點的結構有效減少了標注數據的需求量,對Flat-Lattice 結構的改進可有效添加詞匯信息,避免了人工分詞。對比實驗結果表明,所提模型達到對應F1 閾值所需的標注數據量相比于已有命名實體識別模型更少,有效降低了標注代價。后續將對主動學習策略進行改進,利用CRF 層的轉移矩陣和輸出分數評價樣本質量,進一步降低標注代價。