趙耀全 車 超 張 強
(大連大學計算機輔助設計國家地方聯合工程實驗室 遼寧 大連 116622)
作為自然語言處理領域的基礎任務,命名實體識別得到了持續的關注。在中文命名實體識別中,目前的主流方法是基于字符的LSTM-CRF模型[1]。然而詞語為命名實體識別提供了重要的邊界信息,越來越多的研究利用單詞信息提高識別的準確率。例如:Rei[2]通過構建一個單詞語言的模型去提高命名實體識別的準確率;Peters等[3]通過預先訓練一個字符的語言模型來增強單詞表示進而提高識別的準確率。
然而,在特定領域的命名實體識別中,由于專業術語的特殊性,未登錄詞常常會因為歧義造成識別錯誤。這在醫療領域中尤其嚴重,如“支氣管哮喘”中的“氣管”因為在生活領域是一種工具而被錯誤識別。為了在利用詞語信息的同時減少未登錄詞造成的錯誤,本文在Lattice-LSTM模型[4]基礎上引入新詞發現進行醫療命名實體的識別。Lattice-LSTM能夠將輸入的字符以及所有能在詞典匹配的單詞一起編碼輸入到模型中,選擇出最相關的字符和單詞,降低歧義發生的概率,從而提升識別的準確率。為此,本文構建了一個醫療相關的詞典。在構建醫療詞典的過程中,使用N-grams算法從大量的醫療對話語料中獲取新詞,幫助分詞算法進行分詞。然后根據分詞后的結果使用Word2Vec構建一個醫療的詞典。本文模型將潛在的多種的單詞信息作為特征,構建Lattice-LSTM模型來對這些單詞進行建模。如圖1所示,利用構建的詞表來構建網格結構。圖示的句子包含多種粒度的單詞信息,如果使用門結構,可以動態地控制不同路徑的信息流,從而為模型提供更多的引導,選擇最相關的字和單詞。與基于字符的方法相比,本文模型加入潛在的多種粒度的單詞信息作為特征,更好地提高了識別的性能。

圖1 詞表的網格結構
目前,常用中文分詞方法主要分為基于詞典的方法[5]、基于傳統機器學習的方法[6]、基于深度學習的方法[7]。由于基于詞典的方法簡單高效,在一些實際應用中常常使用,主要以詞典為主,結合少量的詞法、語法規則和語義解析。隨著時代的進步,一些新詞不斷涌現,詞典的規模也相應擴大,還會面臨存在未登錄詞的問題。所以,越來越多的學者研究如何發現新詞去擴充詞典。
在新詞發現上,現在常用的方法大致有三種思路。第一種是基于構詞法[8],它需要理解特定語言語法規則;第二種是基于統計模型的方法[9-10],它是基于對字符排列的統計分析和基于詞排列的統計分析;第三種是將語言規則和統計模型的方法結合起來的方法[11]。傳統命名實體識別的方法大致分為三種。(1) 基于規則的命名實體識別的方法,大多需要專家手工構造的規則模板或詞典,例如:Hanisch等[12]提出了ProMiner,它利用預處理的同義詞字典來識別文本中的蛋白質和潛在基因;Quimbaya等[13]提出一種基于字典的電子健康命名實體識別方法。(2) 無監督學習的典型方法是聚類[14],這是一種基于上下文相似性的方法,例如:Nadeau等[15]提出了一種用于地名詞典建立和命名實體消歧的無監督系統;Zhang等[16]提出了一種從生物醫學文本中提取命名實體的無監督方法。(3) 在有監督的學習方法中,命名實體識別被轉換為多分類或者序列標記任務,最大熵[17]和條件隨機場[18]等模型被用來解決序列標注任務。
當前,基于深度學習的命名實體識別模型成為主流。例如:Hammerton[19]第一次嘗試使用單向的LSTM去解決這個問題;Collobert等[20]使用CNN-CRF結構在通用命名識別領域取得了比較好的效果;Huang等[21]構造了采用手工拼寫特征的BiLSTM-CRF模型,大大提高了識別的效率;Chiu等[22]使用BiLSTM-CNN的模型,使用雙向LSTM和CNN混合結構自動獲取字符和單詞的特征,進一步提高命名實體識別的性能。
本文研究提出的命名實體識別方法分為兩步。首先,使用N-grams算法從醫療對話語料中尋找新詞后構建一個醫療的外部詞典。然后,在基于字的LSTM-CRF的基礎上結合詞典中潛在的多種單詞信息作為特征,構建Lattice-LSTM模型。
N-grams新詞發現法主要利用詞語頻數和凝固度兩個指標。其中:頻數指詞語在數據中出現的次數;凝固度指詞語片段間的緊密程度,常常用互信息來衡量。提取的新詞就是滿足詞語頻數和凝固度閾值要求的單詞。
本文考慮到文本中多個字的內部凝固度,即使用N-grams對句子進行切分,然后計算其內部凝固度。其中,三個字的凝固度為:
(1)
式中:a、b、c是相鄰的三個字;p(a)、p(b)、p(c)代表各自出現的頻率;p(ab)、p(bc)、p(abc)代表組合成詞語后出現的頻率。取組合中凝固度最小的那個為整個字組合的凝固度。
算法步驟如下:
步驟1本文中設n為4字即4grams對句子進行切分。統計2grams、3grams、4grams,計算它們的內部凝固度,并設置不同的閾值,在本文中閾值設置為5的倍數。當n為2時,閾值設置為5;當n為3時,閾值設置為25;當n為4時,閾值設置為125。保留高于閾值的片段,構成一個集合M。
步驟2用上面的grams對語料進行粗切分,并統計頻率。切分的規則是,只要有一個片段在集合M中,該片段就不再切分。以片段“各項目”為例,只要“各項”和“項目”都在集合M中,即使“各項目”不在集合M中,片段“各項目”依然不會被切分。
步驟3在類似于片段“各項目”的單詞被切分出來之后,再判斷其是否在對應的grams中。如果存在則保留,否則予以刪除。N-grams的優點是在互信息較大的情況下,不會切錯詞,同時排除比較模糊的詞。
使用上面的方法進行實驗,將提取的新詞與結巴內置詞典進行對比篩選。然后,將篩選之后剩下的新詞進行人工篩選,進而最終確定發現的新詞。
基本的循環神經網絡(RNN)由于梯度消失的原因不能很好地學習到長距離依賴關系。為此,長短期網絡(LSTM)在RNN的基礎上引入記憶單元來記錄狀態信息,通過輸入門、遺忘門和輸出門這三個門結構去更新隱藏狀態和記憶單元。

(2)
式中:ec表示字向量映射表。LSTM模型中計算式包括:
(3)
(4)
(5)
(6)
(7)
(8)


圖2 Lattice-LSTM模型

(9)

(10)
(11)
(12)
(13)

(14)
(15)
(16)
(17)
在h1,h2,…,hn上使用CFR層,最后得到標簽序列的概率為:
(18)

在中文醫療命名實體識別的任務中,實驗所用的數據來自醫療網站上的醫生和患者的對話數據。數據由具有臨床經驗的醫生進行標注,語料整體標注質量較高,其中數據中的實體采用BIO的標注方式。對話數據中一共標注了5種實體類型,包括疾病名稱、藥品名稱、臨床表現、治療方法和檢測方法,不同類型的具體數目如表1所示。其中訓練數據1 201 KB,驗證數據325 KB,測試數據322 KB。

表1 實體的類型及其數目 KB
本文中文命名實體識別任務采用F1值來進行評測。輸出的結果集合為S={s1,s2,…,sm},人工標注的結果集合為G={g1,g2,…,gn}。定義si∈S與gi∈G等價,當且僅當:
max(si·posb,gi·posb)≤min(sipose,gj·pose)
(19)
si·c=gic
(20)
式中:posb和pose分別代表實體在句子中開始位置和結束位置;c代表實體類型。式(19)表示預測集和輸出集的某個實體在位置上有交集。
基于以上等價關系,定義集合S和G的松弛交集∩,因此得到評價指標F1:
(21)
(22)
(23)
式中:P表示準確率,是預測正確的結果占所有預測結果的比例;R表示召回率,是預測正確的結果占所有數據的比例。
在神經網絡模型中超參數的選擇對模型有著很大的影響。本文模型的超參數設置如表2所示。LSTM是模型層數為1、隱藏層維度為200的網絡結構。在字向量和單詞向量使用Dropout,并且Dropout比率設置為50%。使用SGD(隨機梯度下降法)對模型進行優化:
lr=init_lr×((1-decay_rate)×epoch)
(24)
式中:epoch代表使用訓練集的全部數據對模型進行的訓練次數;init_lr為初始學習率,設置為0.015;decay_rate為衰減率,設置為0.05。

表2 超參數設置
經過N-grams新詞發現算法提取到部分新詞包括:布地奈德、舒利迭、小細胞肺癌、未見、保守治療、倍他樂克、二甲雙胍、肺動脈高壓、希望醫生、可能是。
在新詞發現的結果中,出現了一些像“未見”“希望醫生”“可能是”不是醫療實體的錯誤詞語,這些詞語由于凝固度較高從而產生了較高的互信息被抽取出來。很多專業的術語都被正確地提取出來,如“布地奈德”“二甲雙胍”“小細胞肺癌”等醫療專業名稱。但是,一些出現次數比較少的專業單詞不能做到很好的發現,如“孟魯司特鈉片”“硫酸沙丁胺醇口腔崩解片”“脾氨肽口服液”等。因此,通過擴大語料規模或者采集更多相對應癥狀的醫療對話來提高新詞發現的數量。
表3給出了本文基于N-grams新詞發現的Lattice-LSTM的多粒度命名實體識別模型在醫療對話數據集上的實驗結果,并且同中文命名實體識別常用的基于字符的CRF、LSTM-CRF和BILSTM-CRF模型的實驗結果進行了對比。與傳統方法相比,本文基于N-grams新詞發現的Lattice-LSTM算法的F1值得到很大的提升,相對于沒有進行過新詞發現的Lattice-LSTM算法F1值也從89.73%提高到90.95%。

表3 實驗結果對比 %
通過對實驗結果的對比分析,本文基于N-grams新詞發現的Lattice-LSTM的命名實體識別模型在醫療命名實體上有很好的效果。由于實驗所用醫療對話語料針對的疾病類型主要是高血壓、肺病,涉及疾病類型不全面,所以提取到的新詞數量不多,但相對于沒有經過新詞發現的Lattice-LSTM算法有了一定的提升。由于評測指標中采用交集的計算方式,在CRF模型上出現了較多的一個目標標簽對應多個正確的標簽,從而F1值相對于LSTM+CRF有一定的提高。本文提出的命名實體識別模型充分利用了經過新詞發現法構建的詞典里的多種粒度的單詞信息,對命名實體識別任務效果的提高起到了一定的幫助作用。
本文針對醫療的命名實體識別任務,提出一種基于新詞發現和Lattice-LSTM的多粒度的命名實體識別模型。通過N-grams算法去發現新詞,從而構建一個有針對性的詞典,然后使用Lattice-LSTM模型選擇了詞典中最優的字符和單詞,從而取得了更好的結果。但是在新詞發現的過程中,一些不是醫療實體的錯誤單詞由于凝固度較高也被識別出來,給后期新詞篩選工作增加了負擔。接下來我們會探索更有效的新詞發現方法,應用在基于Lattice-LSTM命名實體模型中。