顏柏楊 吳 陳
(江蘇科技大學計算機學院 鎮江 212003)
在智慧診療領域,構建醫學知識圖譜對輔助決策和問答系統至關重要,需要借助命名實體識別處理非結構化的臨床文本,然后將提取出的實體映射到知識圖譜相同的結點。文本挖掘通常需要用到自然語言處理,命名實體識別(Named Entity Recognition,NER)是其重要的組成部分,作用是從半結構或非結構化文本中識別出疾病名稱、癥狀和藥品等醫學實體。醫學知識圖譜構建通過醫療實體和實體間的關系連接而成,因此NER的精度關系到臨床醫療知識圖譜的嚴謹性。
國外通用實體識別技術發展比較完善,Bikel提出了基于齊次馬爾科夫假設和觀測獨立假設的隱馬爾科夫模型[1],該方法使用MUC-6數據集達到了90%的準確率。Liao提出了條件隨機場模型[2],跳出了HMM算法觀測獨立假設,提升了NER的準確度。Feng[3]提出了基于BiLSTM神經網絡結構的實體識別方法,該方法使用上下文的單詞嵌入和字符的單詞嵌入。相比需要手動添加特征模統計學習的算法,Huang提出了Bi LSTM-CRF模型[4],采用BiLSTM抽出文本特征,條件隨機場算法處理字與字間的序列概率,該模型在NER和詞性標注任務上達到state of the art。當文本過長時,LSTM提取的特征并不完整,Luo提出了基于注意力[5]的雙向長期短期記憶只需很少的特征工程即可實現更好的性能。
中文命名實體識別相對國外發展較晚,Wang、Liu[6]實現了基于中文字符的實體識別,Yang等[7]在提出的Lattice-LSTM模型是目前MSRA數據集上的最優模型,相較與字符層次的方式,該模型很少出現邊界標注錯誤的問題,其效果優于基于字符和基于單詞的LSTM基線模型。
通用命名實體識別的發展推動了醫療行業NER的前進。Zhao針對生物醫學文本使用隱馬爾科夫模型[8](HMM),并基于單詞相似度進行平滑處理。實驗表明,基于單詞相似度的平滑可以通過使用很多沒有打標記的序列來提高性能。Sahu提出了端到端遞歸神經網絡模型用于疾病名稱識別[9]。同時在RNN結合卷積神經網絡獲得基于字符的嵌入特征。
雖然國外醫療實體識別取得較大的發展,但是中文醫療實體與英文構詞法不同。本文實現基于自注意力機制[10]的命名實體識別,利用Transformer-CNN-BiLSTM-CRF進行序列標注,提升了模型對醫療實體的識別率,平均F值達94%。
Transformer-CNN-BiLSTM-CRF模型整體結構如圖1所示,模型主要由四部分構成,分別是多層Transformer特征提取層,CNN層,BiLSTM層以及CRF層。

圖1 Transformer-CNN-BiLSTM-CRF網絡結構
基于Transformer網絡可以通過拼接組成多層、泛化性能更好的復雜模型,抽取更多字級、詞級、句子級甚至句間關系特征。之后把多維度序列的特征傳入CNN-Bi LSTM,接下來的部分為CRF層,用于計算每個輸入向量的實體類別標簽,如身體部位(body)、癥狀(symp)等實體類別,使用“B-”代表實體開頭,“I-”代表實體除頭以外字符。
Transformer的核心時編碼器,其內部結構如圖2。

圖2 Transformer編碼器
Transformer對輸入進行位置編碼,免去了序列前后順序的約束:

使用正弦、余弦函數對給定位置的詞語做編碼,表示詞匯之間的位置偏移。
Transformer中最重要的是自注意力機制,在自注意力機制中,每個詞對應3個不同的向量,它們分別是Q矩陣,K矩陣和V矩陣表示,序列輸入后每個字符的打分score由Q和K矩陣相乘得到。

而multi-head attention是將Q向量,K向量和V向量經過線性映射成多份,對每一組矩陣做Attention,輸出h×dv,然后對各組通過注意力運算后的矩陣進行拼接,這樣可以獲得不同位置不同語義空間的特征。本文head參數設為8,隱藏層維度d設為512,這里設置更多的head可以提取到單個字符、專有名詞的詞性特征。

由于多層encoder模型在訓練集上表現變差,在transformer中添加殘差連接,通過添加shortcut connections減輕因為模型復雜而帶來的性能退化問題。
隨著訓練進行,參數經過每一層線性與非線性激活函數后,梯度隨著網絡的加深而增大,Transformer使用Batch normalization對每一層做批歸一化,消除了梯度彌散情況,加快模型收斂速度。

文本序列通過transformer后,輸出高維度的特征矩陣。在序列標注任務之前加入卷積層[11],利用其卷積(conv)和池化(pool)的特性,壓縮矩陣的維度。循環神經網絡模型[12]能按時序獲取卷積后的信息,在算法實現上容易產生梯度消失或爆炸問題。Hochretr[13]提出的包含記憶unit和門機制的LSTM模型,可在更長的時間維度提取特征,消除了梯度彌散的情況。Gravs[14]優化了記憶unit和門機制,本文采用Graves等提出的改進門限機制:

式(7~9)表示表示輸入門、遺忘門和輸出門,均使用前一時刻的隱藏單元與當前時刻信號作為門控單元的輸入。
條件隨機場(Conditional Random Fields,CRF),是對于一組隨機輸入變量(x1,xi…,xn)條件下另外一組隨機輸出變量(y1,yi…,yn)的條件概率分布模型,如果輸出序列滿足Markov[15]獨立假設:

在CRF解碼時,通過轉移概率矩陣A對序列進行打分即:

在訓練過程中,使用對數似然函數是來最大化關于正確標簽序列的概率,如式(14),維特比算法[16]常用于序列解碼,計算現階段的標簽值到第i+1標簽值的最短路徑,即輸出序列幾率最大的組合:

因為醫療數據涉及患者隱私,所以本實驗采用2018年CCKS評測任務二共600份的電子病歷作為實驗數據,CCKS的病歷文本已采取脫敏處理,同時標定癥狀、疾病、藥品、檢查檢驗多個類別實體。本文使用三元集{B,I,O},“B”實體的第一個字符,“I”是其余部分,“O”不屬于任何類型詞。所有實體標簽如表1。

表1 實體標簽
取該CCKS2018中500份病歷當作訓練集,100份當作測試集,分為兩組做統計,各個類型實體分布如表2所示。

表2 CCKS文本數據統計
醫療領域實體識別任務通過召回率R、精確率P和F值來綜合評判,并定義T正確標識的實體,定義F標識無關的實體、Fn為模型沒有檢測到的相關實體個數。

本文的實驗環境是GTX1080Ti的Gpu,python3.6和tensoflow1.14。
實驗一共有四組,模型分別為CRF、BiLSTM-CRF、Word2Vec-BiLSTM-CRF和Transformer-CNN-BiLSTM-CRF。其中基于統計的方法CRF作為基準模型,使用開源工具CRF++,手動添加Unigram模板。
本文設計的Transformer-CNN-BiLSTM-CRF模型采用的多頭注意力機制提取序列特征。在Transformer中設置了6層ecnoders,每個encoder層設置multi-head數目為8。
在測試集上,四個實驗F1曲線如圖3所示。

圖3 F-score曲線
根據表3,Transformer-CNN-BiLSTM-CRF準確率比傳統統計學習的方法提高了6%,F值高了7%。比Word2Vec-BiLSTM-CRF準確率高了0.6%,F值高了2%。

表3 實驗結果
考慮到醫學領域數據較難獲取,從訓練集隨機抽取200份病歷,測試集中抽取40份,對比四個模型在小樣本數據上的結果。如表4所示,基于自注意力機制的方法比F值達到了91.77%。但是基于統計的CRF模型在小樣本數據集的準確率F值只有84.71%,出現這樣的結果是因為CRF時基于訓練序列的概率分布模型,當訓練數據很少時模型所能學習到的信息就會減少,而Transformer依然能充分提取少量數據里的特征,準確率相對較好。

表4 小樣本實驗
雖然Transformer-CNN-BiLSTM-CRF總體準確率提升很多,但是其對不同類型實體識別的結果卻不同,如表5所示。

表5 各類型實體識別結果
其中藥品drug識別準確率偏低,主要原因是藥品名稱中包含身體器官或組織的名稱,同時存在修飾詞導致名稱過長、歧義等信息的干擾。在這些drug實體沒有充足上下文時容易預測錯誤。
以上實驗結果表明,雖然基于統計的CRF方法在測試集上的準確度有一定提升,但是需要手動添加特征模板,這都需要花費很多時間。而自注意力模型不但省去了這一環節,而且在把握語義方面比word2vec訓練的靜態語言模型更加精準,這與Transformer中的自注意力機制選擇信息特征的能力有著密不可分的關系,使得命名實體識別任務提升比較大。
近年來,中文醫療命名實體識別任務借助深度學習方法取得了快速的發展,本文使用基于自注意力機制的Transformer-CNN-BiLSTM-CRF模型。該模型將使用文本數據進行位置編碼作為輸入,對比使用循環神經網絡,Transformer不依賴上下文支持并行計算的特點,加快了模型訓練的速度,同時模型可以充分學習文本的特征信息,增強了字符間的推理能力。雖然Transformer-CNN-BiLSTMCRF比傳統的命名實體識別模型效果有所提升,但是對于嵌套、修飾詞過長的部分醫療實體較難準確抽取,未來還有很多問題有待研究。