何忠玻,嚴 馨,徐廣義,張金鵬,鄧忠瑩
1.昆明理工大學 信息工程與自動化學院,昆明 650500
2.昆明理工大學 云南省人工智能重點實驗室,昆明 650500
3.云南南天電子信息產業(yè)股份有限公司 昆明南天電腦系統(tǒng)有限公司,昆明 650040
4.云南大學 信息學院,昆明 650091
5.云南財經大學 信息學院,昆明 650221
隨著人們生活水平的不斷提高,個人健康狀況也越來越得到重視,而在醫(yī)療領域,藥物不良反應(adverse drug reaction,ADR)也成為人們廣泛討論的問題。藥物不良反應指的是患者在用藥后,產生的有害反應。有研究表明,藥物不良反應已經成為繼心臟病、艾滋病和糖尿病之后的第四高死亡率的醫(yī)學問題[1]。
社交媒體逐漸成為人們知識交流和情感分享的主要平臺,患者可以在社交媒體上發(fā)表自己的感受及癥狀,以詢求醫(yī)生對策。這些數(shù)據(jù)是龐大且實時的,充分利用這些信息可以及時地發(fā)現(xiàn)藥物不良反應,解決傳統(tǒng)臨床研究效率低、依賴性強等各種局限性,彌補藥物上市前研究的不足,為藥物上市后的風險管理提供技術支持,保障公眾健康。但社交媒體文本的口語化,噪聲大等特點,給社交媒體藥物不良反應實體抽取帶來了挑戰(zhàn)。
ADR實體包括患者出現(xiàn)不良反應的身體部位及其癥狀,例如“涂了阿達帕林凝膠臉上起紅疹脫皮”其中,“臉上起紅疹脫皮”可看作是ADR實體。ADR實體抽取可以表述為命名實體抽取任務。在醫(yī)療領域,命名實體識別方法的發(fā)展整體上經歷了基于規(guī)則與詞典的方法、基于統(tǒng)計機器學習的方法和基于深度學習三個階段。由于社交媒體藥物不良反應實體抽取的開放語料比較匱乏,并且社交媒體文本標注數(shù)據(jù)量大、成本高。針對以上局限性,同時考慮到Tri-training為簡潔的自動標注數(shù)據(jù)的經典方法,本文提出基于Tri-training的社交媒體藥物不良反應實體抽取模型。使用Tri-training 的半監(jiān)督方法充分利用社交媒體中的未標注數(shù)據(jù)。本文的貢獻如下:首先,針對社交媒體大量未標注語料標注成本高的問題,采用Tri-training半監(jiān)督的方法進行社交媒體藥物不良反應實體抽取,通過三個學習器Transformer+CRF、BiLSTM+CRF 和IDCNN+CRF 對未標注數(shù)據(jù)進行標注,并利用一致性評價函數(shù)迭代地擴展訓練集,最后通過加權投票整合模型輸出標簽;其次,針對社交媒體的文本不正式性(口語化嚴重、錯別字等)問題,利用融合字與詞兩個粒度的向量形成一個新的向量作為模型的輸入來促進語義信息提取。實驗結果表明,提出的模型能夠有效地促進社交媒體藥物不良反應實體的抽取。
基于規(guī)則與詞典的方法流行于20世紀末到21世紀末期?;谝?guī)則與詞典的方法依賴于相關領域專家構建的專業(yè)詞典及規(guī)則模型,再通過匹配的方式進行命名實體識別。例如1994 年Friedman 等人[2]將疾病名稱和修飾成分映射到語法規(guī)則詞典中對其進行實體識別。但這種方法耗時耗力,同時,只適用于特定類型實體的識別,即擴展性、泛化能力不強。
基于統(tǒng)計機器學習的方法包括隱馬爾科夫模型(hidden Markov model,HMM)、支持向量機(support vector machine,SVM)、條件隨機場(conditional random field,CRF)和最大熵(maximum entropy,ME)等。Li 等人[3]將基于CRF 的方法和基于SVM 的方法在臨床實體識別上的性能作比較,得出了前者優(yōu)于后者效果的結論。Aramaki 等人[4]使用SVM 和CRF,利用基于詞庫的特征、POS標簽、詞鏈等提取藥物不良反應。Tang等人[5]提出了結構化支持向量機(structed SVM,SSVM)用于識別臨床記錄中的實體,該算法結合了SVM和CRF,實驗結果表明,在同一特征條件下,基于SSVM 的臨床實體識別效果比基于CRF 的臨床實體識別效果更好。Zhang等人[6]提出了一種無監(jiān)督的方法從生物醫(yī)學文本中提取實體,該方法不依賴于任何人工制作的規(guī)則或注釋數(shù)據(jù),在兩個主流的生物醫(yī)學數(shù)據(jù)集上證明了其有效性,基于統(tǒng)計機器學習的方法相比基于規(guī)則的方法在性能上有比較大的提高,但也依賴一些規(guī)則和詞典信息,故導致在實際運用中效果欠佳。
隨著深度學習的流行,研究者們發(fā)現(xiàn)將神經網絡應用于實體識別可以降低訓練代價,逐漸地,深度學習被廣泛應用于自然語言處理中,藥物實體抽取進入新的階段。深度學習模型一般有卷積神經網絡(convolutional neural network,CNN)、循環(huán)神經網絡(recurrent neural network,RNN)、長短期記憶網絡(long short-term memory,LSTM)和BERT 模型等。RNN 使得深度學習在文本序列處理中得到了廣泛應用。后由Hochreiter 等人[7]提出的LSTM解決了RNN的梯度消失和梯度爆炸的問題。Greenberg 等人[8]使用BiLSTM+CRF 在生物醫(yī)學命名實體識別上取得了較為優(yōu)秀的結果。此外還有許多改良版本,如BiLSTM-CRF-attention[9]、CNN-LSTM-CRF[10]等。2018年BERT誕生,其強大的泛化能力及特征提取能力使得許多研究者認為BERT 可以代替任何RNN 模型。Dai 等人[11]用BERT-BiLSTM-CRF 模型在中國電子病歷中醫(yī)學命名實體識別的F1評分達到0.75。盡管深度學習模型往往表現(xiàn)很好,但通常是基于大量標注數(shù)據(jù)的監(jiān)督學習。當面臨少量的標注數(shù)據(jù)時,就會出現(xiàn)過擬合現(xiàn)象,嚴重影響預測的準確性[12]。而半監(jiān)督方式可以利用少量的標記數(shù)據(jù)擴充訓練集,進而提高模型的準確率。常見的半監(jiān)督學習有self-training[13]、co-training[14]和Tri-training[15]等。Gupta 等人[16]提出了一種多任務學習方法,以self-training方法對藥物不良反應事件抽取進而輔助ADR 的抽取,在Twitter 數(shù)據(jù)集上F1 值達到了0.64。Deng 等人[17]提出了一種基于co-training 的方法,從中藥專利摘要文本中識別出藥品名稱,實驗表明該方法能在較低的時間復雜度下保持較高的精度。直接把self-training 應用于其他領域的效果往往不太理想,當self-training 將錯誤的樣本分類到訓練集中時,會導致錯誤越來越深,使用該樣本反而會對模型產生干擾。co-training 需要在兩個充分冗余的視圖上訓練學習器。而Tri-training 是co-training 的一種改進,也是一種基于分歧的方法,它不需要冗余的視圖來描述實例空間,因此它的適用性比co-training算法更好。
本文提出了一個基于Tri-training 的半監(jiān)督社交媒體藥物不良反應實體抽取模型,整體框架如圖1 所示。首先使用少量的標注數(shù)據(jù)訓練三個不同的基學習器Transformer+CRF、BiLSTM+CRF 和IDCNN+CRF,三個編碼器負責提取深層次的語義信息,CRF層負責學習標簽之間的依賴關系,以優(yōu)化模型。在大量的未標注數(shù)據(jù)上對三個基學習器進行協(xié)同訓練,最后將該聯(lián)合學習器對測試集的樣本進行標注,得到最終的標注序列,解決社交媒體文本標注數(shù)據(jù)少導致的模型性能不足的問題。其次,采用字和詞兩個粒度的向量作為三個基學習器的輸入。使用BERT模型來獲得輸入文本的字向量;利用Jieba 分詞工具對輸入文本進行分詞處理,再使用騰訊詞向量得到輸入文本的詞向量。融合兩種向量作為模型嵌入層的輸入以促進語義提取,解決社交媒體文本表達口語化的問題。
圖1 改進的Tri-training訓練過程Fig.1 Training process of improved Tri-training
考慮到對數(shù)據(jù)進行標注的代價較高,使用半監(jiān)督學習方法,只使用一小部分帶標簽數(shù)據(jù)促進模型對大部分未標注數(shù)據(jù)的利用。標準Tri-training使用了三個相同的學習器,首先將已標注數(shù)據(jù)集進行重復采樣(bootstrap sampling)得到三個訓練集,用于分別訓練三個學習器,在迭代訓練過程中,如果有兩個學習器預測的標簽一致,則認為該數(shù)據(jù)的置信度高,將其標注并送入第三個學習器的訓練集中一起訓練第三個學習器。
為了更好地適用于本任務,針對標準的Tri-training進行改進。首先,采用了三個不同的學習器,以實現(xiàn)訓練結果的差異性。其次,本文采用謝俊等人[18]提出的樣本選擇策略,解決標準Tri-training用于序列標注任務導致的偽標簽數(shù)據(jù)少的問題。采用改進的樣本選擇策略可以將預測不一致的樣本按照比例加入訓練集中用于訓練學習器,解決了標準Tri-training的三個學習器很難預測一致進而導致樣本選擇死循環(huán),這相比于標準Tri-training的策略更有利于充分利用未標注數(shù)據(jù)訓練模型。
該策略如下:計算任意兩個學習器對某一樣本的一致性得分,若存在兩個學習器的一致性得分相等,則將該偽標簽數(shù)據(jù)加入到第三個學習器中作為訓練數(shù)據(jù);對于任意兩個學習器一致性得分都不相等的樣本,按30%的比例選取兩個學習器一致性最低的樣本集,再按30%的比例選取另外兩個學習器一致性最高的樣本集,取其交集送入共有的學習器中標注,最后作為與該學習器一致性最小學習器的訓練數(shù)據(jù)。
整體訓練如圖1 所示,其中Hj、Hk、Hl為三個學習器。
首先,利用標注樣本集中的數(shù)據(jù)分別訓練三個學習器Hj、Hk、Hl。
然后,利用此三個學習器分別對未標注樣本集U進行標注,并根據(jù)樣本選擇策略選出樣本子集。其過程如下:
對于輸入的序列X={x1,x2,…,xn},三個學習器Hj、Hk、Hl得到的標注序列分別為L1={y11,y12,…,y1n},L2={y21,y22,…,y2n},L3={y31,y32,…,y3n},其中兩個學習器對樣本X的一致性評價函數(shù)Ag(Xa,Xd)為:
(1)根據(jù)Hj和Hk的評價得分對所有樣本進行排序,按30%的比例選擇一致性評價函數(shù)最低的樣本子集。
(2)根據(jù)Hk和Hl的評價得分對所有樣本進行排序,按30%的比例選擇一致性評價函數(shù)最高的樣本子集。
(3)取這兩個子集的交集,將樣本送入Hk中進行標注,再將標注后的數(shù)據(jù)作為Hj的訓練數(shù)據(jù)。
對另外兩個學習器進行類似的操作,可得三個擴充的標注數(shù)據(jù)集。再使用擴充的標注數(shù)據(jù)集分別訓練三個分類器。
重復以上迭代過程,直到U為空。得到最終的聯(lián)合學習器H。
藥物不良反應實體抽取的Tri-training 算法如下所示:
算法藥物不良反應實體抽取的Tri-training算法
訓練結束后,采用投票機制對測試集的樣本進行標注,得到最終的標注序列。計算方式如下:
為了保持三個學習器的多樣性,本文采用Transformer+CRF、BiLSTM+CRF 和IDCNN+CRF 用于社交媒體藥物不良反應實體抽取。使用Transformer、BiLSTM 和IDCNN 作為編碼器可以充分捕捉上下文特征,將得到的特征向量作為CRF的輸入最終輸出每個字的標簽。同時考慮到社交媒體文本的不正式性,利用字和詞兩個粒度的向量作為模型的輸入。學習器結構如圖2所示。
圖2 三個學習器Hj、Hk、Hl 模型結構Fig.2 Structure of three learner models of Hj、Hk、Hl
2.2.1 輸入層
基于深度學習的實體抽取的輸入主要有字向量和詞向量兩種方式。對于中文來說,由于邊界模糊,使用詞向量產生的分詞錯誤易產生歧義,故主要采用字向量作為輸入。但是,使用字向量也有不足,字和詞之間的語義表達有時差異是很大的,字向量難以捕捉到詞的語義信息。由于社交媒體文本比較口語化,會導致模型性能下降,故提出結合字和詞兩個粒度的向量作為模型的輸入來充分利用其語義信息。
BERT模型可以充分利用字符的上下文來生成字符級別的向量,充分發(fā)揮漢字的表義能力[19]。使用BERT模型來獲得字向量。BERT 的輸入主要由三部分組成:Token embeddings、Segment embeddings 和Position embeddings。其中,Token embeddings 是對應每個字的向量,Segment embeddings 用于區(qū)分兩個句子,Position embeddings用于存儲字符的位置信息。此外,在句子的開頭有一個[CLS]字符,結尾有一個[SEP]字符。最后的輸入是三個向量的總和。給定句子X={c1,c2,…,cn},其中ci表示句子中第i個字,最終可得到字向量Xc=。
對于詞向量,首先利用Jieba分詞工具對輸入文本進行分詞處理,再使用騰訊AI Lab 提出的騰訊詞向量[20]得到詞向量。由于中文的詞可能包含多個字,為了使詞向量與字向量對齊,為每個組成詞的字重復分配該詞。如圖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)和前饋網絡層(feed forward network)組成。本文采用Transformer 編碼層用于特征提取,主要是為了計算語句中字與字之間的關系從而獲取全局特征信息,并且提高了模型的并行計算能力。將融合了字信息與詞信息的向量X輸入到Transformer 編碼器中,進行特征提取。
第一個子層為多頭注意力層。由于Transformer 沒有卷積或遞歸網絡結構,因此在特征提取過程中不能像它們那樣對文本序列的位置信息進行編碼,所以需要將位置向量嵌入到輸入向量中。用不同頻率的正弦碼和余弦碼來構造位置向量。計算方式如下:
其中,pos表示字的位置,d表示輸入的維度,i為向量中每個值的索引。
將輸入向量X進行線性變換,將其映射到三個不同的空間,得三個特征矩陣Q、K、V,計算方式如下:
其中,WQ、WK、WV為權重矩陣。
注意力機制為該模型的核心機制,計算方式如下:
Transformer 編碼器使用的是多頭注意力機制,即通過h個線性變換對Q、K、V做投影,多次經過selfattention,最后將結果進行拼接,經過線性變換之后得到輸出特征矩陣Z。計算方式如下:
其中,LayerNorm為歸一化函數(shù),W1、W2為權重函數(shù),b1、b2為偏置。
最后,得到輸入序列經過編碼之后的特征矩陣S作為Transformer編碼器的最后輸出:
為了便于后續(xù)CRF對序列的標注,在隱藏層后接入一個線性變化層,將隱狀態(tài)序列從n×m維映射到n×k維,k代表標注集中所有的標簽數(shù),將結果記作矩陣A(1),計算方式如下:
(2)BiLSTM編碼器
BiLSTM 是一種改進的RNN,可以解決RNN 在訓練過程中的梯度消失和梯度爆炸的問題。通過引入門控機制,可以很容易發(fā)現(xiàn)長距離信息。通過前向和后向狀態(tài)有效地利用前一個特征和后一個特征??梢愿玫夭蹲诫p向語義依賴,有效學習上下文語義信息。字嵌入序列X=(x1,x2,…,xn)作為BiLSTM的輸入。
門控制單元包含遺忘門、輸入門和輸出門。計算方式如下:
式中,ht-1表示上一時刻的隱藏狀態(tài),xt為當前時刻的輸入,Wf、Wi、Wc和Wo為權重矩陣。bf、bi、bc和bo為偏置向量。σ為sigmoid 激活函數(shù),tanh 為雙曲正切激活函數(shù)。ft表示遺忘門,決定拋棄上一時刻的那些信息。it為更新門,決定哪些值要更新。ot為輸出門,決定哪些信息應該輸出給外部狀態(tài)ht。
BiLSTM捕獲了正向語義信息和逆向語義信息,在t時刻,輸出狀態(tài)ht由正向LSTM 輸出的ht1和反向LSTM輸出的ht2連接而成:ht=[ht1;ht2]。輸出隱藏狀態(tài)序列H=(h1,h2,…,hn)。同樣,為了便于后續(xù)CRF 對序列的標注,在隱藏層后接入一個線性變化層,將隱狀態(tài)序列從n×m維映射到n×k維,k代表標注集中所有的標簽數(shù),將結果記作矩陣A(2),計算方式如下:
(3)IDCNN編碼器
由于數(shù)據(jù)來自于網站的問診,可能會包括既往病史、癥狀及用藥情況,這就導致文本較長。盡管使用CNN在計算上有優(yōu)勢,但是經過卷積層之后,可能會損失一部分信息。對于長文本數(shù)據(jù)時,要提取上下文信息,就得加入更多的卷積層,這會導致網絡越來越深,參數(shù)特別多,進而造成過擬合。于是采用膨脹卷積(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用于實體識別。先構建一個層數(shù)不多的膨脹模塊,該模塊包含幾個膨脹卷積層,每一次模塊的輸出又作為輸入重復傳入模塊中,即以迭代的方式重復使用相同的參數(shù)。模型既可以接收更寬的輸入又具有更好的泛化能力。
對于輸入序列X=(x1,x2,…,xn)首先IDCNN 第一層對輸入進行轉換:
其中,c(0)表示第一層的輸出,表示第j層膨脹卷積,膨脹系數(shù)為δ。
然后IDCNN用Lc層膨脹卷積來構造膨脹模塊,第j層膨脹卷積的輸出c(j)為:
其中r()表示ReLU激活函數(shù)。
最后一層為:
將這種堆疊記作膨脹卷積塊B(),IDCNN會迭代使用相同的模塊Lb次提取特征,從開始,第k次迭代使用膨脹卷積塊的輸入為:
最終的序列輸出為:
最后接入一個線性變化層,將隱狀態(tài)序列從n×m維映射到n×k維,k代表標注集中所有的標簽數(shù),將結果記作矩陣A(3),計算方式如下:
2.2.3 CRF層
本文引入了條件隨機場來學習標簽之間的依賴關系,限制了生成標簽之間的關系,得到最優(yōu)標記結果。對于給定的字符序列X=(x1,x2,…,xn),定義Transformer編碼器的輸出為矩陣A()1,BiLSTM 編碼器的輸出為矩陣A(2),IDCNN編碼器的輸出為矩陣A(3),其大小為n×k,n為字符個數(shù),k為標簽種類。以Transformer編碼器的輸出A(1)為例,視作第i個字被標記為yi的概率。
輸出預測結果為y=(y1,y2,…,yn)的評估分數(shù)計算方式如下:
其中,n為序列長度,M為轉移矩陣,Myi-1,yi表示從yi-1標簽轉移到y(tǒng)i標簽的得分。
使用Softmax函數(shù)可以得到歸一化概率:
其中,為真實標簽,YX表示所有可能的標簽序列。
模型的目標是使正確標注序列的概率最大,訓練CRF時的似然函數(shù)計算方式如下:
最終輸出概率得分最大的一組序列計算方式如下:
最后,通過CRF 層輸出概率最高的標簽,從而得到每個字的類別。
目前,用于社交媒體藥物不良反應實體抽取的開放語料比較匱乏,因此,自行構建了藥物不良反應數(shù)據(jù)集。從“好大夫在線”網站(https://www.haodf.com/)搜集了患者的問診記錄?!昂么蠓蛟诰€”網站成立于2006年,旨在為患者實時提供就醫(yī)參考信息。匯集了在線問診、預約掛號、疾病知識、經驗分享等功能。在線問診又可按疾病、醫(yī)院和科室找大夫問診。用戶說明疾病和用藥情況等進行詢問,醫(yī)生在線給出相應的建議。如圖5所示,問診記錄包含了用藥情況、病癥和接診醫(yī)生建議等信息。
圖5 患者問診記錄Fig.5 Medical records of patient
根據(jù)80種常用藥,包括降壓藥、消炎藥、止痛藥等,爬取了2010 年12 月31 日到2020 年3 月25 日的相關記錄,得到了41 100 個文本。通過對文本進行預處理,去重整理,篩選出帶藥物及不良反應的文本共計6 000個,再選擇其中的2 000 個文本進行人工標注,這個工作由10 名藥學院的學生進行,如果對同一數(shù)據(jù)的標注不一致,則按少數(shù)服從多數(shù)的規(guī)則處理,以相同標注結果最多的標注數(shù)據(jù)作為最終的標注結果,如果對于某一數(shù)據(jù),每個人標注結果都不同,則經過討論后重新標注該數(shù)據(jù),再選取相同標注結果最多的數(shù)據(jù)作為最終標注結果。將標注的2 000 個文本隨機選取1 600 個作為初始訓練集,另外400 個文本作為測試集。其余的4 000 個未標注文本用于Tri-training訓練。
抽取出的實體為癥狀(Sym)實體。本文采用BIO標注法進行標注,B表示實體的開始,I表示實體的中間部分,O表示不屬于實體。標注的數(shù)據(jù)分為3個類別即:“B-sym”“I-sym”“O”。表1展示了問診記錄的標注示例。
表1 樣本的BIO標記示例Table 1 An example of BIO tag for sample
本文采用準確率P(Precision)、召回率R(Recall)和F1值(F1-Score)作為評價指標。其定義如下:
其中,TP表示把正例正確地預測為正例的數(shù)量,F(xiàn)P表示把負例錯誤地預測為正例的數(shù)量,F(xiàn)N 表示把正例錯誤地預測為負例的數(shù)量。
采用pytorch深度學習框架。文本的最大長度設置為240。Bert預訓練模型包含12個encoder層,多頭注意力機制的頭數(shù)為12,字向量維度為768。詞向量維度為200。BiLSTM的隱藏單元個數(shù)為128,層數(shù)為2。IDCNN卷積核尺寸為3×3,膨脹卷積塊為4,每個膨脹卷積塊的膨脹卷積層為3,膨脹寬度為1、1、2。
在訓練過程中,采用Adam 優(yōu)化器,初始學習率為5×10-5,dropout為0.5,batch_size設置為32。
3.3.1 ADR實體抽取模型對比實驗
為了驗證三個基礎學習器的有效性,分別對三個基學習器Transformer+CRF、BiLSTM+CRF、IDCNN+CRF進行了比較。還將所提出的模型與近幾年來其他ADR實體抽取模型進行了比較。使用精確率、召回率和F1值作為評價指標,選取不同數(shù)量的標注數(shù)據(jù)和4 000 條未標注數(shù)據(jù),實驗結果如表2所示。
表2 ADR實體抽取模型對比結果Table 2 Results of ADR entity extraction models
BiLSTM-CRF-attention[9]:一種具有自注意機制的有監(jiān)督中文醫(yī)療實體識別模型。自注意機制可以通過在每個字符之間建立直接聯(lián)系來學習長期依賴關系。還在模型中引入詞性標注信息來獲取輸入句子中的語義信息。
BERT+BiLSTM+CRF[23]:一種監(jiān)督模型,通過在中文臨床領域語料庫上預訓練BERT,并納入了詞典特征,根據(jù)漢語特征將部首特征應用于模型。
TBI+CRF:本文采用的三個學習器Transformer+CRF、BiLSTM+CRF 和IDCNN+CRF 組成的聯(lián)合學習器,在訓練時只使用標注數(shù)據(jù),即進行全監(jiān)督訓練,訓練后的聯(lián)合學習器采用投票機制標注無標簽數(shù)據(jù)。
由表2可知,相對于三個基學習器,聯(lián)合學習器的性能有了明顯的提升,其F1 值達到了0.704 7。BiLSTM+CRF+attention 模型由于加入了注意力機制,通過在每個字符之間建立直接聯(lián)系來學習長期依賴關系,故相比BiLSTM+CRF 模型性能有所提升。而采用BERT+BiLSTM+CRF模型后,F(xiàn)1值有了明顯的提升,可能是由于引入了特定領域的BERT預訓練模型,而且部首特征對于藥物不良實體抽取反應有一定的幫助。在標注數(shù)據(jù)量較少時,TBI+CRF 模型相比其他模型也能有較好的性能,可能是因為有三個學習器,對樣本進行選擇以后,準確率有所提高。隨著標注數(shù)據(jù)量的增多,性能也有明顯提升。這充分說明,本文的模型應用于標注數(shù)據(jù)少的社交媒體藥物不良反應實體抽取任務有較好的效果,并且能充分利用未標注數(shù)據(jù)。
3.3.2 消融實驗
為了進一步分析輸入對學習器性能的影響,對輸入進行了消融實驗,實驗結果如表3所示。
表3 消融實驗結果Table 3 Ablation experiment results
(1)“-word”:去除輸入中的詞向量。直接通過BERT得到每個字的向量,作為模型的輸入。
(2)“-character”:去除輸入中的字向量。利用Jieba分詞工具對輸入文本進行分詞處理,再使用騰訊AI Lab提出的騰訊詞向量得到詞向量,作為模型的輸入。
由表3 可知,當去除詞向量后,模型的性能有一定程度的下降。如前所述,字向量已經被證實對于中文社交媒體實體抽取的效果好于詞向量,但是字向量可能會學不出詞語間的關系。僅僅使用字向量不能充分理解句子的上下文表示。去除字向量后,模型的性能又一次下降,這表明由于社交媒體文本不正式,存在口語化內容,使用詞向量存在邊界模糊,產生的分詞錯誤易產生歧義,而且詞向量的信息粒度大,學不出字符級別的語義信息。
為了驗證所提出的模型能充分利用少量的標注數(shù)據(jù)進行學習,對比了全監(jiān)督方法與各半監(jiān)督方法在不同標注數(shù)據(jù)情況下的性能。實驗選取不同數(shù)量的標注數(shù)據(jù)和4 000條未標注數(shù)據(jù),實驗結果如表4所示。
表4 不同標注數(shù)據(jù)量下各模型對比結果Table 4 Results of each model under different amount of annotated data
co-training[24]:一種基于分歧的半監(jiān)督學習方法。選擇本文性能較好的兩個學習器Transformer+CRF 和BiLSTM+CRF,首先利用有標簽數(shù)據(jù)訓練其中一個學習器,再使用該學習器挑選最有把握的數(shù)據(jù)賦予偽標簽,將偽標簽數(shù)據(jù)提供給另一個學習器進行訓練,通過共同學習,共同進步的迭代過程,直到兩個學習器不發(fā)生變化。
self-training[16]:一種簡單的半監(jiān)督學習方法。使用本文性能最好的一個學習器Transformer+CRF,首先利用有標簽的數(shù)據(jù)訓練模型,再利用該模型選出最有把握的數(shù)據(jù)進行標注,將標注的數(shù)據(jù)作為訓練數(shù)據(jù)加入到模型的訓練集中,重復迭代過程,得到最終的學習器。
Π-MODEL[25]:簡單的一致性正則半監(jiān)督模型,同一個無標簽數(shù)據(jù)前向傳播兩次,通過數(shù)據(jù)增強和dropout加入隨機噪聲,得到不同的預測,Π-MODEL 希望這兩個預測盡可能一致。本文通過輸入兩次Transformer+CRF網絡,其中一次利用dropout,對比兩次預測結果的差異,調整網絡參數(shù)。
Tri-training:標準Tri-training模型。
Ours:本文提出的模型,在訓練時加入未標注數(shù)據(jù),即進行半監(jiān)督訓練。
由表4 可知,co-training 模型、self-training 模型和Π-MODEL 模型在剛開始標注數(shù)據(jù)量少時,其性能較低,隨著標注數(shù)據(jù)量逐漸增多,性能逐漸提升,但是相比于本文的模型F1 值也相差了0.063 1,可能是因為模型產生的偽標簽噪音非常的大,使模型朝著錯誤的方向發(fā)展。而本文提出的模型通過三個學習器對標簽進行投票,提高了標簽的質量。相比于Π-MODEL 模型,在標注數(shù)據(jù)量較少時,本文的模型也能有較高的準確率。隨著標注數(shù)據(jù)量的增加,Π-MODEL模型與本文的模型性能逐漸接近。本文模型的F1 值相比于標準Tri-training模型提高了0.074 2,可能是因為標準Tri-training模型的樣本選擇策略為兩個學習器具有相同答案才會加入另一個學習器中,不太適用于命名實體識別任務,而改進的Tri-training模型更適用于本任務,這進一步驗證了改進的樣本選擇策略的合理性。而且,在標注數(shù)據(jù)量相等時,本文提出的模型在半監(jiān)督的情況下比在全監(jiān)督的情況下,性能提升了0.027 8,說明本文的模型能充分利用未標注數(shù)據(jù),能減弱標注數(shù)據(jù)量少帶來的影響。而隨著標注數(shù)據(jù)逐漸增多,更是驗證了這一結論。
本文提出了一種基于Tri-training的半監(jiān)督社交媒體藥物不良反應實體抽取模型。該模型利用Tri-training的半監(jiān)督的方法結合三個學習器進行社交媒體藥物不良反應的實體抽取,解決了社交媒體大量未標注語料標注成本高的問題,減小了研究成本且提高了預測效果。此外,利用了字向量和詞向量兩個粒度的豐富語義信息,解決了社交媒體文本口語化造成的噪聲問題。所提出的模型在“好大夫在線”網站獲取的數(shù)據(jù)集上取得了較好的結果,驗證了該模型的有效性。下一步的研究工作中,將進一步融合其他特征如偏旁部首等信息進行實體抽取,探究其對模型性能的影響。