于 清,馬志龍,徐 春
(新疆財(cái)經(jīng)大學(xué)信息管理學(xué)院,新疆 烏魯木齊 830012)
實(shí)體識(shí)別和關(guān)系抽取是信息抽取領(lǐng)域中的核心任務(wù),而醫(yī)療領(lǐng)域相對(duì)于其他領(lǐng)域,具有實(shí)體和關(guān)系數(shù)量較多、種類繁雜、命名不規(guī)則等難點(diǎn)[1]。如何從醫(yī)療文本中提取知識(shí)是醫(yī)療領(lǐng)域的熱點(diǎn)問題。電子病歷中蘊(yùn)含著大量真實(shí)且與病人密切相關(guān)的醫(yī)療信息,從中有效提取實(shí)體及其關(guān)系,對(duì)構(gòu)建醫(yī)療知識(shí)圖譜、醫(yī)療問答、輔助決策具有重要的現(xiàn)實(shí)意義[2-4]。
目前,在實(shí)體關(guān)系抽取任務(wù)中,基于循環(huán)神經(jīng)網(wǎng)絡(luò)[5]和卷積神經(jīng)網(wǎng)絡(luò)[6]等神經(jīng)網(wǎng)絡(luò)技術(shù)[7-8]的深度學(xué)習(xí)架構(gòu)日漸成熟,并逐漸被應(yīng)用于醫(yī)療領(lǐng)域中。Uzuner等[9]根據(jù)出院摘要,首次對(duì)醫(yī)療語(yǔ)義關(guān)系進(jìn)行分類研究。Sunil 等[10]首次將CNN 模型運(yùn)用到電子病歷的關(guān)系抽取中,但此方法不適于距離較遠(yuǎn)的實(shí)體間的識(shí)別和抽取。2019 年,谷歌基于Transformer 模型提出了BERT 網(wǎng)絡(luò)模型[11],并且在關(guān)系抽取的相關(guān)工作中取得了良好效果。
為進(jìn)一步提高關(guān)系抽取的效果,一些學(xué)者開始融合多種方法進(jìn)行實(shí)體識(shí)別和關(guān)系抽取。Zhang 等[12]在BERT 模型的基礎(chǔ)上,提出了基于Bi-LSTM-CRF的關(guān)系抽取優(yōu)化方法,成功從臨床乳腺癌文檔中提取出相關(guān)概念及屬性。Christopoulou 等[13]引入注意力機(jī)制和Transform 網(wǎng)絡(luò),實(shí)現(xiàn)藥物-藥物在句子內(nèi)和句子間關(guān)系的提取和分類。武小平等[14]針對(duì)中文以詞為單位的特性,提出了改進(jìn)的BERT(wwm)-CNN 模型,實(shí)現(xiàn)心血管疾病領(lǐng)域的實(shí)體識(shí)別及關(guān)系抽取。李麗雙等[15]針對(duì)位置向量噪聲和語(yǔ)義表達(dá)匱乏等問題,提出了基于BiLSTM-CNN 的關(guān)系抽取模型,取得了i2B2/VA語(yǔ)料的最優(yōu)結(jié)果。
以上方法均將實(shí)體識(shí)別和關(guān)系抽取分開處理,屬于流水線方法,雖然取得了較好的成果,但這些方法忽視了2 個(gè)子任務(wù)之間的相關(guān)性,會(huì)產(chǎn)生誤差傳播[16],最終影響關(guān)系抽取的效果。為解決此問題,相關(guān)學(xué)者將2 個(gè)子任務(wù)融合成一個(gè)任務(wù),進(jìn)行聯(lián)合學(xué)習(xí)。Getoor 等[17]提出了一種基于線性規(guī)劃的全局推理方法,運(yùn)用分類器抽取句子中可能存在的實(shí)體和關(guān)系,指出實(shí)體識(shí)別和關(guān)系抽取是密切相關(guān)的。聯(lián)合學(xué)習(xí)方法可以分為參數(shù)共享和序列標(biāo)注2 種,且大多數(shù)研究集中在通用領(lǐng)域。Miwa等[18]首次將實(shí)體識(shí)別和關(guān)系抽取作為一個(gè)任務(wù)進(jìn)行研究,提出了結(jié)合樹結(jié)構(gòu)的BiLSTM-RNN 模型,通過二者參數(shù)共享進(jìn)行關(guān)系抽取,但存在實(shí)體冗余問題。Zheng 等[19]提出了一種基于序列標(biāo)注的聯(lián)合學(xué)習(xí)模型,有效地緩解了參數(shù)共享方法存在的實(shí)體關(guān)系冗余問題。Xu等[20]將關(guān)系抽取問題視為序列標(biāo)注問題,采用BiLSTMs-CRF 相結(jié)合的深度學(xué)習(xí)模型,高效地檢測(cè)出醫(yī)學(xué)概念-屬性關(guān)系對(duì)。Parsaeimehr 等[21]提出了一種基于深度學(xué)習(xí)的聯(lián)合識(shí)別體系,克服了誤差傳播的影響。以上聯(lián)合學(xué)習(xí)方法雖然提高了實(shí)體關(guān)系抽取的效果,但均無法解決重疊三元組問題。
電子病歷中包含大量半結(jié)構(gòu)化和非結(jié)構(gòu)化信息,文本中的三元組重疊可以分為2 類:EPO 指一個(gè)實(shí)體對(duì)之間具有多種關(guān)系,例如“患者因反復(fù)腹痛,伴反酸、噯氣在我院完善相關(guān)檢查后確診胃體胃竇癌。”中存在三元組(胃體胃竇癌,癥狀,腹痛)、(胃體胃竇癌,并發(fā)癥,腹痛);SEO 指一個(gè)實(shí)體存在于多個(gè)三元組中,例如“患者患胃竇潰瘍,因中下腹疼痛進(jìn)行胃鏡檢查?!本渥又写嬖谌M(胃竇潰瘍,檢查,胃鏡)、(胃竇潰瘍,癥狀,中下腹疼痛),這種多種關(guān)系和共享實(shí)體的存在增加了知識(shí)抽取任務(wù)的難度,傳統(tǒng)方法很難學(xué)習(xí)這種關(guān)系。為解決三元組重疊問題,Wei等[22]提出了CASREL 模型,采用級(jí)聯(lián)二進(jìn)制標(biāo)注方法,將關(guān)系推理建模為句子中頭實(shí)體到尾實(shí)體的映射函數(shù),但存在曝光偏差問題。Wang 等[23]提出了TPLinker 模型,采用多頭標(biāo)注方法實(shí)現(xiàn)了單階段聯(lián)合學(xué)習(xí),能夠解決實(shí)體重疊和暴露偏差問題,但該方法需要設(shè)計(jì)復(fù)雜的標(biāo)注模式。Zeng 等[24]提出了一種基于復(fù)制機(jī)制的seq2seq 模型,可以利用該機(jī)制對(duì)重疊的實(shí)體進(jìn)行復(fù)制,并根據(jù)不同的實(shí)體重疊類型,采用統(tǒng)一解碼器和多個(gè)解碼器進(jìn)行解碼,能夠有效解決關(guān)系抽取中的實(shí)體重疊問題,但會(huì)產(chǎn)生大量無效的實(shí)體對(duì)。Cabot等[25]將三元組分解成文本序列,以自回歸方法為基礎(chǔ),提出了基于BART 的聯(lián)合學(xué)習(xí)模型,但采用自回歸解碼的方法,需要考慮多個(gè)三元組的提取順序,而文本中的三元組本質(zhì)上沒有順序。
本文以seq2seq 模型為框架,運(yùn)用基于BERT 和非自回歸的聯(lián)合學(xué)習(xí)模型實(shí)現(xiàn)實(shí)體識(shí)別和關(guān)系抽取,并構(gòu)建醫(yī)療知識(shí)圖譜。本文主要工作如下:
1)BERT 預(yù)訓(xùn)練語(yǔ)言模型結(jié)合上下文語(yǔ)義信息動(dòng)態(tài)生成特征向量,能夠有效解決電子病歷中的一詞多義問題。
2)采用基于Transformer 的非自回歸方法實(shí)現(xiàn)并行解碼,并根據(jù)頭尾實(shí)體開始和結(jié)束的位置索引進(jìn)行標(biāo)記,能夠有效緩解三元組重疊問題。
3)運(yùn)用電子病歷數(shù)據(jù)進(jìn)行實(shí)驗(yàn)分析,結(jié)果表明,本文提出的基于BERT 和非自回歸的知識(shí)抽取方法,效果優(yōu)于現(xiàn)有模型。
本文將實(shí)體識(shí)別和關(guān)系抽取看作一個(gè)任務(wù)進(jìn)行聯(lián)合學(xué)習(xí),模型結(jié)構(gòu)如圖1 所示,主要包括3 個(gè)部分。首先運(yùn)用BERT 模型對(duì)句子進(jìn)行編碼;然后運(yùn)用基于Transformer的非自回歸方法解碼,根據(jù)解碼結(jié)果進(jìn)行關(guān)系預(yù)測(cè)(包括? 共有6 種關(guān)系類型),并進(jìn)一步融合編碼信息進(jìn)行實(shí)體抽??;最后,根據(jù)二部匹配損失函數(shù)計(jì)算損失值。
圖1 模型結(jié)構(gòu)
聯(lián)合實(shí)體關(guān)系抽取的目標(biāo)是識(shí)別原始句子中所有可能的關(guān)系三元組,對(duì)于給定句子X,目標(biāo)三元組Y的條件概率如式(1)所示:其中,pL(n|X)對(duì)目標(biāo)三元組的大小進(jìn)行建模,i表示句子中三元組數(shù)量,p(Yi|X,Yj≠i;θ)表示目標(biāo)三元組Yi不僅與給定的句子X相關(guān),還與其他三元組Yj≠i相關(guān)。
BERT 模型主要包含輸入層、編碼層和輸出層,其基本結(jié)構(gòu)如圖2 所示。BERT 的輸入向量由詞特征、句子特征和位置特征組成,且句首、句尾分別增加[CLS]和[SEP]標(biāo)志,用于分隔2 個(gè)句子。編碼層由多個(gè)相同的Transformer層組成,向量通過多頭自注意力(Multi-Head Self-Attention)層,傳輸?shù)角梆伾窠?jīng)網(wǎng)絡(luò)(Feed-Forward Network)中,最終的輸出結(jié)果表示為:
圖2 BERT模型結(jié)構(gòu)
其中,l是句子長(zhǎng)度,d是BERT模型中隱藏層數(shù)量。
BERT 模型是基于雙向Transformer 編碼的預(yù)訓(xùn)練模型,能夠較好地解決一詞多義的問題,例如,句子“患者因右上腹隱痛,行胸腹部CT 檢查”中,2 個(gè)“腹”表示不同的含義,其輸入形式如圖3所示。
圖3 BERT模型的輸入形式
多數(shù)seq2seq模型將獲取關(guān)系三元組看作序列生成問題,利用自回歸模型逐個(gè)解碼。與公式(1)相比,自回歸方法識(shí)別句子X中目標(biāo)三元組Y的條件概率如式(2)所示:
其中,p(Yi|X,Yj<i;θ)表示目標(biāo)三元組Yi與給定的句子X和已生成的三元組Yj<i相關(guān),說明自回歸解碼需要用已生成的詞來預(yù)測(cè)下一個(gè)位置的詞,無法實(shí)現(xiàn)并行解碼[26],解碼速度比較慢。針對(duì)此問題,本文使用基于Transformer的非自回歸方法,打破了解碼時(shí)的順序要求,可以并行解碼整個(gè)句子,對(duì)比如圖4 所示。從圖4(a)中可以看出,自回歸模型解碼時(shí),詞是依次遞歸生成的,要生成長(zhǎng)度為N的句子,需要經(jīng)過N次解碼層;而圖4(b)中的非自回歸模型則可以一次生成所有詞,只需經(jīng)過1 次解碼層,減少了經(jīng)過解碼層的次數(shù),提高了解碼效率。
圖4 自回歸與非自回歸模型對(duì)比
非自回歸解碼層由N個(gè)相同的Transformer 層組成,如圖1 所示。解碼層的輸入是初始化后的目標(biāo)文本向量,輸入向量通過線性變換得到表示目標(biāo)字的Q矩陣、表示上下文各個(gè)字的K矩陣以及表示目標(biāo)字與上下文各個(gè)字的原始矩陣V,并通過計(jì)算放縮點(diǎn)積求得自注意力值,如公式(3)所示,經(jīng)過i次計(jì)算后獲得一個(gè)與原始字向量長(zhǎng)度相同的增強(qiáng)語(yǔ)義向量,作為多頭自注意力層的輸出,如公式(4)、公式(5)所示;然后運(yùn)用多頭相互注意機(jī)制與BERT 層的輸出編碼融合,根據(jù)BERT 層的輸出H計(jì)算得到K、V,根據(jù)上一個(gè)解碼器的輸出計(jì)算Q,后續(xù)計(jì)算方法與式(3)~式(5)一致,得到輸出向量G∈Rm×d;最后,通過前饋網(wǎng)絡(luò)將輸出向量解碼為關(guān)系類型和實(shí)體,得到最終預(yù)測(cè)的三元組。
其中,Q、K、V表示輸入的字向量矩陣,dk表示輸入維度,WiQ、WiK、WiV表示headi的權(quán)重矩陣,W0表示附加權(quán)重矩陣。
本文根據(jù)頭尾實(shí)體開始和結(jié)束的位置索引進(jìn)行三元組抽取,且將并發(fā)癥、檢查、癥狀、常用藥物、治療方式和?這6種關(guān)系類型分別賦值為0~5,三元組可表示為Y=(r,sstart,send,ostart,oend)。例如,句子“患者患胃竇潰瘍,因中下腹疼痛進(jìn)行胃鏡檢查?!敝写嬖诘娜M(胃竇潰瘍,檢查,胃鏡)、(胃竇潰瘍,癥狀,中下腹疼痛),可以表示為(1,3,6,16,17)、(2,3,6,9,13),其中,實(shí)體“胃竇潰瘍”可以重復(fù)抽取。該方法類似Span標(biāo)注,但不需要對(duì)頭尾實(shí)體進(jìn)行標(biāo)注,而是直接利用實(shí)體的位置索引為標(biāo)記,能夠有效解決三元組重疊問題。
假設(shè)給定一個(gè)輸出向量g∈Rd,經(jīng)過關(guān)系預(yù)測(cè)和首尾實(shí)體預(yù)測(cè),可得到最終的預(yù)測(cè)三元組=(pr,ps-start,ps-end,po-start,po-end),具體如式(6)~式(10)所示:
1)關(guān)系預(yù)測(cè):
其中,Wr∈Rt×d,t是關(guān)系類型(包括空集?)的總數(shù),d是BERT模型中隱藏層數(shù)量。
2)首尾實(shí)體預(yù)測(cè):通過softmax 分類器預(yù)測(cè)頭尾實(shí)體開始和結(jié)束的位置索引,如式(7)~式(10)所示:
其中,Wi∈Rd×d和vi∈Rd是可學(xué)習(xí)的參數(shù)。
損失函數(shù)表示樣本真實(shí)值與模型預(yù)測(cè)值之間的誤差[27],適用于評(píng)價(jià)模型性能的優(yōu)劣。交叉熵?fù)p失法是衡量關(guān)系抽取模型優(yōu)劣的主要方法,但該方法對(duì)預(yù)測(cè)值的排列順序很敏感,而非自回歸解碼采用并行解碼的方法,打破了對(duì)預(yù)測(cè)值的順序要求。因此,本文運(yùn)用二部匹配法以在預(yù)測(cè)三元組和真實(shí)三元組之間產(chǎn)生最優(yōu)匹配,該方法計(jì)算損失值時(shí),與預(yù)測(cè)值的排列順序無關(guān)。計(jì)算二部匹配損失值分為2 個(gè)步驟:尋找最佳匹配和計(jì)算損失函數(shù)。
1)尋找預(yù)測(cè)三元組的最佳匹配。
與指派問題類似,該問題可看作尋找m個(gè)預(yù)測(cè)三元組和m個(gè)真實(shí)三元組之間的最佳匹配方法,如圖5所示,此類問題可以用匈牙利算法求解。首先,計(jì)算每個(gè)真實(shí)三元組Y和預(yù)測(cè)三元組之間的成對(duì)匹配代價(jià),如公式(11)所示:
圖5 三元組匹配示例
其中,i,j=0,1,…,m-1,是三元組集合中的第i或j個(gè)三元組;ri∈{0,1,…,5},代表不同關(guān)系類型;sistart、siend、oistart、oiend是第i個(gè)真實(shí)三元組中頭實(shí)體或尾實(shí)體開始或結(jié)束的位置索引;m為解碼層一次性輸出三元組的數(shù)量,不足m以?填充。
根據(jù)公式(11),能夠以最小代價(jià)找到預(yù)測(cè)三元組集合的最佳匹配策略,如公式(12)所示:
2)計(jì)算損失函數(shù)。
運(yùn)用負(fù)對(duì)數(shù)似然計(jì)算最優(yōu)匹配情況下的損失值,由式(6)~式(10)可知,預(yù)測(cè)三元組得到是關(guān)系及實(shí)體的概率分布,概率越接近1,函數(shù)值越接近0,可得到損失函數(shù)的最小值,如式(13)所示:
其中,a*(i)是最優(yōu)匹配策略中,真實(shí)三元組集合中第i個(gè)三元組對(duì)應(yīng)的預(yù)測(cè)三元組。
本文運(yùn)用新疆某醫(yī)院消化內(nèi)科的電子病歷,經(jīng)過人工檢查選取586條數(shù)據(jù),將文本按句拆分成4252個(gè)句子,并進(jìn)行人工標(biāo)注,標(biāo)注示例如下:{"sentText": "患者患有胃竇炎,因上腹部隱痛入院行上消化道鋇餐檢查。", "relationMentions": [{"em1Text":"胃竇炎","em2Text": " 上 腹 部 隱 痛", "label": " 癥 狀"},{"em1Text": "胃竇炎", "em2Text": "上消化道鋇餐", "label": "檢查"}]}。將標(biāo)注后句子按3:1:1 比例隨機(jī)劃分為訓(xùn)練集、測(cè)試集和驗(yàn)證集。
本文實(shí)體類型和實(shí)體關(guān)系各有5 種,具體釋義如表1所示,數(shù)據(jù)集中關(guān)系類型統(tǒng)計(jì)如表2所示。
表1 實(shí)體關(guān)系釋義
表2 關(guān)系類型統(tǒng)計(jì)
本模型是基于編程工具Python 3.8.5,以PyTorch 1.8.1 為框架開發(fā)的。基于BERT-base-Chinese 預(yù)訓(xùn)練模型,使用Adam W 優(yōu)化器對(duì)模型參數(shù)進(jìn)行自適應(yīng)學(xué)習(xí),具體參數(shù)設(shè)置如表3所示。
表3 參數(shù)設(shè)置
1)評(píng)價(jià)指標(biāo)。
本實(shí)驗(yàn)采用召回率Recall、精確率Precision 和F1值來評(píng)價(jià)聯(lián)合關(guān)系抽取模型的性能,各評(píng)價(jià)指標(biāo)的計(jì)算方法如下:
其中,TP表示預(yù)測(cè)正確的三元組數(shù)量;FP表示預(yù)測(cè)錯(cuò)誤的三元組數(shù)量;FN 表示數(shù)據(jù)集中的相關(guān)三元組但沒有被模型識(shí)別的數(shù)量。
2)實(shí)驗(yàn)結(jié)果分析。
圖6 所示為本實(shí)驗(yàn)測(cè)試集的Precision、Recall 和F1 值隨訓(xùn)練周期的變化情況,其中,F(xiàn)1 值在第43 個(gè)訓(xùn)練周期達(dá)到最高值。圖7 所示為本實(shí)驗(yàn)訓(xùn)練集的損失值隨訓(xùn)練周期的變化,可以看出經(jīng)過50 次迭代后,損失值最終實(shí)現(xiàn)收斂。
圖6 模型的Precision、Recall和F1值
圖7 模型損失值
3)模型綜合對(duì)比及分析。
為了對(duì)本文模型進(jìn)行更加客觀的評(píng)價(jià),運(yùn)用相同的數(shù)據(jù)集將本文模型與以下模型進(jìn)行實(shí)驗(yàn)對(duì)比,對(duì)比結(jié)果如表4所示。
表4 不同模型實(shí)驗(yàn)結(jié)果對(duì)比
BERT-BiLSTM 模型:一種流水線關(guān)系抽取方法,運(yùn)用BIO 方法標(biāo)注實(shí)體,經(jīng)過BERT 模型提取特征,使用BiLSTM網(wǎng)絡(luò)進(jìn)行關(guān)系抽取。
BERT-BiLSTM-Seq2Seq 模型:一種聯(lián)合學(xué)習(xí)模型,選用BIEO 方法標(biāo)注實(shí)體,運(yùn)用BERT 模型獲得編碼向量,然后運(yùn)用BiLSTM網(wǎng)絡(luò)進(jìn)行解碼。
WDec 模型[28]:提出了一種新的表示方法,將三元組及其開頭用特殊標(biāo)記分割,運(yùn)用基于指針網(wǎng)絡(luò)的解碼器,并引入“復(fù)制”機(jī)制,能夠從句子中找到實(shí)體重疊三元組和多個(gè)標(biāo)記實(shí)體的三元組。
CasRel 模型:一種聯(lián)合學(xué)習(xí)模型,采用級(jí)聯(lián)二進(jìn)制標(biāo)注方法,第一階段識(shí)別所有可能的頭實(shí)體,然后由特定標(biāo)注器識(shí)別所有可能的關(guān)系和尾實(shí)體。
從表4 可以看出,BERT+非自回歸模型的精確率、召回率和F1 值是最優(yōu)的。與BERT-BiLSTM 流水線模型相比,本文模型的F1 值提高了0.09,其余2 個(gè)聯(lián)合學(xué)習(xí)的F1 值也均有提高,原因在于流水線模型中關(guān)系抽取的結(jié)果嚴(yán)重依賴實(shí)體識(shí)別的結(jié)果,而聯(lián)合學(xué)習(xí)模型增強(qiáng)了實(shí)體識(shí)別與關(guān)系抽取2 個(gè)任務(wù)之間的聯(lián)系,能夠緩解錯(cuò)誤傳播。與BERT-BiLSTMSeq2Seq 模型相比,本文模型的F1 值提高了0.04,原因在于BiLSTM 解碼是自回歸解碼方法,而本文提出的基于Transformer 的非自回歸方法,是一種并行解碼,解碼時(shí)不需要依賴上一個(gè)詞的信息。與WDec 模型相比,本文模型的F1 值提高了0.07,原因在于WDec 模型在編碼層運(yùn)用CNN 模型,而本文運(yùn)用BERT 模型進(jìn)行編碼,能夠融合上下文信息,充分挖掘文本信息;WDec 模型的解碼器結(jié)果會(huì)輸出到整個(gè)詞匯表,因此解碼器會(huì)從詞匯表中預(yù)測(cè)當(dāng)前句子中不存在的標(biāo)記,導(dǎo)致特殊標(biāo)記及關(guān)系標(biāo)記的抽取錯(cuò)誤,生成錯(cuò)誤的三元組,而本文根據(jù)頭尾實(shí)體開始和結(jié)束的位置索引進(jìn)行三元組抽取,能夠有效標(biāo)識(shí)實(shí)體和關(guān)系。與CasRel 模型相比,本文模型的F1 值提高了0.03,原因在于CasRel模型解碼時(shí)對(duì)于識(shí)別出來的每一個(gè)頭實(shí)體,要遍歷所有的關(guān)系,導(dǎo)致需要判斷大量冗余關(guān)系,且關(guān)系和尾實(shí)體抽取的準(zhǔn)確性依賴于頭實(shí)體抽取是否正確,而本文運(yùn)用以Transformer架構(gòu)為基礎(chǔ)的并行解碼器,能夠同時(shí)抽取關(guān)系和實(shí)體,能夠減少誤差累計(jì),更大限度地捕捉電子病歷復(fù)雜的實(shí)體和關(guān)系分布。
4)抽取重疊三元組的結(jié)果分析。
將三元組分為Normal、EPO、SEO 這3類。Normal指不存在重疊的三元組,結(jié)果如圖8 所示。在正常三元組中,各模型的FI 值差距不大;在抽取重疊三元組時(shí),運(yùn)用BIO 標(biāo)注的BERT-BiLSTM 模型和BIEO 標(biāo)注的BERT-BiLSTM-Seq2Seq模型與本文模型均有較大差距,因?yàn)檫@2 種方法基于就近原則進(jìn)行標(biāo)注,導(dǎo)致抽取結(jié)果較差;WDec 模型在于引進(jìn)“復(fù)制”機(jī)制來復(fù)制重疊實(shí)體,但該方法會(huì)產(chǎn)生許多無效實(shí)體對(duì),即2個(gè)實(shí)體間沒有有效關(guān)系;CasRel 模型生成三元組時(shí),頭實(shí)體的開始和結(jié)束位置用相同標(biāo)記,當(dāng)存在多個(gè)頭實(shí)體會(huì)出現(xiàn)多個(gè)標(biāo)記,則采用就近原則,導(dǎo)致重疊三元組識(shí)別存在誤差。
圖8 不同模型抽取不同類型三元組的F1值
目前,知識(shí)存儲(chǔ)的數(shù)據(jù)庫(kù)主要有關(guān)系型數(shù)據(jù)庫(kù)與圖數(shù)據(jù)庫(kù)。其中,圖數(shù)據(jù)庫(kù)用節(jié)點(diǎn)、邊以及屬性進(jìn)行數(shù)據(jù)存儲(chǔ)和展示,并且具有自然伸展的特點(diǎn),能夠更簡(jiǎn)潔地表達(dá)知識(shí)。Neo4j 是一種常用圖數(shù)據(jù)庫(kù),能夠通過Cypher語(yǔ)句來導(dǎo)入和查詢數(shù)據(jù),語(yǔ)法簡(jiǎn)潔,功能強(qiáng)大。對(duì)于大規(guī)模導(dǎo)入數(shù)據(jù),Neo4j 還提供了py2neo庫(kù),可以通過Python編程快速將大量實(shí)體和關(guān)系導(dǎo)入數(shù)據(jù)庫(kù)。在抽取出電子病歷中的醫(yī)學(xué)實(shí)體及實(shí)體間的關(guān)系后,將結(jié)果導(dǎo)入Neo4j 圖數(shù)據(jù)庫(kù)中,構(gòu)建面向消化內(nèi)科的醫(yī)療知識(shí)圖譜。該知識(shí)圖譜由2516 個(gè)實(shí)體節(jié)點(diǎn)和9894 個(gè)關(guān)系對(duì)組成。知識(shí)圖譜構(gòu)建完成后,可以通過Cypher 語(yǔ)言進(jìn)行查詢,獲得所需的知識(shí)。
患者可以通過醫(yī)療知識(shí)圖譜進(jìn)行查詢,如圖9 所示,患有“膽汁性肝硬化”的病人,可以通過查詢了解自己可以進(jìn)行哪種治療,知道服用哪種藥能夠緩解癥狀,并且能夠知道“膽汁性肝硬化”能引起哪些并發(fā)癥,及時(shí)預(yù)防并發(fā)癥的產(chǎn)生。知識(shí)圖譜也能夠?yàn)獒t(yī)生提供輔助決策,如圖10 所示,醫(yī)生在為有“上腹部包塊”“肝星狀細(xì)胞增生”“肝結(jié)節(jié)”等癥狀的患者診斷時(shí),可以通過“肝纖四項(xiàng)”“肝臟疾病超聲診斷”等檢查方法,診斷患者是否患有“肝纖維化”。
圖9 膽汁性肝硬化的部分知識(shí)圖譜
針對(duì)誤差累計(jì)、一詞多義和三元組重疊等問題,本文提出了一種基于BERT 和非自回歸的聯(lián)合實(shí)體關(guān)系抽取模型,加強(qiáng)實(shí)體識(shí)別與關(guān)系抽取間的相關(guān)性。首先,運(yùn)用BERT 模型作為編碼層捕捉上下文信息,較好地解決醫(yī)療實(shí)體一詞多義的問題;然后,采用非自回歸的方法直接解碼,提出以頭尾實(shí)體開始和結(jié)束的位置索引作為標(biāo)記的方法有效抽取重疊三元組;最后,將生成的三元組導(dǎo)入Neo4j 數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)了相關(guān)疾病、癥狀、檢查等知識(shí)的聯(lián)系和查詢功能。下一步工作將開展數(shù)據(jù)和知識(shí)雙驅(qū)動(dòng)的實(shí)體關(guān)系抽取研究,目前的研究?jī)H依賴電子病歷內(nèi)部特征,是以數(shù)據(jù)驅(qū)動(dòng)的方法,但忽略了專家知識(shí)。因此,擬將醫(yī)學(xué)知識(shí)庫(kù)引入關(guān)系抽取過程中,增加實(shí)體關(guān)系抽取結(jié)果的可解釋性和專業(yè)性。