卓瑪措,桑杰端珠,才讓加,羊毛卓么
(省部共建藏語智能信息處理及應(yīng)用國家重點(diǎn)實(shí)驗室,青海 西寧810008)
醫(yī)學(xué)實(shí)體識別(Medical Entity Recognition,MER)[1]是臨床自然語言處理(Clinical Natural Language Processing,CNLP)的基礎(chǔ)性任務(wù)之一,它為醫(yī)學(xué)方面的信息檢索、臨床診斷等下游臨床自然語言處理任務(wù)提供重要的特征信息。早期的實(shí)體識別方法更多地依賴人工特征工程以及許多現(xiàn)成的工具包,并且較難實(shí)現(xiàn)領(lǐng)域適應(yīng)。然而近年來,深度學(xué)習(xí)的發(fā)展減少了模型對人工特征工程以及工具包的依賴[2-13]。特別是在實(shí)體識別任務(wù)方面,有一種網(wǎng)格長短期記憶(Lattice-LSTM)模型在中文命名實(shí)體識別任務(wù)上取得了較好的效果[14]。由于Lattice-LSTM網(wǎng)絡(luò)結(jié)構(gòu)能夠?qū)@性的字信息和該字隱性的詞信息充分融合,因此可以有效避免分詞錯誤向下游任務(wù)的傳遞。
針對藏文通用領(lǐng)域的實(shí)體識別研究,已經(jīng)有一些研究結(jié)果[15-17]。但是,面向藏文臨床文本的自然語言處理資源稀缺導(dǎo)致相應(yīng)的工具包十分匱乏,極大地影響了藏文臨床自然語言處理的發(fā)展進(jìn)程。特別是面向藏文臨床文本的醫(yī)學(xué)實(shí)體識別研究還處于起步階段。
鑒于此,本文旨在開展針對藏文臨床病歷的醫(yī)學(xué)實(shí)體識別研究工作。因此,本文基于Lattice LSTM CRF深度學(xué)習(xí)模型并結(jié)合藏語的音節(jié)(一個音節(jié)相當(dāng)于漢語中的一個字)特征構(gòu)建了適合藏文臨床病歷實(shí)體識別的S-Lattice LSTM(音節(jié)網(wǎng)格長短期記憶)模型。藏文詞匯是構(gòu)成藏文句子的基本單元,而藏文音節(jié)是構(gòu)成藏文詞匯的基本單位。S-Lattice LSTM網(wǎng)絡(luò)結(jié)構(gòu)能夠?qū)⒉匚牡囊艄?jié)信息和該音節(jié)隱性的詞信息充分融合,從而有效避免分詞錯誤向下游任務(wù)的傳遞。實(shí)驗結(jié)果表明,本文的方法對藏文臨床病歷文本的醫(yī)學(xué)實(shí)體識別正確率、召回率和F1值分別達(dá)到91.89%、93.15%和92.52%,取得了較好的識別性能。
在英文領(lǐng)域,Hammerton等人首次采用神經(jīng)網(wǎng)絡(luò)進(jìn)行實(shí)體識別的研究,使用了單向LSTM模型。由于LSTM模型良好的序列建模能力,LSTM-CRF模型成為實(shí)體識別的基礎(chǔ)架構(gòu)之一,很多方法都是以LSTM-CRF為主體框架,在此之上融入各種相關(guān)特征[18]。本文將LSTM-CRF作為主要網(wǎng)絡(luò)結(jié)構(gòu)并結(jié)合藏語的音節(jié)特征,在該模型對一系列輸入字符(包含藏語的音節(jié))進(jìn)行編碼的同時將所有與詞典匹配的詞匯網(wǎng)格結(jié)構(gòu)融入模型中。
表1 藏文臨床病歷醫(yī)學(xué)實(shí)體識別的音節(jié)序列和標(biāo)記序列舉例
基于音節(jié)的實(shí)體識別模型輸入向量為音節(jié)序列。此模型存在一種顯著缺陷,即忽略了詞序以及詞的顯性信息。模型如圖1所示。
圖1 基于音節(jié)的模型
基于詞的模型原理與基于音節(jié)的模型類似,區(qū)別就在于此模型輸入的向量為分詞后的詞序列。因此,這種模型會導(dǎo)致分詞錯誤的傳遞,并最終影響實(shí)體識別的性能。模型如圖2所示。
圖2 基于詞的模型
本文采用S-Lattice LSTM模型來處理句子中的藏語詞匯詞(lexicon word),從而把所有潛在的藏語詞信息整合到基于藏文音節(jié)的LSTM-CRF基本框架中。本文采用構(gòu)建的詞表對句子進(jìn)行匹配,從而構(gòu)建基于詞的藏文Lattice網(wǎng)格。因為網(wǎng)格中存在詞到音節(jié)的指數(shù)級數(shù)量的路徑,因此,對藏文臨床病歷中的句子從左到右的信息流使用Lattice LSTM模型結(jié)構(gòu)來進(jìn)行自動控制。門控神經(jīng)單元將來自不同路徑的信息動態(tài)的傳送到每一個藏文音節(jié)。在完成數(shù)據(jù)的訓(xùn)練后,S-Lattice LSTM模型能夠?qū)W會自動從信息流中找到有用的詞,從而提升醫(yī)學(xué)實(shí)體識別性能,整體模型框架如圖3所示。與基于藏文音節(jié)和基于藏文詞的實(shí)體識別方法相比,本文的模型利用詞匯的顯性信息對句子進(jìn)行分詞,而不只是自動關(guān)注。因此,減少了分詞帶來的誤差。
圖3 S-Lattice LSTM模型
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)在理論上可以處理任意長度的序列信息,但是在實(shí)際應(yīng)用中,如果序列太長就會出現(xiàn)梯度消失現(xiàn)象,并且也不容易學(xué)會長時間依賴的特征。為此,Graves等人對RNN進(jìn)行了改進(jìn),提出了LSTM 模型[19]。LSTM 模塊通過輸入、輸出和遺忘三個模塊來控制信息的傳輸。長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM),是一種特殊的RNN,能夠?qū)W習(xí)長期的規(guī)律,它們在各種各樣的NLP任務(wù)上應(yīng)用非常廣泛。LSTM編碼單元如圖4所示。
圖5 迭代次數(shù)和 P、R 和 F1 值的變化趨勢
it=σ(Wiht-1+Ui+bi)
(1)
ft=σ(Wfht-1+Ufxt+bf)
(2)
(3)
(4)
ot=σ(Woht-1+Uoxt+bo)
(5)
ht=ot⊙tanh(ct)
(6)
其中,σ表示Sigmoid 激活函數(shù),⊙是點(diǎn)積。xt表示t時刻的輸入向量,ht表示t時刻的隱藏狀態(tài),也表示輸出向量,包含前面t時刻的全部有用信息。ct是一個改良模塊,掌控信息傳入下一個環(huán)節(jié);ft是一個復(fù)位模塊,掌控信息遺失;而隱藏狀態(tài)的輸出是由二者共同決定的。
3.1.1 音節(jié)向量
為了構(gòu)建藏語音節(jié)向量,本文從中國藏族網(wǎng)通網(wǎng)站下載了包含4.53億個音節(jié)的新聞數(shù)據(jù),并用GloVe[20]模型進(jìn)行訓(xùn)練,生成的音節(jié)向量維度為50。
3.1.2 實(shí)驗數(shù)據(jù)集
由于目前藏文臨床病歷醫(yī)學(xué)實(shí)體識別缺乏公開的標(biāo)注數(shù)據(jù)集,因此本文對現(xiàn)有的530份電子病歷進(jìn)行標(biāo)注構(gòu)建了一個藏文臨床病歷醫(yī)學(xué)實(shí)體識別數(shù)據(jù)集。對以上病歷數(shù)據(jù)以病歷文檔為單位進(jìn)行任意比例的劃分,其中由305份文檔構(gòu)成訓(xùn)練集,由225份文檔構(gòu)成測試集。本數(shù)據(jù)集中包含癥狀 (SYMPTOM)、方劑 (PRESCRIPTION)和疾病 (DISEASE)三大類醫(yī)學(xué)類實(shí)體,其類別數(shù)量分布如表2所示。
表2 藏文臨床病歷醫(yī)學(xué)實(shí)體識別數(shù)據(jù)集
常見的醫(yī)學(xué)實(shí)體識別標(biāo)注方法有OBI 策略,OBIE策略,SOBIE策略。本文采用的是SOBIE標(biāo)注策略,其中B是實(shí)體的首部,I是實(shí)體的內(nèi)部,E是實(shí)體的尾部。O表示非實(shí)體或?qū)嶓w外部,S表示單音節(jié)實(shí)體。實(shí)體識別包括預(yù)測實(shí)體的邊界和實(shí)體的類型,所以待預(yù)測的標(biāo)簽一共11種,分別是O,S,B-S,I-S,E-S,B-D,I-D,E-D,B-P,I-P,E-P。當(dāng)識別實(shí)體時,只有在一個實(shí)體的邊界和類型都預(yù)測的完全正確時,才認(rèn)為該實(shí)體被準(zhǔn)確識別。
藏文臨床病歷實(shí)體的識別性能評測指數(shù)有正確率(P)、召回率(R)和綜合指數(shù)F1值。具體計算方法如式(7)所示。其中Tp表示模型準(zhǔn)確識別的實(shí)體個數(shù),Fp表示模型識別到的無關(guān)實(shí)體個數(shù),Fn表示同類實(shí)體但模型沒有準(zhǔn)確識別的個數(shù)。
(7)
本研究中的實(shí)驗環(huán)境為Python 2.7,深度學(xué)習(xí)框架為Pytorch 0.3.0.post4
神經(jīng)網(wǎng)絡(luò)的超參數(shù)取值會影響神經(jīng)網(wǎng)絡(luò)的性能。本文的神經(jīng)網(wǎng)絡(luò)超參設(shè)置如表3所示。
表3 神經(jīng)網(wǎng)絡(luò)超參取值
為了驗證本研究中所使用的模型對藏文臨床病歷實(shí)體識別數(shù)據(jù)集中的癥狀、疾病、方劑三大類實(shí)體的識別性能,分別設(shè)計了以下兩組實(shí)驗。實(shí)驗的評測指數(shù)有正確率(P)、召回率(R)和綜合指數(shù)F1值。
實(shí)驗1 不同模型對藏文臨床病歷實(shí)體識別結(jié)果比較。表4分別給出了CRF(條件隨機(jī)場)模型和S-Lattice LSTM模型的識別結(jié)果。
表4 不同模型對藏文臨床病歷文本實(shí)體識別性能對比(%)
實(shí)驗結(jié)果表明,S-Lattice LSTM模型的F1值比CRF模型的F1值提升了2.55%,這說明深度神經(jīng)網(wǎng)絡(luò)模型比傳統(tǒng)的統(tǒng)計模型在藏文臨床病歷實(shí)體識別任務(wù)上表現(xiàn)性能較好。并且證明使用表示學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)模型可以較大程度的減少模型對人工特征的過度依賴。
實(shí)驗2 基于詞向量的CNN-BiLSTM-CRF模型與S-Lattice LSTM模型對藏文臨床病歷文本進(jìn)行實(shí)體識別性能對比。S-Lattice LSTM模型可以同時對音節(jié)序列信息和它對應(yīng)的詞序信息進(jìn)行編碼,并且提供給模型自動取用。相較于音節(jié)粒度(字符級)的編碼,后者加入了詞信息,豐富了語義表達(dá),可以有效避免分詞錯誤傳遞問題。表5說明了S-Lattice LSTM模型能有效提升實(shí)體識別的性能。
表5 基于詞向量的模型與S-Lattice LSTM模型的性能對比(%)
癥狀、疾病和方劑三類實(shí)體的正確率(P)、召回率(R)和綜合指數(shù)F1值如表6所示。
表6 不同類型實(shí)體識別結(jié)果
以某份住院病歷中的一個句子為例展示S-Lattice LSTM模型的實(shí)體識別效果。具體實(shí)例如表7所示。
表7 藏文臨床病歷文本醫(yī)學(xué)實(shí)體識別實(shí)例
本文針對藏文臨床病歷中醫(yī)學(xué)類實(shí)體的識別問題,提出了一種適用于藏文臨床病歷醫(yī)學(xué)實(shí)體識別的深度神經(jīng)網(wǎng)絡(luò)模型。該結(jié)構(gòu)用網(wǎng)格LSTM來代替?zhèn)鹘y(tǒng)的LSTM單元,在藏文音節(jié)模型的輸入端同時利用顯性的藏文詞匯和詞序信息。因此,有效避免了分詞錯誤向下游任務(wù)的傳遞。整體架構(gòu)的隱藏層是具有長短期記憶功能的LSTM模型,解決了藏文臨床病歷中部分結(jié)構(gòu)較長的醫(yī)學(xué)實(shí)體識別準(zhǔn)確率較低的問題;最后的標(biāo)簽推理層使用CRF模塊,解決文本序列標(biāo)簽之間的依賴問題。在已構(gòu)建的藏文臨床病歷醫(yī)學(xué)實(shí)體識別數(shù)據(jù)集上進(jìn)行實(shí)驗,結(jié)果證明S-Lattice LSTM模型是有效的。
基于深度學(xué)習(xí)的藏文臨床病歷醫(yī)學(xué)實(shí)體識別模型S-Lattice LSTM 也可以推廣到其它具有類似特點(diǎn)的垂直領(lǐng)域,具有一定的通用性。