徐志堅, 易麗瑩
(廣州市第一人民醫(yī)院, 廣州 510000)
隨著信息技術的不斷發(fā)展,醫(yī)療信息系統(tǒng)也得到了快速發(fā)展,很多醫(yī)院建設了醫(yī)生推薦系統(tǒng),提供推薦醫(yī)生的服務工作。 但是目前的大多數(shù)系統(tǒng)存在著計算復雜、精度不高等問題,亟需對醫(yī)生推薦系統(tǒng)的算法進行優(yōu)化,本文基于標簽預測和奇異值分解算法,優(yōu)化設計醫(yī)生推薦系統(tǒng),并進行了性能分析。
使用多標簽分類等算法對醫(yī)生所擅長治療疾病進行標簽預測,根據醫(yī)生的標簽為患者推薦符合需求的醫(yī)生。 在對醫(yī)生的擅長治療標注時,需要建立特征向量和標簽向量,如醫(yī)生有d個標簽,則標簽向量Y的維度數(shù)量為d,其中各維度分別表示該醫(yī)生所擅長治療的一種疾?。?]。 如果醫(yī)生擅長治療一種疾病,則該維度的值為1;如果不擅長,該維度的值為0。
特征向量X包含以下3 種信息:
(1)分類信息。 包括醫(yī)生所在醫(yī)院、科室、職稱以及其他醫(yī)生對其評價等信息,需要對每項信息特征進行編碼。 以科室舉例說明,設科室取值數(shù)量為Oi,表示為P維度的向量,每個維度表示一個科室,一個醫(yī)生按照其所在科室將向量對應的緯度值定為1。 對于這類特征信息,各向量中只有一項為1,其余各項均為0。 如果分類信息特征數(shù)量為P,則特征維度為
(2)數(shù)值信息。 包含圖文咨詢平臺數(shù)、電話咨詢平臺數(shù)、站內關注數(shù)等。 對于這些數(shù)值信息,按照數(shù)值特征的數(shù)量表示為q維向量的方式進行處理[2]。
(3)文本信息。 主要是對每位醫(yī)生的介紹,對文本信息進行分詞處理,分為r個不同的單詞,則文本信息為r維變量。 如果該醫(yī)生的介紹中有向量各維度中的單詞,則該項維度值為單詞出現(xiàn)的次數(shù);如果單詞沒有出現(xiàn),則維度值為0。
通過以上3 項處理,每位醫(yī)生的向量維度數(shù)m為:位醫(yī)生的特征向量可以用n×m矩陣X表示,X=[x1;x2;…;xn]T;標簽向量用n×d矩陣Y表示,Y=[y1;y2;…;yn]T。
對于矩陣M,使用奇異值分解算法M=UΣ VT將其分解為3 個矩陣,其中U和V均為正交矩陣,Σ為對角矩陣。 如果將M作為物品的評分矩陣,則Σ VT表示將該物品映射到媒介空間[3]。
純粹的奇異值分解算法中,U、Σ和V分別為矩陣,M為m×n矩陣,秩的數(shù)值為。 將Σ中各值取最大的k個數(shù)值保留,得到矩陣,此時M的近似值為
對于Σ取k個最大值,實現(xiàn)了兩個目的,一是使向量的維度減少,而且使模型存儲所需空間減少;二是將數(shù)值較小的奇異值去除,消除了影響小的因素,只保留了具有最強影響的因素,使推薦效果更加理想[4]。
奇異值分解法不僅能夠預測,而且能夠形成客戶或物品的鄰近點。 使用奇異值分解對客戶- 物品的評分矩陣R分解,分別得到矩陣U和矩陣V,其中矩陣U每行代表客戶的特征向量,能用來計算客戶間的相似度;矩陣V每行代表物品的特征向量,能用來計算物品間的相似度[5]。
醫(yī)生推薦系統(tǒng)由信息采集、信息管理和信息推薦三部分組成,系統(tǒng)結構如圖1 所示。 首先,從權威網站上獲取醫(yī)療信息數(shù)據,其次,對其進行去噪、抽取,將有用信息保存在數(shù)據庫,根據患者需要為其進行醫(yī)生推薦服務。
圖1 醫(yī)生推薦系統(tǒng)結構圖Fig. 1 Structure diagram of doctor recommendation system
醫(yī)生推薦系統(tǒng)結構中,信息采集模塊的作用是從網絡上抓取與醫(yī)療相關的數(shù)據信息,核心是網絡爬蟲系統(tǒng)。 網絡上的醫(yī)療信息資源多種多樣,各政府公開網站、醫(yī)院官網、專業(yè)醫(yī)療信息網站等眾多的醫(yī)療數(shù)據信息。 為了提高數(shù)據信息的抓取速度,需要建立分布式網絡爬蟲,使多臺計算機能共同合作。
信息管理模塊是將網絡爬蟲系統(tǒng)從網絡上抓取到的信息和第三方數(shù)據進行處理,存入數(shù)據庫。 信息管理模塊主要承擔的任務:一是對抓取到的原始數(shù)據信息進行去噪處理;二是去除待存數(shù)據信息中的重復數(shù)據,并進行匹配;三是從需要存儲的數(shù)據信息中發(fā)掘有價值的信息數(shù)據,如從與該醫(yī)生進行論文合作的其他醫(yī)生的信息中發(fā)掘與該醫(yī)生專業(yè)相關的學術信息。
信息推薦模塊為患者推薦合適的醫(yī)生。 該模塊主要承擔的工作任務:一是對標簽預測模型進行訓練,二是根據訓練模型對數(shù)據庫中醫(yī)生擅長治療的疾病和對醫(yī)生的評價進行標簽預測,三是根據患者的需要為其推薦合適的醫(yī)生。
(1)信息搜索策略。 網絡爬蟲在進行內容抓取前,需要前端數(shù)據機構提供一個URL 集合,該集合可以基于網絡重要性或其他結構特征選取,也可以人工選擇;網絡爬蟲開始抓取該URL 集合指向的網頁,并通過新的網頁提取新的URL,直至沒有新的網頁需要抓取。 在網絡抓取時,采用廣度優(yōu)先策略,按照網頁發(fā)現(xiàn)先后順序進行抓取。
(2)信息采集實現(xiàn)。 網絡爬蟲由三部分組成:一是爬蟲客戶端,用來接收來自爬蟲服務器的下載要求,并對需要下載的網頁頁面發(fā)送HTTP 請求,在響應完成后,將結果反饋給爬蟲服務器;二是爬蟲控制器,用來從服務器接受抓取數(shù)據,并在本地進行保存,同時從網頁中提取URL 地址,并將沒有抓取的URL 封裝為HTTP 請求,并將其返回到服務器。 三是爬蟲服務器,從爬蟲控制器接收下載請求,并對相應客戶端進行下載分配,將下載的結果反饋給爬蟲控制器。 爬蟲服務器具有兩種隊列,一是請求隊列,對待下載的HTTP 請求信息進行記錄;二是響應隊列,對獲得響應的信息進行記錄。 網絡爬蟲系統(tǒng)結構如圖2 所示。
圖2 網絡爬蟲系統(tǒng)結構Fig. 2 Network crawler system structure
信息管理系統(tǒng)的工作:將從各數(shù)據源獲取的數(shù)據信息通過數(shù)據處理模塊進行切分、過濾、校驗和補全等處理,最終將處理后的信息存儲到相互關聯(lián)的數(shù)據表中,并在后臺對信息進行處理。
(1)數(shù)據庫存儲。 數(shù)據存儲在數(shù)量眾多、相互關聯(lián)的信息表中,各信息表之間關系復雜。 數(shù)據庫中存儲的醫(yī)生信息主要內容由4 部分組成,見表1。
表1 數(shù)據庫存儲醫(yī)生信息主要內容Tab. 1 The main content of doctor information stored in the database
通過對信息的分析,系統(tǒng)獲取更加深入的信息,如醫(yī)生的學術圈子、綜合能力和醫(yī)院的專長等信息。
在存儲過程中,實現(xiàn)應用程序與系統(tǒng)之間的聯(lián)系。 使用存儲過程能夠使編程的復雜程度降低,因為存儲表數(shù)量眾多且關系復雜,對一個存儲表進行修改會對其他存儲表帶來影響,使用存儲過程使程序和數(shù)據庫之間的聯(lián)系簡化;提升數(shù)據的安全性,通過存儲過程中程序和數(shù)據庫的交互,使數(shù)據庫中的信息不必直接暴露在程序中,減少了惡意程序對信息的破壞;縮短程序和數(shù)據庫開發(fā)周期,使用存儲過程能夠將程序和數(shù)據庫存儲分離,能夠同時對兩者進行開發(fā),縮短開發(fā)周期。
(2)數(shù)據管理。 系統(tǒng)讀取數(shù)據后,對數(shù)據進行切分、過濾、校驗和補全等操作后存儲。 在數(shù)據錄入時會出現(xiàn)多種名稱代表同一醫(yī)院問題,需要人工進行干預,進行數(shù)據匹配和清洗;在存儲過程中,需要將每項數(shù)據寫入操作日志,對數(shù)據的操作進行分析,并將有錯誤的數(shù)據及出現(xiàn)錯誤的原因寫入錯誤日志中,管理人員可通過錯誤信息進行特殊處理并將該類信息重新存儲。
(3)自定義模板和插件。 模板為XML 文件,其中包含讀取字段、讀入接口和執(zhí)行插件等內容,在管理人員錄入新信息時,首先會讀取模板信息,選擇與信息的格式相應的模板即可完成信息錄入工作。 在將信息讀入內存之后,為使信息符合數(shù)據庫存儲要求,需使用插件對信息進行處理。 管理人員通過系統(tǒng)的插件接口,編寫插件程序,完成讀入內存后信息的處理工作。
(4)信息后臺處理。 后臺管理可以根據醫(yī)院、醫(yī)生名字或其他關鍵字搜索,找到符合條件的醫(yī)生的基本資料、學術論文發(fā)表以及學術圈子信息。 醫(yī)生的基本資料包括年齡、工作醫(yī)院及科室、擅長治療疾病等信息;學術論文發(fā)表能夠展示學術論文發(fā)表的趨勢,并對各學術論文詳細介紹。 信息管理系統(tǒng)根據醫(yī)生學術論文找出與其合作的其他醫(yī)生信息,并對醫(yī)生的學術圈子進行總結,對醫(yī)生的業(yè)務能力進行綜合判斷。
信息推薦系統(tǒng)使用標簽預測和奇異值分解算法,對醫(yī)生擅長治療的疾病進行預測,并進行綜合評分和排序。 信息推薦系統(tǒng)主要是由模型訓練、存儲和推薦三部分組成,其主要步驟包括模型訓練和存儲、信息補全和預測、推薦和排序。 信息推薦系統(tǒng)首先使用奇異值分解算法進行標簽預測模型訓練;其次,使用標簽預測模型對醫(yī)生信息進行預測和補全;最后,信息推薦系統(tǒng)根據患者的需要進行醫(yī)生推薦,并按照推薦值順序顯示。 信息推薦系統(tǒng)結構如圖3所示。
圖3 信息推薦系統(tǒng)結構Fig. 3 Information recommendation system structure
離線進行標簽預測模型訓練和存儲的原因主要是奇異值分解算法所需時間較長,在大量信息需要更新時才進行模型訓練工作;其次,在訓練模型時,需要人為的參與調整。 在模型訓練后以二進制形式存儲,在需要時從文件中進行讀取即可。
本文提出的基于標簽預測和奇異值分解的醫(yī)生推薦系統(tǒng),能夠實現(xiàn)患者在就醫(yī)時尋找所需醫(yī)生的目的,解決就醫(yī)時選擇合適醫(yī)生的問題,對于患者和醫(yī)生都起到非常重要的作用。 醫(yī)生推薦系統(tǒng)是一項持續(xù)改進的工程,未來還需要在算法和排序等方面進行更加深入的改進,使其在現(xiàn)實就醫(yī)過程中發(fā)揮出更大的作用和效果。