梁宇進(jìn),符傳山,陳勁松,陳 銘,周 躍,徐 倩,
(1.吉首大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,湖南 吉首 416000;2.吉首大學(xué)醫(yī)學(xué)院,湖南 吉首 416000;3.醫(yī)學(xué)信息研究湖南省普通高等學(xué)校重點(diǎn)實(shí)驗(yàn)室(中南大學(xué)),湖南 長(zhǎng)沙 410013)
國(guó)際糖尿病聯(lián)盟(International Diabetes Federation,IDF)最新公布的全球糖尿病地圖數(shù)據(jù)[1]顯示:2021年全球20~79歲糖尿病患病者達(dá)到5.37億,患病率為10.50%,預(yù)計(jì)到2030年,這一數(shù)字將增至6.43億,患病率達(dá)11.3%;2021年中國(guó)20~79歲糖尿病患者超過(guò)1.41億,患病率為11.2%,預(yù)計(jì)到2030年,這一數(shù)字將超過(guò)1.74億,患病率高達(dá)13%,排名全球第一.糖尿病的高患病率和高醫(yī)療費(fèi)用會(huì)給全世界帶來(lái)巨大的衛(wèi)生資源壓力和經(jīng)濟(jì)負(fù)擔(dān).在線健康社區(qū)依托其強(qiáng)大的互聯(lián)網(wǎng)平臺(tái)、豐富的醫(yī)療資源和健康咨詢等優(yōu)勢(shì),可以為糖尿病患者提供疾病管理和信息咨詢服務(wù).此外,它還保存了大量的病例信息、醫(yī)學(xué)知識(shí)和處方信息[2-3].因此,識(shí)別在線健康社區(qū)中相關(guān)的醫(yī)學(xué)實(shí)體,有助于更好地為患者提供個(gè)性化的醫(yī)療和健康信息服務(wù),以及決策參考和情感支持[4].
在線健康社區(qū)中的醫(yī)學(xué)實(shí)體識(shí)別,是利用自然語(yǔ)言處理技術(shù)對(duì)健康社區(qū)文本進(jìn)行醫(yī)學(xué)實(shí)體提取和分類(lèi),為進(jìn)一步挖掘和識(shí)別用戶信息需求主題及提取用戶特征奠定基礎(chǔ)[5].精確識(shí)別醫(yī)學(xué)實(shí)體已成為在線健康社區(qū)文本挖掘領(lǐng)域的研究熱點(diǎn)之一.蘇婭等[6]針對(duì)在線醫(yī)療問(wèn)答信息,采用機(jī)器學(xué)習(xí)模型條件隨機(jī)場(chǎng)(Conditional Random Field,CRF),在好大夫問(wèn)答數(shù)據(jù)集上成功地實(shí)現(xiàn)了在線問(wèn)答文本中的醫(yī)療實(shí)體識(shí)別.然而,基于機(jī)器學(xué)習(xí)方法進(jìn)行識(shí)別需要投入大量的人工和時(shí)間成本.Wang等[7]對(duì)健康社區(qū)問(wèn)答文本進(jìn)行實(shí)體標(biāo)注,并采用雙向長(zhǎng)短期記憶網(wǎng)絡(luò)(Bidirectional Long-Short Term Memory,BiLSTM)與CRF的組合模型(BiLSTM-CRF)進(jìn)行訓(xùn)練,以實(shí)現(xiàn)糖尿病相關(guān)實(shí)體的識(shí)別和提取.然而,由于BiLSTM-CRF模型在上下文語(yǔ)境中的語(yǔ)義識(shí)別能力有限,實(shí)體識(shí)別效果仍存在局限性.近年來(lái),基于Transformer的雙向編碼器表征 (Bidirectional Encoder Representations from Transformers,BERT)模型作為一種具有更強(qiáng)的上下文長(zhǎng)距離語(yǔ)義學(xué)習(xí)能力的預(yù)訓(xùn)練模型,在電子病歷[8-10]和生物醫(yī)學(xué)[11-12]的命名實(shí)體識(shí)別中得到了廣泛應(yīng)用.
目前,糖尿病在線健康社區(qū)文本實(shí)體識(shí)別存在歧義、無(wú)法準(zhǔn)確識(shí)別上下文語(yǔ)義和語(yǔ)料不規(guī)范等問(wèn)題[11].為了解決這些問(wèn)題,筆者擬采用規(guī)范標(biāo)注語(yǔ)料庫(kù),并從患者-患者交流型的“甜蜜家園”采集數(shù)據(jù),構(gòu)建BERT-BiLSTM-CRF模型進(jìn)行醫(yī)學(xué)命名實(shí)體識(shí)別,以期為糖尿病患者提供個(gè)性化醫(yī)療服務(wù).
“甜蜜家園”(https:∥bbs.tnbz.com)是目前中國(guó)最專業(yè)、最活躍的糖尿病患者-患者交流社區(qū)之一.本研究選取“甜蜜家園”健康社區(qū)近10年的相關(guān)數(shù)據(jù)進(jìn)行模型訓(xùn)練.數(shù)據(jù)采集和預(yù)處理過(guò)程主要分為4個(gè)步驟:(1)數(shù)據(jù)采集.利用Python編程語(yǔ)言爬取“甜蜜家園”健康社區(qū)的數(shù)據(jù),并將其保存為csv文件格式.(2)數(shù)據(jù)清洗.對(duì)網(wǎng)站文本數(shù)據(jù)中的表情符、換行符等無(wú)關(guān)字符進(jìn)行清洗和預(yù)處理,并將數(shù)據(jù)保存為JSON文件格式.(3)文本標(biāo)注.參考阿里云“天池”醫(yī)療數(shù)據(jù)集中的糖尿病分類(lèi)標(biāo)準(zhǔn),在醫(yī)學(xué)專家指導(dǎo)下,由2位醫(yī)學(xué)專業(yè)學(xué)生使用Doccano注釋工具對(duì)健康社區(qū)文本中的實(shí)體分類(lèi)作標(biāo)注.標(biāo)注的類(lèi)別包含疾病(DIS)、臨床表現(xiàn)(FEA)、藥物(DRU)、檢驗(yàn)(IND)、身體部位(BOD)和情緒(EMO).(4)數(shù)據(jù)分割.將標(biāo)注好的數(shù)據(jù)按照9∶1比例分為訓(xùn)練集和測(cè)試集,并將JSON格式的文件轉(zhuǎn)錄為BIO形式.BIO形式的標(biāo)注采用三元標(biāo)記集{B,I,O},其中B表示實(shí)體開(kāi)始位置,I表示實(shí)體內(nèi)部位置,O表示不屬于實(shí)體的詞.實(shí)體分類(lèi)情況見(jiàn)表1.
表1 實(shí)體分類(lèi)
實(shí)體識(shí)別模型BERT-BiLSTM-CRF包含3層:(1)BERT字向量層.這層使用預(yù)訓(xùn)練的BERT模型生成字級(jí)別的詞向量,得到文本輸入的語(yǔ)義表示.(2)BiLSTM層.詞向量通過(guò)BiLSTM層進(jìn)行語(yǔ)義編碼,捕捉文本中上下文信息,并生成更豐富的特征表示.(3)CRF層.使用CRF層對(duì)BiLSTM層輸出特征序列進(jìn)行標(biāo)注,濾篩出一些不符合標(biāo)注規(guī)則的實(shí)體,并輸出概率最大的標(biāo)簽序列.BERT-BiLSTM-CRF模型結(jié)構(gòu)如圖1所示.
圖1 BERT-BiLSTM-CRF模型結(jié)構(gòu)Fig. 1 Structure Diagram of BERT-BilSTM-CRF Model
BERT模型采用遮蔽語(yǔ)言模型和下一句預(yù)測(cè)來(lái)捕捉文本中句子和單詞的上下文語(yǔ)義.從結(jié)構(gòu)上看,BERT是將多個(gè)Transformer編碼器堆疊在一起進(jìn)行特征提取.每個(gè)Transformer編碼器由Self-Attention層和前饋神經(jīng)網(wǎng)絡(luò)層組成.Self-Attention是Transformer的核心機(jī)制,通過(guò)查詢(query)、鍵(key)和值(value)之間的注意力權(quán)重,使每個(gè)單詞都能夠?qū)ζ渌麊卧~進(jìn)行加權(quán)聚合,這樣就可以捕捉到每個(gè)單詞與上下文的關(guān)系,并將這種關(guān)系編碼成上下文向量表示.注意力機(jī)制的表達(dá)式為
圖2 BiLSTM模型結(jié)構(gòu)Fig. 2 BiLSTM Model Structure
長(zhǎng)短期記憶網(wǎng)絡(luò)(Long-Short Term Memory,LSTM)是一種非線性動(dòng)態(tài)模型,已在模式識(shí)別領(lǐng)域廣泛應(yīng)用.LSTM的核心結(jié)構(gòu)包括遺忘門(mén)、輸入門(mén)、輸出門(mén)和記憶門(mén).LSTM通過(guò)輸入門(mén)和遺忘門(mén)的功能,實(shí)現(xiàn)對(duì)信息的篩選和傳遞,將有用的信息傳遞到下一個(gè)時(shí)間步,并通過(guò)記憶cell的輸出和輸出門(mén)的輸出相乘而得到整個(gè)結(jié)構(gòu)的輸出.然而,LSTM模型的單向性限制其同時(shí)處理上下文的信息.為了解決這個(gè)問(wèn)題,引入BiLSTM.BiLSTM的主要思想是針對(duì)每個(gè)單詞序列使用正向和反向的LSTM,并將它們的輸出在同一時(shí)間點(diǎn)進(jìn)行組合,以獲得更全面的上下文信息.因此,在每個(gè)時(shí)間點(diǎn)上,同時(shí)存在前向和后向的信息.這種結(jié)構(gòu)(圖2)可以更好地捕捉到上下文之間的關(guān)系,提供更豐富的語(yǔ)義信息.
正向LSTM層的表達(dá)式為
CRF是一種判別式模型.用建模輸入序列和輸出標(biāo)簽之間的條件概率分布來(lái)提高標(biāo)注任務(wù)的準(zhǔn)確性,與BiLSTM模型結(jié)合可以獲得更準(zhǔn)確的標(biāo)簽序列.當(dāng)觀測(cè)序列X=(x1,x2,…,xn)時(shí),預(yù)測(cè)序列Y=(y1,y2,…,yn),于是得到分?jǐn)?shù)函數(shù)
其中:tk為轉(zhuǎn)移特征,依賴于當(dāng)前和前一位置;sl為狀態(tài)特征,依賴于當(dāng)前位置;λk,μl為相應(yīng)函數(shù)的權(quán)重.預(yù)測(cè)序列Y產(chǎn)生的條件概率為
在訓(xùn)練過(guò)程中,通過(guò)似然函數(shù)可計(jì)算出有效合理的預(yù)測(cè)序列.Y序列是當(dāng)似然函數(shù)為
基于BERT-BiLSTM-CRF模型對(duì)“甜蜜家園”數(shù)據(jù)集進(jìn)行實(shí)體識(shí)別的具體流程(圖3)如下:
Step1讀取和加載訓(xùn)練文本,使用BERT中文預(yù)訓(xùn)練模型詞典vocab.txt進(jìn)行詞表構(gòu)建.
Step2調(diào)用相關(guān)工具類(lèi)的函數(shù)進(jìn)行多維張量構(gòu)建,將文本轉(zhuǎn)換為BERT模型可以接受的輸入格式.
Step3定義學(xué)習(xí)率、隱藏層大小等相關(guān)參數(shù),并開(kāi)始每一輪的訓(xùn)練(epoch).
Step4在每一輪epoch中,通過(guò)傳入?yún)?shù)shuffle=False來(lái)遍歷隨機(jī)打亂的訓(xùn)練數(shù)據(jù),以保持?jǐn)?shù)據(jù)的順序性.
Step5評(píng)估模型的性能,在每個(gè)epoch結(jié)束后計(jì)算模型在訓(xùn)練集上的損失,以及其他評(píng)估指標(biāo)(如準(zhǔn)確率、召回率等).如果損失值不再下降或訓(xùn)練過(guò)程中達(dá)到了設(shè)定的最大patience計(jì)數(shù),就提前結(jié)束訓(xùn)練,避免過(guò)擬合.
Step6輸出訓(xùn)練評(píng)估結(jié)果.
圖3 訓(xùn)練任務(wù)流程Fig. 3 Flowchart of Training Task
下面是涉及的一些關(guān)鍵代碼:
(1)使用哈工大訊飛實(shí)驗(yàn)室的中文預(yù)測(cè)訓(xùn)練模型進(jìn)行詞嵌入和模型構(gòu)建:
pretrain_model_name='hfl/chinese-roberta-wwm-ext'
BertModel.from_pretrained(pretrain_model_name)
(2)將雙向的BiLSTM和CRF層進(jìn)行初始化:
self.LSTM=nn.LSTM(self.embedding_dim,self.hidden_dim,num_layers=self.rnn_layers,bidirectional=True,batch_first=True)
self._dropout=nn.Dropout(p=self.dropout)
self.CRF=CRF(num_tags=self.tagset_size,batch_first=True)
self.Liner=nn.Linear(self.hidden_dim*2,self.tagset_size)
(3)字嵌入傳播并返回張量值,保證其是連續(xù)的:
embeds=self.word_embeds(sentence,attention_mask=attention_mask).last_hidden_state
hidden=self._init_hidden(batch_size)
lstm_out,hidden = self.LSTM(embeds,hidden)
lstm_out=lstm_out.contiguous().view(-1,self.hidden_dim*2)
d_lstm_out=self._dropout(lstm_out)
l_out=self.Liner(d_lstm_out)
lstm_feats=l_out.contiguous().view(batch_size,seq_length,-1)
(4)使用Adam優(yōu)化器進(jìn)行優(yōu)化:
optimizer=torch.optim.Adam(model.parameters(),lr,weight_decay)
torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer,mode="max",factor=0.5,patience=10)
實(shí)驗(yàn)環(huán)境為1臺(tái)i5-8250u處理器和1臺(tái)MX150顯卡的筆記本電腦,運(yùn)行Windows10操作系統(tǒng).實(shí)驗(yàn)使用Microsoft Visual Studio Code編輯器新建一個(gè)Python項(xiàng)目文件夾,并在Anaconda中創(chuàng)建一個(gè)基于Pytorch的深度學(xué)習(xí)虛擬環(huán)境.實(shí)驗(yàn)的參數(shù)設(shè)置見(jiàn)表2.采用梯度裁剪技術(shù),以防止訓(xùn)練過(guò)程中出現(xiàn)梯度爆炸或梯度消失等問(wèn)題.訓(xùn)練過(guò)程中使用Adam優(yōu)化器,并引入早停機(jī)制.為了避免過(guò)擬合現(xiàn)象,設(shè)置Dropout為0.5.
表2 實(shí)驗(yàn)參數(shù)設(shè)置
數(shù)據(jù)訓(xùn)練集采用精確率(Precision,P)、召回率(Recall,R)、調(diào)和平均(F1)作為模型質(zhì)量和性能的評(píng)價(jià)指標(biāo):
其中:XTP為真陽(yáng)性樣本(正確預(yù)測(cè)為正例的樣本數(shù));XFP為假陽(yáng)性樣本(錯(cuò)誤預(yù)測(cè)為正例的樣本數(shù));XFN為假陰性樣本(錯(cuò)誤預(yù)測(cè)為負(fù)例的樣本數(shù));P衡量模型預(yù)測(cè)為正例的樣本中有多少正確的正例;R衡量模型正確預(yù)測(cè)為正例樣本在真實(shí)正例中的比例;F1平衡精確率和召回率,更全面地評(píng)估模型的性能.在評(píng)估模型時(shí),計(jì)算每個(gè)類(lèi)別的P,R和F1,并將其各自的平均值作為整體性能指標(biāo).
按照實(shí)體標(biāo)準(zhǔn)分類(lèi)原則,糖尿病社區(qū)文本模型的訓(xùn)練評(píng)估結(jié)果見(jiàn)表3.從表3可知,6個(gè)分類(lèi)的精確率、召回率和調(diào)和平均差別不大且穩(wěn)定在較高水平(P=90.83%,R=76.30%,F1=82.93%).高精確率說(shuō)明BERT-BiLSTM-CRF模型對(duì)在線健康社區(qū)中正樣本的識(shí)別率較高,且不容易將負(fù)樣本錯(cuò)誤識(shí)別為正樣本.召回率相對(duì)較低,表明該模型將一部分社區(qū)文本中的正樣本錯(cuò)誤地識(shí)別為負(fù)樣本.調(diào)和平均的良好表現(xiàn)說(shuō)明,該模型對(duì)社區(qū)文本中的6大類(lèi)命名實(shí)體擬合程度較高.綜上,BERT-BiLSTM-CRF模型在糖尿病患者-患者健康社區(qū)文本命名實(shí)體識(shí)別中具有較好的識(shí)別效果,可以用于此類(lèi)文本的訓(xùn)練和預(yù)測(cè).
表3 糖尿病社區(qū)文本模型訓(xùn)練評(píng)估結(jié)果
圖4 交叉熵?fù)p失值曲線Fig. 4 Cross-Entropy Loss Curve
交叉熵?fù)p失值(loss)結(jié)果如圖4所示.BERT-BiLSTM-CRF模型訓(xùn)練較完整,驗(yàn)證集的loss值和訓(xùn)練集的loss值相差不大,且隨著epoch值的增加而逐漸減小.這符合對(duì)BERT這類(lèi)模型訓(xùn)練的預(yù)期效果.模型的擬合程度較理想,說(shuō)明模型可以在訓(xùn)練中逐漸學(xué)習(xí)到文本中的特征和模式,完成糖尿病社區(qū)文本的命名實(shí)體識(shí)別任務(wù),且達(dá)到預(yù)期效果.
實(shí)驗(yàn)發(fā)現(xiàn),Ⅰ型糖尿病社區(qū)專欄文本中混雜了Ⅱ型糖尿病社區(qū)專欄文本的內(nèi)容,而Ⅱ型糖尿病專欄文本中也混雜了Ⅰ型糖尿病社區(qū)專欄文本的內(nèi)容.為了處理這種情況,筆者對(duì)這2個(gè)專欄的文本數(shù)據(jù)使用相同的模型進(jìn)行了預(yù)測(cè).Ⅰ型和Ⅱ型專欄詞頻統(tǒng)計(jì)見(jiàn)表4.
表4 Ⅰ型和Ⅱ型專欄詞頻統(tǒng)計(jì)
詞頻統(tǒng)計(jì)是指識(shí)別出的每一類(lèi)實(shí)體數(shù)量占所有實(shí)體數(shù)量的百分比.社區(qū)文本的詞頻統(tǒng)計(jì)結(jié)果為:疾病占26%,臨床表現(xiàn)占13%,藥物占16%,檢驗(yàn)占8%,身體部位占15%,情緒占22%.這些詞頻統(tǒng)計(jì)結(jié)果由Python和matplotlib生成.預(yù)測(cè)數(shù)據(jù)顯示:在糖尿病健康社區(qū)中,患者之間交流較多且關(guān)注度較高的話題是疾病和情緒,分別占26%和22%,這說(shuō)明患者最關(guān)心的是自身的健康狀況,病情對(duì)大多數(shù)患者的情緒及心理狀態(tài)產(chǎn)生了影響;檢驗(yàn)和臨床表現(xiàn)的話題占比較低,分別占8%和13%,這符合一般患者對(duì)專業(yè)檢驗(yàn)指標(biāo)不太了解的客觀事實(shí).詞頻統(tǒng)計(jì)數(shù)據(jù)顯示:專業(yè)檢驗(yàn)指標(biāo)的高頻詞主要集中在血糖水平,占檢驗(yàn)總數(shù)的80%以上;藥物方面的高頻詞是胰島素,占比高達(dá)90%.由此可見(jiàn),患者更加關(guān)注的是血糖水平關(guān)聯(lián)的并發(fā)癥及藥物的種類(lèi)和劑量.這些話題都與個(gè)人生活狀態(tài)和質(zhì)量密切相關(guān)[13-14].
筆者選擇Ⅰ型糖尿病和Ⅱ型糖尿病2個(gè)專欄作為數(shù)據(jù)集進(jìn)行BIO數(shù)據(jù)集標(biāo)注,構(gòu)建了BERT-BiLSTM-CRF模型完成實(shí)體識(shí)別.實(shí)驗(yàn)結(jié)果表明,該模型的精確率為90.83%,召回率為76.30%,F1達(dá)到82.93%,且從loss曲線上看,模型的訓(xùn)練符合預(yù)期目標(biāo).通過(guò)梯度裁剪和調(diào)整學(xué)習(xí)率,可以有效避免梯度爆炸、梯隊(duì)消失和抖動(dòng)震蕩等問(wèn)題,使模型處于較平緩的學(xué)習(xí)訓(xùn)練狀態(tài),獲得較好的識(shí)別效果.研究結(jié)果顯示,糖尿病患者-患者的在線健康社區(qū)中,患者關(guān)注高的話題與疾病、情緒和心理相關(guān),他們最關(guān)心的是自身健康狀況,而檢驗(yàn)、臨床表現(xiàn)等話題涉及較少.這說(shuō)明患者對(duì)檢驗(yàn)指標(biāo)認(rèn)知度較低(僅關(guān)注血糖水平的變化).藥物方面的高頻詞是胰島素,這表明患者比較關(guān)注胰島素的使用及相關(guān)劑量.
值得注意的是,本研究數(shù)據(jù)樣本中的Ⅰ型糖尿病和Ⅱ型糖尿病專欄的文本信息存在重復(fù)內(nèi)容,這可能會(huì)對(duì)實(shí)驗(yàn)結(jié)果造成一定的誤差.下一步筆者考慮剔除重復(fù)內(nèi)容,對(duì)這2類(lèi)文本分別進(jìn)行預(yù)測(cè),以期獲得更好的擬合效果.此外,筆者還將進(jìn)一步分析不同類(lèi)型實(shí)體的關(guān)聯(lián)性和語(yǔ)義關(guān)系,并調(diào)整實(shí)驗(yàn)參數(shù),以訓(xùn)練出更好的模型用于實(shí)體識(shí)別.
吉首大學(xué)學(xué)報(bào)(自然科學(xué)版)2023年5期