劉 逍,龔慶悅,李鐵軍,王紅云
(1.南京中醫(yī)藥大學(xué)人工智能與信息技術(shù)學(xué)院,江蘇南京 210046;2.南京中醫(yī)藥大學(xué)第二附屬醫(yī)院(江蘇省第二中醫(yī)院),江蘇南京 210017)
中醫(yī)作為一門學(xué)科,在傳承過程中,往往需要大量醫(yī)案經(jīng)驗(yàn)作為學(xué)習(xí)材料。中醫(yī)的發(fā)展以如今的眼光看來可以算作大數(shù)據(jù)分析的一種,即通過海量的同證候相似患者的四診信息,總結(jié)出適用于此證候的通用及更細(xì)化的治療手段。如果有充足的同一證候的不同患者醫(yī)案,提取其中的癥狀三元組,通過深度學(xué)習(xí)方法抽取其中的實(shí)體及關(guān)系,有助于構(gòu)建中醫(yī)醫(yī)案知識(shí)圖譜,更有利于四診信息與治療手段的實(shí)體關(guān)系預(yù)測。
實(shí)體關(guān)系抽取是自然語言處理中讀取文本獲得重要信息的核心任務(wù)之一,其目的是發(fā)現(xiàn)和識(shí)別隱含在實(shí)體之間的關(guān)系。其定義如下:給定一個(gè)句子S,其中包含實(shí)體A(EntityA)和實(shí)體B(EntityB),預(yù)測兩個(gè)實(shí)體間的關(guān)系r ∈R(R 代表數(shù)據(jù)集中所有關(guān)系的集合)?;蛘哒f,抽取實(shí)體之間的關(guān)系是將非結(jié)構(gòu)化的文本信息轉(zhuǎn)化為結(jié)構(gòu)化的信息,最終以關(guān)系三元組〈S,P,O〉的形式來描述。其中,S和O為主、客實(shí)體,P為預(yù)測出的兩個(gè)實(shí)體之間的關(guān)系。實(shí)體關(guān)系抽取研究成果對命名體識(shí)別和關(guān)系抽取[1]、推薦系統(tǒng)[2]、機(jī)器翻譯[3]和知識(shí)圖譜[4]等相關(guān)領(lǐng)域的研究都有重要意義。
根據(jù)給定句子中實(shí)體是否已被明確標(biāo)注,可作如下分類:若原始文本中已標(biāo)記出實(shí)體,則稱該任務(wù)為實(shí)體關(guān)系分類,或者稱其為流水線式關(guān)系抽??;若原始文本中未標(biāo)記出實(shí)體,關(guān)系抽取任務(wù)既要完成實(shí)體識(shí)別,又要完成關(guān)系抽取,則該任務(wù)被稱為聯(lián)合關(guān)系抽取。
在中醫(yī)領(lǐng)域的關(guān)系抽取任務(wù)中,有學(xué)者采用流水線式關(guān)系抽取模型對中醫(yī)文本進(jìn)行關(guān)系抽取。Xie 等[6]使用長短期記憶網(wǎng)絡(luò)(Long-Short Term Memory,LSTM)對已標(biāo)注好的數(shù)據(jù)進(jìn)行實(shí)體識(shí)別,再對提取的實(shí)體進(jìn)行關(guān)系分類以完成整個(gè)三元組的提取。在分類過程中,通過卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)對一詞多義的實(shí)體關(guān)系進(jìn)行知識(shí)融合。Zhang 等[7]使用條件隨機(jī)場(Conditional Random Field,CRF)進(jìn)行實(shí)體識(shí)別和抽取,采用爬蟲爬取實(shí)體屬性,并使用帶注意力機(jī)制的BiLSTM 進(jìn)行關(guān)系抽取,通過實(shí)體屬性實(shí)現(xiàn)對一詞多義的處理。Wang 等[8]采用綜合交叉熵?fù)p失函數(shù)與分段注意力機(jī)制的SEGATT層進(jìn)行關(guān)系分類,并使用CNN 進(jìn)行知識(shí)融合。2018 年,Google 公司發(fā)布預(yù)訓(xùn)練模型BERT(Bi-directional Encoder Representations from Transformers),此模型在自然語言處理的分類、命名體識(shí)別、關(guān)系抽取等任務(wù)中相較以往可獲得更好的效果。Liu 等[9]采用BERT+BiLSTM+CRF 進(jìn)行實(shí)體識(shí)別和關(guān)系抽取。
也有學(xué)者采用聯(lián)合模型進(jìn)行關(guān)系抽取。Lu 等[10]提出一個(gè)基于分層二進(jìn)制標(biāo)注框架(Hierarchical Binary Tagging Framework,HBT)的中醫(yī)文本聯(lián)合抽取方法;Tan 等[11]構(gòu)建基于Bert-wwm-ext 與損失優(yōu)化的多頭選擇中醫(yī)知識(shí)聯(lián)合抽取模型;Yang 等[12]提出一種融合數(shù)據(jù)增強(qiáng)和注意力機(jī)制的實(shí)體關(guān)系聯(lián)合抽取方法;Pang 等[13]提出一種基于三元組信息抽取策略的新型實(shí)體抽取模型,以解決傳統(tǒng)命名實(shí)體識(shí)別方法應(yīng)用于高血壓中醫(yī)電子病歷醫(yī)療實(shí)體識(shí)別時(shí)出現(xiàn)的實(shí)體離散問題。
本文將改進(jìn)后的BERT 模型應(yīng)用于中醫(yī)關(guān)系抽取任務(wù),利用SimBERT 模型獲取中醫(yī)文本中漢字的向量表示,從而降低中醫(yī)文本連續(xù)字符串分詞界限不明確對實(shí)體關(guān)系抽取造成的影響。該模型首先利用SimBERT 模型作為嵌入層獲得中醫(yī)文本的語義表示,再經(jīng)過相似檢索模塊獲取相似句,與原句共同傳入關(guān)系抽取模塊,最終通過Softmax函數(shù)輸出實(shí)體關(guān)系類型。本文提出的半監(jiān)督學(xué)習(xí)框架下基于SimBERT 的中醫(yī)實(shí)體關(guān)系分類方法在李鐵軍醫(yī)案數(shù)據(jù)集上取得了較好效果。本文貢獻(xiàn)如下:①構(gòu)建李鐵軍醫(yī)案數(shù)據(jù)集;②構(gòu)建半監(jiān)督學(xué)習(xí)框架下基于SimBERT 的中醫(yī)實(shí)體關(guān)系抽取模型,并獲得較好的F1 值,證明了模型的有效性;③實(shí)驗(yàn)結(jié)果表明,半監(jiān)督學(xué)習(xí)框架下基于Sim-BERT 的中醫(yī)實(shí)體關(guān)系抽取模型能較好地解決樣本不均衡和多詞一義的問題。
半監(jiān)督學(xué)習(xí)[14]是用一部分有標(biāo)簽樣本和更多無標(biāo)簽樣本訓(xùn)練模型,通過半監(jiān)督學(xué)習(xí),利用有標(biāo)簽樣本提供的監(jiān)督信息給無標(biāo)簽樣本打上偽標(biāo)簽,在一定程度上緩解了樣本的不均衡問題,最終提升模型的分類效果。
415 份醫(yī)案根據(jù)診斷結(jié)果劃分疾病類型,其中176 份肝陽亢,89 份乙肝大三陽,45 份胸痹,44 份乙肝小三陽,20份房顫。其他41 份醫(yī)案中每類醫(yī)案少于5 份,不進(jìn)入類型統(tǒng)計(jì)。由統(tǒng)計(jì)結(jié)果可知,本醫(yī)案數(shù)據(jù)集存在樣本數(shù)量分布不均衡的問題,這也是現(xiàn)實(shí)數(shù)據(jù)集中的常見問題。同時(shí),數(shù)據(jù)集中存在多詞一義現(xiàn)象,如“上盛下虛,肝陽上亢,腎氣虛弱”與“肝陽上亢,腎水虛虧,上實(shí)下虛”是同一證候的不同描述形式。針對如上問題,本文設(shè)計(jì)了半監(jiān)督學(xué)習(xí)框架下基于SimBERT 的關(guān)系抽取模型,模型整體流程如圖1所示。
Fig.1 Flow of relation extraction model based on SimBERT in semisupervised learning framework圖1 半監(jiān)督學(xué)習(xí)框架下基于SimBERT的關(guān)系抽取模型流程
首先,使用改進(jìn)后的SimBERT 對不均衡文本進(jìn)行相似文本生成,以解決樣本不均衡問題。生成的相似文本通過3 個(gè)在原始數(shù)據(jù)集上預(yù)訓(xùn)練后的關(guān)系抽取模型(BERT、Chinese-base-BERT、BERT-wwm)進(jìn)行抽取,將3 個(gè)模型中兩個(gè)及以上預(yù)測為正例的樣本作為偽標(biāo)簽正例。然后將得到的偽標(biāo)簽樣本都加入到候選數(shù)據(jù)集中,將偽標(biāo)簽樣本和真實(shí)標(biāo)簽樣本輸入關(guān)系抽取模型中進(jìn)行訓(xùn)練,并將訓(xùn)練后F1 值大于0.90 的偽標(biāo)簽樣本加入到真實(shí)數(shù)據(jù)集中,F(xiàn)1值不足0.90 的偽標(biāo)簽樣本則舍去,構(gòu)建文本增強(qiáng)后的中醫(yī)文本數(shù)據(jù)集。接下來將增強(qiáng)后的數(shù)據(jù)集放入4 個(gè)模型(BERT、Chinese-base-BERT、BERT-wwm、SimBERT)中進(jìn)行關(guān)系抽取。最后的實(shí)驗(yàn)結(jié)果表明,通過SimBERT 的相似句檢索功能計(jì)算文本相似度,將相似度較高的句子進(jìn)行匹配后再進(jìn)行關(guān)系抽取,可獲得更好的關(guān)系抽取效果。
本實(shí)驗(yàn)采用的SimBERT 模型是以目前流行的BERT模型為基礎(chǔ),以UniLM 思想為核心,兼具相似句生成和檢索能力的關(guān)系抽取模型。
SimBERT 屬于有監(jiān)督訓(xùn)練,其文本增強(qiáng)[15]能力通過特殊的Attention Mask 來實(shí)現(xiàn)。Attention Mask 使模型具有Seq2Seq 的能力,Seq2Seq 任務(wù)是輸入一段文本,模型會(huì)輸出另外一段文本。利用編碼器加上解碼器的結(jié)構(gòu),編碼器會(huì)將輸入的一段文本編碼成固定大小的向量hn,然后解碼器會(huì)根據(jù)該向量hn,通過自回歸的方式解碼生成對應(yīng)文本。以本文的醫(yī)案數(shù)據(jù)集為例,輸入是“肝陽上亢”,目標(biāo)句子是“肝陽偏亢”,SimBERT 會(huì)將兩個(gè)句子拼成:[CLS]肝陽上亢[SEP]肝陽偏亢[SEP],然后接如圖2 所示的Attention Mask。
SimBERT 做Seq2Seq 任務(wù)模型圖如圖3 所示,“[CLS]肝陽上亢[SEP]”這幾個(gè)token 之間是雙向的Attention,而“肝陽偏亢[SEP]”這幾個(gè)token 是單向Attention,從而允許遞歸地預(yù)測“肝陽偏亢[SEP]”這幾個(gè)token。
Fig.2 Attention Mask of SimBERT圖2 SimBERT的Attention Mask
基于SimBERT 的中醫(yī)實(shí)體關(guān)系抽取模型結(jié)構(gòu)如圖4所示。該模型分為2 個(gè)模塊:相似檢索模塊和關(guān)系抽取模塊。句子S1 通過相似檢索模塊獲取與之相似度最高的句子S2,然后S1 與S2 共同傳入到關(guān)系抽取模塊中,最終獲取關(guān)系類型。輸入的數(shù)據(jù)在預(yù)處理過程中,通過在文本序列首位加入特殊標(biāo)記“[CLS]”來表示一條文本或一個(gè)句子對,并且在句子的分隔處加上“[SEP]”來表示句子的銜接。將標(biāo)注后的中醫(yī)文本輸入模型后,經(jīng)過詞嵌入層將文本中的單詞標(biāo)記化,其中包含標(biāo)記詞的嵌入向量、句子詞的嵌入向量以及位置詞的嵌入向量。Toki表示句子的第i個(gè)標(biāo)記,并且在訓(xùn)練過程中,會(huì)隨機(jī)地遮擋部分,Ei表示第i個(gè)標(biāo)記的嵌入向量,Hi表示第i個(gè)標(biāo)記在經(jīng)過模型處理后最終得到的特征向量。
Fig.3 Diagram of Seq2Seq's task on SimBERT圖3 SimBERT做Seq2Seq任務(wù)模型圖
如圖4 所示,SimBERT 把整個(gè)batch 內(nèi)的[CLS]向量都拿出來,得到一個(gè)句向量矩陣V∈Rb×d(b 是batch_size,d是hidden_size),然后對d 維度作L2 歸一化。L2 歸一化公式如式(1)所示:
得到,然后兩兩作內(nèi)積。內(nèi)積公式如式(2)所示:
Fig.4 Structure of TCM entity relation extraction model based on SimBERT圖4 基于SimBERT的中醫(yī)實(shí)體關(guān)系抽取模型結(jié)構(gòu)
如圖5 所示,將S1 與相似檢索獲得的S2 傳入到關(guān)系抽取模塊,并為句子中每個(gè)實(shí)體添加標(biāo)簽。第一個(gè)實(shí)體前后加特殊符號(hào)“$”,第二個(gè)實(shí)體前后加特殊符號(hào)“#”。如S1:“$舌$淡紅而#晦#”,S2:“$舌$#晦暗#淡紅”。輸出包括3 部分:第1 部分為[CLS]標(biāo)簽,第2 部分為第一個(gè)實(shí)體的向量,第3 部分為第二個(gè)實(shí)體的向量。第一部分可以保存整個(gè)句子的語義內(nèi)容,后兩部分則是保存實(shí)體信息。
(1)[CLS]表征。該部分為單一向量,直接將其傳入前饋神經(jīng)網(wǎng)絡(luò)中,公式如式(3)所示:
Fig.5 SimBERT relation extraction module structure圖5 SimBERT關(guān)系抽取模塊結(jié)構(gòu)
(2)實(shí)體信息。將每個(gè)實(shí)體內(nèi)部全部向量進(jìn)行平均后,傳入前饋神經(jīng)網(wǎng)絡(luò)中,公式如式(4)、式(5)所示:
其中i、j、k、m 分別為第一個(gè)實(shí)體的首字符位置、第一個(gè)實(shí)體的末字符位置、第二個(gè)實(shí)體的首字符位置、第二個(gè)實(shí)體的末字符位置。同時(shí),權(quán)重系數(shù)為共享參數(shù)W0=W1=W2,偏向也為共享參數(shù)b0=b1=b2。
本文以名老中醫(yī)李鐵軍的心血管醫(yī)案為實(shí)驗(yàn)對象,研究中醫(yī)醫(yī)案的實(shí)體關(guān)系抽取。首先通過正則表達(dá)式對400多個(gè)醫(yī)案進(jìn)行數(shù)據(jù)清洗,去除不相關(guān)字母、數(shù)字和字符。處理結(jié)束后以句子為單位,按照《中醫(yī)診斷學(xué)》[16]中對四診信息的劃分方式,參考中醫(yī)古籍分詞規(guī)范標(biāo)準(zhǔn)[17]對醫(yī)案中的脈診、舌診表現(xiàn)等全部四診信息進(jìn)行拆分并標(biāo)注,得到5 400多個(gè)句子,構(gòu)建中醫(yī)心血管醫(yī)案數(shù)據(jù)集。
3.2.1 概述
根據(jù)《中醫(yī)診斷學(xué)》對四診信息的設(shè)定,定義了22 類細(xì)粒度實(shí)體類型,8 類關(guān)系類型,對劃分的細(xì)粒度實(shí)體進(jìn)行重組,共產(chǎn)生19 類三元組。具體三元組類型有:(感受,表現(xiàn),部位)、(浮脈,脈象,脈位置)、(沉脈,脈象,脈位置)、(遲脈,脈象,脈位置)、(數(shù)脈,脈象,脈位置)、(虛脈,脈象,脈位置)、(實(shí)脈,脈象,脈位置)、(相兼脈,脈象,脈位置)、(舌神,舌象,舌質(zhì))、(舌色,舌象,舌質(zhì))、(舌形,舌象,舌質(zhì))、(舌態(tài),舌象,舌質(zhì))、(苔質(zhì),舌象,舌苔)、(苔色,舌象,舌苔)、(證候,對應(yīng),癥狀)、(治法,選取,癥狀)、(治法,應(yīng)選,證候)、(處方,選擇,治法)和(處方,決定,證候)。
3.2.2 實(shí)體類型
按照《中醫(yī)診斷學(xué)》的劃分方法,根據(jù)癥狀類別所在部位的不同,將醫(yī)案中的關(guān)系類型大致分為脈診、舌診和其他。其中脈診實(shí)體類型有:浮脈、沉脈、遲脈、數(shù)脈、虛脈、實(shí)脈、相兼脈。舌診實(shí)體類型有:舌神、舌色、舌形、舌態(tài)、苔質(zhì)、苔色。其他實(shí)體類型有:證候、治法、處方、癥狀、感受、部位。依據(jù)前文對實(shí)驗(yàn)數(shù)據(jù)的定義進(jìn)行實(shí)體類型統(tǒng)計(jì),如表1-表3所示。
Table 1 Statistics of pulse diagnosis entity types表1 脈診實(shí)體類型統(tǒng)計(jì)
Table 2 Statistics of tongue diagnosis entity types表2 舌診實(shí)體類型統(tǒng)計(jì)
Table 3 Statistics of other entity types表3 其他實(shí)體類型統(tǒng)計(jì)
3.2.3 關(guān)系類型
為確保設(shè)定實(shí)體能相互對應(yīng),根據(jù)設(shè)定的目標(biāo)設(shè)置為<位置,關(guān)系,表現(xiàn)>的三元組形式,其中關(guān)系類型有表現(xiàn)、脈象、舌象、對應(yīng)、選取、應(yīng)選、選擇、決定。依據(jù)前文對實(shí)驗(yàn)數(shù)據(jù)的定義進(jìn)行關(guān)系類型統(tǒng)計(jì),如表4所示。
Table 4 Statistics of relationship types表4 關(guān)系類型統(tǒng)計(jì)
3.2.4 數(shù)據(jù)標(biāo)注方案
采取單人標(biāo)注與監(jiān)督校對相結(jié)合的方式進(jìn)行數(shù)據(jù)標(biāo)注,如圖6 所示。以肝陽亢疾病類型中某一醫(yī)案標(biāo)注為例,此醫(yī)案原句為:“全身乏力,耳鳴,頭暈。寸關(guān)沉取細(xì)弦而澀,兩尺微。舌兩邊暗,舌心裂。肝腎陰虛,肝陽上亢。治當(dāng)滋補(bǔ)腎陰,平肝潛陽。方用地黃飲子進(jìn)退?!睂⒋酸t(yī)案按照脈診、舌診和其他劃分后進(jìn)行標(biāo)注,再將標(biāo)注后的句子與原文本一同放入模型中訓(xùn)練,用此模型抽取實(shí)體和關(guān)系。
Fig.6 Example map of medical case annotation圖6 醫(yī)案標(biāo)注示例圖
3.3.1 文本增強(qiáng)效果分析
本文主要采用基于相似句生成的SimBERT 模型進(jìn)行文本增強(qiáng)。在進(jìn)行數(shù)據(jù)預(yù)處理,劃分訓(xùn)練集、驗(yàn)證集和測試集之后,通過文本數(shù)據(jù)增強(qiáng)技術(shù)將醫(yī)案數(shù)據(jù)集的數(shù)據(jù)量擴(kuò)充至原來的2.5 倍,重新進(jìn)行模型訓(xùn)練,并與未進(jìn)行數(shù)據(jù)增強(qiáng)的模型進(jìn)行比較與分析。增強(qiáng)前數(shù)據(jù)與增強(qiáng)后數(shù)據(jù)對比如表5所示。
Table 5 Text enhanced data comparison display表5 文本增強(qiáng)數(shù)據(jù)對比展示
3.3.2 關(guān)系抽取模型效果對比分析
為對比原始數(shù)據(jù)集和增強(qiáng)后數(shù)據(jù)集中中醫(yī)文本關(guān)系抽取任務(wù)的效果,本文設(shè)計(jì)了4 種對比模型,并在訓(xùn)練集上進(jìn)行訓(xùn)練。通過驗(yàn)證集優(yōu)化模型參數(shù),在測試集上使用F1 指標(biāo)進(jìn)行模型效果評價(jià)。具體實(shí)驗(yàn)結(jié)果如表6、表7 所示。由表7 可見,使用SimBERT 進(jìn)行文本增強(qiáng)后,關(guān)系抽取效果更佳,這是因?yàn)镾imBERT 通過相似句檢索功能在關(guān)系抽取過程中對相似度較高的句子進(jìn)行匹配分類,從而獲得比其他模型更好的關(guān)系抽取效果。
Table 6 Experimental results of different models on the original data sets表6 不同模型在原始數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果
Table 7 Experimental results of different models on enhanced data sets表7 不同模型在增強(qiáng)后數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果
本文構(gòu)建了半監(jiān)督學(xué)習(xí)框架下基于SimBERT 的關(guān)系抽取模型,對中醫(yī)心血管醫(yī)案的語義特征和句法結(jié)構(gòu)等進(jìn)行分析。針對中醫(yī)醫(yī)案數(shù)據(jù)集樣本數(shù)量不均衡和中醫(yī)文本關(guān)系抽取過程中的多詞一義問題,通過SimBERT 的相似文本生成功能進(jìn)行文本增強(qiáng),以解決數(shù)據(jù)集樣本數(shù)量不均衡問題,并通過相似句檢索功能對中醫(yī)文本中相似度較高的句子進(jìn)行匹配,以解決多詞一義問題,從而獲得更好的關(guān)系抽取效果。