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