張 立
(蘇州大學(xué)附屬常熟醫(yī)院(常熟市第一人民醫(yī)院) 常熟 215500)
互聯(lián)網(wǎng)改變了醫(yī)療服務(wù)生態(tài)系統(tǒng),包括醫(yī)療咨詢、門診、治療和康復(fù)以及在線購(gòu)買藥物[1]。目前醫(yī)療信息系統(tǒng)具有一定診斷功能,可實(shí)現(xiàn)導(dǎo)診與初步診斷。然而大多數(shù)醫(yī)療信息系統(tǒng)是基于專家系統(tǒng),這樣的系統(tǒng)需要多個(gè)專家,總結(jié)不同癥狀需要大量時(shí)間、精力和人力,成本較高,不適合廣泛應(yīng)用,且個(gè)性化程度不高[2]。本文以數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)技術(shù)為核心,以提供人性化、綜合化、信息化、自動(dòng)化醫(yī)療咨詢?yōu)槟繕?biāo),對(duì)醫(yī)療導(dǎo)診服務(wù)進(jìn)行研究。由于缺乏醫(yī)學(xué)知識(shí)和經(jīng)驗(yàn),大多數(shù)人在生病時(shí)會(huì)用錯(cuò)誤的醫(yī)學(xué)術(shù)語(yǔ)描述其癥狀[3]。本文提出的醫(yī)療導(dǎo)診模型利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和自然語(yǔ)言處理 (Natural Language Processing,NLP)等深度學(xué)習(xí)技術(shù)對(duì)原始、噪聲較大的數(shù)據(jù)進(jìn)行特征構(gòu)建和轉(zhuǎn)換,目前的模型涵蓋500種不同類型的疾病,其準(zhǔn)確率接近70%。同時(shí)針對(duì)分詞工具在醫(yī)學(xué)用詞領(lǐng)域應(yīng)用效果不佳的問題,采用基于互信息的新詞發(fā)現(xiàn)法進(jìn)行文本分詞。
醫(yī)療導(dǎo)診的基礎(chǔ)是醫(yī)療信息平臺(tái),通過對(duì)癥狀與病情的識(shí)別匹配最優(yōu)解決方案。早在1966年Ledley和Lusted等[4]就提出機(jī)器診斷思想。1972年Willcox等[5]嘗試用計(jì)算機(jī)和貝葉斯理論來識(shí)別細(xì)菌性疾病。2001年Saeys等[6]提出將特征選擇技術(shù)應(yīng)用于生物信息識(shí)別應(yīng)用系統(tǒng)。雖然特征選擇技術(shù)在生物信息學(xué)領(lǐng)域應(yīng)用廣泛,但在生物醫(yī)學(xué)領(lǐng)域應(yīng)用才剛剛起步。由于醫(yī)學(xué)樣本具有維數(shù)大、長(zhǎng)度短的特點(diǎn)(如醫(yī)學(xué)文本信息),有必要根據(jù)醫(yī)學(xué)數(shù)據(jù)特點(diǎn)對(duì)特征選擇技術(shù)進(jìn)行改進(jìn)和優(yōu)化。2010年Abeel等[7]研究一種用于癌癥診斷中生化特征識(shí)別的特征選擇算法,采用支持向量機(jī)分類算法將綜合特征選擇技術(shù)應(yīng)用于疾病診斷。近年來文本分類技術(shù)在醫(yī)學(xué)領(lǐng)域相關(guān)研究逐漸成熟。在心臟疾病和神經(jīng)系統(tǒng)疾病相關(guān)診斷方面,Ahmed將人工蜂群算法和改進(jìn)的全貝葉斯網(wǎng)絡(luò)分類器相結(jié)合,采用這種組合技術(shù)進(jìn)行混合估計(jì),最終使得心臟病預(yù)測(cè)準(zhǔn)確率接近100%[8]。Patil 應(yīng)用Jelinek-Mercer平滑法和貝葉斯模型對(duì)心臟病進(jìn)行預(yù)測(cè)和診斷[9]。目前在線醫(yī)療導(dǎo)診服務(wù)幾乎是人工輔助的,患者等待時(shí)間不確定。為提高導(dǎo)診精度與滿意度,基于智能文本信號(hào)處理的機(jī)器學(xué)習(xí)算法被應(yīng)用到醫(yī)學(xué)導(dǎo)診系統(tǒng)。雖然一定程度上提高導(dǎo)診溝通滿意度,但仍存在不足。Lin等設(shè)計(jì)基于TF-IDF算法的智能醫(yī)療導(dǎo)診系統(tǒng),由用戶界面、自然語(yǔ)言癥狀、醫(yī)療導(dǎo)診計(jì)算3個(gè)模塊組成,主要是基于關(guān)鍵字檢索與匹配[10]。近年來自動(dòng)化導(dǎo)診疾病診斷平臺(tái)的應(yīng)用引起越來越多關(guān)注。2015年百度醫(yī)生應(yīng)用的語(yǔ)音導(dǎo)診功能上線,這是一種基于語(yǔ)音智能識(shí)別技術(shù)的全新方法,用于解決百度APP醫(yī)療導(dǎo)診功能應(yīng)用的實(shí)際問題,是我國(guó)首個(gè)在移動(dòng)醫(yī)療場(chǎng)景下開發(fā)的基于自然語(yǔ)言的智能導(dǎo)診技術(shù)。
《中國(guó)醫(yī)生/患者數(shù)字化生活 2017》報(bào)告顯示21% 的醫(yī)生已開展線上執(zhí)業(yè),借助數(shù)字化渠道提供個(gè)人專業(yè)知識(shí),在互聯(lián)網(wǎng)產(chǎn)生大量有價(jià)值的數(shù)據(jù)。可以建立基于數(shù)據(jù)挖掘的疾病診斷導(dǎo)診模型,幫助用戶在入院前獲得人工智能導(dǎo)診診斷服務(wù)[11]。本文提出人工智能導(dǎo)診疾病診斷框架。首先通過命名實(shí)體識(shí)別(Named Entity Recognition,NER)對(duì)患者自然語(yǔ)言進(jìn)行特征提取,實(shí)現(xiàn)疾病標(biāo)注,同時(shí)利用詞嵌入技術(shù)將用戶疾病查詢數(shù)據(jù)轉(zhuǎn)換為矩陣表達(dá)式。然后通過訓(xùn)練CNN訓(xùn)練出人工智能疾病導(dǎo)診模型,最終實(shí)現(xiàn)對(duì)新用戶疾病查詢的智能引導(dǎo)。人工智能導(dǎo)診疾病診斷模型中,將疾病診斷抽象化問題看作一個(gè)分類問題,利用CNN模型來解決該問題,同時(shí)在網(wǎng)絡(luò)上對(duì)海量醫(yī)學(xué)知識(shí)進(jìn)行深入挖掘,獲得人工智能導(dǎo)診疾病診斷模型,取得較好成果。人工智能導(dǎo)診疾病診斷研究框架,見圖1。
圖1 人工智能導(dǎo)診疾病診斷研究框架
3.2.1 醫(yī)學(xué)命名實(shí)體 在語(yǔ)言使用中命名實(shí)體被定義為具有獨(dú)立含義的文本字符串,通常在句子中作為一個(gè)整體使用[12]。NER是對(duì)文本中具有特定意義的實(shí)體識(shí)別,如開放領(lǐng)域中的命名實(shí)體,主要包括人、地、組織和機(jī)構(gòu)名稱。命名實(shí)體在不同細(xì)分領(lǐng)域有不同分類[13]。在生物醫(yī)學(xué)領(lǐng)域被認(rèn)可的實(shí)體已經(jīng)擴(kuò)展到技術(shù)術(shù)語(yǔ),如基因和蛋白質(zhì)名稱[14]。一般來說醫(yī)學(xué)領(lǐng)域命名實(shí)體分為4類:疾病、癥狀、檢查和治療。
3.2.2 人工智能導(dǎo)診疾病診斷 本文所研究的人工智能導(dǎo)診疾病診斷主要是識(shí)別癥狀范疇中的命名實(shí)體。NER是一種模式識(shí)別任務(wù),即從給定的句子中識(shí)別實(shí)體邊界和類型信息。典型方法是將邊界和類型信息組合成一系列標(biāo)簽,然后將NER任務(wù)轉(zhuǎn)化為待預(yù)測(cè)句子中每個(gè)詞的標(biāo)簽。典型標(biāo)記方法以B_C和I_C形式生成標(biāo)簽,其中B和I是位置標(biāo)簽,C是類別標(biāo)簽,B是實(shí)體的開始,I是實(shí)體的延續(xù)。不屬于任何實(shí)體的內(nèi)容通常標(biāo)記為O。NER包括兩類方法:一類是基于分類的方法,另一類是基于注釋序列化的方法。由于基于注釋序列化的方法在許多方面優(yōu)于基于分類的方法,本文采用基于注釋序列化的方法,即使用條件隨機(jī)場(chǎng)(Conditional Random Field,CRF)模型對(duì)醫(yī)學(xué)領(lǐng)域中命名實(shí)體之間的癥狀類別進(jìn)行識(shí)別。對(duì)于兩個(gè)隨機(jī)變量X和Y,X是要標(biāo)記的觀測(cè)序列,Y是標(biāo)記序列,給定觀測(cè)序列X被Y標(biāo)記的條件概率為P(Y | X)。假定圖G=(V, E)是無(wú)向圖,其中V是頂點(diǎn)集,E是邊集。李雪等[12]指出CRF模型對(duì)歧義詞和未登錄詞有較好的處理能力,可以取得最好的分詞效果,本文在CRF模型中加入特定詞典特征來使用領(lǐng)域詞典,實(shí)現(xiàn)疾病標(biāo)注,同時(shí)利用詞嵌入技術(shù)將用戶疾病查詢數(shù)據(jù)轉(zhuǎn)換為矩陣表達(dá)式,獲得帶有疾病標(biāo)簽的醫(yī)療問答數(shù)據(jù)。醫(yī)療問答數(shù)據(jù)一般包括兩部分:一部分是癥狀描述,有助于醫(yī)生診斷疾??;另一部分則有助于理解與某種疾病相關(guān)知識(shí)。本文要求的數(shù)據(jù)是前者,即癥狀查詢和疾病標(biāo)簽。用癥狀來篩選查詢語(yǔ)句,采用CRF模型對(duì)整個(gè)數(shù)據(jù)進(jìn)行描述。對(duì)于表述癥狀查詢語(yǔ)句的篩選方法,首先采用CRF模型對(duì)待篩選的查詢語(yǔ)句進(jìn)行癥狀自評(píng)。如果對(duì)于一個(gè)句子可以識(shí)別到兩個(gè)或更多的癥狀就認(rèn)為這句話是癥狀查詢語(yǔ)句。利用上述規(guī)則對(duì)查詢數(shù)據(jù)集進(jìn)行篩選,共篩選出查詢數(shù)據(jù)507 411條。疾病分布與總體數(shù)據(jù)分布大致相同。對(duì)于篩選出的訓(xùn)練數(shù)據(jù),提取其特征并使其適應(yīng)CNN的輸入。輸入一個(gè)癥狀查詢語(yǔ)句后,首先進(jìn)行分詞以消除虛詞,在預(yù)先訓(xùn)練好的嵌入向量集中找到該詞對(duì)應(yīng)的嵌入向量作為輸入矩陣的一行。特別是如果輸入詞是癥狀命名實(shí)體或其中一部分,則向量中每個(gè)維度的值乘以2, 以加強(qiáng)癥狀在文本中的特征化作用。得到輸入矩陣后將其作為CNN的輸入,將其疾病標(biāo)簽作為分類類別對(duì)CNN進(jìn)行訓(xùn)練。
對(duì)大量真實(shí)數(shù)據(jù)集進(jìn)行仿真分析,對(duì)所提出的在線醫(yī)療導(dǎo)診方法有效性進(jìn)行實(shí)證評(píng)估。本文所使用的數(shù)據(jù)都是來自網(wǎng)絡(luò)的公開數(shù)據(jù),通過網(wǎng)絡(luò)爬蟲獲取,涉及醫(yī)生問答和疾病癥狀的數(shù)據(jù)都是從國(guó)內(nèi)幾大醫(yī)學(xué)信息網(wǎng)站上獲取。醫(yī)療文本數(shù)據(jù),見表1。對(duì)于疾病和癥狀信息數(shù)據(jù)集,提取疾病和癥狀名稱,以疾病與癥狀之間的相關(guān)性作為知識(shí)庫(kù),有利于提高模型的泛化能力。對(duì)于問答數(shù)據(jù)集,提取內(nèi)容包括用戶屬性、查詢的標(biāo)題和內(nèi)容以及醫(yī)生答案。
表1 醫(yī)療文本數(shù)據(jù)
由于導(dǎo)診系統(tǒng)要處理的對(duì)象是中文文本,需進(jìn)行分詞。然而醫(yī)學(xué)領(lǐng)域相關(guān)數(shù)據(jù)具有專業(yè)性,患者提出的一些問題包含網(wǎng)絡(luò)用語(yǔ),分詞結(jié)果欠佳。因此采用基于互信息的新詞提取方法,提取分詞工具無(wú)法識(shí)別的部分新詞。在分詞過程中這些無(wú)法識(shí)別的詞學(xué)習(xí)特征字典,更準(zhǔn)確地實(shí)現(xiàn)后續(xù)分詞和數(shù)據(jù)處理。詞嵌入是將詞嵌入到向量空間,即使用向量來表示詞[15]。與向量空間模型(Vector Space Model,VSM)相比,詞嵌入使用許多向量來訓(xùn)練詞組,無(wú)需監(jiān)督學(xué)習(xí),該向量表達(dá)式具有豐富的語(yǔ)義信息。因此這個(gè)詞被表達(dá)為一個(gè)相對(duì)低維的向量,同時(shí)這個(gè)向量具有一定抽象語(yǔ)義。對(duì)于意義非常相似的兩個(gè)詞來說,字符相似度很小,例如 “腹瀉”和“腸胃”,但其向量表達(dá)非常接近,在向量空間相似度非常高。應(yīng)用Skip-Gram模型[1]即Word2Vector中的詞嵌入訓(xùn)練工具,對(duì)醫(yī)學(xué)問答文本中的詞嵌入進(jìn)行訓(xùn)練。對(duì)于得到的嵌入詞,可以利用余弦相似度來計(jì)算相似度。實(shí)驗(yàn)前首先對(duì)數(shù)據(jù)特點(diǎn)進(jìn)行分析,確定人工智能導(dǎo)診疾病診斷范圍,然后對(duì)數(shù)據(jù)進(jìn)行標(biāo)注,生成訓(xùn)練數(shù)據(jù)集,使用驗(yàn)證方法驗(yàn)證模型有效性,同時(shí)采用人工評(píng)估方法對(duì)模型性能進(jìn)行評(píng)估。對(duì)于數(shù)據(jù)集1中的7 022條疾病數(shù)據(jù),使用疾病名稱來匹配數(shù)據(jù)。如果有匹配的疾病,將此查詢與疾病關(guān)聯(lián)起來。前10個(gè)匹配疾病及其匹配次數(shù),見表2。疾病匹配次數(shù)統(tǒng)計(jì)及對(duì)應(yīng)百分比,見圖2。據(jù)統(tǒng)計(jì)疾病數(shù)據(jù)中前500名的匹配率累計(jì)為92.5%。由于分類次數(shù)過多會(huì)導(dǎo)致訓(xùn)練偏差過大、出現(xiàn)錯(cuò)誤,因此根據(jù)統(tǒng)計(jì)數(shù)據(jù)結(jié)果將所有分類限制在500個(gè)類別。
表2 前10個(gè)匹配疾病
圖2 統(tǒng)計(jì)數(shù)據(jù)
作為一個(gè)多分類問題,本文利用10倍交叉驗(yàn)證的評(píng)估方法對(duì)模型進(jìn)行評(píng)估。此外鑒于醫(yī)學(xué)問題特殊性,采用抽樣方法,邀請(qǐng)醫(yī)學(xué)領(lǐng)域?qū)<覍?duì)結(jié)果進(jìn)行評(píng)估。10倍交叉驗(yàn)證法將訓(xùn)練數(shù)據(jù)平均分為10份。每次迭代都將9份作為模型訓(xùn)練的訓(xùn)練數(shù)據(jù),另一份作為測(cè)試數(shù)據(jù)來測(cè)量計(jì)算模型精度。交叉驗(yàn)證重復(fù)10次,且每個(gè)數(shù)據(jù)驗(yàn)證1次,得到模型精度。驗(yàn)證結(jié)果表明本文提出的模型對(duì)于疾病診斷任務(wù)準(zhǔn)確率為71.7%。從結(jié)果可以看出如果只返回1個(gè)疾病名,且作為最終答案,結(jié)果并不理想。實(shí)驗(yàn)結(jié)果顯示系統(tǒng)精度隨返回答案數(shù)量的變化而變化;如果標(biāo)準(zhǔn)答案在系統(tǒng)返回的答案中,則認(rèn)為系統(tǒng)答案正確。為評(píng)估診斷模型診斷能力,從其他數(shù)據(jù)資源中隨機(jī)抽取100個(gè)癥狀查詢數(shù)據(jù),利用該診斷模型生成結(jié)果,與醫(yī)生標(biāo)注結(jié)果進(jìn)行比較。不同模式下導(dǎo)診精度,見表3??梢钥闯霰疚奶岢龅哪P途哂休^高導(dǎo)診精度,適用于在線導(dǎo)診服務(wù)。
表3 不同模式下導(dǎo)診精度
本文介紹了一種新的醫(yī)療導(dǎo)診框架,該框架首先通過命名實(shí)體識(shí)別對(duì)患者描述的疾病進(jìn)行自然語(yǔ)言查詢注釋,然后采用詞嵌入法將用戶疾病查詢數(shù)據(jù)轉(zhuǎn)換為矩陣表達(dá)式,最后利用人工智能導(dǎo)診模型獲得導(dǎo)診結(jié)果。通過對(duì)真實(shí)數(shù)據(jù)集的評(píng)估驗(yàn)證了本文方法有效性。下一步將導(dǎo)診模型集成到醫(yī)療在線服務(wù)平臺(tái),以提供便捷的在線服務(wù)與高精度的診療結(jié)果。