賈辛洪,宋文愛,李偉巖,王 青,雷 毅,陳志華,常宗平
1(中北大學 軟件學院,太原 030051) 2(清華大學 信息技術研究院,北京 100084) 3(中日友好醫(yī)院 臨床醫(yī)學研究所,北京 100084)
慢性阻塞性肺疾病是一種以不完全可逆性氣流受限為特征的疾病,氣流受限呈進行性發(fā)展,多與肺部對有害顆粒與氣體的異常炎癥反應相關.慢阻肺發(fā)病率高、知曉率低、控制率低,病死率相對高,是危害人類健康的重大疾病之一,病情嚴重時候會引發(fā)呼吸道感染,導致呼吸衰竭,嚴重患者會合并嚴重的肺部感染等原因去世.在我國,慢阻肺患者生活質量遠遠低于健康人群.慢阻肺也是“沉默的疾病”,發(fā)病初期無明顯癥狀與不適感,但求醫(yī)時已經發(fā)展到中度以上[1].目前大多數患者首診出現在基層醫(yī)院,但是有部分基層醫(yī)院醫(yī)生對其基礎知識及技能掌握不足,使用設備不規(guī)范,導致患者錯過最佳就醫(yī)時間.
知識圖譜(Knowledge Graph)是一種新的知識表示方法,本質還是語義網,基本原理是用圖模型來刻畫和描述現實世界中存在的各種實體或概念,建立這些實體之間的關系.國外最有影響力的知識圖譜有:YAGO[2]是由德國MA Planck計算機科學院設計的.Freebase[3]是谷歌的知識圖譜,類似于維基百科的創(chuàng)作,內容由用戶添加.DBpedia[4]是從維基百科的詞條里擷取出結構化的資料,以強化維基百科的搜尋功能.NELL[5]由卡內基-梅隆大學Tom Mitchell教授領導的團隊構建.
國內的知識圖譜從搜狗知立方開始.百度知心是百度的下一代搜索引擎.中國科學院中醫(yī)藥信息研究所基于已有的中醫(yī)藥學語言系統構建的中醫(yī)藥知識圖譜[6],基于知識圖譜的基因組流行病學可視化分析[7]等,有利于推動國家醫(yī)學知識的分析與推理.但是目前現有的各種對醫(yī)學信息學領域知識庫的研究大多是基于互聯網上公開的醫(yī)學文獻,這類知識雖然獲取比較方便,但是較少將其與電子病歷結合起來,導致知識比較局限,如何利用真實醫(yī)學數據來構建知識圖譜[8],獲取更準確、更全面、更權威的知識成為醫(yī)學知識圖譜領域的研究需求.
2001年,Lafferty等人結合最大熵模型和隱馬爾可夫模型的特點提出了一種無向圖模型條件隨機場(CRF),它不僅解決了隱馬爾可夫輸出獨立性假設的缺點,可以考慮上下文的特征;而且一定程度上解決了最大熵模型的標記偏置問題.
本文是將線性鏈條件隨機出模型應用到了命名實體識別中,就是把輸入的文本中的單詞序列作為了觀察序列X=(X1,X2,…,Xn),根據單詞序列來推斷最有可能的標記序列Y=(Y1,Y2,…,Yn).即在給定的觀察序列X情況下,某個特定序列Y的概率為P(Y|X),根據定義有:
P(Y|X)=exp(∑i,kλktk(Yi-1,Yi,X,i)+∑i,lulsl(Yi,X,i))
(1)
其中,tk(Yi-1,Yi,X,i)表示轉移函數,表示在序列X下序列Y在位置i-1及i對應的值轉移概率,而sl(Yi,X,i)表示狀態(tài)函數,表示在序列X下序列Y在位置i對應的值概率.另外λk,μl分別為兩個函數的權重.若令sl(Yi,X,i)=sl(Yi-1,Yi,X,i),則轉移函數和狀態(tài)函數可以統一由特征函數表示,對特征在各個位置i求和,有:
(2)
再加上歸一化,最終條件隨機場的條件概率為:
(3)
其中:
(4)
長短期記憶網絡(LSTM)是一種時間循環(huán)神經網絡,是為了解決一般的RNN(循環(huán)神經網絡)存在的長期依賴問題而專門設計出來的,克服了序列過長產生的梯度彌散問題.LSTM模型通過特殊的門結構使得模型可以有選擇性的保留上下文信息,因此可以用它來識別醫(yī)學上的實體.LSTM模型的結構可以形式化的表示為:
it=σ(Wi[ht-1,xt]+bi)
(5)
ft=σ(Wf[ht-1,xt]+bf)
(6)
(7)
(8)
ot=σ(W0[ht-1,xt]+bo)
(9)
ht=ot*tanh(Ct)
(10)
LSTM模型在信息處理只是將信息從前往后的處理,所得到的當前狀態(tài)結果只考慮到了當前狀態(tài)之前的信息而序列標注任務,當前狀態(tài)之前的狀態(tài)跟其之后的狀態(tài)對于當前狀態(tài)是同等重要的.命名實體的標簽在確定時相互之間有強烈的依賴關系.雙向LSTM(BiLSTM)結構可以很好的解決這種情況,所以為了有效的獲取到上下文的信息,我們采用雙向LSTM結構,雙向LSTM對每一個句子采用順序和逆序計算,將計算得到的兩種不同結果向量拼接起來作為最終隱層表示,這樣有利于更加準確預測當前的狀態(tài).
本系統慢阻肺知識圖譜是由Schema(概念層)和數據層兩個部分實現的,如圖1所示.
圖1 慢阻肺知識圖譜構建流程圖
1)Schema層的構建.概念層的構建結合了慢性阻塞性肺疾病診治指南,電子病歷的信息,專家醫(yī)生的意見等多方面信息.
2)數據層的構建.本階段包括以下幾個部分:
a)半結構化數據抽取,比如獲取“藥品通”中關于慢阻肺藥品說明書信息;
b)非結構化數據抽取知識,比如獲取電子病歷中慢阻肺癥狀的信息
c)知識表示,本系統用的是Neo4j數據庫支持的屬性圖來進行表示.
d)知識存儲,用Neo4j圖數據存儲.
Schema層是構建知識圖譜的框架,Schema就是要找出一個領域內的數據模型,涉及到這個領域里面有意義的概念類型以及類型的屬性,以及類型之間關系.
本系統慢阻肺知識圖譜的概念層主要是參考慢性阻塞性肺疾病診治指南以及在領域專家的幫助下設計實現的.概念層主要包括慢阻肺相關的實體,慢阻肺相關的實體屬性以及慢阻肺相關實體的關系等部分.
慢阻肺相關醫(yī)學實體(E):慢阻肺相關醫(yī)學實體指的是在能夠唯一標識各種醫(yī)學的實體.通過慢阻肺指南可以知道涉及到的實體有,慢阻肺疾病實體,慢阻肺診斷實體,慢阻肺藥品實體,慢阻肺檢查實體,慢阻肺癥狀實體等等.
慢阻肺醫(yī)學關系(R):指的是慢阻肺醫(yī)學實體間相互之間的關聯.
結合慢阻肺指南,在中日友好醫(yī)院專家的幫助下,可以清楚的知道慢阻肺知識圖譜涉及到的關系,整理出以下慢阻肺醫(yī)學關系類型.
a)commonDrug(疾病常用藥品)
b)needCheck(疾病所需檢查)
c)hasSymptom(疾病癥狀)
d)subclass(疾病與上一級父類關系)
e)acompanyWith(疾病并發(fā)疾病)
f)hasAttribute(實體擁有的屬性)
慢阻肺知識圖譜數據層的構建屬于知識抽取部分,就是將從慢阻肺的電子病歷,網站如“藥品通”等中的數據抽取出來,然后將其與Schema中的概念對應.但是由于數據來源的不同,以及知識的表達方式的不同,不同數據需用不同的方法表達,主要包括半結構化數據,非結構化數據等.
3.2.1 數據源
本系統的數據主要涉及到中日友好醫(yī)院呼吸科的慢性阻塞性肺疾病的電子病歷,《慢性阻塞性肺疾病診治指南(2013年修訂版)》[9],“藥品通”網站上關于慢阻肺的藥品說明書的信息.
3.2.2 慢阻肺指南分析
慢性阻塞性肺疾病診治指南中涉及到了慢阻肺的定義,發(fā)病機制,病理學原理,病理學表現,病理生理學改變,危險因素,臨床變現,實驗室檢查及其他檢測指標,診斷與鑒別診斷,慢阻肺的評估,慢阻肺的治療等等,指南中涉及到了慢阻肺疾病的方方面面,而目前現有的系統大部分是直接分析已有數據庫中表的聯系來定義實體間的關系,造成構建的知識圖譜的概念層不是很完善,會有知識的缺失,但是使用指南構建概念層可以相對的避免這方面的問題,從而使得系統更加的完善,具體.
3.2.3 從半結構化數據中抽取
本系統關于慢阻肺所使用到的藥品說明書是通過網頁爬蟲從“藥品網”獲取,進行數據的清洗,解析,由于網站上的數據就規(guī)范,可以對獲取到的數據直接通過規(guī)則匹配獲得,比如藥品的名稱,藥品的成份,性狀,功能主治,用法用量,不良反應等等,根據概念層時對藥品類定義,也就獲得了關于藥品的“屬性-屬性值”關系,但是系統中還涉及到其他比如慢阻肺疾病的癥狀,雖然診治指南上也有,但是還不是很全,所以需要對慢阻肺電子病歷中關于疾病癥狀的數據進行抽取,比如患者的主訴等是一段文本,就需要對非結構化數據進行知識的抽取,本文將使用CRF與醫(yī)學詞典相結合的命名實體識別方法進行實體的抽取.
3.2.4 從非結構化數據中抽取
本系統需要從電子病歷的入院情況,如主訴等一段非結構化的文本中進行命名實體識別來抽取實體,現在對于命名實體識別的方法主要分為以下:基于詞典和規(guī)則的方法,基于統計機器學習的方法,基于深度學習的方法[10,11]或者是將其中的兩兩結合這樣可以將它們的優(yōu)點結合.經典算法有隱馬爾可夫模型(Hidden Markov Mode,HMM)[12],支持向量機(Support Vector Machines,SVM)[13],條件隨機場(Condi-tional Random Fields,CRF)等等.
目前對于慢阻肺這種疾病的電子病歷的數據沒有現有的標注,所以本系統以中日友好醫(yī)院呼吸科的病歷為來源.對好日友好醫(yī)院呼吸科提供的數據進行清洗,實驗時一共有中日友好醫(yī)院的996份電子病歷,人工標記了300份電子病歷,按照3∶1的比例隨機劃分為訓練集和測試集.
本系統需要對預處理后的數據進行格式轉換,按照BMESO 對語料進行標志.標記為 SIGNS-B、SIGNS-M、SIGNS-E、TREATMENT-B、TREATMENT-M、TREATMENT-E、BODY-B、BODY-M、BODY-E、S、O,分別標志癥狀的開頭、癥狀的中間、癥狀的結尾、治療的開頭、治療的中間、治療的結尾、身體部位的開頭、身體部位的中間、身體部位的結尾、單個癥狀詞和其他詞.表 1 為使用 BMESO 標記實體的舉例.
表1 BMESO標注
Table 1 BMESO distancepole
句子患者咳嗽、咳痰BMESO標記00SIGNS-BSIGNS-E0SIGNS-BSIGNS-E
將標注好的數據使用預訓練字向量,將其作為作為embedding層輸入,這里采用的是word2vector工具基于skip-gram方法訓練字向量,其中的embedding的維數m為150.如有一個序列X=(X1,X2,…,XT),一共有n個字,對于每一個字XT,用其對應的字向量YT=(y1,y2,…,y150)表示,那么BiLSTM的輸入就可以表示為Xnm,輸出結果為前向傳遞LSTM的輸出與后向傳遞LSTM的輸出的拼接,以此作為CRF的輸入,在CRF層是通過過去狀態(tài)的輸入及輸入所屬的狀態(tài)來預測當前輸入所屬的狀態(tài),為了在得到更好的模型結果,在訓練時采用Adam優(yōu)化器使整個模型的損失達到最小.本實驗流程如圖2所示.
實驗的核心代碼如表2所示.
實驗采用的是機器學習常用的評價指標precision(準確率)、recall(召回率)和F值三個指標來評價試驗的性能.具體定義如下:
(11)
(12)
(13)
圖2 BiLSTM-CRF模型
表2 核心代碼
通過實驗,如表3所示,分析可以得到,基于深度學習的模型比傳統的機器學習效果要好,這是因為CRF算法的結果跟選擇的特征有關,而相關特征的選擇又是有人參與設定,會出現局限性.BiLSTM比LSTM的效果要好,因為LSTM是考慮當前狀態(tài)之前的信息,沒有考慮當前狀態(tài)之后的信息,而在命名實體識別的過程中,當前狀態(tài)的之前與之后應該是同等重要,因此BiLSTM更加適合命名實體識別.BiLSTM-CRF明顯要比單獨使用時效果要好,因為CRF構造字符間的特征對應關系,而LSTM/BiLSTM層的輸出矢量歸一化,使得向量泛化.所以BiLSTM-CRF的在命名實體識別效果最好.
表3 實體識別結果
Table 3 Entity identification results
AccuracyRecallF1CRF86.43%84.23%85.31%LSTM88.64%85.36%86.96%LSTM+CRF92.34%89.45%90.87%BiLSTM+CRF93.51%90.15%91.79%
本文主要是針對我國目前慢阻肺患者和電子病歷較多,但是在偏遠地區(qū)缺乏有經驗的醫(yī)生,病人對慢阻肺缺乏正確的認識,而知識圖譜無論是在知識的展示方面還是知識的檢索方面都有很好的效果,因此需要構建慢阻肺的知識圖譜,本文主要從知識圖譜構建流程以及其中涉及到的醫(yī)學命名實體識別問題以及解決解決方案間的比較,通過做實驗知道各種方案的差異.下一步工作將持續(xù)完善更新知識圖譜、以及將以本知識圖譜為基礎設計開發(fā)關于慢阻肺的自動問答等輔助診治系統.