高 峰 楊佳欣 顧進廣
(武漢科技大學計算機科學與技術(shù)學院 湖北 武漢 430065)(武漢科技大學大數(shù)據(jù)科學與工程研究院 湖北 武漢 430065)(湖北省智能信息處理與實時工業(yè)系統(tǒng)重點實驗室 湖北 武漢 430065)
隨著社會生活水平的提高和人工智能技術(shù)的發(fā)展,醫(yī)學人工智能成為受到密切關(guān)注的研究和應(yīng)用領(lǐng)域。借助自然語言處理[1]、知識圖譜和深度學習[2]等技術(shù),醫(yī)學人工智能使醫(yī)療服務(wù)變得更加智能化、高效化和個性化。然而,醫(yī)學人工智能目前仍然缺乏知識層面的有效支撐,大部分醫(yī)學知識和經(jīng)驗依舊隱藏在醫(yī)學文獻和醫(yī)療文本中。高效、準確地從醫(yī)學文本和文獻中自動抽取醫(yī)療領(lǐng)域關(guān)于疾病、癥狀、治療和醫(yī)學檢查之間的關(guān)系,并將其結(jié)構(gòu)化為知識對于構(gòu)建醫(yī)療領(lǐng)域知識圖譜,實現(xiàn)知識驅(qū)動的醫(yī)學人工智能具有重要意義[3]。
在事件抽取中,常將文本中的關(guān)鍵詞對應(yīng)標記為某類事件的事件觸發(fā)詞來進行事件抽取[4]。在關(guān)系抽取中,也可以借助類似的關(guān)系發(fā)現(xiàn)詞來識別關(guān)系。關(guān)系發(fā)現(xiàn)詞是句子中描述實體對關(guān)系的關(guān)鍵詞。目前一部分基于深度學習的關(guān)系抽取模型的輸入特征主要基于詞向量和位置向量,會產(chǎn)生特征噪聲并導(dǎo)致學習特征不足而影響抽取模型效果[5],加入關(guān)系發(fā)現(xiàn)詞作為額外特征可以解決特征單一的問題,進行特征去噪增強了關(guān)系類別的區(qū)分度。
本文重點研究從中文醫(yī)療文本中抽取有關(guān)疾病、癥狀、治療和醫(yī)學檢查之間的診療關(guān)系,定義了以醫(yī)療診療問題為中心的四種關(guān)系,使用基于雙向門控循環(huán)(BiGRU)神經(jīng)網(wǎng)絡(luò)模型與字符、句級注意力機制(Attention)相結(jié)合的方式(BiGRU-2ATT)[6]將關(guān)系提取轉(zhuǎn)化為多分類問題,Attention層為提取的文本信息中的字符和句子分配相應(yīng)的權(quán)重,合并特征并通過激勵函數(shù)(Softmax)功能層以實現(xiàn)關(guān)系分類?;谠撃P停槿【渥拥年P(guān)系發(fā)現(xiàn)詞作為額外特征,并與句子的詞向量和位置向量共同輸入訓(xùn)練模型。本文將關(guān)系發(fā)現(xiàn)詞的自動抽取分為兩個階段進行,第一階段根據(jù)哈工大詞林表[7]創(chuàng)建規(guī)則聚類,進行初步的關(guān)系發(fā)現(xiàn)詞識別,第二階段基于TF-IDF的補充算法進行第二次關(guān)系發(fā)現(xiàn)詞抽取。
目前,關(guān)系抽取任務(wù)主要使用基于深度學習的方法來完成[8]。Socher等[9]提出遞歸神經(jīng)網(wǎng)絡(luò)(RNN),實現(xiàn)了實體關(guān)系抽取,該方法雖然解析了句子的句法結(jié)構(gòu),但是忽略了實體對在句子中的語義信息和位置信息。Zeng等[10]考慮到句子中實體的信息,提出將詞向量和詞的位置向量作為卷積神經(jīng)網(wǎng)絡(luò)(CNN)的輸入,引入了實體和其他詞的距離信息進行關(guān)系抽取。Santos等[11]為了提高不同實體關(guān)系類型的區(qū)分度,采用了一種新的損失函數(shù),并與CNN結(jié)合進行關(guān)系抽取。Lin等[12]在遠程監(jiān)督上使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)作為句子編碼器(Sentence Encoder),并結(jié)合句子級別的注意力機制(Attention Mechanism)進行關(guān)系抽取。Miwa等[13]提出了一種端到端的雙向樹形結(jié)構(gòu)的長短期記憶網(wǎng)絡(luò)(Bi-TreeLSTM),通過該網(wǎng)絡(luò)模型捕獲詞序列和依存關(guān)系樹結(jié)構(gòu)信息。Zhou等[14]提出基于注意力機制的雙向長短期記憶網(wǎng)絡(luò)(BiLSTM)的方法,使用BiLSTM對句子建模,并使用詞級別的注意力機制。該方法使用單一的位置特征作為輸入,并未通過自然語言處理工具輸入任何額外特征,使用LSTM可以解決RNN梯度消失的問題,缺點是訓(xùn)練難度大、參數(shù)較多、計算復(fù)雜。GRU是LSTM的變體,與LSTM相比,GRU具有更少的參數(shù)和更好的收斂性能[15]。
楊雪蓉等[16]提出了基于核心詞和實體推理的事件關(guān)系識別方法,通過Apcluster聚類算法分析事件核心詞的分布,并結(jié)合實體推理進行事件關(guān)系識別,驗證了事件核心詞有助于事件關(guān)系抽取。軒小星等[4]研究了中文事件觸發(fā)詞的自動抽取,提出了基于初始的事件觸發(fā)詞進行聚類擴展并結(jié)合支持向量機進行觸發(fā)詞的自動抽取。王林玉等[17]提出了關(guān)鍵詞結(jié)合卷積神經(jīng)網(wǎng)絡(luò)的方法抽取實體關(guān)系,驗證了關(guān)鍵詞用于關(guān)系抽取上的有效性,實驗中使用TP-ISP算法抽取關(guān)鍵詞是針對整個語料計算詞語的權(quán)重,其存在冗余,會導(dǎo)致部分類別不相關(guān)的關(guān)鍵字抽取。
本文提出一種融合關(guān)系發(fā)現(xiàn)詞與深度學習進行醫(yī)療診療關(guān)系抽取的模型。圖1為本文提出的關(guān)系抽取流程。針對醫(yī)療診療問題,定義了四種關(guān)系類型,分別為相關(guān)癥狀、相關(guān)檢查、相關(guān)治療及相關(guān)并發(fā)癥。
圖1 關(guān)系抽取流程
(1) 關(guān)系發(fā)現(xiàn)詞抽取。首先通過哈工大同義詞詞林創(chuàng)建聚類規(guī)則,然后采用TF-IDF類似算法共同抽取句子的關(guān)系發(fā)現(xiàn)詞。
(2) BiGRU-2ATT模型分為輸入層、隱藏層、輸出層。使用Word2Vec將數(shù)據(jù)進行預(yù)處理;隱藏層包括BiGRU層、字符級注意力層和句子級關(guān)注層,通過隱藏層提取文本的深層特征表示,加上注意力機制增強關(guān)鍵信息,最后獲取整體的高質(zhì)量信息輸出;在輸出層根據(jù)隱藏層的輸出結(jié)構(gòu)采用Softmax損失函數(shù)進行關(guān)系分類,得到最終的抽取結(jié)果。
實體關(guān)系發(fā)現(xiàn)詞是表達關(guān)系的句子中可以說明實體對之間存在實體關(guān)系的詞語,也可以稱為實體關(guān)系語義標簽或者實體關(guān)系描述詞。例如醫(yī)療領(lǐng)域中相關(guān)治療關(guān)系的關(guān)系發(fā)現(xiàn)詞有“緩解”“預(yù)防”“治療”。對于給定兩個實體和兩個實體共同出現(xiàn)的句子文本中,關(guān)系發(fā)現(xiàn)詞有助于關(guān)系區(qū)分識別。通過分析語料,整理出語料中出現(xiàn)頻率較高且較重要的詞語構(gòu)建為初始關(guān)系發(fā)現(xiàn)詞表,部分初始關(guān)系發(fā)現(xiàn)詞如下:癥狀、并發(fā)、治療、檢查、藥物、緩解、出現(xiàn)、評估、導(dǎo)致、產(chǎn)生、抑制、預(yù)防。本文使用的是基于哈工大同義詞詞林規(guī)則聚類識別關(guān)系發(fā)現(xiàn)詞和基于TF-IDF的關(guān)系發(fā)現(xiàn)詞補充算法自動抽取關(guān)系發(fā)現(xiàn)詞。
2.1.1基于同義詞表的關(guān)系發(fā)現(xiàn)詞識別
由于受語料規(guī)模和人工的限制,初始關(guān)系發(fā)現(xiàn)詞表中可能漏掉了一些重要的關(guān)系發(fā)現(xiàn)詞,所以需要對關(guān)系發(fā)現(xiàn)詞進行聚類。利用哈工大同義詞詞林表在初始關(guān)系發(fā)現(xiàn)詞表的基礎(chǔ)上擴展關(guān)系發(fā)現(xiàn)詞表,本文使用的哈工大同義詞詞林[7]包含了77 343條詞語,每個詞語有五級八位編碼,唯一標識出現(xiàn)在詞典中的詞語。如“Aa01A04=勞力 勞動力 工作者”,編碼位從左到右的順序排列,第八位的標記有3種,分別是“=”“#”“@”, “=”代表“相等”或“同義”,“#”代表“不等”或“同類”,“@”代表在詞林表中既沒有找到該詞的同義詞,也沒有找到該詞的同類詞。具體的關(guān)系發(fā)現(xiàn)詞聚類規(guī)則如下:
(1) 將初始關(guān)系詞表中的每個詞映射到同義詞林表中,得到對應(yīng)的詞語編碼,根據(jù)第八位標記篩選出每個初始關(guān)系發(fā)現(xiàn)詞的同義詞和同類詞。
(2) 將規(guī)則(1)中得到的同義詞和同類詞再次篩選,去掉長度不是2的詞語。由于不同的詞在詞林表中可能有相同的同類詞或同義詞,所以再次篩選去掉重復(fù)的詞語。
按照以上聚類規(guī)則,得到一個關(guān)系發(fā)現(xiàn)詞擴展表,根據(jù)表中所有詞語,在語料的每個句子中進行匹配,若句子中有關(guān)系發(fā)現(xiàn)詞擴展表中的詞語,則抽取出來作為關(guān)系發(fā)現(xiàn)詞。
2.1.2基于TF-IDF的關(guān)系發(fā)現(xiàn)詞補充算法
TF-IDF算法是一種統(tǒng)計方法,可以用來評估一個字或一個詞對于一個文件集或其中一份文件的重要程度。字詞的重要性與它在語料庫中出現(xiàn)的頻率成反比,與在文件中出現(xiàn)的次數(shù)成正比。為了避免經(jīng)過關(guān)系發(fā)現(xiàn)詞擴展表抽取關(guān)系發(fā)現(xiàn)詞之后,依舊有部分句子抽取不到關(guān)系發(fā)現(xiàn)詞,利用基于TF-IDF的關(guān)系發(fā)現(xiàn)詞補充算法進行最后的關(guān)系發(fā)現(xiàn)詞抽取。本文的具體實現(xiàn)方法如下。
(1) 將經(jīng)過關(guān)系發(fā)現(xiàn)詞擴展表抽取之后,依舊沒有找到關(guān)系發(fā)現(xiàn)詞的句子進行預(yù)處理,即分詞和詞性標注,本文使用的是Python庫中的jieba模塊。文獻[18]研究結(jié)果表明:觸發(fā)詞的詞性一般為名詞、動詞和動名詞。本文從預(yù)處理后的句子中先篩選出動詞,若沒有動詞則篩選名詞,以此組成候選關(guān)系發(fā)現(xiàn)詞。篩選所有詞語的詞性除了可以減少候選關(guān)系發(fā)現(xiàn)詞的數(shù)量,還可以提高候選關(guān)系發(fā)現(xiàn)詞的質(zhì)量。候選關(guān)系發(fā)現(xiàn)詞用空間向量表示為:
W=((w1,score1),(w2,score2),…,(wk,scorek))
(1)
式中:wi表示第i個候選關(guān)系發(fā)現(xiàn)詞;scorei表示第i個候選關(guān)系發(fā)現(xiàn)詞對應(yīng)的權(quán)重。scorei的計算公式如下:
scorei=TF(wi)×IDF(wi)
(2)
TF(Term Frequency)表示詞頻,它反映句子中的詞語對該句的貢獻程度,對于wi的重要性表示為:
TF(wi)=ni/mi
(3)
式中:ni為候選關(guān)系發(fā)現(xiàn)詞在該句中出現(xiàn)的次數(shù);mi為該句中所有候選關(guān)系發(fā)現(xiàn)詞的總個數(shù)。
IDF(Inverse Document Frequency)表示逆向文件頻率,它可以反映詞在訓(xùn)練語料中出現(xiàn)的頻度,表示為:
IDF(vi)=log2(Ni/Mi)
(4)
將訓(xùn)練語料中的所有句子進行預(yù)處理,篩選出所有的名詞、動詞、動名詞組成整個語料的關(guān)系發(fā)現(xiàn)詞表,記為V。式(4)中:vi∈V是一個關(guān)系發(fā)現(xiàn)詞;Ni為訓(xùn)練語料中句子總數(shù);Mi為含有vi的句子總數(shù)。若wi不在V中,則該詞的IDF值為V中所有詞的IDF值的均值。
(2) 取候選關(guān)系發(fā)現(xiàn)詞中score值最高的詞作為最終的關(guān)系發(fā)現(xiàn)詞。
經(jīng)過以上的關(guān)系發(fā)現(xiàn)詞抽取后,每個句子都將至少有一個關(guān)系發(fā)現(xiàn)詞。
在識別關(guān)系發(fā)現(xiàn)詞后,本文將其作為雙向門控循環(huán)神經(jīng)網(wǎng)絡(luò)的一個特征進行輸入。圖2為BIGRU-2ATT模型結(jié)構(gòu)。
圖2 BIGRU-2ATT模型結(jié)構(gòu)圖
2.2.1輸入層
Word2Vec就是將文本轉(zhuǎn)化為詞向量的模型,向量里蘊含了豐富的語義和上下文信息。
由于分詞工具得到的中文分詞結(jié)果并不是完全正確的,使用一個詞作為語義單元進行表示將會忽略詞內(nèi)字間的語義信息,所以采用字向量來進行文本表示。使用Word2Vec的Skip-Gram模型在漢語語料庫中訓(xùn)練的100維字向量表,創(chuàng)建一個字id詞典。將語料中每個句子的每個字映射到字典中對應(yīng)的字id,得到一個向量化后的句子為句向量,作為第一個特征;計算每個字到兩個實體第一位置的距離,得到詞的位置向量,作為第二個特征;將關(guān)系發(fā)現(xiàn)詞映射到字id詞典中,得到一個關(guān)系發(fā)現(xiàn)詞向量作為第三個特征。定義的四個關(guān)系類型是一鍵編碼的,向量的維數(shù)表示關(guān)系的數(shù)量,向量中一個元素值為1,表示當前實體關(guān)系類型,其余元素為0。將所有特征向量結(jié)合得到一個特征矩陣輸入到隱藏層。
2.2.2隱藏層
隱藏層主要有BiGRU層和兩種Attention機制,分別為句級注意機制和字符級注意機制。
BiGRU層是通過更新門和重置門共同來實現(xiàn)輸入特征的深度特征提取。更新門用來控制上一次輸出隱藏層對當前隱藏層的影響,先前時間隱藏層的輸出對當前隱藏層的影響程度與更新門的值成正比。通過復(fù)位門控制在前一時刻忽略隱藏層信息的程度,并且復(fù)位門的值越大,就越明顯地被忽略。BiGRU解決了狀態(tài)的單向傳輸問題。
Attention機制是一種將注意力集中在關(guān)鍵信息上并突出顯示本地重要信息的機制。它是一種類似于人腦的注意力資源分配機制。它通過概率權(quán)重分配的方式來計算不同時間的概率權(quán)重,從而使一些信息得到更多的關(guān)注,從而提高了隱層特征提取的質(zhì)量。本文中增加字符級注意力的目的是為不同的字符向量分配概率權(quán)重,突出顯示文本的關(guān)鍵信息,將每個字符級特征合并到句子級特征向量中,并進一步提取字符特征的信息。句子級別的注意力反映每個句子對關(guān)系分類的影響程度。它可以充分利用每個實體對的所有信息語句,有助于預(yù)測分類。
2.2.3輸出層
在輸出層用Softmax損失函數(shù)進行計算,實現(xiàn)文本的分類,即輸出屬于每種關(guān)系類型的兩個實體的概率,所有概率之和為1。最高的概率作為實體關(guān)系類別的最終預(yù)測結(jié)果。
本文的實驗融合關(guān)系發(fā)現(xiàn)詞與BiGRU-2ATT進行醫(yī)療實體診療關(guān)系抽取。整個實驗數(shù)據(jù)主要是從醫(yī)療百科網(wǎng)站、《多發(fā)性骨髓瘤診斷與治療》、多發(fā)性骨髓瘤的《患者手冊》和《NCCN多發(fā)性骨髓瘤臨床實踐指南》2017.3版獲取。經(jīng)過人工處理之后,構(gòu)建了1 060個醫(yī)療診療關(guān)系樣本,將所有數(shù)據(jù)以4∶1切分,分別作為訓(xùn)練集和測試集,表1所示為四種關(guān)系類別的示例數(shù)據(jù)。
表1 四種關(guān)系類別示例數(shù)據(jù)
采用Word2Vec訓(xùn)練得到的字符向量表中的字符個數(shù)是16 116,向量維數(shù)設(shè)置為100,將句子的最大長度和關(guān)系發(fā)現(xiàn)詞的總長度設(shè)置為70,將超過該長度的部分去掉,不足的用字符向量表中“BLANK”對應(yīng)的id補全,隱藏層的節(jié)點數(shù)為230,每批次處理的句子數(shù)量為50,迭代次數(shù)為20,其余參數(shù)都隨機初始化。
模型抽取性能通過四種關(guān)系類型的平均精度進行評估。通過調(diào)整學習率,觀察不同學習率下的模型訓(xùn)練情況,分別通過基線模型BiGRU-2ATT和融合了關(guān)系發(fā)現(xiàn)詞的BiGRU-2ATT模型進行訓(xùn)練并測試。圖3為基于BiGRU-2ATT模型的關(guān)系抽取性能最優(yōu)的Precision-Recall曲線,圖4為在融合關(guān)系發(fā)現(xiàn)詞與BiGRU-2ATT的模型上抽取性能最優(yōu)的Precision-Recall曲線。除此之外,本文還分別實現(xiàn)了基于TP-ISP算法提取關(guān)系發(fā)現(xiàn)詞和基于哈工大詞林表聚類識別關(guān)系發(fā)現(xiàn)詞進行關(guān)系抽取,并與本文模型進行對比,圖5為四種模型在不同學習率時的平均精度對比。
圖3 BiGRU-2ATT最優(yōu)結(jié)果
圖4 關(guān)系發(fā)現(xiàn)詞+BiGRU-2ATT最優(yōu)結(jié)果
圖5 四種模型的平均精度對比
由圖3和圖4可以看出本文模型提升了關(guān)系抽取性能。由圖5中的四條折線走向可以得出如下結(jié)論:
(1) 在學習率為0.8時,本文模型與基于TP-ISP算法提取關(guān)系發(fā)現(xiàn)詞進行關(guān)系抽取的性能相近。在其他學習率下,本文模型有更高的查準率。這是由于TP-ISP算法是基于整個語料的詞語計算權(quán)重的,權(quán)重分布結(jié)果會導(dǎo)致識別錯誤的關(guān)系發(fā)現(xiàn)詞。比如句子“糖尿病人在病情嚴重時,可出現(xiàn)皮膚瘙癢”,該句的關(guān)系發(fā)現(xiàn)詞應(yīng)該是“出現(xiàn)”,分類為“相關(guān)癥狀”,但是基于IP-ISP算法得到“嚴重”在整個語料中的權(quán)重更高,所以該句的關(guān)系發(fā)現(xiàn)詞被識別為“嚴重”。
(2) 基于哈工大詞林聚類識別關(guān)系發(fā)現(xiàn)詞的關(guān)系抽取模型雖然是優(yōu)于基線模型BiGRU-2ATT的,但是本文模型更好。這是因為哈工大詞林聚類是基于人工建立的初始關(guān)系發(fā)現(xiàn)詞的,在人工和預(yù)料規(guī)模的限制下會漏掉一些關(guān)系發(fā)現(xiàn)詞,導(dǎo)致有的句子識別不出關(guān)系發(fā)現(xiàn)詞。
(3) 在不同學習率下,本文方法都比BiGRU-2ATT的抽取性能好。在相同學習率下,本文模型抽取效果較BiGRU-2ATT最高提升了大約8.2百分點。
本文提出加入關(guān)系發(fā)現(xiàn)詞作為BiGRU-2ATT模型的額外特征輸入來提高模型的關(guān)系抽取效果。首先根據(jù)哈工大同義詞詞林表規(guī)則聚類進行第一輪關(guān)系發(fā)現(xiàn)詞抽取,然后采用基于TF-IDF的關(guān)系發(fā)現(xiàn)詞補充算法進行第二輪的關(guān)系發(fā)現(xiàn)詞抽取,最后將自動抽取到的關(guān)系發(fā)現(xiàn)詞作為BiGRU-2ATT模型的額外特征輸入進行醫(yī)療診療關(guān)系抽取。通過對比實驗驗證了本文方法相較使用基礎(chǔ)詞向量和位置向量的BiGRU-2ATT模型及額外使用了TP-ISP算法進行關(guān)系發(fā)現(xiàn)詞識別的模型均能有效提升抽取性能。
本文模型的性能與關(guān)系發(fā)現(xiàn)詞初始集合的人工定義質(zhì)量及隨后的自動抽取算法緊密相關(guān)。未來工作將繼續(xù)研究優(yōu)化關(guān)系發(fā)現(xiàn)詞的自動抽取以減少人工依賴。除此之外,將建立大規(guī)模、更詳細的語料庫以進一步抽取醫(yī)療領(lǐng)域中更細粒度的關(guān)系。