謝 劍 周小茜 童 凌 羅凌云*
?
基于中文分詞的電子病歷數(shù)據(jù)挖掘技術(shù)
謝劍周小茜童凌羅凌云*
(南華大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 湖南 衡陽(yáng)421001)
電子病歷中存在海量非結(jié)構(gòu)化數(shù)據(jù),其中隱含的信息對(duì)于醫(yī)學(xué)研究與應(yīng)用均具有重要的意義。文章通過比較各類中文分詞器的優(yōu)劣,結(jié)合詞典擴(kuò)充技術(shù),挖掘出真實(shí)電子病歷中的疾病與藥品信息,并對(duì)疾病與疾病、疾病與藥品進(jìn)行關(guān)聯(lián)分析,發(fā)掘有價(jià)值的信息。實(shí)驗(yàn)結(jié)果表明該方法是行之有效的。
醫(yī)學(xué)數(shù)據(jù);電子病歷
眾所周知,巨大的醫(yī)學(xué)數(shù)據(jù)中潛在著很多有價(jià)值的信息。這些潛在的信息對(duì)輔助病例治療和醫(yī)學(xué)研究的發(fā)展具有很重要的意義。但是從目前的狀況來看,多數(shù)的醫(yī)療機(jī)構(gòu)除了對(duì)這些數(shù)據(jù)做一些簡(jiǎn)單的錄入、修改、查詢等操作之外,并沒有進(jìn)行深入的分析,使得這些醫(yī)學(xué)數(shù)據(jù)中隱含的價(jià)值并沒有被充分利用。如果不去發(fā)掘這些數(shù)據(jù)中的價(jià)值,不管對(duì)醫(yī)學(xué)還是對(duì)于學(xué)術(shù)研究來說,都是一種很大的損失。
目前數(shù)據(jù)挖掘技術(shù)正逐漸趨向于成熟[1,2],對(duì)于上述的情況,如果能夠?qū)?shù)據(jù)挖掘技術(shù)應(yīng)用在醫(yī)學(xué)信息挖掘中[3],通過分析海量的醫(yī)學(xué)數(shù)據(jù),總結(jié)病例就診過程中接受過的各種治療所產(chǎn)生的療效,挖掘出其中隱含的各種有意義的信息[4,5],可以為醫(yī)務(wù)人員對(duì)相關(guān)病例的醫(yī)療計(jì)劃的制定提供非常有用的幫助,為醫(yī)學(xué)智能輔助系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)提供支持[6-8]。
病歷是病人在醫(yī)院就醫(yī)過程中的全部記錄,病歷中不僅包含病人的年齡、性別等個(gè)人信息,還包含醫(yī)院的診斷、檢查結(jié)果、治療方法記錄等等醫(yī)療信息。傳統(tǒng)的病歷都是由人工手寫在紙質(zhì)病歷本上,雖然對(duì)同一個(gè)診斷醫(yī)生來說書寫閱讀方便,但隨著醫(yī)療水平的進(jìn)步,傳統(tǒng)的病歷暴露出很多的弊端,如記錄信息不完整、遺漏,手寫筆跡不工整難以識(shí)別等,則當(dāng)主治醫(yī)生換成其他人或者病人住院需要轉(zhuǎn)院時(shí),新接手的醫(yī)生從紙質(zhì)病歷本中得到病人的診斷檢查信息可能會(huì)存在很大誤差或遺漏,造成誤診或者需要重新診斷而浪費(fèi)大量時(shí)間和資源。
現(xiàn)如今,醫(yī)院都采用電子病歷存儲(chǔ)病人的信息,與傳統(tǒng)病歷相比,電子病歷具有記錄完整、查閱方便、傳輸快、存儲(chǔ)量大等優(yōu)點(diǎn)。文章所用的病歷采用word文檔的格式存儲(chǔ),其內(nèi)容包括:病例特點(diǎn)、擬診討論、病例分型、診療計(jì)劃、查房記錄。雖然病歷文檔有一個(gè)整體的結(jié)構(gòu),但其中的詳細(xì)文本內(nèi)容還是由醫(yī)務(wù)人員主觀錄入,是無(wú)結(jié)構(gòu)的數(shù)據(jù),以下是某個(gè)病歷中的一次查房記錄:
2015-01-24 09:12XX主任查房記錄
今隨XX主任醫(yī)師查房,患者訴右下肢浮腫,查體為輕度凹陷性水腫,無(wú)畏寒發(fā)熱及頭暈、頭痛、視物模糊、惡心、嘔吐、胸悶、胸痛、氣促等特殊不適,大小便正常。查體:腋表36.7℃,脈搏84次/分,呼吸19次/min,血壓110/70mmHg。右下肢有輕度凹陷性水腫。神清,全身皮膚鞏膜無(wú)黃染,淺表淋巴結(jié)未捫及,雙肺呼吸音清,未及明顯干濕啰音。心率64次/分,律齊,無(wú)雜音。韋兵主任醫(yī)師查房后示:(1)按心胸外科護(hù)理常規(guī),予以普食,監(jiān)測(cè)脈搏、血壓、心率;(2)完善常規(guī)檢查:三大常規(guī)、肝腎功能、血?dú)狻㈦娊赓|(zhì)、血糖、肝炎免疫、HIV、梅毒、定血型、胸部CT、頭顱CT、腹部彩超、心電圖、肺功能、纖支鏡等;(3)暫予以“注射用細(xì)辛腦”解痙化痰、“苦碟子注射液”改善循環(huán)、“注射用香菇多糖”、“消癌平注射液”抗腫瘤、“鹽酸氨溴索”、“環(huán)磷腺苷葡胺”護(hù)心、“阿加曲班注射液”抗動(dòng)脈閉塞。因患者之前檢查結(jié)果回報(bào)有白細(xì)胞數(shù)目減少,加用“重組人粒細(xì)胞刺激因子”促進(jìn)粒細(xì)胞增加。遵執(zhí),繼觀。
電子病歷中潛藏的知識(shí)是非常具有研究和實(shí)用意義的,例如,發(fā)掘出哪個(gè)地域處于什么年齡段的病人容易患上什么?。徊∪嗽谥委熯^程中一直出現(xiàn)的癥狀或發(fā)病規(guī)律;預(yù)測(cè)癥狀的發(fā)生等等,如果能挖掘出病歷文本中潛在的價(jià)值或者規(guī)律,有利于輔助醫(yī)療診斷系統(tǒng)的構(gòu)建,給病人帶來福音。
目前網(wǎng)絡(luò)上的中文分詞工具很多[9,10],也應(yīng)用在了很多方面,如搜索引擎、手寫輸入識(shí)別、語(yǔ)音識(shí)別分詞、微博分詞等[11-14],但是在醫(yī)學(xué)文本中,存在許多的醫(yī)學(xué)專用詞,如藥品名稱、疾病名稱、組織器官名稱等,如果直接將分詞工具用來處理病歷文本分詞,分詞正確率和識(shí)別率會(huì)大大降低,所以有必要采取方法來解決醫(yī)學(xué)專用詞的識(shí)別。
選取上一節(jié)中的病歷來進(jìn)行分詞測(cè)試。選取這段記錄的原因是,該文本中包含人名、醫(yī)藥名稱、醫(yī)學(xué)單位、人體體征等詞,這些詞對(duì)各分詞工具來說都屬于新詞,選用這段文本可以用來測(cè)試各分詞工具對(duì)新詞識(shí)別的正確率。
2.1中文分詞器比較
對(duì)結(jié)巴分詞、庖丁分詞、斯坦福分詞器Stanford Segmenter和中科院分詞系統(tǒng)ICTCLAS進(jìn)行測(cè)試[15],對(duì)比分詞結(jié)果可以發(fā)現(xiàn):
(1)結(jié)巴分詞速度最快,Stanford Segmenter的運(yùn)行時(shí)間最長(zhǎng),因?yàn)榻Y(jié)巴分詞雖然也是基于統(tǒng)計(jì)的分詞方法,但是結(jié)巴分詞工具已經(jīng)在程序中直接寫出了訓(xùn)練之后的模型,而斯坦福分詞器沒有,所以運(yùn)行之前需要先進(jìn)行花費(fèi)時(shí)間多的訓(xùn)練。
(2)庖丁分出的詞量最多,因?yàn)殁叶⑽谋局邢噜徶g所有能組合出的詞都切分出來,因此庖丁分詞工具適合搜索引擎分詞而不適合用作文本數(shù)據(jù)分析前的分詞。
(3)結(jié)巴分詞不能很好的識(shí)別出時(shí)間,如“2015-01-24”切分成了“2015/ - /01 /- /24 ”。
(4)選取的文本中間存在“注射用細(xì)辛腦”、“苦碟子注射液”、“注射用香菇多糖”、“消癌平注射液”、“鹽酸氨溴索”、“環(huán)磷腺苷葡胺”、“阿加曲班注射液”,共七個(gè)藥品名稱,從測(cè)試結(jié)果中可以看出,結(jié)巴分詞、Stanford分詞和ICTCLAS分詞都沒有將這七個(gè)詞識(shí)別出來,對(duì)比之下只有庖丁分詞的測(cè)試結(jié)果中完整的切分出了這七個(gè)詞。而鑒于文本中上述七個(gè)詞都有雙引號(hào)包括,為了判斷庖丁是否真的能切分出藥品名詞,將包含上述幾個(gè)詞的句子去掉特殊的雙引號(hào)之后,庖丁和其它三種分詞工具一樣,并不能與第一次測(cè)試結(jié)果一樣完整的識(shí)別出某一個(gè)藥品名稱。
總而言之,雖然這四個(gè)分詞工具能在自然文本或者說人們經(jīng)常使用的文本中有不錯(cuò)的分詞效果和較高的正確率,但是對(duì)于擁有很多專業(yè)用語(yǔ)的醫(yī)學(xué)文本處理,如果使用自帶的詞典,各個(gè)分詞工具都不能達(dá)到比較理想的效果,所以有必要使用分詞工具提供的自定義詞典功能進(jìn)行詞典擴(kuò)充。
2.2詞典擴(kuò)充技術(shù)
如果把病歷中的藥品作為數(shù)據(jù)挖掘感興趣的知識(shí),例如說,要提取出病人在每個(gè)階段(醫(yī)生查房記錄)接受治療使用過的藥品,則必須在提取信息之前,在對(duì)數(shù)據(jù)預(yù)處理的過程中將各藥品名詞準(zhǔn)確的切分出來,而在上述測(cè)試中,雖然庖丁切分出了各藥品名稱,但也僅能切分出雙引號(hào)括起來的詞,事實(shí)上,使用各分詞工具默認(rèn)的詞典,四個(gè)分詞工具都不能完成對(duì)藥品名稱的識(shí)別,但它們都提供用戶自定義詞典的功能,因此,我們考慮使用藥品名詞集對(duì)分詞詞庫(kù)進(jìn)行擴(kuò)充。
但目前網(wǎng)絡(luò)上并沒有包含藥品名稱的詞典可供直接使用或者下載,所以藥品詞匯的獲取只能采用其它的方法,如網(wǎng)頁(yè)數(shù)據(jù)爬取。
2.2.1網(wǎng)頁(yè)數(shù)據(jù)提取??蛻舳税l(fā)出目標(biāo)URL地址請(qǐng)求,服務(wù)器端會(huì)返回相應(yīng)的靜態(tài)頁(yè)面,而這個(gè)靜態(tài)頁(yè)面中就包含了需要的藥品詞匯。
包含藥品最全的莫過于國(guó)家食品藥品監(jiān)督局的數(shù)據(jù)庫(kù)了,雖然沒辦法直接提取國(guó)家藥品監(jiān)督局的數(shù)據(jù)庫(kù)內(nèi)容,但監(jiān)督局的網(wǎng)站提供了數(shù)據(jù)查詢服務(wù),藥品數(shù)據(jù)查詢結(jié)果在瀏覽器顯示內(nèi)容如圖1。
共查詢到18955條藥品數(shù)據(jù),包括國(guó)產(chǎn)和進(jìn)口的藥品,而屬于不同的藥品生產(chǎn)公司但同名的藥品只占一條記錄,意味著這18955條數(shù)據(jù)不重名,我們提取這18955條數(shù)據(jù)中的藥品名稱來擴(kuò)充分詞詞典,而不關(guān)心其生產(chǎn)的公司或者來源。
第一步,使用瀏覽器查看頁(yè)面源代碼,包含數(shù)據(jù)記錄的網(wǎng)頁(yè)源代碼示例如下:
仔細(xì)觀察源碼,各條記錄用標(biāo)簽對(duì)包圍,且可以判定width="241">XXXX所有這樣格式的字符串中間包含的XXXX就是要提取的藥品名詞。文章采用Java來爬取數(shù)據(jù),上述的模式對(duì)應(yīng)的Java正則表達(dá)式是String PATTERN = "width="241">([^<]+)",其中“()”包圍的內(nèi)容就是藥品名稱。提取整個(gè)頁(yè)面中的所有藥品名稱并寫入文件。
第二步,上述過程只能提取一個(gè)頁(yè)面的內(nèi)容,而查詢結(jié)果有1264個(gè)頁(yè)面,手工翻頁(yè)提取的話工作量大效率不高,通過查看頁(yè)面地址,發(fā)現(xiàn)地址中有個(gè)page字段控制頁(yè)面,其它的內(nèi)容都一樣,所以建立一個(gè)循環(huán)每次改變page后面的值之后再發(fā)送URL請(qǐng)求就可遍歷所有頁(yè)面。這樣就提取出了網(wǎng)站收錄的所有藥品名稱。
圖1.國(guó)家食品藥品監(jiān)督局網(wǎng)頁(yè)內(nèi)容
2.2.2自定義用戶詞典。根據(jù)測(cè)試,新詞識(shí)別效果最好的是中科院分詞器ICTCLAS,而且ICTCLAS支持用戶在自定義詞典中添加詞性標(biāo)注功能,所以選擇ICTCLAS分詞器來進(jìn)行病歷文檔的分詞工作。首先采集ICD10提供的比較全的疾病名稱以及前文爬取到的藥品名稱自定義詞典。疾病名稱采用add_disease做標(biāo)注,藥品名稱采用add_nz做詞性標(biāo)注,自定義詞典如圖2。
圖2.自定義詞典部分
最后,使用ICTCLAS 2015分詞器提供的ICTCLAS-tools.exe工具在脫機(jī)狀態(tài)下導(dǎo)入自定義的詞典。
對(duì)病歷文檔進(jìn)行數(shù)據(jù)挖掘與分析,其大致流程如圖3所示。
圖3.病歷文檔分析流程
首先,使用擴(kuò)充詞典后的分詞工具對(duì)病歷文本進(jìn)行分詞操作,得到帶有詞性標(biāo)注的文本。其次,進(jìn)行信息的提取與分析。
3.1信息提取
(1)提取疾病與藥品名稱。對(duì)分詞后的文本操作,提取出其中所有以add_disease和add_nz標(biāo)注的詞匯,得到的疾病與藥品名稱形式如表1:
表1.疾病與藥品名稱形式
疾病1疾病2...疾病n藥品1藥品2...藥品n 病例1肺結(jié)核球肺膿腫甲鈷胺注射液甘露醇注射液 病例2冠心病高血壓胃竇糜爛苦碟子注射液紅花黃色素氯化鈉注射用丹參 ... 病例n
(2)將提取出的上述形式的數(shù)據(jù)存入關(guān)系型數(shù)據(jù)庫(kù)中,但是對(duì)于不同的病例,所患疾病以及對(duì)應(yīng)的治療藥品可能各不相同,而且同一個(gè)病例,可能還患有其它的多種疾病,由于這種特殊性,將上述表格拆分為數(shù)據(jù)庫(kù)中三個(gè)表格,數(shù)據(jù)庫(kù)設(shè)計(jì)如圖4所示。
圖4.數(shù)據(jù)庫(kù)設(shè)計(jì)
圖4中病例表的設(shè)計(jì)忽略了病例的性別、年齡等其它個(gè)人信息。將提取到的信息以如上的形式存入數(shù)據(jù)庫(kù)中。到這一步,摒棄了病歷文本中的一些次要或者不相關(guān)的信息,得到了有結(jié)構(gòu)的關(guān)系型數(shù)據(jù)如圖5所示。對(duì)于這樣的數(shù)據(jù),人們可以很方便的使用數(shù)據(jù)挖掘技術(shù)或工具來進(jìn)行下一步的分析。
圖5.提取的疾病表(左)與藥品表(右)(部分)
3.2數(shù)據(jù)挖掘關(guān)聯(lián)分析
使用數(shù)據(jù)挖掘技術(shù)中的關(guān)聯(lián)分析法來分析上節(jié)提取出來的數(shù)據(jù),關(guān)聯(lián)分析使用支持度和置信度兩個(gè)度量,支持度用來選取出同時(shí)出現(xiàn)多的項(xiàng)集,而置信度則用來度量規(guī)則X→Y關(guān)聯(lián)的可信度。通過計(jì)算各項(xiàng)關(guān)聯(lián)的置信度和支持度,與預(yù)先設(shè)定的閾值相比較,判斷兩個(gè)或多個(gè)項(xiàng)之間的關(guān)聯(lián)是否成立。例如,對(duì)于如下表的例子,疾病用D+數(shù)字表示,藥物用M+數(shù)字表示。
表2.病歷數(shù)據(jù)樣例
病例疾病集藥物集 1{D1}{M1} 2{D1,D2}{M2,M3} 3{D2}{M1,M2,M4} 4{D2,D3}{M5,M2} 5{D2,D4}{M6,M4}
上述共有五個(gè)病例,考慮{D2}→{M2}的關(guān)聯(lián)規(guī)則,則其支持度為:
S({D2}→{M2}) = {同時(shí)包含D2和M2的病例數(shù)量}/{所有病例數(shù)量}=3/5。置信度為: C({D2}→{M2})={同時(shí)包含D2和M2的病例數(shù)量}/{包含D2的病例數(shù)量}=3/4。預(yù)先設(shè)定支持度與置信度的最小閾值minSup和minConf,從所有的病例項(xiàng)中,利用算法提取去所有支持度大于或等于minSup的關(guān)聯(lián)規(guī)則,再計(jì)算這些規(guī)則的置信度,如果某條規(guī)則的置信度C也大于或等于minConf,則可以認(rèn)為這條規(guī)則是成立的,而這條規(guī)則中的疾病和藥品相關(guān)聯(lián),也就是說其中的藥品對(duì)這些疾病有治療效果。例如,對(duì)于上述的關(guān)聯(lián)規(guī)則{D2}→{M2},如果s=3/5>=minSup,c=3/4>=minConf成立,則認(rèn)為藥品M2對(duì)疾病D2有治療效果。
同時(shí),如果使用上述的分析方法,不考慮藥品集,只對(duì)疾病集進(jìn)行關(guān)聯(lián)分析,可以得到某些疾病與疾病之間的關(guān)聯(lián)關(guān)系,也就是能得出患者患有某種病的同時(shí)會(huì)患有的并發(fā)疾病。采用部分?jǐn)?shù)據(jù)進(jìn)行分析測(cè)試過程及結(jié)果如圖6所示:
圖6.從病歷中提取出的部分疾病數(shù)據(jù)
數(shù)據(jù)關(guān)聯(lián)分析過程采用weka分析工具,輸入的數(shù)據(jù)格式如圖6,每一行表示一個(gè)實(shí)例,這里表示一個(gè)病例,每一列代表一種屬性,表示一種疾病,如果病例未患有該疾病,則使用空白格表示。
采用關(guān)聯(lián)規(guī)則挖掘的Apriori算法,各步驟如下:
(1)從包含屬性值數(shù)量為1的候選集中選出支持度大于minSup的候選集L1;
(2)將L1中的候選集兩兩組合,仍然選取出其中支持度大于minSup的候選集L2;
(3)再將L2中的候選集兩兩組合,繼續(xù)選取出其中支持度大于minSup的候選集L3:
(4)不斷將上一步產(chǎn)生的候選集中的每一行兩兩組合,并選取出其中支持度大于最小支持度的屬性集合,直至不能產(chǎn)生新的候選集。最終結(jié)果如圖7所示。
圖7.關(guān)聯(lián)規(guī)則挖掘的結(jié)果
對(duì)挖掘出的規(guī)則進(jìn)行分析,如{高血壓}→{胸痛},驗(yàn)證發(fā)現(xiàn)高血壓本身并不會(huì)導(dǎo)致患者出現(xiàn)胸痛的癥狀,而這條規(guī)則出現(xiàn)的原因是高血壓容易誘發(fā)冠心病等心血管疾病,這些誘發(fā)疾病則會(huì)導(dǎo)致胸痛癥狀的產(chǎn)生。
基于上述結(jié)果,雖然由于無(wú)關(guān)數(shù)據(jù)的干擾,產(chǎn)生的規(guī)則并不是全部有意義的,如圖7中的第2條規(guī)則{嘔吐}→{胸痛}、第10條{梅毒}→{肝炎}(這兩者只是醫(yī)院對(duì)病人采用的常規(guī)檢查,病人并未患有)等等,但上述結(jié)果中出現(xiàn)的高血壓、腎囊腫、冠心病、胸痛等的關(guān)聯(lián)規(guī)則,在臨床現(xiàn)象中確實(shí)存在。所以文章使用的挖掘流程和方法對(duì)醫(yī)院的病歷文本進(jìn)行處理分析是確實(shí)可行的,能夠挖掘出有價(jià)值的信息。
文章探討電子病歷中的有效信息挖掘問題。比較了四類中文分詞器的優(yōu)劣,采用詞典擴(kuò)充技術(shù),在其中添加藥品名稱,挖掘了電子病歷中的疾病與藥品信息,并進(jìn)行關(guān)聯(lián)分析,發(fā)掘有價(jià)值的規(guī)則。實(shí)驗(yàn)結(jié)果表明,該方法對(duì)于電子病歷的信息挖掘是行之有效的。
[1]Jiawei Han,Micheline Kamber,Jian Pei.數(shù)據(jù)挖掘概念與技術(shù)[M].北京:機(jī)械工業(yè)出版社,2012.
[2][土耳其]Ethem Alpaydin.機(jī)器學(xué)習(xí)導(dǎo)論(原書第2版)[M].北京:機(jī)械工業(yè)出版社,2014.
[3]余輝,呂揚(yáng)生.數(shù)據(jù)挖掘在生物醫(yī)學(xué)領(lǐng)域的應(yīng)用[J].國(guó)外醫(yī)學(xué)生物醫(yī)學(xué)工程分冊(cè),2003,(2):54-59.
[4]何軍,劉紅巖,杜小勇.挖掘多關(guān)系關(guān)聯(lián)規(guī)則[J].軟件學(xué)報(bào),2007,(11):2752-2765.
[5]何月順.關(guān)聯(lián)規(guī)則挖掘技術(shù)的研究及應(yīng)用[D].南京航空航天大學(xué),2010.
[6]朱凌云,吳寶明,綜述,曹長(zhǎng)修,審校.醫(yī)學(xué)數(shù)據(jù)挖掘的技術(shù)、方法及應(yīng)用[J].生物醫(yī)學(xué)工程學(xué)雜志,2003,(3):559-562.
[7]胡靈芝.數(shù)據(jù)挖掘方法及其在醫(yī)學(xué)領(lǐng)域中的應(yīng)用[J].遼寧中醫(yī)藥大學(xué)學(xué)報(bào),2010,(7):51-52.
[8]江菊琴.醫(yī)學(xué)數(shù)據(jù)挖掘綜述[J].電腦知識(shí)與技術(shù),2011,(15):3495-3497.
[9]孫鐵利,劉延吉.中文分詞技術(shù)的研究現(xiàn)狀與困難[J].信息技術(shù),2009,(7):187-189.
[10]龍樹全,趙正文,唐華.中文分詞算法概述[J].電腦知識(shí)與技術(shù),2009,(10):2605-2607
[11]Steven Bird,Ewan Klein,Edward Loper. Natural Language Processing with Python[M].O’Reilly Media,Inc.,2009.
[12]Wang S,Paul M J,Dredze M. Exploring Health Topics in Chinese Social Media: An Analysis of Sina Weibo[C]//Workshops at the Twenty-Eighth AAAI Conference on Artificial Intelligence.2014.
[13]Paul M J,Dredze M.Drug Extraction from the Web:Summarizing Drug Experiences with Multi-Dimensional Topic Models[C]//HLT-NAACL.2013:168-178.
[14]Paul M J,Dredze M. Discovering health topics in social media using topic models[J].PloS one,2014,(8):e103408.
[15]黃翼彪.開源中文分詞器的比較研究[D].鄭州大學(xué),2013.
(責(zé)任編校:何俊華)
TP391
A
1673-2219(2016)10-0054-06