溫秀秀,馬 超,高原原,康子路
(中國電子科技集團有限公司 信息科學研究院,北京 100081)
命名實體識別(Named Entity Recognition,NER)是自然語言處理的基礎研究內容之一[1],其任務是識別文本中的語言塊,識別結果可用于關系抽取[2]、共指消疑[3]以及知識圖譜構建[4]等。NER主要分為Flat NER與Nested NER,兩者的區別主要在于命名實體之間是否存在嵌套關系[5]。重疊命名實體是Nested NER的一種擴展,其產生的原因主要有兩種:一是命名實體之間復雜的嵌套關系,例如“朊病毒”是一種“病毒”實體,也是一種“蛋白質”實體;二是誤標注,工作人員在標注語料庫時難免會產生誤差,使得相鄰實體的邊界相互重疊,形成半包含關系。由以上原因可知,命名實體重疊是工程應用中的常見問題,因此研究其解決方案對于命名實體識別的實際應用具有重要意義。
NER研究早期主要集中于Flat NER方面。近年來,隨著自然語言處理與醫學等領域的融合發展[6-7],出現大量包含Nested NER的任務,對于Nested NER的關注度也逐漸增加,例如GENIA數據集的統計結果表明,數據集中的嵌套命名實體比例達到17%[8]。隨著NER在實際工程中的應用,重疊命名實體識別已經成為實際應用中亟需解決的問題,例如天池大數據競賽上的瑞金醫療數據集中包含大量中文重疊命名實體,并在競賽研討中明確指出識別重疊命名實體的需求[9]。
本文針對現有NER研究多數針對英語、德語等印歐語系的現狀,提出一種基于標簽聚類的中文重疊命名實體識別方法,通過基于隨機合并與拆分的層次化聚類算法在不同簇中完成重疊命名實體識別,能夠較好地處理重疊命名實體中實體之間復雜的包含關系,并且在每個簇中采用融合中文部首的BiLSTM-CRF模型提高識別穩定性。
在早期的Flat NER研究方面,文字到實體標簽之間可以建立一對一關系,識別方法主要分為基于統計模型與基于神經網絡兩大類。基于統計模型的方法主要通過手工特征結合支持向量機[10-11]、最大熵模型(Maximum Entropy,ME)[12]、隱馬爾可夫模型(Hidden Markov Model,HMM)[13]或者條件隨機場模型(Conditional Random Fields,CRF)[14]完成實體標簽識別?;谏窠浘W絡的方法將神經網絡與CRF相結合,使用神經網絡完成特征學習,然后輸入到CRF完成識別,例如LSTM-CNN-CRF方法[15-16]。文獻[17]提出一種針對中文命名實體識別的Lattice LSTM,通過結合外部字典,將字嵌入與詞嵌入疊加作為輸入,聯合LSTM-CRF完成實體識別。
在嵌套命名實體識別方面,現有研究主要分為層次預測法和多標簽預測法。層次預測法考慮嵌套命名實體存在層次結構關系,首先采用第一層模型預測最內層的標簽,然后將預測結果作為次內層預測的一個特征,輸入到第二層模型中,以此類推直到完成最外層標簽預測[18]。文獻[19]提出類似的動態神經網絡模型,采用LSTM-CRF作為每層預測的模型。文獻[20]將多個模型串聯,直接進行端到端的訓練與預測。對于重疊命名實體,存在大量的半包含關系,因此層次預測法的優勢不明顯。
多標簽預測法將嵌套命名實體的層次結構扁平化,直接預測多標簽。文獻[8]使用超圖描述嵌套命名實體的結構,同時使用循環神經網絡模型進行預測,在訓練過程中通過多目標評價函數完成多標簽訓練及標注。文獻[21]提出一種窮舉模型,該模型以長短期記憶網絡(Long Short Term Memory,LSTM)為基礎構建一個神經網絡模型,在模型中窮舉字符的組合,以組合為單位預測嵌套命名實體。大量研究表明:實體識別時需要考慮標簽之間的關系,否則會在數據傾斜的影響下,大幅降低預測準確率。在多標簽預測法中,由于難以建立多標簽之間的約束關系,因此影響多標簽預測效果。
本文提出一種中文重疊命名實體識別方法,主要創新點為:1)利用基于隨機合并與拆分的層次化聚類算法解決層次化聚類容易陷入局部最優的問題,提升實體標簽的聚類效果;2)在層次化聚類的基礎上,將存在重疊的命名實體劃分到不同的簇中,建立文字到實體標簽之間的一對一關系;3)根據中文形聲字的特點,將中文部首與BiLSTM-CRF模型相結合完成標簽識別,提升實體識別效果。
基于標簽聚類的重疊命名實體識別方法的具體步驟為:1)文本標記,完成文本預處理;2)距離度量,建立實體距離矩陣;3)提出基于隨機合并與拆分的層次化聚類算法進行實體標簽聚類,使得重疊的命名實體位于不同的簇中;4)利用融合中文部首的BiLSTM-CRF模型對不同簇內的實體標簽進行并行識別,實現重疊命名實體識別。其中,步驟1、步驟2是數據預處理,步驟3、步驟4是本文方法的核心部分。
在文本標記過程中,將語料庫處理為方便后續處理的形式,采用BMEOS方法對文本進行標記,例如,句子“中國成人2型糖尿病”中的“2型糖尿病”是“Disease(疾病)”實體,此時句子的標記結果為:“中/O國/O成/O人/O 2/B_Disease型/M_Disease糖/M_Disease尿/M_Disease病/E_Disease”。
對于重疊的命名實體采用集合的方式進行標記,例如,句子“對于病程較短的患者”中的“病程較短”既是“Symptom”(臨床表現,指能夠反映出患者疾病或狀態異常的描述)實體,也是“Level”(表示程度,指反映患者疾病或狀態的定性或者定量描述)實體,則句子的標記結果為:“對/O于/O病/B_Symptom#B_Level程/M_Symptom#M_Level較/M_Symptom#M_Level短/E_Symptom#E_Level的/O患/O者/O”,此時文本與標簽之構成一對多關系。上例中“病”字的標記集合為{“B_Symptom”,“B_Level”}。
假設句子為[w1,w2,…,wn],其中,wi表示句子的第i個字符,Ti表示wi的標記集合,ta表示實體a。建立實體a對于第i個字符的示性函數如下:
(1)
實體ta與實體tb的相關度如下:
(2)
其中,E為實體之間的距離矩陣。
層次化聚類算法是一種貪心算法,容易陷入局部最優值,因此本文提出基于隨機合并與拆分的層次化聚類算法完成實體標簽聚類。實體標簽聚類的目標是將實體標簽劃分到若干個簇中,每個簇中實體之間距離盡可能小,屬于不同簇的實體之間的距離盡可能大,同時簇的數量盡可能少。下文先定義聚類結果度量函數,再給出改進的層次化聚類算法。
2.3.1 聚類結果度量函數
令C表示簇的集合,Ci表示第i個簇。Ci的內部距離為Ci內部實體之間的距離,計算方式如下:
(3)
其中,max(Ea,b)表示E中元素的最大值。
Ci與Cj之間的距離為兩個簇之間的實體距離,計算方式如下:
(4)
聚類目標是使所有的gin(Ci)之和盡可能小,所有的gout(Ci,Cj)之和盡可能大,據此得到聚類結果的度量函數如下:
(1-α)|C|/c
(5)
其中,|C|表示簇的個數,c表示實體的種類數量,是一個常數。為滿足聚類結果中簇的個數盡可能少,需在gtotal計算最后添加-(1-α)|C|/c。
2.3.2 基于隨機合并與拆分的層次化聚類算法
針對層次化聚類算法容易陷入局部最優的問題,將層次化聚類算法的簇合并過程改進為隨機合并,并增加簇隨機拆分步驟。通過引入隨機擾動,降低算法陷入局部優化的概率。
算法1基于隨機合并與拆分的層次化聚類算法
輸入距離矩陣E
輸出分簇結果C
步驟1將每個實體劃分為一個簇。
步驟2隨機選擇兩個簇Ci與Cj并生成服從[0,γ]區間均勻分布的閾值pth。如果gout(Ci,Cj) 步驟3隨機選擇一個簇Ci并生成服從[0,μ]區間均勻分布的拆分閾值ptd。如果gin(Ci)>ptd,則拆分Ci(更新C);否則執行步驟4。 步驟4若連續3輪迭代的gtotal增量小于0或者|C|=1,則停止迭代,返回聚類結果;否則轉步驟2。 在算法1中,步驟1為初始化,將每個實體劃分為一個簇;步驟2為簇的隨機合并,簇合并的概率與簇之間的距離成反比,其中γ表示簇間距離的最大值;步驟3為簇的隨機拆分,拆分概率與簇的內部距離成正比,其中μ表示簇內部距離的最大值;步驟4檢測是否需要終止迭代過程,如果聚類結果gtotal不增加或者只有一個簇,則迭代結束。 算法1包含兩層循環:第一層循環是步驟2自身的循環,令ρ表示步驟2中gout(Ci,Cj) 經過層次化聚類后屬于同一個簇的實體重疊的數量與聚類前相比大幅降低。對于少量的重疊實體引起的文字與標簽的一對多關系,可以對標簽進行拼接,拼接順序為字母順序。至此,對于同一個簇內的實體,可以建立文字與實體標簽的一對一關系進行模型預測。對于不同簇的實體,分別訓練模型完成識別。由于模型之間不相關,因此可以并行完成訓練和識別。 本文建立融合中文部首的BiLSTM-CRF識別模型,首先進行中文字嵌入,然后將嵌入結果與部首編碼合并輸入到BiLSTM層完成特征提取,最后結合CRF層完成命名實體標簽識別。融合中文部首的BiLSTM-CRF識別模型邏輯結構如圖1所示。 圖1 融合中文部首的BiLSTM-CRF識別模型邏輯結構 Fig.1 Logical structure of BiLSTM-CRF recognition model fusing Chinese radical 令[w1,w2,…,wn]表示句子的字序列,ci表示wi對應的部首,V[wi]表示wi的嵌入結果,U[ci]表示ci的one-hot編碼,其中,U是部首總個數d1的one-hot編碼方陣,V是字總個數乘以字嵌入維數d2的查找矩陣。將V[wi]與U[ci]連接,令xi表示連接結果,即xi=[V[wi],U[ci]],xi是一個d1+d2維向量。 (6) 在CRF層中,采用標準CRF算法,令Ti表示wi的標記,θ表示標記之間的轉移概率,θ(Ti,Ti-1)表示Ti到Ti-1的轉移概率,則對于BiLSTM層的輸出序列y=[y1,y2,…,yn],標記序列T=[T1,T2,…,Tn]的概率如下: (7) (8) 本文實驗數據集來自上海交通大學醫學院附屬瑞金醫院與阿里云聯合發起的“瑞金醫院AI大賽”。數據集中的文本由糖尿病相關的教科書、研究論文組成。數據集中的實體主要為:1)與疾病相關的實體,包括“疾病名稱(Disease)”“疾病原因(Reason,即引起疾病的原因,包括染色體異常、飲食習慣等)”“臨床表現(Symptom)”“檢查方法(Test,即檢查所用的方式方法,包括血液分析、身體部位按壓等)”及“檢查指標值(Test_Value,即檢查結果數值)”;2)與治療相關的實體,包括“藥品名稱(Drug)”“用藥頻率(Frequency)”“用藥方法(Method)”“用藥劑量(Amount)”“不良反應(SideEff)”“外科手術(Operation)”及“非藥治療(Treatment,即理療等不采用藥物及手術的治療方法);3)常規實體,包括“肢體部位(Anatomy)”“疾病程度(Level)”及“持續時間(Duration,即患者疾病或狀態的持續時間)”。 句子使用中文的“。,:”與英文的“,:”符號劃分。每個句子按照字分割,其中的英文也以字符為單位進行分割。句子長度統一為64個字,對于不足64個字的句子使用空格填充;對于超過64個字的句子,則以64個字為單位劃分為多個句子。數據集分為訓練集、驗證集、測試集,三者的比例分別為50%、25%、25%。訓練集分為1 800個批次(Batch),每個Batch有32個句子。每1 800個Batch為一輪(Epoch),參與對比實驗的算法均訓練100輪,獲取驗證結果最優的模型作為最終模型并在測試集上得到實驗結果。各方法的超參數設置情況如下: 1)本文方法,在距離度量中根據訓練集的數據標注結果得到距離矩陣E,在gtotal計算過程中權重參數α設置為0.5,字嵌入維數d2設置為100,BiLSTM層前向單元的個數b1設置為100,BiLSTM層后向單元的個數b2設置為100。 2)NLM方法[18],使用兩層結構,每層中使用的BiLSTM層單元的個數為100,字嵌入的維度為100。 3)NNERR方法[8],在BiLSTM層后迭加LSTM層。BiLSTM層單元的個數為100,BiLSTM層后面的LSTM層單元個數設置為100。 4)LatticeModel方法[17],BiLSTM層單元的個數為100。詞典中詞的長度控制在3以內,字嵌入的維度均設置為100,詞典采用結巴分詞的字典。 所有方法的其他參數(包括嵌入矩陣的初值)均采用隨機設置的方式,并且實驗過程中不使用預訓練向量。 表1表示各方法對所有實體標簽的識別準確率、召回率以及F1值??梢钥闯?與NLM方法相比,本文方法的準確率、召回率和F1值分別提高了0.019、0.023、0.020,性能指標提高的主要原因為:本文方法在標記過程中考慮了中文的特性,以字的偏旁與字本身作為特征輸入到神經網絡中進行預測,因此F1值略高。LatticeModel方法由于未考慮實體標簽的重疊問題,因此F1值低于本文方法。此外,與NLM方法相比,本文方法采用的實體標簽聚類算法可實現并行識別,而NLM方法只能串行運行,因此在運行效率方面,本文方法要優于NLM方法。 表1 識別方法對所有實體標簽的實驗結果對比 Table 1 Comparison of experimental results of recognition methods on all entity tags 方法準確率召回率F1值NLM0.9560.9530.955NNERR0.8280.9100.867LatticeModel0.9430.8510.895本文方法0.9750.9760.975 表2為去除數據集中“O”開頭標簽后的準確率、召回率以及F1值。在數據集中以“B”“M”“E”“S”開頭的標簽數量要遠少于“O”開頭的標簽,而在實際應用中,本文更關注的是以“B”“M”“E”“S”開頭的標簽,因此表2的實驗結果更具代表性,此時本文方法的F1值比其他方法的平均值至少高0.05。另外,表2中各識別方法的性能指標均低于表1,本文方法的F1值約下降0.32,NLM、LatticeModel約下降0.3,而NNERR方法約下降0.55。性能指標下降的主要原因在于標簽的比例不均衡,大量的“O”會造成數據傾斜問題,從而使得標簽的召回率大幅降低(模型傾向于將標簽識別為“O”)。本文方法、NLM、LatticeModel這3種方法采用CRF方法,并考慮了標簽之間的關聯性,因此性能指標降低幅度小。NNERR方法使用逐步迭代方法造成了結果的誤差累積,因此指標降低幅度最大。 表2 去除數據集中“O”標簽后的識別方法實驗結果對比 Table 2 Comparison of experimental results of recognition methods without “O” label in the dataset 方法準確率召回率F1值NLM0.7230.5080.597NNERR0.3500.2710.315LatticeModel0.7150.5180.601本文方法0.7450.5860.652 表3表示各方法對重疊命名實體的識別準確率、召回率以及F1值??梢钥闯?本文方法的準確率與召回率均高于其他方法。NLM適合于命名實體之間存在嵌套關系的情況,但由于重疊命名實體的實體之間在層次位置上相同,因此NLM方法的優勢不明顯,其性能差于本文方法,并且由于LatticeModel方法并不針對多標簽問題,因此在命名實體重疊的情況下,其識別效率最低。 表3 識別方法對重疊命名實體的實驗結果對比 Table 3 Comparison of experimental results of recognition methods on overlapping named entity 方法準確率召回率F1值NLM0.3050.3760.364NNERR0.2400.3530.286LatticeModel0.1920.3040.235本文方法0.3820.4070.394 圖2表示本文方法對命名實體的標簽聚類結果,相同顏色的節點表示同一個簇??梢钥闯?數據集中的實體存在大量重疊,其中包括一個詞屬于多個種類實體的情況以及標記誤差(即實體之間出現部分交疊的情況)。在實際數據集中標記誤差不可避免,而本文方法能夠有效適應此類情況,通過分簇的方式避免標記誤差對識別過程的干擾。 圖2 實體標簽聚類結果示意圖 針對中文重疊命名實體識別問題,本文提出一種基于標簽聚類的識別方法。通過實體標簽聚類的方式處理命名實體標記重疊問題,建立BiLSTM-CRF標簽識別模型并結合中文部首特征進一步提高識別效率。實驗結果表明,本文方法能有效識別重疊命名實體,相比現有識別方法F1值平均提高0.05,但由于“O”開頭的標簽在語料中的占比較大,導致本文方法召回率偏低,因此下一步將研究針對命名實體識別的訓練語料自動選擇方法,通過增加特定標簽的語料訓練次數以提高識別效率。2.4 融合中文部首的BiLSTM-CRF識別模型



3 實驗結果與分析
3.1 數據集
3.2 參數設置
3.3 對比分析




4 結束語