何忠玻,嚴(yán) 馨,徐廣義,張金鵬,鄧忠瑩
1.昆明理工大學(xué) 信息工程與自動化學(xué)院,昆明 650500
2.昆明理工大學(xué) 云南省人工智能重點實驗室,昆明 650500
3.云南南天電子信息產(chǎn)業(yè)股份有限公司 昆明南天電腦系統(tǒng)有限公司,昆明 650040
4.云南大學(xué) 信息學(xué)院,昆明 650091
5.云南財經(jīng)大學(xué) 信息學(xué)院,昆明 650221
隨著人們生活水平的不斷提高,個人健康狀況也越來越得到重視,而在醫(yī)療領(lǐng)域,藥物不良反應(yīng)(adverse drug reaction,ADR)也成為人們廣泛討論的問題。藥物不良反應(yīng)指的是患者在用藥后,產(chǎn)生的有害反應(yīng)。有研究表明,藥物不良反應(yīng)已經(jīng)成為繼心臟病、艾滋病和糖尿病之后的第四高死亡率的醫(yī)學(xué)問題[1]。
社交媒體逐漸成為人們知識交流和情感分享的主要平臺,患者可以在社交媒體上發(fā)表自己的感受及癥狀,以詢求醫(yī)生對策。這些數(shù)據(jù)是龐大且實時的,充分利用這些信息可以及時地發(fā)現(xiàn)藥物不良反應(yīng),解決傳統(tǒng)臨床研究效率低、依賴性強(qiáng)等各種局限性,彌補(bǔ)藥物上市前研究的不足,為藥物上市后的風(fēng)險管理提供技術(shù)支持,保障公眾健康。但社交媒體文本的口語化,噪聲大等特點,給社交媒體藥物不良反應(yīng)實體抽取帶來了挑戰(zhàn)。
ADR實體包括患者出現(xiàn)不良反應(yīng)的身體部位及其癥狀,例如“涂了阿達(dá)帕林凝膠臉上起紅疹脫皮”其中,“臉上起紅疹脫皮”可看作是ADR實體。ADR實體抽取可以表述為命名實體抽取任務(wù)。在醫(yī)療領(lǐng)域,命名實體識別方法的發(fā)展整體上經(jīng)歷了基于規(guī)則與詞典的方法、基于統(tǒng)計機(jī)器學(xué)習(xí)的方法和基于深度學(xué)習(xí)三個階段。由于社交媒體藥物不良反應(yīng)實體抽取的開放語料比較匱乏,并且社交媒體文本標(biāo)注數(shù)據(jù)量大、成本高。針對以上局限性,同時考慮到Tri-training為簡潔的自動標(biāo)注數(shù)據(jù)的經(jīng)典方法,本文提出基于Tri-training的社交媒體藥物不良反應(yīng)實體抽取模型。使用Tri-training 的半監(jiān)督方法充分利用社交媒體中的未標(biāo)注數(shù)據(jù)。本文的貢獻(xiàn)如下:首先,針對社交媒體大量未標(biāo)注語料標(biāo)注成本高的問題,采用Tri-training半監(jiān)督的方法進(jìn)行社交媒體藥物不良反應(yīng)實體抽取,通過三個學(xué)習(xí)器Transformer+CRF、BiLSTM+CRF 和IDCNN+CRF 對未標(biāo)注數(shù)據(jù)進(jìn)行標(biāo)注,并利用一致性評價函數(shù)迭代地擴(kuò)展訓(xùn)練集,最后通過加權(quán)投票整合模型輸出標(biāo)簽;其次,針對社交媒體的文本不正式性(口語化嚴(yán)重、錯別字等)問題,利用融合字與詞兩個粒度的向量形成一個新的向量作為模型的輸入來促進(jìn)語義信息提取。實驗結(jié)果表明,提出的模型能夠有效地促進(jìn)社交媒體藥物不良反應(yīng)實體的抽取。
基于規(guī)則與詞典的方法流行于20世紀(jì)末到21世紀(jì)末期?;谝?guī)則與詞典的方法依賴于相關(guān)領(lǐng)域?qū)<覙?gòu)建的專業(yè)詞典及規(guī)則模型,再通過匹配的方式進(jìn)行命名實體識別。例如1994 年Friedman 等人[2]將疾病名稱和修飾成分映射到語法規(guī)則詞典中對其進(jìn)行實體識別。但這種方法耗時耗力,同時,只適用于特定類型實體的識別,即擴(kuò)展性、泛化能力不強(qiáng)。
基于統(tǒng)計機(jī)器學(xué)習(xí)的方法包括隱馬爾科夫模型(hidden Markov model,HMM)、支持向量機(jī)(support vector machine,SVM)、條件隨機(jī)場(conditional random field,CRF)和最大熵(maximum entropy,ME)等。Li 等人[3]將基于CRF 的方法和基于SVM 的方法在臨床實體識別上的性能作比較,得出了前者優(yōu)于后者效果的結(jié)論。Aramaki 等人[4]使用SVM 和CRF,利用基于詞庫的特征、POS標(biāo)簽、詞鏈等提取藥物不良反應(yīng)。Tang等人[5]提出了結(jié)構(gòu)化支持向量機(jī)(structed SVM,SSVM)用于識別臨床記錄中的實體,該算法結(jié)合了SVM和CRF,實驗結(jié)果表明,在同一特征條件下,基于SSVM 的臨床實體識別效果比基于CRF 的臨床實體識別效果更好。Zhang等人[6]提出了一種無監(jiān)督的方法從生物醫(yī)學(xué)文本中提取實體,該方法不依賴于任何人工制作的規(guī)則或注釋數(shù)據(jù),在兩個主流的生物醫(yī)學(xué)數(shù)據(jù)集上證明了其有效性,基于統(tǒng)計機(jī)器學(xué)習(xí)的方法相比基于規(guī)則的方法在性能上有比較大的提高,但也依賴一些規(guī)則和詞典信息,故導(dǎo)致在實際運用中效果欠佳。
隨著深度學(xué)習(xí)的流行,研究者們發(fā)現(xiàn)將神經(jīng)網(wǎng)絡(luò)應(yīng)用于實體識別可以降低訓(xùn)練代價,逐漸地,深度學(xué)習(xí)被廣泛應(yīng)用于自然語言處理中,藥物實體抽取進(jìn)入新的階段。深度學(xué)習(xí)模型一般有卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)、長短期記憶網(wǎng)絡(luò)(long short-term memory,LSTM)和BERT 模型等。RNN 使得深度學(xué)習(xí)在文本序列處理中得到了廣泛應(yīng)用。后由Hochreiter 等人[7]提出的LSTM解決了RNN的梯度消失和梯度爆炸的問題。Greenberg 等人[8]使用BiLSTM+CRF 在生物醫(yī)學(xué)命名實體識別上取得了較為優(yōu)秀的結(jié)果。此外還有許多改良版本,如BiLSTM-CRF-attention[9]、CNN-LSTM-CRF[10]等。2018年BERT誕生,其強(qiáng)大的泛化能力及特征提取能力使得許多研究者認(rèn)為BERT 可以代替任何RNN 模型。Dai 等人[11]用BERT-BiLSTM-CRF 模型在中國電子病歷中醫(yī)學(xué)命名實體識別的F1評分達(dá)到0.75。盡管深度學(xué)習(xí)模型往往表現(xiàn)很好,但通常是基于大量標(biāo)注數(shù)據(jù)的監(jiān)督學(xué)習(xí)。當(dāng)面臨少量的標(biāo)注數(shù)據(jù)時,就會出現(xiàn)過擬合現(xiàn)象,嚴(yán)重影響預(yù)測的準(zhǔn)確性[12]。而半監(jiān)督方式可以利用少量的標(biāo)記數(shù)據(jù)擴(kuò)充訓(xùn)練集,進(jìn)而提高模型的準(zhǔn)確率。常見的半監(jiān)督學(xué)習(xí)有self-training[13]、co-training[14]和Tri-training[15]等。Gupta 等人[16]提出了一種多任務(wù)學(xué)習(xí)方法,以self-training方法對藥物不良反應(yīng)事件抽取進(jìn)而輔助ADR 的抽取,在Twitter 數(shù)據(jù)集上F1 值達(dá)到了0.64。Deng 等人[17]提出了一種基于co-training 的方法,從中藥專利摘要文本中識別出藥品名稱,實驗表明該方法能在較低的時間復(fù)雜度下保持較高的精度。直接把self-training 應(yīng)用于其他領(lǐng)域的效果往往不太理想,當(dāng)self-training 將錯誤的樣本分類到訓(xùn)練集中時,會導(dǎo)致錯誤越來越深,使用該樣本反而會對模型產(chǎn)生干擾。co-training 需要在兩個充分冗余的視圖上訓(xùn)練學(xué)習(xí)器。而Tri-training 是co-training 的一種改進(jìn),也是一種基于分歧的方法,它不需要冗余的視圖來描述實例空間,因此它的適用性比co-training算法更好。
本文提出了一個基于Tri-training 的半監(jiān)督社交媒體藥物不良反應(yīng)實體抽取模型,整體框架如圖1 所示。首先使用少量的標(biāo)注數(shù)據(jù)訓(xùn)練三個不同的基學(xué)習(xí)器Transformer+CRF、BiLSTM+CRF 和IDCNN+CRF,三個編碼器負(fù)責(zé)提取深層次的語義信息,CRF層負(fù)責(zé)學(xué)習(xí)標(biāo)簽之間的依賴關(guān)系,以優(yōu)化模型。在大量的未標(biāo)注數(shù)據(jù)上對三個基學(xué)習(xí)器進(jìn)行協(xié)同訓(xùn)練,最后將該聯(lián)合學(xué)習(xí)器對測試集的樣本進(jìn)行標(biāo)注,得到最終的標(biāo)注序列,解決社交媒體文本標(biāo)注數(shù)據(jù)少導(dǎo)致的模型性能不足的問題。其次,采用字和詞兩個粒度的向量作為三個基學(xué)習(xí)器的輸入。使用BERT模型來獲得輸入文本的字向量;利用Jieba 分詞工具對輸入文本進(jìn)行分詞處理,再使用騰訊詞向量得到輸入文本的詞向量。融合兩種向量作為模型嵌入層的輸入以促進(jìn)語義提取,解決社交媒體文本表達(dá)口語化的問題。

圖1 改進(jìn)的Tri-training訓(xùn)練過程Fig.1 Training process of improved Tri-training
考慮到對數(shù)據(jù)進(jìn)行標(biāo)注的代價較高,使用半監(jiān)督學(xué)習(xí)方法,只使用一小部分帶標(biāo)簽數(shù)據(jù)促進(jìn)模型對大部分未標(biāo)注數(shù)據(jù)的利用。標(biāo)準(zhǔn)Tri-training使用了三個相同的學(xué)習(xí)器,首先將已標(biāo)注數(shù)據(jù)集進(jìn)行重復(fù)采樣(bootstrap sampling)得到三個訓(xùn)練集,用于分別訓(xùn)練三個學(xué)習(xí)器,在迭代訓(xùn)練過程中,如果有兩個學(xué)習(xí)器預(yù)測的標(biāo)簽一致,則認(rèn)為該數(shù)據(jù)的置信度高,將其標(biāo)注并送入第三個學(xué)習(xí)器的訓(xùn)練集中一起訓(xùn)練第三個學(xué)習(xí)器。
為了更好地適用于本任務(wù),針對標(biāo)準(zhǔn)的Tri-training進(jìn)行改進(jìn)。首先,采用了三個不同的學(xué)習(xí)器,以實現(xiàn)訓(xùn)練結(jié)果的差異性。其次,本文采用謝俊等人[18]提出的樣本選擇策略,解決標(biāo)準(zhǔn)Tri-training用于序列標(biāo)注任務(wù)導(dǎo)致的偽標(biāo)簽數(shù)據(jù)少的問題。采用改進(jìn)的樣本選擇策略可以將預(yù)測不一致的樣本按照比例加入訓(xùn)練集中用于訓(xùn)練學(xué)習(xí)器,解決了標(biāo)準(zhǔn)Tri-training的三個學(xué)習(xí)器很難預(yù)測一致進(jìn)而導(dǎo)致樣本選擇死循環(huán),這相比于標(biāo)準(zhǔn)Tri-training的策略更有利于充分利用未標(biāo)注數(shù)據(jù)訓(xùn)練模型。
該策略如下:計算任意兩個學(xué)習(xí)器對某一樣本的一致性得分,若存在兩個學(xué)習(xí)器的一致性得分相等,則將該偽標(biāo)簽數(shù)據(jù)加入到第三個學(xué)習(xí)器中作為訓(xùn)練數(shù)據(jù);對于任意兩個學(xué)習(xí)器一致性得分都不相等的樣本,按30%的比例選取兩個學(xué)習(xí)器一致性最低的樣本集,再按30%的比例選取另外兩個學(xué)習(xí)器一致性最高的樣本集,取其交集送入共有的學(xué)習(xí)器中標(biāo)注,最后作為與該學(xué)習(xí)器一致性最小學(xué)習(xí)器的訓(xùn)練數(shù)據(jù)。
整體訓(xùn)練如圖1 所示,其中Hj、Hk、Hl為三個學(xué)習(xí)器。
首先,利用標(biāo)注樣本集中的數(shù)據(jù)分別訓(xùn)練三個學(xué)習(xí)器Hj、Hk、Hl。
然后,利用此三個學(xué)習(xí)器分別對未標(biāo)注樣本集U進(jìn)行標(biāo)注,并根據(jù)樣本選擇策略選出樣本子集。其過程如下:
對于輸入的序列X={x1,x2,…,xn},三個學(xué)習(xí)器Hj、Hk、Hl得到的標(biāo)注序列分別為L1={y11,y12,…,y1n},L2={y21,y22,…,y2n},L3={y31,y32,…,y3n},其中兩個學(xué)習(xí)器對樣本X的一致性評價函數(shù)Ag(Xa,Xd)為:
(1)根據(jù)Hj和Hk的評價得分對所有樣本進(jìn)行排序,按30%的比例選擇一致性評價函數(shù)最低的樣本子集。
(2)根據(jù)Hk和Hl的評價得分對所有樣本進(jìn)行排序,按30%的比例選擇一致性評價函數(shù)最高的樣本子集。
(3)取這兩個子集的交集,將樣本送入Hk中進(jìn)行標(biāo)注,再將標(biāo)注后的數(shù)據(jù)作為Hj的訓(xùn)練數(shù)據(jù)。
對另外兩個學(xué)習(xí)器進(jìn)行類似的操作,可得三個擴(kuò)充的標(biāo)注數(shù)據(jù)集。再使用擴(kuò)充的標(biāo)注數(shù)據(jù)集分別訓(xùn)練三個分類器。
重復(fù)以上迭代過程,直到U為空。得到最終的聯(lián)合學(xué)習(xí)器H。
藥物不良反應(yīng)實體抽取的Tri-training 算法如下所示:
算法藥物不良反應(yīng)實體抽取的Tri-training算法
訓(xùn)練結(jié)束后,采用投票機(jī)制對測試集的樣本進(jìn)行標(biāo)注,得到最終的標(biāo)注序列。計算方式如下:
為了保持三個學(xué)習(xí)器的多樣性,本文采用Transformer+CRF、BiLSTM+CRF 和IDCNN+CRF 用于社交媒體藥物不良反應(yīng)實體抽取。使用Transformer、BiLSTM 和IDCNN 作為編碼器可以充分捕捉上下文特征,將得到的特征向量作為CRF的輸入最終輸出每個字的標(biāo)簽。同時考慮到社交媒體文本的不正式性,利用字和詞兩個粒度的向量作為模型的輸入。學(xué)習(xí)器結(jié)構(gòu)如圖2所示。

圖2 三個學(xué)習(xí)器Hj、Hk、Hl 模型結(jié)構(gòu)Fig.2 Structure of three learner models of Hj、Hk、Hl
2.2.1 輸入層
基于深度學(xué)習(xí)的實體抽取的輸入主要有字向量和詞向量兩種方式。對于中文來說,由于邊界模糊,使用詞向量產(chǎn)生的分詞錯誤易產(chǎn)生歧義,故主要采用字向量作為輸入。但是,使用字向量也有不足,字和詞之間的語義表達(dá)有時差異是很大的,字向量難以捕捉到詞的語義信息。由于社交媒體文本比較口語化,會導(dǎo)致模型性能下降,故提出結(jié)合字和詞兩個粒度的向量作為模型的輸入來充分利用其語義信息。
BERT模型可以充分利用字符的上下文來生成字符級別的向量,充分發(fā)揮漢字的表義能力[19]。使用BERT模型來獲得字向量。BERT 的輸入主要由三部分組成:Token embeddings、Segment embeddings 和Position embeddings。其中,Token embeddings 是對應(yīng)每個字的向量,Segment embeddings 用于區(qū)分兩個句子,Position embeddings用于存儲字符的位置信息。此外,在句子的開頭有一個[CLS]字符,結(jié)尾有一個[SEP]字符。最后的輸入是三個向量的總和。給定句子X={c1,c2,…,cn},其中ci表示句子中第i個字,最終可得到字向量Xc=。
對于詞向量,首先利用Jieba分詞工具對輸入文本進(jìn)行分詞處理,再使用騰訊AI Lab 提出的騰訊詞向量[20]得到詞向量。由于中文的詞可能包含多個字,為了使詞向量與字向量對齊,為每個組成詞的字重復(fù)分配該詞。如圖3 所示,“肚”和“子”都分配了一個“肚子”詞向量。給定句子X={w1,w2,…,wn},其中wi是句子中第i個詞,最終可得到詞向量。

圖3 模型輸入表示Fig.3 Representation of model inputs
最后,將字向量與詞向量拼接起來,得X=[Xc;Xw]作為編碼器的輸入。
2.2.2 編碼器層
(1)Transformer編碼器
Transformer 編碼層由若干個Transformer 編碼器堆疊而成,每個子層主要由多頭注意力層(multi-head attention)和前饋網(wǎng)絡(luò)層(feed forward network)組成。本文采用Transformer 編碼層用于特征提取,主要是為了計算語句中字與字之間的關(guān)系從而獲取全局特征信息,并且提高了模型的并行計算能力。將融合了字信息與詞信息的向量X輸入到Transformer 編碼器中,進(jìn)行特征提取。
第一個子層為多頭注意力層。由于Transformer 沒有卷積或遞歸網(wǎng)絡(luò)結(jié)構(gòu),因此在特征提取過程中不能像它們那樣對文本序列的位置信息進(jìn)行編碼,所以需要將位置向量嵌入到輸入向量中。用不同頻率的正弦碼和余弦碼來構(gòu)造位置向量。計算方式如下:
其中,pos表示字的位置,d表示輸入的維度,i為向量中每個值的索引。
將輸入向量X進(jìn)行線性變換,將其映射到三個不同的空間,得三個特征矩陣Q、K、V,計算方式如下:
其中,WQ、WK、WV為權(quán)重矩陣。
注意力機(jī)制為該模型的核心機(jī)制,計算方式如下:
Transformer 編碼器使用的是多頭注意力機(jī)制,即通過h個線性變換對Q、K、V做投影,多次經(jīng)過selfattention,最后將結(jié)果進(jìn)行拼接,經(jīng)過線性變換之后得到輸出特征矩陣Z。計算方式如下:
其中,LayerNorm為歸一化函數(shù),W1、W2為權(quán)重函數(shù),b1、b2為偏置。
最后,得到輸入序列經(jīng)過編碼之后的特征矩陣S作為Transformer編碼器的最后輸出:
為了便于后續(xù)CRF對序列的標(biāo)注,在隱藏層后接入一個線性變化層,將隱狀態(tài)序列從n×m維映射到n×k維,k代表標(biāo)注集中所有的標(biāo)簽數(shù),將結(jié)果記作矩陣A(1),計算方式如下:
(2)BiLSTM編碼器
BiLSTM 是一種改進(jìn)的RNN,可以解決RNN 在訓(xùn)練過程中的梯度消失和梯度爆炸的問題。通過引入門控機(jī)制,可以很容易發(fā)現(xiàn)長距離信息。通過前向和后向狀態(tài)有效地利用前一個特征和后一個特征。可以更好地捕捉雙向語義依賴,有效學(xué)習(xí)上下文語義信息。字嵌入序列X=(x1,x2,…,xn)作為BiLSTM的輸入。
門控制單元包含遺忘門、輸入門和輸出門。計算方式如下:
式中,ht-1表示上一時刻的隱藏狀態(tài),xt為當(dāng)前時刻的輸入,Wf、Wi、Wc和Wo為權(quán)重矩陣。bf、bi、bc和bo為偏置向量。σ為sigmoid 激活函數(shù),tanh 為雙曲正切激活函數(shù)。ft表示遺忘門,決定拋棄上一時刻的那些信息。it為更新門,決定哪些值要更新。ot為輸出門,決定哪些信息應(yīng)該輸出給外部狀態(tài)ht。
BiLSTM捕獲了正向語義信息和逆向語義信息,在t時刻,輸出狀態(tài)ht由正向LSTM 輸出的ht1和反向LSTM輸出的ht2連接而成:ht=[ht1;ht2]。輸出隱藏狀態(tài)序列H=(h1,h2,…,hn)。同樣,為了便于后續(xù)CRF 對序列的標(biāo)注,在隱藏層后接入一個線性變化層,將隱狀態(tài)序列從n×m維映射到n×k維,k代表標(biāo)注集中所有的標(biāo)簽數(shù),將結(jié)果記作矩陣A(2),計算方式如下:
(3)IDCNN編碼器
由于數(shù)據(jù)來自于網(wǎng)站的問診,可能會包括既往病史、癥狀及用藥情況,這就導(dǎo)致文本較長。盡管使用CNN在計算上有優(yōu)勢,但是經(jīng)過卷積層之后,可能會損失一部分信息。對于長文本數(shù)據(jù)時,要提取上下文信息,就得加入更多的卷積層,這會導(dǎo)致網(wǎng)絡(luò)越來越深,參數(shù)特別多,進(jìn)而造成過擬合。于是采用膨脹卷積(dilated convolution)來解決這個問題。可以不通過池化加大感受野,并且減少信息的損失。膨脹卷積的概念由Yu等人[21]于2015年提出,與傳統(tǒng)CNN在連續(xù)的窗口上滑動不同,它不需要在連續(xù)的窗口上滑動。通過在卷積核中增加一個膨脹寬度,模型的感受野隨著卷積核和卷積層數(shù)的線性增加而呈指數(shù)級增加。如圖4所示,圖(a)與圖(b)卷積核都為3,卷積層數(shù)都為兩層,而膨脹卷積的上下文大小為7。不難看出,膨脹卷積可以增大模型的感受野。

圖4 傳統(tǒng)卷積和膨脹卷積上下文大小Fig.4 Context size of traditional convolution and dilated convolution
Strubell等人[22]首次將IDCNN用于實體識別。先構(gòu)建一個層數(shù)不多的膨脹模塊,該模塊包含幾個膨脹卷積層,每一次模塊的輸出又作為輸入重復(fù)傳入模塊中,即以迭代的方式重復(fù)使用相同的參數(shù)。模型既可以接收更寬的輸入又具有更好的泛化能力。
對于輸入序列X=(x1,x2,…,xn)首先IDCNN 第一層對輸入進(jìn)行轉(zhuǎn)換:
其中,c(0)表示第一層的輸出,表示第j層膨脹卷積,膨脹系數(shù)為δ。
然后IDCNN用Lc層膨脹卷積來構(gòu)造膨脹模塊,第j層膨脹卷積的輸出c(j)為:
其中r()表示ReLU激活函數(shù)。
最后一層為:
將這種堆疊記作膨脹卷積塊B(),IDCNN會迭代使用相同的模塊Lb次提取特征,從開始,第k次迭代使用膨脹卷積塊的輸入為:
最終的序列輸出為:
最后接入一個線性變化層,將隱狀態(tài)序列從n×m維映射到n×k維,k代表標(biāo)注集中所有的標(biāo)簽數(shù),將結(jié)果記作矩陣A(3),計算方式如下:
2.2.3 CRF層
本文引入了條件隨機(jī)場來學(xué)習(xí)標(biāo)簽之間的依賴關(guān)系,限制了生成標(biāo)簽之間的關(guān)系,得到最優(yōu)標(biāo)記結(jié)果。對于給定的字符序列X=(x1,x2,…,xn),定義Transformer編碼器的輸出為矩陣A()1,BiLSTM 編碼器的輸出為矩陣A(2),IDCNN編碼器的輸出為矩陣A(3),其大小為n×k,n為字符個數(shù),k為標(biāo)簽種類。以Transformer編碼器的輸出A(1)為例,視作第i個字被標(biāo)記為yi的概率。
輸出預(yù)測結(jié)果為y=(y1,y2,…,yn)的評估分?jǐn)?shù)計算方式如下:
其中,n為序列長度,M為轉(zhuǎn)移矩陣,Myi-1,yi表示從yi-1標(biāo)簽轉(zhuǎn)移到y(tǒng)i標(biāo)簽的得分。
使用Softmax函數(shù)可以得到歸一化概率:
其中,為真實標(biāo)簽,YX表示所有可能的標(biāo)簽序列。
模型的目標(biāo)是使正確標(biāo)注序列的概率最大,訓(xùn)練CRF時的似然函數(shù)計算方式如下:
最終輸出概率得分最大的一組序列計算方式如下:
最后,通過CRF 層輸出概率最高的標(biāo)簽,從而得到每個字的類別。
目前,用于社交媒體藥物不良反應(yīng)實體抽取的開放語料比較匱乏,因此,自行構(gòu)建了藥物不良反應(yīng)數(shù)據(jù)集。從“好大夫在線”網(wǎng)站(https://www.haodf.com/)搜集了患者的問診記錄?!昂么蠓蛟诰€”網(wǎng)站成立于2006年,旨在為患者實時提供就醫(yī)參考信息。匯集了在線問診、預(yù)約掛號、疾病知識、經(jīng)驗分享等功能。在線問診又可按疾病、醫(yī)院和科室找大夫問診。用戶說明疾病和用藥情況等進(jìn)行詢問,醫(yī)生在線給出相應(yīng)的建議。如圖5所示,問診記錄包含了用藥情況、病癥和接診醫(yī)生建議等信息。

圖5 患者問診記錄Fig.5 Medical records of patient
根據(jù)80種常用藥,包括降壓藥、消炎藥、止痛藥等,爬取了2010 年12 月31 日到2020 年3 月25 日的相關(guān)記錄,得到了41 100 個文本。通過對文本進(jìn)行預(yù)處理,去重整理,篩選出帶藥物及不良反應(yīng)的文本共計6 000個,再選擇其中的2 000 個文本進(jìn)行人工標(biāo)注,這個工作由10 名藥學(xué)院的學(xué)生進(jìn)行,如果對同一數(shù)據(jù)的標(biāo)注不一致,則按少數(shù)服從多數(shù)的規(guī)則處理,以相同標(biāo)注結(jié)果最多的標(biāo)注數(shù)據(jù)作為最終的標(biāo)注結(jié)果,如果對于某一數(shù)據(jù),每個人標(biāo)注結(jié)果都不同,則經(jīng)過討論后重新標(biāo)注該數(shù)據(jù),再選取相同標(biāo)注結(jié)果最多的數(shù)據(jù)作為最終標(biāo)注結(jié)果。將標(biāo)注的2 000 個文本隨機(jī)選取1 600 個作為初始訓(xùn)練集,另外400 個文本作為測試集。其余的4 000 個未標(biāo)注文本用于Tri-training訓(xùn)練。
抽取出的實體為癥狀(Sym)實體。本文采用BIO標(biāo)注法進(jìn)行標(biāo)注,B表示實體的開始,I表示實體的中間部分,O表示不屬于實體。標(biāo)注的數(shù)據(jù)分為3個類別即:“B-sym”“I-sym”“O”。表1展示了問診記錄的標(biāo)注示例。

表1 樣本的BIO標(biāo)記示例Table 1 An example of BIO tag for sample
本文采用準(zhǔn)確率P(Precision)、召回率R(Recall)和F1值(F1-Score)作為評價指標(biāo)。其定義如下:
其中,TP表示把正例正確地預(yù)測為正例的數(shù)量,F(xiàn)P表示把負(fù)例錯誤地預(yù)測為正例的數(shù)量,F(xiàn)N 表示把正例錯誤地預(yù)測為負(fù)例的數(shù)量。
采用pytorch深度學(xué)習(xí)框架。文本的最大長度設(shè)置為240。Bert預(yù)訓(xùn)練模型包含12個encoder層,多頭注意力機(jī)制的頭數(shù)為12,字向量維度為768。詞向量維度為200。BiLSTM的隱藏單元個數(shù)為128,層數(shù)為2。IDCNN卷積核尺寸為3×3,膨脹卷積塊為4,每個膨脹卷積塊的膨脹卷積層為3,膨脹寬度為1、1、2。
在訓(xùn)練過程中,采用Adam 優(yōu)化器,初始學(xué)習(xí)率為5×10-5,dropout為0.5,batch_size設(shè)置為32。
3.3.1 ADR實體抽取模型對比實驗
為了驗證三個基礎(chǔ)學(xué)習(xí)器的有效性,分別對三個基學(xué)習(xí)器Transformer+CRF、BiLSTM+CRF、IDCNN+CRF進(jìn)行了比較。還將所提出的模型與近幾年來其他ADR實體抽取模型進(jìn)行了比較。使用精確率、召回率和F1值作為評價指標(biāo),選取不同數(shù)量的標(biāo)注數(shù)據(jù)和4 000 條未標(biāo)注數(shù)據(jù),實驗結(jié)果如表2所示。

表2 ADR實體抽取模型對比結(jié)果Table 2 Results of ADR entity extraction models
BiLSTM-CRF-attention[9]:一種具有自注意機(jī)制的有監(jiān)督中文醫(yī)療實體識別模型。自注意機(jī)制可以通過在每個字符之間建立直接聯(lián)系來學(xué)習(xí)長期依賴關(guān)系。還在模型中引入詞性標(biāo)注信息來獲取輸入句子中的語義信息。
BERT+BiLSTM+CRF[23]:一種監(jiān)督模型,通過在中文臨床領(lǐng)域語料庫上預(yù)訓(xùn)練BERT,并納入了詞典特征,根據(jù)漢語特征將部首特征應(yīng)用于模型。
TBI+CRF:本文采用的三個學(xué)習(xí)器Transformer+CRF、BiLSTM+CRF 和IDCNN+CRF 組成的聯(lián)合學(xué)習(xí)器,在訓(xùn)練時只使用標(biāo)注數(shù)據(jù),即進(jìn)行全監(jiān)督訓(xùn)練,訓(xùn)練后的聯(lián)合學(xué)習(xí)器采用投票機(jī)制標(biāo)注無標(biāo)簽數(shù)據(jù)。
由表2可知,相對于三個基學(xué)習(xí)器,聯(lián)合學(xué)習(xí)器的性能有了明顯的提升,其F1 值達(dá)到了0.704 7。BiLSTM+CRF+attention 模型由于加入了注意力機(jī)制,通過在每個字符之間建立直接聯(lián)系來學(xué)習(xí)長期依賴關(guān)系,故相比BiLSTM+CRF 模型性能有所提升。而采用BERT+BiLSTM+CRF模型后,F(xiàn)1值有了明顯的提升,可能是由于引入了特定領(lǐng)域的BERT預(yù)訓(xùn)練模型,而且部首特征對于藥物不良實體抽取反應(yīng)有一定的幫助。在標(biāo)注數(shù)據(jù)量較少時,TBI+CRF 模型相比其他模型也能有較好的性能,可能是因為有三個學(xué)習(xí)器,對樣本進(jìn)行選擇以后,準(zhǔn)確率有所提高。隨著標(biāo)注數(shù)據(jù)量的增多,性能也有明顯提升。這充分說明,本文的模型應(yīng)用于標(biāo)注數(shù)據(jù)少的社交媒體藥物不良反應(yīng)實體抽取任務(wù)有較好的效果,并且能充分利用未標(biāo)注數(shù)據(jù)。
3.3.2 消融實驗
為了進(jìn)一步分析輸入對學(xué)習(xí)器性能的影響,對輸入進(jìn)行了消融實驗,實驗結(jié)果如表3所示。

表3 消融實驗結(jié)果Table 3 Ablation experiment results
(1)“-word”:去除輸入中的詞向量。直接通過BERT得到每個字的向量,作為模型的輸入。
(2)“-character”:去除輸入中的字向量。利用Jieba分詞工具對輸入文本進(jìn)行分詞處理,再使用騰訊AI Lab提出的騰訊詞向量得到詞向量,作為模型的輸入。
由表3 可知,當(dāng)去除詞向量后,模型的性能有一定程度的下降。如前所述,字向量已經(jīng)被證實對于中文社交媒體實體抽取的效果好于詞向量,但是字向量可能會學(xué)不出詞語間的關(guān)系。僅僅使用字向量不能充分理解句子的上下文表示。去除字向量后,模型的性能又一次下降,這表明由于社交媒體文本不正式,存在口語化內(nèi)容,使用詞向量存在邊界模糊,產(chǎn)生的分詞錯誤易產(chǎn)生歧義,而且詞向量的信息粒度大,學(xué)不出字符級別的語義信息。
為了驗證所提出的模型能充分利用少量的標(biāo)注數(shù)據(jù)進(jìn)行學(xué)習(xí),對比了全監(jiān)督方法與各半監(jiān)督方法在不同標(biāo)注數(shù)據(jù)情況下的性能。實驗選取不同數(shù)量的標(biāo)注數(shù)據(jù)和4 000條未標(biāo)注數(shù)據(jù),實驗結(jié)果如表4所示。

表4 不同標(biāo)注數(shù)據(jù)量下各模型對比結(jié)果Table 4 Results of each model under different amount of annotated data
co-training[24]:一種基于分歧的半監(jiān)督學(xué)習(xí)方法。選擇本文性能較好的兩個學(xué)習(xí)器Transformer+CRF 和BiLSTM+CRF,首先利用有標(biāo)簽數(shù)據(jù)訓(xùn)練其中一個學(xué)習(xí)器,再使用該學(xué)習(xí)器挑選最有把握的數(shù)據(jù)賦予偽標(biāo)簽,將偽標(biāo)簽數(shù)據(jù)提供給另一個學(xué)習(xí)器進(jìn)行訓(xùn)練,通過共同學(xué)習(xí),共同進(jìn)步的迭代過程,直到兩個學(xué)習(xí)器不發(fā)生變化。
self-training[16]:一種簡單的半監(jiān)督學(xué)習(xí)方法。使用本文性能最好的一個學(xué)習(xí)器Transformer+CRF,首先利用有標(biāo)簽的數(shù)據(jù)訓(xùn)練模型,再利用該模型選出最有把握的數(shù)據(jù)進(jìn)行標(biāo)注,將標(biāo)注的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)加入到模型的訓(xùn)練集中,重復(fù)迭代過程,得到最終的學(xué)習(xí)器。
Π-MODEL[25]:簡單的一致性正則半監(jiān)督模型,同一個無標(biāo)簽數(shù)據(jù)前向傳播兩次,通過數(shù)據(jù)增強(qiáng)和dropout加入隨機(jī)噪聲,得到不同的預(yù)測,Π-MODEL 希望這兩個預(yù)測盡可能一致。本文通過輸入兩次Transformer+CRF網(wǎng)絡(luò),其中一次利用dropout,對比兩次預(yù)測結(jié)果的差異,調(diào)整網(wǎng)絡(luò)參數(shù)。
Tri-training:標(biāo)準(zhǔn)Tri-training模型。
Ours:本文提出的模型,在訓(xùn)練時加入未標(biāo)注數(shù)據(jù),即進(jìn)行半監(jiān)督訓(xùn)練。
由表4 可知,co-training 模型、self-training 模型和Π-MODEL 模型在剛開始標(biāo)注數(shù)據(jù)量少時,其性能較低,隨著標(biāo)注數(shù)據(jù)量逐漸增多,性能逐漸提升,但是相比于本文的模型F1 值也相差了0.063 1,可能是因為模型產(chǎn)生的偽標(biāo)簽噪音非常的大,使模型朝著錯誤的方向發(fā)展。而本文提出的模型通過三個學(xué)習(xí)器對標(biāo)簽進(jìn)行投票,提高了標(biāo)簽的質(zhì)量。相比于Π-MODEL 模型,在標(biāo)注數(shù)據(jù)量較少時,本文的模型也能有較高的準(zhǔn)確率。隨著標(biāo)注數(shù)據(jù)量的增加,Π-MODEL模型與本文的模型性能逐漸接近。本文模型的F1 值相比于標(biāo)準(zhǔn)Tri-training模型提高了0.074 2,可能是因為標(biāo)準(zhǔn)Tri-training模型的樣本選擇策略為兩個學(xué)習(xí)器具有相同答案才會加入另一個學(xué)習(xí)器中,不太適用于命名實體識別任務(wù),而改進(jìn)的Tri-training模型更適用于本任務(wù),這進(jìn)一步驗證了改進(jìn)的樣本選擇策略的合理性。而且,在標(biāo)注數(shù)據(jù)量相等時,本文提出的模型在半監(jiān)督的情況下比在全監(jiān)督的情況下,性能提升了0.027 8,說明本文的模型能充分利用未標(biāo)注數(shù)據(jù),能減弱標(biāo)注數(shù)據(jù)量少帶來的影響。而隨著標(biāo)注數(shù)據(jù)逐漸增多,更是驗證了這一結(jié)論。
本文提出了一種基于Tri-training的半監(jiān)督社交媒體藥物不良反應(yīng)實體抽取模型。該模型利用Tri-training的半監(jiān)督的方法結(jié)合三個學(xué)習(xí)器進(jìn)行社交媒體藥物不良反應(yīng)的實體抽取,解決了社交媒體大量未標(biāo)注語料標(biāo)注成本高的問題,減小了研究成本且提高了預(yù)測效果。此外,利用了字向量和詞向量兩個粒度的豐富語義信息,解決了社交媒體文本口語化造成的噪聲問題。所提出的模型在“好大夫在線”網(wǎng)站獲取的數(shù)據(jù)集上取得了較好的結(jié)果,驗證了該模型的有效性。下一步的研究工作中,將進(jìn)一步融合其他特征如偏旁部首等信息進(jìn)行實體抽取,探究其對模型性能的影響。