張佳影 王 祺 張知行 阮 彤 張歡歡 何 萍
1(華東理工大學(xué)信息科學(xué)與工程學(xué)院 上海 200237)2(上海申康醫(yī)院發(fā)展中心 上海 200041)
隨著醫(yī)療信息化的不斷深入,國內(nèi)外在現(xiàn)有醫(yī)療體系之上相繼建立起了區(qū)域醫(yī)療健康平臺.以上海市為例,隨著上海市醫(yī)聯(lián)工程項(xiàng)目在2008年3月正式投入使用,上海市建成了包括市內(nèi)38家三級醫(yī)院的臨床診療信息共享平臺,實(shí)現(xiàn)了對患者的基本信息、基本病歷資料、住院病案資料、醫(yī)囑資料、醫(yī)療費(fèi)用資料、實(shí)驗(yàn)室檢驗(yàn)檢查報告、醫(yī)學(xué)影像檢查報告的交換共享,并通過網(wǎng)站等其他輔助系統(tǒng)加強(qiáng)各醫(yī)院間的協(xié)同診療.然而,由于歷史原因,各家醫(yī)院關(guān)于同一檢驗(yàn)檢查指標(biāo)的稱謂不盡相同.僅以“血清鈉”為例,便有“鈉離子濃度”、“NA+”、“動脈血鈉”、“血鈉(Na)”等10多種不同說法.由于目前并沒有完整可用的指標(biāo)同義詞庫以進(jìn)行指標(biāo)映射,這一問題已嚴(yán)重影響到了區(qū)域間醫(yī)療信息的互聯(lián)共享.由此,對區(qū)域醫(yī)療健康平臺中檢驗(yàn)檢查指標(biāo)做標(biāo)準(zhǔn)化處理,將各家醫(yī)院的同一指標(biāo)的不同稱謂映射成統(tǒng)一的標(biāo)準(zhǔn)名稱,便至關(guān)重要.然而,由于檢驗(yàn)檢查指標(biāo)涉及到大量的醫(yī)學(xué)知識,加之各家醫(yī)院的指標(biāo)體系紛繁龐雜,由醫(yī)學(xué)專業(yè)人員對其進(jìn)行人工標(biāo)準(zhǔn)化,需要耗費(fèi)大量的時間與精力.因此,如何設(shè)計(jì)一個檢驗(yàn)檢查指標(biāo)的標(biāo)準(zhǔn)化算法,便成了關(guān)鍵所在.
檢驗(yàn)檢查指標(biāo)的標(biāo)準(zhǔn)化問題,可以看作是一個實(shí)體對齊問題,即將醫(yī)療健康平臺中的候選指標(biāo)映射到標(biāo)準(zhǔn)指標(biāo)上.關(guān)于實(shí)體對齊,目前主要有2類任務(wù),分別是不同知識庫中實(shí)體間的實(shí)例匹配[1-2],以及文本中實(shí)體和知識庫實(shí)體之間的實(shí)體鏈接[3-4].前者常利用知識庫中實(shí)體的屬性信息進(jìn)行實(shí)例匹配,后者常利用文本中實(shí)體的上下文信息與知識庫中實(shí)體的屬性信息進(jìn)行實(shí)體鏈接.然而,本文的任務(wù)與以上2種任務(wù)都不同:檢驗(yàn)檢查指標(biāo)存在于電子病歷之中,只有相應(yīng)的取值及取值范圍,而不存在屬性信息;同時,它也不似文本中實(shí)體那般擁有上下文信息;更重要的是,本文任務(wù)中并不存在一個標(biāo)準(zhǔn)知識庫來提供所有指標(biāo)的標(biāo)準(zhǔn)名稱.也就是說,目前的方法都難以直接適用于本任務(wù).
有鑒于此,針對區(qū)域醫(yī)療健康平臺中的檢驗(yàn)檢查指標(biāo)標(biāo)準(zhǔn)化問題,本文提出了一種指標(biāo)標(biāo)準(zhǔn)化算法框架.首先對指標(biāo)數(shù)據(jù)進(jìn)行預(yù)處理;接著通過基于密度的聚類算法,將不同的指標(biāo)聚為多個簇,以縮小指標(biāo)的對齊范圍;然后,迭代地利用二分類算法查找簇內(nèi)篩選出的標(biāo)準(zhǔn)名稱的同義指標(biāo);最后,對指標(biāo)對齊結(jié)果進(jìn)行映射與修正.實(shí)驗(yàn)結(jié)果表明,在上海市8家三級醫(yī)院的實(shí)驗(yàn)數(shù)據(jù)集上,最終的二分類映射算法F1-score可以達(dá)到85.27%.
目前的實(shí)體對齊任務(wù)基本可以分為實(shí)例匹配和實(shí)體鏈接2類.
許多研究聚焦于知識庫實(shí)體間的實(shí)例匹配,這些研究利用知識庫中實(shí)體的屬性信息進(jìn)行匹配,它們基本可以分為2類,分別是成對實(shí)體匹配方法和集體實(shí)體匹配方法.成對實(shí)體匹配方法主要有基于傳統(tǒng)概率模型的方法、有監(jiān)督學(xué)習(xí)的方法、聚類方法和主動學(xué)習(xí)方法.傳統(tǒng)概率模型方法根據(jù)屬性相似性進(jìn)行成對實(shí)體比較[5-7],有監(jiān)督學(xué)習(xí)方法常使用決策樹[1,8]、支持向量機(jī)[9-10]、集成學(xué)習(xí)[11-12]等方法進(jìn)行二分類,聚類方法利用屬性相似性進(jìn)行實(shí)體聚類[13-15],主動學(xué)習(xí)方法通過人機(jī)交互不斷迭代來訓(xùn)練分類模型[16-18].集體實(shí)體匹配方法則將實(shí)體的關(guān)聯(lián)實(shí)體也納入考慮,常見的方法有LDA方法[19-20]、CRF模型[21-22]、Markov邏輯網(wǎng)[23-24]等.
就文本中實(shí)體與知識庫實(shí)體間的實(shí)體鏈接而言,主要有基于概率生成模型的方法[3,25]、基于主題模型的方法[4,26]、基于圖的方法[27- 30]和基于深度神經(jīng)網(wǎng)絡(luò)的方法[31- 34].
指標(biāo)標(biāo)準(zhǔn)化算法的整體流程如圖1所示.首先,對指標(biāo)數(shù)據(jù)進(jìn)行預(yù)處理,實(shí)現(xiàn)大小寫統(tǒng)一、單位統(tǒng)一和指標(biāo)參考值提取.接著,利用指標(biāo)的字面特征,通過基于密度的聚類算法,將不同的指標(biāo)聚為一個個指標(biāo)簇,以縮小指標(biāo)的對齊范圍.然后,為每一個簇確定一個標(biāo)準(zhǔn)名稱,并利用二分類算法找出簇內(nèi)標(biāo)準(zhǔn)名稱的同義指標(biāo)進(jìn)行指標(biāo)映射.對于剩下非同義指標(biāo),從中篩選出一個新的標(biāo)準(zhǔn)名稱,繼續(xù)利用二分類算法進(jìn)行同義指標(biāo)的查找(1)實(shí)際操作中選填項(xiàng)一般無數(shù)據(jù)填入.如“LOINC編碼”字段是幫助識別是否是同一個指標(biāo)的重要特征,然而由于是選填項(xiàng),實(shí)際上沒有任何數(shù)據(jù)填入.,如此迭代進(jìn)行,直到所有簇內(nèi)均為同義指標(biāo)或簇內(nèi)只剩1個指標(biāo)為止.最后,再由醫(yī)學(xué)專業(yè)人員對指標(biāo)對齊結(jié)果進(jìn)行修正處理.
Fig. 1 Overall process of indicator standardization algorithm圖1 指標(biāo)標(biāo)準(zhǔn)化算法整體流程
病歷中的指標(biāo)數(shù)據(jù),排除選填項(xiàng)(2)當(dāng)然也可以對所有的非同義指標(biāo)重新進(jìn)行聚類,如此迭代進(jìn)行.只是在實(shí)際應(yīng)用時考慮到38家醫(yī)院的不同指標(biāo)太多,聚類的時間成本很高,本文作為區(qū)域醫(yī)療健康平臺中檢驗(yàn)檢查指標(biāo)的標(biāo)準(zhǔn)化算法的初步嘗試,暫且迭代使用二分類算法進(jìn)行標(biāo)準(zhǔn)化.,必填項(xiàng)中主要包括指標(biāo)名稱、縮寫、參考值、單位、所屬檢查項(xiàng)、檢查指標(biāo)結(jié)果、異常指標(biāo)提示等字段.其中,所屬檢查項(xiàng)因各家醫(yī)院標(biāo)準(zhǔn)不一、檢查指標(biāo)結(jié)果因其取值因病人而異、異常指標(biāo)提示因不具有指標(biāo)區(qū)分度而失去作為指標(biāo)標(biāo)準(zhǔn)化特征的意義.因此,可用的字段基本僅限于指標(biāo)名稱、縮寫、參考值和單位這4項(xiàng).對指標(biāo)進(jìn)行數(shù)據(jù)預(yù)處理,主要是統(tǒng)一指標(biāo)大小寫、統(tǒng)一指標(biāo)單位,以及提取指標(biāo)參考值.
為縮小指標(biāo)的對齊范圍,本文使用基于密度的聚類算法,將不同的指標(biāo)聚到一個個指標(biāo)簇中.基于密度的聚類算法依據(jù)樣本分布的緊密程度來劃分簇,它主要考察樣本的可連接性,并在可連接樣本的基礎(chǔ)上通過不斷擴(kuò)展聚類簇來獲得最終結(jié)果.
定義1.ε-鄰域.對于xi∈D,它的ε-鄰域?yàn)閿?shù)據(jù)集D中與xi的距離不大于ε的所有樣本,即Nε(xi)={xi∈D|dist(xi,xj)≤ε}.
定義2.核心對象.如果xi的ε-鄰域內(nèi)至少包含minPts個樣本,即|Nε(xi)|≥minPts,那么xi是一個核心對象.
(1)
(2)
(3)
聚類算法從核心對象出發(fā),不斷向外擴(kuò)展,進(jìn)而生成聚類簇,其偽代碼如算法1所示.
算法 1.基于密度的聚類算法.
輸入: 指標(biāo)集合D={x1,x2,…,xn}、領(lǐng)域參數(shù)ε,minPts;
輸出:簇劃分C={C1,C2,…,Cm}.
① https://baike.baidu.com/② http://fanyi.baidu.com/
③ http://fanyi.qq.com/ ④ http://www.iciba.com/
① 初始化核心對象集合T=?;
② forxi∈Ddo
③ 確定指標(biāo)xi的ε-鄰域Nε(xi);
④ if |Nε(xi)|≥minPtsthen
⑤ 將指標(biāo)xi加入核心對象集合T=T∪{xi};
⑥ end if
⑦ end for
⑧ 初始化聚類簇數(shù)k=0,簇集合C=?,未訪問的指標(biāo)集合P=D;
⑨ whileT≠? do
⑩ 記錄當(dāng)前未訪問指標(biāo)集合P′=P;
需要注意的是,由于聚類是一個無監(jiān)督的學(xué)習(xí)過程,它可能存在2個問題:
1) 聚為一簇的指標(biāo)實(shí)際上醫(yī)學(xué)含義不同,卻因?yàn)槊Q相近或縮寫相似而被歸為一簇;
2) 有些離群值既不是核心對象,又不能通過核心對象訪問,因而沒有被聚類.因此,需要對聚類結(jié)果進(jìn)行后處理.
① 單位驗(yàn)證.假設(shè)同義指標(biāo)的單位是相同的,那么可以對每一簇指標(biāo)進(jìn)行單位驗(yàn)證,將不同單位的指標(biāo)分離為不同的簇.
② 離群值推薦.對于未被聚類的離群值,有2種處理方案,第1種是按距離遠(yuǎn)近,將離群值分到單位相符且距離最近的那一簇中;第2種是考慮到離群值與其他簇都距離較遠(yuǎn),很可能它本身就是一個全新的指標(biāo).本文采用第2種處理方案.
即使經(jīng)過后處理,無監(jiān)督聚類算法也無法保證簇內(nèi)的指標(biāo)皆為同義指標(biāo).因此,本文為每一個簇確定一個標(biāo)準(zhǔn)名稱,并利用二分類算法將簇內(nèi)指標(biāo)劃分為標(biāo)準(zhǔn)名稱的同義指標(biāo)和非同義指標(biāo)2類.特別地,為方便醫(yī)學(xué)專業(yè)人員對指標(biāo)對齊結(jié)果進(jìn)行后處理修正,考慮到標(biāo)準(zhǔn)指標(biāo)應(yīng)為最常用的指標(biāo),本文以簇內(nèi)出現(xiàn)頻次最多的指標(biāo)為標(biāo)準(zhǔn)指標(biāo).
2.3.1 數(shù)據(jù)增強(qiáng)
由于醫(yī)學(xué)專業(yè)人員很難憑空枚舉出所有的同義指標(biāo),加上有些指標(biāo)可能會有與名稱毫無聯(lián)系的同義詞(如“B型鈉尿肽”和“腦鈉素”),因此在數(shù)據(jù)集生成方面,除由醫(yī)學(xué)專業(yè)人員手動標(biāo)注部分同義指標(biāo)用于分類器訓(xùn)練之外,本文還利用SNOMED CT知識庫[36]、LOINC知識庫[37]、百度百科①等途徑來抽取標(biāo)準(zhǔn)指標(biāo)的同義詞用于訓(xùn)練.其中,SNOMED CT知識庫為全英文庫,目前并無中文版本,因此需要借助百度翻譯②、騰訊翻譯③、愛詞霸翻譯④等翻譯工具將英文指標(biāo)翻譯為中文指標(biāo).需要注意的是,即使對同一個指標(biāo),翻譯工具也有可能會得到不同的翻譯結(jié)果,因此翻譯本身也是獲取同義詞的途徑之一.表1給出了“B型鈉尿肽”經(jīng)數(shù)據(jù)增強(qiáng)后的同義指標(biāo)示例.
Table 1 An Example of the Synonymous Indicators表1 同義指標(biāo)示例
2.3.2 特征抽取
本文設(shè)計(jì)了2類特征用于指標(biāo)的二分類,分別是相似度特征和分塊打分特征.
1) 相似度特征
這類特征主要考慮了簇中每一個候選指標(biāo)與標(biāo)準(zhǔn)指標(biāo)及其所有同義詞的名稱相似度和縮寫相似度.
① 最長公共子序列相似度
② Jaccard相似度
這個相似度可以判定名稱順序不同的指標(biāo),比如“B型利鈉肽”和“利鈉肽B型”的Jaccard相似度為1.
③ 余弦相似度
④ 編輯相似度
2) 基于一對多字段的分塊打分特征
分塊打分特征主要是針對指標(biāo)參考值這種一對多的字段而言.對于指標(biāo)參考值來說,由于不同醫(yī)院對同一個指標(biāo),在參考值的上下界設(shè)置上有時會略有不同,因此實(shí)踐中存在著一個指標(biāo)名稱對應(yīng)多個參考值的現(xiàn)象.為應(yīng)對這一問題,本文參考文獻(xiàn)[38]中的知識庫實(shí)體對齊分塊算法,提出基于參考值的指標(biāo)分塊打分算法.指標(biāo)分塊打分算法基于2個假設(shè):①相同的指標(biāo)擁有相似的參考值;②擁有相似參考值的可能就是同一個指標(biāo).因此,本文的分塊打分算法由2部分組成:首先,為標(biāo)準(zhǔn)指標(biāo)的每一種參考值尋找一個與之最相似的候選指標(biāo)參考值;然后,從這些最相似的參考值出發(fā),構(gòu)建候選指標(biāo)與標(biāo)準(zhǔn)指標(biāo)之間的匹配分塊.需要注意的是,由于同一個指標(biāo)可能有多種參考值,算法允許同一個指標(biāo)出現(xiàn)在不同的塊中.本文根據(jù)不同塊的權(quán)重求出候選指標(biāo)的加權(quán)平均得分,以此作為分類特征.
Fig. 2 A schematic diagram about how to calculate similarity of reference value pairs圖2 參考值對相似度計(jì)算示意圖
綜上,我們得到了每個指標(biāo)基于參考值的分塊打分特征.
簇內(nèi)二分類將簇內(nèi)指標(biāo)劃分為標(biāo)準(zhǔn)指標(biāo)的同義指標(biāo)與非同義指標(biāo).針對非同義指標(biāo),本文將其單獨(dú)取出作為一個新的簇,并從中篩選出一個新的標(biāo)準(zhǔn)名稱,繼續(xù)利用二分類算法進(jìn)行同義指標(biāo)的查找,如此迭代進(jìn)行,直到所有簇內(nèi)均為同義指標(biāo)或簇內(nèi)只剩1個指標(biāo)為止.
到此階段,指標(biāo)標(biāo)準(zhǔn)化算法已進(jìn)入尾聲,只需把簇內(nèi)的同義指標(biāo)統(tǒng)一映射為對應(yīng)的標(biāo)準(zhǔn)指標(biāo),并交由醫(yī)學(xué)專業(yè)人員對指標(biāo)的對齊結(jié)果進(jìn)行核驗(yàn)與修正.特別地,聚類過程中可能會把同義的指標(biāo)分到不同的簇中,二分類過程把簇中非同義指標(biāo)剔除出來后,人工核驗(yàn)時還需對同義的簇進(jìn)行合并.
本文從上海臨床診療信息共享平臺中抽取指標(biāo)數(shù)據(jù)集進(jìn)行實(shí)驗(yàn).在指標(biāo)數(shù)據(jù)的抽取過程中,本文考慮了2個因素:1)指標(biāo)的種類要豐富,否則無法模擬實(shí)際應(yīng)用場景;2)同義指標(biāo)的名稱要多樣化,否則指標(biāo)的標(biāo)準(zhǔn)化沒有意義.因此,本文以醫(yī)院為單位,抽取其中所有的指標(biāo),保證了豐富性;同時選取了不同指標(biāo)名稱最多的前8家醫(yī)院,以滿足多樣性.這8家醫(yī)院的不同指標(biāo)名稱數(shù)量分別為:1 404,1 243,1 098,1 010,992,958,921,849,合并去重后共有5 211個不同指標(biāo)名稱.在擴(kuò)充了這些指標(biāo)名稱的縮寫字段之后,不同的記錄數(shù)為7 542條;在擴(kuò)充了這些指標(biāo)名稱的縮寫和參考值字段之后,不同的記錄數(shù)達(dá)到了12 750條.在聚類實(shí)驗(yàn)部分,本文選擇了236條數(shù)據(jù)進(jìn)行評測.在二分類實(shí)驗(yàn)部分,本文以正負(fù)例1∶1的比例進(jìn)行采樣,并將采樣結(jié)果按7∶3的比例劃分為訓(xùn)練集和測試集,最終得到947條訓(xùn)練樣本和406條測試樣本.本文另外選取了100個正例和100負(fù)例作為驗(yàn)證集.
本文通過在驗(yàn)證集上網(wǎng)格搜索,采用參數(shù)minPts=3,ε=0.35,閾值θ=0.7,α=0.6進(jìn)行實(shí)驗(yàn),選取梯度上升決策樹(gradient boosting decision tree, GBDT)作為最終的二分類模型,并使用Precision,Recall,F(xiàn)1-score來評價聚類和二分類的效果.
3.3.1 聚類算法對比實(shí)驗(yàn)
為了考察本文所使用的基于密度的聚類算法DBSCAN的有效性,本文選取了4種常見的聚類算法進(jìn)行對比,它們分別是k均值聚類(k-means clustering,k-means)、均值漂移聚類(mean shift clustering, Meanshift)、高斯混合模型(Gaussian mixture model, GMM)與凝聚層次聚類(agglo-merative hierarchical clustering, AHC).需要注意的是,由于這4種基準(zhǔn)算法除高斯混合模型外都需要事先定義簇數(shù)(而本文算法不需要),在實(shí)驗(yàn)時本文將它們的聚類數(shù)目設(shè)為真實(shí)的簇數(shù).實(shí)驗(yàn)結(jié)果如表2所示:
Table 2 Comparisons of Our Method and Common Clustering Methods表2 不同聚類算法的性能對比 %
Note: The best results are in bold.
從表2可以看出,本文基于密度的聚類算法的F1-score明顯高于其他4種聚類算法,其提高幅度均在10%以上.然而,雖然本文方法的Recall能達(dá)到91.36%,但Precision仍然不是很高,這也顯示了本文在聚類后進(jìn)一步進(jìn)行二分類映射的必要性.
3.3.2 二分類算法對比實(shí)驗(yàn)
1) 不同分類特征和不同分類器的對比
為了考察不同分類特征和不同分類器對分類性能的影響,本文選擇不同的特征組合,將它們在邏輯回歸(logistic regression, LR)、樸素貝葉斯(naive Bayes,NB)、k近鄰(k-nearest neighbor, kNN)、支持向量機(jī)(support vector machine, SVM)、隨機(jī)森林(random forest, RF)、梯度上升決策樹(GBDT)等不同分類器下的F1-score進(jìn)行對比.實(shí)驗(yàn)結(jié)果如表3所示,其中特征字段的名稱(name)、縮寫(abbreviation, Abbr.)和參考值(reference value, Ref.)分別表示名稱相似度特征、縮寫相似度特征和參考值分塊打分特征.
從表3可以看出,當(dāng)使用名稱相似度特征、縮寫相似度特征和參考值分塊打分特征,輔以GBDT分類器時,分類效果最好,其F1值可達(dá)85.27%.從表3中橫向來看,無論使用哪種特征,大部分情況下都是GBDT分類效果最好,而NB分類效果最差.這是因?yàn)镚BDT使用Boosting方法進(jìn)行集成學(xué)習(xí),能夠有效提高泛化性能,而NB分類器的條件獨(dú)立假設(shè)在本文中很難成立.從表3中縱向來看,無論哪種分類器,基本都是隨著特征數(shù)目的增多,分類效果越來越好,當(dāng)使用全部3類分類特征時,分類效果達(dá)到最好.
Table 3 Comparisons of Different Classification Features and Different Classifiers表3 不同分類算法的性能對比 %
Note: The best result is in bold.
2) 與現(xiàn)有方法的對比
本文從最近3年來發(fā)表的實(shí)體對齊方法中選擇了3種state-of-the-art方法,與本文所使用的全部3類特征輔以GBDT分類器的二分類方法進(jìn)行對比,這3種基準(zhǔn)方法分別是:
① 知識圖譜融合方法(KG fusion).Wang等人[39]設(shè)計(jì)不同類型的屬性相似度,使用機(jī)器學(xué)習(xí)方法進(jìn)行多源知識圖譜的融合.
② 診斷對齊方法(Diag. alignment).Ning等人[40]利用診斷的上下位信息和屬性相似度將中文診斷映射為ICD編碼.
③ 知識庫對齊方法(KB alignment).王雪鵬等人[41]利用網(wǎng)絡(luò)語義標(biāo)簽進(jìn)行多元知識庫的實(shí)體對齊.
需要注意的是,由于本文任務(wù)中既沒有屬性信息,又沒有上下文信息,所以在實(shí)際實(shí)驗(yàn)中3種基準(zhǔn)方法的部分特征沒法使用,而主要使用了其中的實(shí)體名稱和縮寫的相似度計(jì)算方法.
與現(xiàn)有方法的對比實(shí)驗(yàn)結(jié)果如表4所示:
Table 4 Performance Comparison of Entity Alignment表4 與現(xiàn)有方法的對比 %
Note: The best results are in bold.
從表4可以看出,本文方法在所有方法中取得了最好的分類結(jié)果,其Precision,Recall,F(xiàn)1-score分別為86.84%,83.76%,85.27%.值得注意的是,對比表3最后1列,當(dāng)使用GBDT分類器時,本文方法的任意2類特征組合的F1-score都比現(xiàn)有方法來得好.這是因?yàn)楸疚牡乃惴▽iT針對檢驗(yàn)檢測指標(biāo)進(jìn)行設(shè)計(jì),因而能取得更好的效果.
本文針對區(qū)域醫(yī)療健康平臺中的檢驗(yàn)檢查指標(biāo)標(biāo)準(zhǔn)化,先根據(jù)指標(biāo)的字面特征進(jìn)行聚類,再使用相似度特征和分塊打分特征迭代地進(jìn)行二分類映射.實(shí)驗(yàn)表明,最終的二分類映射,其F1-score可以達(dá)到85.27%,優(yōu)于現(xiàn)有方法.在未來,可以將指標(biāo)的同義詞信息及參考值信息應(yīng)用到聚類算法之中,并嘗試使用更多的相似性度量特征,以獲得更好的結(jié)果.
致謝感謝上海中醫(yī)藥大學(xué)的張海濤同學(xué)和上海信醫(yī)科技有限公司的王俊同學(xué)在數(shù)據(jù)集標(biāo)注上提供的幫助!