張 立
(蘇州大學附屬常熟醫院(常熟市第一人民醫院) 常熟 215500)
互聯網改變了醫療服務生態系統,包括醫療咨詢、門診、治療和康復以及在線購買藥物[1]。目前醫療信息系統具有一定診斷功能,可實現導診與初步診斷。然而大多數醫療信息系統是基于專家系統,這樣的系統需要多個專家,總結不同癥狀需要大量時間、精力和人力,成本較高,不適合廣泛應用,且個性化程度不高[2]。本文以數據挖掘和機器學習技術為核心,以提供人性化、綜合化、信息化、自動化醫療咨詢為目標,對醫療導診服務進行研究。由于缺乏醫學知識和經驗,大多數人在生病時會用錯誤的醫學術語描述其癥狀[3]。本文提出的醫療導診模型利用卷積神經網絡(Convolutional Neural Network,CNN)和自然語言處理 (Natural Language Processing,NLP)等深度學習技術對原始、噪聲較大的數據進行特征構建和轉換,目前的模型涵蓋500種不同類型的疾病,其準確率接近70%。同時針對分詞工具在醫學用詞領域應用效果不佳的問題,采用基于互信息的新詞發現法進行文本分詞。
醫療導診的基礎是醫療信息平臺,通過對癥狀與病情的識別匹配最優解決方案。早在1966年Ledley和Lusted等[4]就提出機器診斷思想。1972年Willcox等[5]嘗試用計算機和貝葉斯理論來識別細菌性疾病。2001年Saeys等[6]提出將特征選擇技術應用于生物信息識別應用系統。雖然特征選擇技術在生物信息學領域應用廣泛,但在生物醫學領域應用才剛剛起步。由于醫學樣本具有維數大、長度短的特點(如醫學文本信息),有必要根據醫學數據特點對特征選擇技術進行改進和優化。2010年Abeel等[7]研究一種用于癌癥診斷中生化特征識別的特征選擇算法,采用支持向量機分類算法將綜合特征選擇技術應用于疾病診斷。近年來文本分類技術在醫學領域相關研究逐漸成熟。在心臟疾病和神經系統疾病相關診斷方面,Ahmed將人工蜂群算法和改進的全貝葉斯網絡分類器相結合,采用這種組合技術進行混合估計,最終使得心臟病預測準確率接近100%[8]。Patil 應用Jelinek-Mercer平滑法和貝葉斯模型對心臟病進行預測和診斷[9]。目前在線醫療導診服務幾乎是人工輔助的,患者等待時間不確定。為提高導診精度與滿意度,基于智能文本信號處理的機器學習算法被應用到醫學導診系統。雖然一定程度上提高導診溝通滿意度,但仍存在不足。Lin等設計基于TF-IDF算法的智能醫療導診系統,由用戶界面、自然語言癥狀、醫療導診計算3個模塊組成,主要是基于關鍵字檢索與匹配[10]。近年來自動化導診疾病診斷平臺的應用引起越來越多關注。2015年百度醫生應用的語音導診功能上線,這是一種基于語音智能識別技術的全新方法,用于解決百度APP醫療導診功能應用的實際問題,是我國首個在移動醫療場景下開發的基于自然語言的智能導診技術。
《中國醫生/患者數字化生活 2017》報告顯示21% 的醫生已開展線上執業,借助數字化渠道提供個人專業知識,在互聯網產生大量有價值的數據。可以建立基于數據挖掘的疾病診斷導診模型,幫助用戶在入院前獲得人工智能導診診斷服務[11]。本文提出人工智能導診疾病診斷框架。首先通過命名實體識別(Named Entity Recognition,NER)對患者自然語言進行特征提取,實現疾病標注,同時利用詞嵌入技術將用戶疾病查詢數據轉換為矩陣表達式。然后通過訓練CNN訓練出人工智能疾病導診模型,最終實現對新用戶疾病查詢的智能引導。人工智能導診疾病診斷模型中,將疾病診斷抽象化問題看作一個分類問題,利用CNN模型來解決該問題,同時在網絡上對海量醫學知識進行深入挖掘,獲得人工智能導診疾病診斷模型,取得較好成果。人工智能導診疾病診斷研究框架,見圖1。

圖1 人工智能導診疾病診斷研究框架
3.2.1 醫學命名實體 在語言使用中命名實體被定義為具有獨立含義的文本字符串,通常在句子中作為一個整體使用[12]。NER是對文本中具有特定意義的實體識別,如開放領域中的命名實體,主要包括人、地、組織和機構名稱。命名實體在不同細分領域有不同分類[13]。在生物醫學領域被認可的實體已經擴展到技術術語,如基因和蛋白質名稱[14]。一般來說醫學領域命名實體分為4類:疾病、癥狀、檢查和治療。
3.2.2 人工智能導診疾病診斷 本文所研究的人工智能導診疾病診斷主要是識別癥狀范疇中的命名實體。NER是一種模式識別任務,即從給定的句子中識別實體邊界和類型信息。典型方法是將邊界和類型信息組合成一系列標簽,然后將NER任務轉化為待預測句子中每個詞的標簽。典型標記方法以B_C和I_C形式生成標簽,其中B和I是位置標簽,C是類別標簽,B是實體的開始,I是實體的延續。不屬于任何實體的內容通常標記為O。NER包括兩類方法:一類是基于分類的方法,另一類是基于注釋序列化的方法。由于基于注釋序列化的方法在許多方面優于基于分類的方法,本文采用基于注釋序列化的方法,即使用條件隨機場(Conditional Random Field,CRF)模型對醫學領域中命名實體之間的癥狀類別進行識別。對于兩個隨機變量X和Y,X是要標記的觀測序列,Y是標記序列,給定觀測序列X被Y標記的條件概率為P(Y | X)。假定圖G=(V, E)是無向圖,其中V是頂點集,E是邊集。李雪等[12]指出CRF模型對歧義詞和未登錄詞有較好的處理能力,可以取得最好的分詞效果,本文在CRF模型中加入特定詞典特征來使用領域詞典,實現疾病標注,同時利用詞嵌入技術將用戶疾病查詢數據轉換為矩陣表達式,獲得帶有疾病標簽的醫療問答數據。醫療問答數據一般包括兩部分:一部分是癥狀描述,有助于醫生診斷疾病;另一部分則有助于理解與某種疾病相關知識。本文要求的數據是前者,即癥狀查詢和疾病標簽。用癥狀來篩選查詢語句,采用CRF模型對整個數據進行描述。對于表述癥狀查詢語句的篩選方法,首先采用CRF模型對待篩選的查詢語句進行癥狀自評。如果對于一個句子可以識別到兩個或更多的癥狀就認為這句話是癥狀查詢語句。利用上述規則對查詢數據集進行篩選,共篩選出查詢數據507 411條。疾病分布與總體數據分布大致相同。對于篩選出的訓練數據,提取其特征并使其適應CNN的輸入。輸入一個癥狀查詢語句后,首先進行分詞以消除虛詞,在預先訓練好的嵌入向量集中找到該詞對應的嵌入向量作為輸入矩陣的一行。特別是如果輸入詞是癥狀命名實體或其中一部分,則向量中每個維度的值乘以2, 以加強癥狀在文本中的特征化作用。得到輸入矩陣后將其作為CNN的輸入,將其疾病標簽作為分類類別對CNN進行訓練。
對大量真實數據集進行仿真分析,對所提出的在線醫療導診方法有效性進行實證評估。本文所使用的數據都是來自網絡的公開數據,通過網絡爬蟲獲取,涉及醫生問答和疾病癥狀的數據都是從國內幾大醫學信息網站上獲取。醫療文本數據,見表1。對于疾病和癥狀信息數據集,提取疾病和癥狀名稱,以疾病與癥狀之間的相關性作為知識庫,有利于提高模型的泛化能力。對于問答數據集,提取內容包括用戶屬性、查詢的標題和內容以及醫生答案。

表1 醫療文本數據
由于導診系統要處理的對象是中文文本,需進行分詞。然而醫學領域相關數據具有專業性,患者提出的一些問題包含網絡用語,分詞結果欠佳。因此采用基于互信息的新詞提取方法,提取分詞工具無法識別的部分新詞。在分詞過程中這些無法識別的詞學習特征字典,更準確地實現后續分詞和數據處理。詞嵌入是將詞嵌入到向量空間,即使用向量來表示詞[15]。與向量空間模型(Vector Space Model,VSM)相比,詞嵌入使用許多向量來訓練詞組,無需監督學習,該向量表達式具有豐富的語義信息。因此這個詞被表達為一個相對低維的向量,同時這個向量具有一定抽象語義。對于意義非常相似的兩個詞來說,字符相似度很小,例如 “腹瀉”和“腸胃”,但其向量表達非常接近,在向量空間相似度非常高。應用Skip-Gram模型[1]即Word2Vector中的詞嵌入訓練工具,對醫學問答文本中的詞嵌入進行訓練。對于得到的嵌入詞,可以利用余弦相似度來計算相似度。實驗前首先對數據特點進行分析,確定人工智能導診疾病診斷范圍,然后對數據進行標注,生成訓練數據集,使用驗證方法驗證模型有效性,同時采用人工評估方法對模型性能進行評估。對于數據集1中的7 022條疾病數據,使用疾病名稱來匹配數據。如果有匹配的疾病,將此查詢與疾病關聯起來。前10個匹配疾病及其匹配次數,見表2。疾病匹配次數統計及對應百分比,見圖2。據統計疾病數據中前500名的匹配率累計為92.5%。由于分類次數過多會導致訓練偏差過大、出現錯誤,因此根據統計數據結果將所有分類限制在500個類別。

表2 前10個匹配疾病

圖2 統計數據
作為一個多分類問題,本文利用10倍交叉驗證的評估方法對模型進行評估。此外鑒于醫學問題特殊性,采用抽樣方法,邀請醫學領域專家對結果進行評估。10倍交叉驗證法將訓練數據平均分為10份。每次迭代都將9份作為模型訓練的訓練數據,另一份作為測試數據來測量計算模型精度。交叉驗證重復10次,且每個數據驗證1次,得到模型精度。驗證結果表明本文提出的模型對于疾病診斷任務準確率為71.7%。從結果可以看出如果只返回1個疾病名,且作為最終答案,結果并不理想。實驗結果顯示系統精度隨返回答案數量的變化而變化;如果標準答案在系統返回的答案中,則認為系統答案正確。為評估診斷模型診斷能力,從其他數據資源中隨機抽取100個癥狀查詢數據,利用該診斷模型生成結果,與醫生標注結果進行比較。不同模式下導診精度,見表3。可以看出本文提出的模型具有較高導診精度,適用于在線導診服務。

表3 不同模式下導診精度
本文介紹了一種新的醫療導診框架,該框架首先通過命名實體識別對患者描述的疾病進行自然語言查詢注釋,然后采用詞嵌入法將用戶疾病查詢數據轉換為矩陣表達式,最后利用人工智能導診模型獲得導診結果。通過對真實數據集的評估驗證了本文方法有效性。下一步將導診模型集成到醫療在線服務平臺,以提供便捷的在線服務與高精度的診療結果。