李正輝,廖光忠
(1.武漢科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,湖北 武漢 430065;2.武漢科技大學(xué) 智能信息處理與實(shí)時(shí)工業(yè)系統(tǒng)湖北省重點(diǎn)實(shí)驗(yàn)室,湖北 武漢 430065)
命名實(shí)體識(shí)別(Named Entity Recognition,NER)[1]作為自然語言處理(Nature Language Processing,NLP)的一項(xiàng)基本任務(wù),旨在精準(zhǔn)定位與識(shí)別文本信息中的預(yù)定義實(shí)體類型。近年來,隨著信息技術(shù)的快速發(fā)展,自然語言處理的研究也逐漸融入各行各業(yè),其中醫(yī)療領(lǐng)域的命名實(shí)體識(shí)別受到業(yè)界的廣泛關(guān)注。
雖然命名實(shí)體識(shí)別在諸如機(jī)構(gòu)名、人名、地點(diǎn)和職務(wù)等實(shí)體識(shí)別上取得了很高的成就[2],但是從中文醫(yī)療文本中提取實(shí)體是一個(gè)更復(fù)雜的任務(wù)[3]。首先,提取的實(shí)體類型易混淆,例如“左肺上葉”是屬于“病理”類型還是“影像”類型;其次,數(shù)據(jù)中存在嵌套問題也是導(dǎo)致醫(yī)療實(shí)體識(shí)別精度下降的原因,如“患者呼吸中樞受累”這句話中,“呼吸中樞受累”的實(shí)體類型是“癥狀”,而“呼吸中樞”是“部位”類型;最后,中文醫(yī)療實(shí)體識(shí)別某些類型比較長,這會(huì)造成識(shí)別這類實(shí)體時(shí)邊界定位錯(cuò)誤,從而導(dǎo)致整體效果變差。此外,中文醫(yī)療文本中的標(biāo)注錯(cuò)誤和錯(cuò)別字等問題也會(huì)影響命名實(shí)體識(shí)別模型。針對(duì)以上問題,該文提出一種融合BERT預(yù)訓(xùn)練[4]、雙向長短期記憶網(wǎng)絡(luò)(BILSTM)[5]和結(jié)合注意力機(jī)制[6]的一維空洞卷積神經(jīng)網(wǎng)絡(luò)(Iterated Dilated Convolutional Neural Network,IDCNN)[7]的醫(yī)療實(shí)體識(shí)別模型,相較于傳統(tǒng)模型,主要貢獻(xiàn)如下:
(1)使用BERT預(yù)訓(xùn)練加強(qiáng)字與句子的聯(lián)系,使詞向量在擁有位置信息的同時(shí),語法語義特征也得到強(qiáng)化,降低數(shù)據(jù)中易混淆實(shí)體類型對(duì)模型的影響。
(2)從多層次提取醫(yī)療文本特征。在BERT語言模型訓(xùn)練好詞向量的基礎(chǔ)上,使用BILSTM模塊提取上下文信息;使用IDCNN模塊捕獲更長距離的特征信息,并且為了不遺漏細(xì)節(jié)特征加入注意力機(jī)制。最后在輸入條件隨機(jī)場(chǎng)(CRF)[8]預(yù)測(cè)實(shí)體前進(jìn)行特征融合,得到蘊(yùn)含多層次特征的詞向量。
(3)分層設(shè)置學(xué)習(xí)率和學(xué)習(xí)率衰減策略。為了使模型效果更好,在訓(xùn)練時(shí)利用學(xué)習(xí)率衰減策略和分層設(shè)置學(xué)習(xí)率,得到更好的結(jié)果,另外為了避免模型過擬合,每個(gè)模塊都加入隨機(jī)失活(Dropout)層。
命名實(shí)體識(shí)別研究包括統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法和深度學(xué)習(xí)方法。隨著近年來人工智能技術(shù)的發(fā)展,統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法費(fèi)時(shí)費(fèi)力,深度學(xué)習(xí)方法已成為業(yè)內(nèi)研究的焦點(diǎn)。當(dāng)前基于深度學(xué)習(xí)的NER的思路主要分為序列標(biāo)注和基于分類兩類。其中,序列標(biāo)注方法最為常見。BILSTM-CRF是實(shí)體識(shí)別中主流的模型,對(duì)中文和英文的數(shù)據(jù)都有良好的效果。李妮等人[9]使用改進(jìn)傳統(tǒng)的卷積后的空洞卷積,在實(shí)體識(shí)別方面取得不錯(cuò)的成果。Li等人[10]提出FLAT模型,改良lattice結(jié)構(gòu),在性能和效率上都優(yōu)于其他基于詞匯的模型。為了進(jìn)一步提高實(shí)體識(shí)別的精度,Li等人[11]采用負(fù)采樣的思想,可以有效降低未標(biāo)記實(shí)體帶來的誤導(dǎo)。崔少國等人[12]融合漢字圖形和五筆等特征更進(jìn)一步提升了模型的效果。另外,在2018年由Google AI研究院提出的預(yù)訓(xùn)練模型BERT也對(duì)實(shí)體識(shí)別精度的提升有很大的幫助。
受到以上研究的啟發(fā),該文為解決中文醫(yī)療實(shí)體識(shí)別中存在的實(shí)體類型易混淆、數(shù)據(jù)嵌套和實(shí)體類型過長等問題,提出一種融合BERT預(yù)訓(xùn)練、BILSTM和結(jié)合注意力機(jī)制的IDCNN模型,可以從多層次提取醫(yī)療文本的特征,有效提高醫(yī)療實(shí)體識(shí)別的準(zhǔn)確度。
該文設(shè)計(jì)了一種新的中文醫(yī)療實(shí)體識(shí)別模型,其整體結(jié)構(gòu)框架如圖1所示。在嵌入層,模型將輸入的醫(yī)療文本通過BERT層化為詞向量表示;在特征提取層,將詞向量分別通過BILSTM層和融合注意力機(jī)制的IDCNN層,再將這三者詞向量融合得到多層次語義特征向量;在輸出層,通過CRF得到預(yù)測(cè)的結(jié)果。
由于輸入嵌入層的醫(yī)療文本中存在易混淆的類別并且可能有錯(cuò)字等問題,易影響模型性能。而BERT語言模型歷經(jīng)幾代預(yù)訓(xùn)練模型的迭代,克服了Word2Vec模型訓(xùn)練的缺點(diǎn)——詞向量是靜態(tài)的,無法表示一詞多義;綜合ELMO和GPT模型的優(yōu)勢(shì),做到獲取每個(gè)字詞在當(dāng)前句子中的上下文信息[13]。因此選用BERT作為嵌入層。
BERT的總體結(jié)構(gòu)如圖2所示,主要應(yīng)用Transform[14]中的編碼器(encoder),使用多個(gè)encoder組成圖2中的Trm單元,使得最終的詞向量具有很好的位置特征、句法特征和語義特征。
圖2 BERT整體結(jié)構(gòu)
Trm單元結(jié)構(gòu)如圖3所示。對(duì)于輸入序列s=(C1,C2,…,Cn),其中Ci表示醫(yī)療文本輸入句子的第i個(gè)字。首先通過Word2Vec得到該字的特征向量表示ei=[ew(Ci)],ew是Word2Vec初始化矩陣。并且需要疊加位置編碼,這是因?yàn)閷?duì)于文本序列來說,獲取句子中每個(gè)字的相對(duì)位置很重要,其計(jì)算如公式(1)所示:
圖3 Trm單元結(jié)構(gòu)
(1)
其中,pos表示單詞的位置,i表示單詞的維度。然后到了encoder的關(guān)鍵部分,采用注意力思想使輸入序列中每個(gè)詞向量獲取其與其他詞向量的關(guān)聯(lián)程度。具體計(jì)算如公式(2)所示:
(2)
其中,Q,K,V是詞向量矩陣,dk是詞向量的維度。而這里使用的多頭注意力機(jī)制是基于注意力機(jī)制的基礎(chǔ),先將每個(gè)詞向量拆分成多個(gè)詞向量,然后對(duì)每個(gè)拆分的詞向量單獨(dú)做自注意力機(jī)制,最后將不同的結(jié)果拼接起來,計(jì)算如公式(3)所示:
(3)
因此,詞向量就能得到不同空間的句法特征,其中W是權(quán)重矩陣。最后經(jīng)過全連接前饋網(wǎng)絡(luò)(FFN)做非線性變換,計(jì)算如公式(4)所示:
FFN(Z)=Relu(ZW1+b1)W2+b2
(4)
其中,Relu()是激活函數(shù),W1、W2是權(quán)重矩陣,Z是經(jīng)過多頭注意力機(jī)制的詞向量表示,b1、b2是偏置量。另外在流程中,多頭注意力機(jī)制和全連接前饋網(wǎng)絡(luò)分別經(jīng)過一層殘差網(wǎng)絡(luò)和歸一化是為了避免梯度消失和梯度爆炸。
特征提取層的目的是基于BERT預(yù)訓(xùn)練,并結(jié)合BILSTM和融入注意力機(jī)制的IDCNN對(duì)醫(yī)療文本進(jìn)行多層次的特征提取,特征提取層有三大部分:BILSTM模塊、IDCNN+注意力機(jī)制模塊和特征融合模塊。
2.3.1 BILSTM模塊
BILSTM是由雙向LSTM網(wǎng)絡(luò)組合而成,通過對(duì)輸入的醫(yī)療文本序列做順序和逆序的計(jì)算,提取序列中的上下文信息,最終得到訓(xùn)練好的詞向量序列。實(shí)現(xiàn)其功能的主要單元為LSTM,其結(jié)構(gòu)如圖4所示。LSTM記憶單元是由輸入門、細(xì)胞狀態(tài)、臨時(shí)細(xì)胞狀態(tài)、隱層狀態(tài)、遺忘門、記憶門、輸出門組成。其核心思想為,通過對(duì)細(xì)胞狀態(tài)中信息遺忘和記憶新的信息使得對(duì)后續(xù)時(shí)刻計(jì)算有用的信息得以傳遞,而無用的信息被丟棄,并在每個(gè)時(shí)間步都會(huì)輸出隱層狀態(tài),其中遺忘、記憶與輸出由通過上個(gè)時(shí)刻的隱層狀態(tài)和當(dāng)前輸入計(jì)算出來的遺忘門、記憶門、輸出門來控制。計(jì)算如式(5)所示:
圖4 LSTM單元結(jié)構(gòu)
(5)
2.3.2 IDCNN+注意力機(jī)制模塊
為了進(jìn)一步提取醫(yī)療文本的特征信息,選用變體的卷積神經(jīng)網(wǎng)絡(luò)IDCNN,這是因?yàn)橄噍^于BILSTM網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)對(duì)局部特征的提取效果更好,并且IDCNN在標(biāo)準(zhǔn)卷積的基礎(chǔ)上注入空洞,能夠在不通過池化損失信息的情況下增加感受野,對(duì)輸入中的較長實(shí)體能夠分詞更加準(zhǔn)確。另外因IDCNN模塊的特性,不會(huì)造成整體模型參數(shù)過大和訓(xùn)練時(shí)間過長。
空洞卷積與標(biāo)準(zhǔn)卷積的區(qū)別如圖5所示,通過這種方式,在卷積核大小不變的條件下,就能得到更大的感受域。空洞卷積的感受域計(jì)算公式如式(6),其中i代表步長。
圖5 空洞卷積與標(biāo)準(zhǔn)卷積
Fi+1=(2i+2-1)×(2i+2-1)
(6)
IDCNN模塊則是將4個(gè)結(jié)構(gòu)相同的膨脹卷積塊進(jìn)行堆疊,相當(dāng)于進(jìn)行了4次迭代,每次迭代將前一次的結(jié)果作為輸入,這種參數(shù)共享可有效防止模型過擬臺(tái),每個(gè)膨脹卷積塊有膨脹寬度分別為1.1.2的3層膨脹卷積。通過IDCNN模塊,經(jīng)過BERT預(yù)訓(xùn)練的詞向量將能更好地提取文本中的特征。
雖然IDCNN可使感受域變大,能有效提取更長文本的特征,但提取的特征不會(huì)都是有用的信息,因此還需經(jīng)注意力機(jī)制進(jìn)行醫(yī)療文本的篩選。這里使用BERT模塊中的多頭注意力機(jī)制,經(jīng)過式(3)的計(jì)算,詞向量將能得到更好的特征信息。
2.3.3 特征融合模塊
經(jīng)過上述模塊后,分別得到能夠準(zhǔn)確識(shí)別自己的詞向量Xi、捕獲具有上下文信息的詞向量Yi和更長特征的詞向量Zi,為使最終的詞向量Ci擁有以上所有特征并不造成模型過擬合,先以公式(7)對(duì)詞向量進(jìn)行拼接,然后經(jīng)過Dropout層,最后將其輸入CRF層。
Ci=Concat(Xi,Yi,Zi)
(7)
式中,i為序號(hào)。
CRF模型常用于序列標(biāo)注任務(wù)中的輸出層,其可以通過學(xué)習(xí)給定數(shù)據(jù)集中標(biāo)簽之間的轉(zhuǎn)移概率從而修正特征提取層的輸出,確保最終預(yù)測(cè)輸出的合理性。
將文中模型與各基線模型在CMeEE[15]和Yidu-S4K數(shù)據(jù)集上進(jìn)行對(duì)比實(shí)驗(yàn),評(píng)估各模型的輸出結(jié)果,并進(jìn)行結(jié)果分析。
采用的數(shù)據(jù)集為國內(nèi)公開的中文醫(yī)療評(píng)測(cè)數(shù)據(jù)集,CMeEE數(shù)據(jù)集是中文醫(yī)學(xué)語言理解測(cè)評(píng)(CBLUE)中命名實(shí)體識(shí)別任務(wù)所使用的數(shù)據(jù)集,包含訓(xùn)練集15 000條句子,驗(yàn)證集5 000條句子,每條句子中包含的實(shí)體類型和數(shù)量不等,總計(jì)分為9大實(shí)體類型,包括:疾病(dis)、臨床表現(xiàn)(sym)、藥物(dru)、醫(yī)療設(shè)備(equ)、醫(yī)療程序(pro)、身體(bod)、醫(yī)學(xué)檢驗(yàn)項(xiàng)目(ite)、微生物類(mic)、科室(dep)。Yidu-S4K數(shù)據(jù)集是醫(yī)渡云(北京)技術(shù)有限公司用于醫(yī)療命名實(shí)體識(shí)別評(píng)測(cè)任務(wù)的數(shù)據(jù)集,其包含:疾病和診斷、檢查、檢驗(yàn)、手術(shù)、藥物、解剖部位6種實(shí)體類型。表1和表2分別展示了CMeEE數(shù)據(jù)集和Yidu-S4K數(shù)據(jù)集的分布情況。
表1 CMeEE數(shù)據(jù)集分布情況 /個(gè)
表2 Yidu-S4K數(shù)據(jù)集分布情況 /個(gè)
從上述兩個(gè)表格可以看出,CMeEE數(shù)據(jù)集規(guī)模較大,而Yidu-S4K數(shù)據(jù)集規(guī)模較小。通過這兩個(gè)實(shí)體類型相似而規(guī)模不同的數(shù)據(jù)集,能進(jìn)一步驗(yàn)證模型的泛化能力。
實(shí)驗(yàn)中兩份數(shù)據(jù)集都使用BIO標(biāo)注體系進(jìn)行數(shù)據(jù)的標(biāo)注。在BIO標(biāo)注體系中,B代表實(shí)體的開始位置,I代表實(shí)體的內(nèi)部,O代表非實(shí)體部分。并且將兩份原始數(shù)據(jù)集都分別重新劃分?jǐn)?shù)據(jù)集與測(cè)試集,其劃分比例為7∶3。
使用如下三個(gè)指標(biāo)來衡量模型的精準(zhǔn)度:精準(zhǔn)率(Precision,P)、召回率(Recall,R)和F1值(F1)。為計(jì)算這三個(gè)指標(biāo),需使用混淆矩陣,如表3所示。該混淆矩陣由以下四個(gè)元素組成,真正例:TP;真負(fù)例:TN;假正例:FP;假負(fù)例:FN。
表3 實(shí)驗(yàn)參數(shù)
精準(zhǔn)率P表示預(yù)測(cè)為正例的樣本中真正正例的比例,表達(dá)式如公式(8)所示:
(8)
召回率R表示預(yù)測(cè)為正例的真實(shí)正例占所有正例的比例,表達(dá)式如公式(9)所示:
(9)
F1值是精確率和召回率的合成指標(biāo),綜合了二者的結(jié)果,取值范圍為[0,1],F1值越髙,代表模型的綜合性能越好,表達(dá)式如公式(10)所示:
(10)
實(shí)驗(yàn)環(huán)境為Window 10操作系統(tǒng)、CPU Intel Core i5-8400 4.0 GHz、16 GB RAM以及NVIDIA GTX 1050Ti圖形處理器。模型框架為Python3.7.0、Keras 2.3.1和tensorflow-gpu 2.4.0。
實(shí)驗(yàn)?zāi)P椭兴褂玫恼Z言模型BERT的版本為bert-base-chinese,訓(xùn)練方式為自動(dòng)檢查點(diǎn)機(jī)制,若當(dāng)前epoch的結(jié)果好于當(dāng)前最優(yōu)記錄,將自動(dòng)地將此輪epoch學(xué)習(xí)到的參數(shù)進(jìn)行轉(zhuǎn)儲(chǔ),并更新最優(yōu)記錄。并且為了更好地優(yōu)化模型參數(shù),使用學(xué)習(xí)率衰減策略和分層設(shè)置學(xué)習(xí)率的方法。學(xué)習(xí)率衰減策略是每當(dāng)模型經(jīng)過5輪訓(xùn)練后性能沒提升,就縮小當(dāng)前設(shè)置的學(xué)習(xí)率,再繼續(xù)訓(xùn)練直到訓(xùn)練輪數(shù)結(jié)束。使用分層設(shè)置學(xué)習(xí)率是因?yàn)樵搶?shí)驗(yàn)需要在預(yù)訓(xùn)練模型基礎(chǔ)上對(duì)下游任務(wù)進(jìn)行微調(diào),因此自定義的模塊初始需要較大的學(xué)習(xí)率。另外的一些其他參數(shù)設(shè)置見表3。
為了驗(yàn)證模型的優(yōu)越性,將文中模型與現(xiàn)有主流模型進(jìn)行對(duì)比實(shí)驗(yàn)以及與自身進(jìn)行的消融實(shí)驗(yàn)。
(1)BERT-BILSTM-CRF模型[16]。該模型是現(xiàn)有常用于序列標(biāo)注任務(wù)的模型之一。
(2)BERT-BILSTM-CRF(*)模型。該模型與模型(1)的不同點(diǎn)為將經(jīng)過BERT-BILSTM的詞向量與通過BERT預(yù)訓(xùn)練的詞向量拼接融合后再輸入到CRF層。
(3)BERT-IDCNN-CRF模型[9]。該模型將BILSTM層換成IDCNN層。
(4)BERT-IDCNN-CRF(*)模型。該模型與模型(3)的不同點(diǎn)為將經(jīng)過BERT-IDCNN的詞向量與通過BERT預(yù)訓(xùn)練的詞向量拼接融合后再輸入到CRF層。
(5)BERT-IDCNN-CRF(**)模型。該模型在模型(4)的基礎(chǔ)上,在IDCNN后加入多頭注意力機(jī)制。
(6)FLAT模型[10]。該模型改良了lattice結(jié)構(gòu),提出相對(duì)位置編碼。
(7)BILSTM-CRF模型。早期泛用的實(shí)體識(shí)別模型,相較于模型(1),減少了BERT層。
對(duì)于對(duì)比實(shí)驗(yàn),使用上述模型(2)(4)和(5)與文中模型在兩個(gè)不同數(shù)據(jù)集上進(jìn)行對(duì)比。對(duì)于消融實(shí)驗(yàn),為了驗(yàn)證文中模型結(jié)構(gòu)的有效性,使用上述模型(2)(4)和(5)與文中模型在數(shù)據(jù)集Yidu-S4K上進(jìn)行對(duì)比。
針對(duì)上述實(shí)驗(yàn),使用3.2小節(jié)所述的評(píng)價(jià)指標(biāo)P、R和F1值進(jìn)行評(píng)估。對(duì)比實(shí)驗(yàn)結(jié)果如表4所示。
從表4的實(shí)驗(yàn)結(jié)果可以分析出,BEET預(yù)訓(xùn)練對(duì)詞向量的增強(qiáng)效果是明顯的,在CMeEE數(shù)據(jù)集上F1從61.41%提升到69.76%,在Yidu-S4K數(shù)據(jù)集上F1從70.97%提升到79.77%,說明BEER能夠增強(qiáng)詞向量的語法語義特征。并且當(dāng)在BERT預(yù)訓(xùn)練的基礎(chǔ)上進(jìn)一步融合上下文和更廣的感受野信息,模型的性能大大提高,在兩個(gè)數(shù)據(jù)集上F1值分別提高了1.40百分點(diǎn)和2.29百分點(diǎn),可見從多層次提取特征信息有效提高了醫(yī)療實(shí)體識(shí)別的精確度。另外,模型在這兩個(gè)規(guī)模不一樣的數(shù)據(jù)集上都有良好表現(xiàn),驗(yàn)證了模型的泛化性。
為進(jìn)一步驗(yàn)證模型的可靠性與泛用性,在CMeEE數(shù)據(jù)集上與近年來剛發(fā)表的醫(yī)療實(shí)體識(shí)別模型進(jìn)行對(duì)比實(shí)驗(yàn),在使用相同的參數(shù)與數(shù)據(jù)集的前提下,實(shí)驗(yàn)結(jié)果如表5所示。從中可以看出,雖然文中模型對(duì)比文獻(xiàn)[17-19]的模型提升性能不大,但是卻反映出文中模型擁有著不輸于近年來新發(fā)表的醫(yī)療實(shí)體識(shí)別模型的性能。
消融實(shí)驗(yàn)的結(jié)果如表6所示。對(duì)比兩個(gè)基于IDCNN模塊的模型,F1值從79.99%上升到80.71%,說明多頭注意力機(jī)制能夠在IDCNN獲取更大感受野的同時(shí)不遺漏細(xì)節(jié)特征。此外,從表中F1值的提高可以看出,多層次提取特征后的確可以提升模型的識(shí)別效率,并且在多個(gè)特征提取融合后能進(jìn)一步增強(qiáng)其效果,同時(shí)也驗(yàn)證了文中模型的有效性和結(jié)構(gòu)的合理性。
表6 模型消融實(shí)驗(yàn) %
中文醫(yī)療實(shí)體識(shí)別是醫(yī)療領(lǐng)域文本信息抽取的基礎(chǔ)任務(wù),具有較大的理論研究和實(shí)際應(yīng)用價(jià)值。該文提出一種融合BERT預(yù)訓(xùn)練、雙向長短期記憶網(wǎng)絡(luò)和結(jié)合注意力機(jī)制的一維空洞卷積網(wǎng)絡(luò)的實(shí)體識(shí)別模型,在多層次充分提取了醫(yī)療文本的語法和語義特征,有效緩解了醫(yī)療文本中語法不規(guī)范、實(shí)體嵌套和類型易混淆等問題,在兩個(gè)不同的數(shù)據(jù)集上表現(xiàn)出不錯(cuò)的性能。
但是中文醫(yī)療實(shí)體識(shí)別是一個(gè)復(fù)雜的任務(wù),還有很多需要面臨的挑戰(zhàn),識(shí)別精度還有進(jìn)一步提升的空間。未來將繼續(xù)增強(qiáng)模型的魯棒性和考慮引入例如字典和字形圖形等額外信息以增強(qiáng)模型性能。