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