王海萍
(西安理工大學(xué) 圖書館, 陜西 西安 710054)
隨著大數(shù)據(jù)時(shí)代背景下,圖書館館藏所占用的信息量暴漲,其具有總量大、種類多和高價(jià)值的特點(diǎn)[1-2]。在海量的數(shù)據(jù)文獻(xiàn)與有限的計(jì)算機(jī)處理能力中如何找到平衡,研究設(shè)計(jì)出可行的文獻(xiàn)檢索服務(wù)方案,具有十分重要的意義。目前,國(guó)內(nèi)外關(guān)于圖書館文獻(xiàn)檢索信息化的實(shí)踐研究主要體現(xiàn)在3個(gè)方面:首先,對(duì)于多種文獻(xiàn)來源的收集和分類檢索,大數(shù)據(jù)時(shí)代下文獻(xiàn)資源較傳統(tǒng)的圖書資源信息量更為復(fù)雜,如何挖掘并進(jìn)行有效聚合是研究熱點(diǎn),例如部分學(xué)者以深度聚合可視化模型為出發(fā)點(diǎn),建立了基于數(shù)據(jù)資源收集、信息處理、資源整合和可視化的圖書館館藏?cái)?shù)據(jù)系統(tǒng)[3-4];其次,文獻(xiàn)大數(shù)據(jù)的分析方法研究,支持向量機(jī)方法、多維檢索排序方法和文獻(xiàn)活躍度方法等均是在這一背景下所提出的數(shù)據(jù)分析法[5-8];最后,圖書館文獻(xiàn)管理系統(tǒng)的性能和用戶友好程度,這一領(lǐng)域的研究成果較多,結(jié)合最新的操作系統(tǒng)界面以及云存儲(chǔ)等方法,Hadoop云平臺(tái)、Worldcat數(shù)據(jù)庫和虛擬現(xiàn)實(shí)技術(shù)等均有所應(yīng)用[9-11]。以上3種研究方向均在圖書館文獻(xiàn)檢索方面做出了巨大貢獻(xiàn),但是隨著大數(shù)據(jù)和5G時(shí)代的到來更加海量的文獻(xiàn)數(shù)據(jù)對(duì)于現(xiàn)有的檢索服務(wù)方案提出了新的挑戰(zhàn)。
目前較為主流的大數(shù)據(jù)分析技術(shù)以內(nèi)存計(jì)算為主,其中Spark平臺(tái)作為內(nèi)存計(jì)算的主要框架,在互聯(lián)網(wǎng)娛樂、游戲和網(wǎng)絡(luò)電商平臺(tái)獲得了十分成功的應(yīng)用[12]。Spark框架內(nèi)的彈性分布數(shù)據(jù)機(jī)制具有較高的容錯(cuò)能力,并且具備高效的機(jī)器學(xué)習(xí)庫,能夠?qū)A繑?shù)據(jù)以及圖形的節(jié)點(diǎn)進(jìn)行分析研究。最為重要的是,Spark框架采用分布式集群計(jì)算法,對(duì)計(jì)算機(jī)硬件的依賴性小,能夠有效降低硬件成本。因此,本文提出基于Spark框架下的圖書館文獻(xiàn)檢索服務(wù)方案,希望能夠在充分利用有限計(jì)算資源的前提下,滿足大數(shù)據(jù)高強(qiáng)度計(jì)算檢索服務(wù)。
基于Spark架構(gòu)進(jìn)行圖書館文獻(xiàn)服務(wù)方案設(shè)計(jì),本文采用3層,分別為文獻(xiàn)服務(wù)平臺(tái)設(shè)計(jì)、文獻(xiàn)數(shù)據(jù)分析設(shè)計(jì)和文獻(xiàn)數(shù)據(jù)聚合設(shè)計(jì)。其基本結(jié)構(gòu),如圖1所示。
圖1 Spark架構(gòu)下圖書館文獻(xiàn)系統(tǒng)設(shè)計(jì)結(jié)構(gòu)
文獻(xiàn)服務(wù)平臺(tái)通過Web形式給用戶提供互聯(lián)網(wǎng)在線服務(wù),采用了Web顯示系統(tǒng)技術(shù)和網(wǎng)絡(luò)可視化技術(shù)。主要實(shí)現(xiàn)文獻(xiàn)檢索、文獻(xiàn)推薦和文獻(xiàn)可視化3個(gè)功能。例如,用戶在網(wǎng)絡(luò)搜索框輸入想要檢索的目標(biāo)詞匯,搜索引擎會(huì)觸發(fā)實(shí)體或?qū)傩詸z索算法,根據(jù)Spark RDD線索尋找出相關(guān)性靠前的資源并自動(dòng)排序。然后,可視化模塊將排序的文獻(xiàn)內(nèi)容展示在Web網(wǎng)頁上,脈絡(luò)清晰,通熟易懂。
目前的云數(shù)據(jù)模式存儲(chǔ)的數(shù)據(jù)具有價(jià)值高、密度低的特征,對(duì)于數(shù)據(jù)分析和挖掘能力要求高[13-15]。本文采用Spark框架下的Lib和Graph函數(shù)庫實(shí)現(xiàn)對(duì)數(shù)據(jù)的挖掘和智能化分析,該分析方式可以智能挖掘用戶偏好,將用戶比較感興趣的文獻(xiàn)排名靠前。
文獻(xiàn)數(shù)據(jù)聚合是數(shù)據(jù)資源整合的基礎(chǔ)功能,是將本體與關(guān)聯(lián)數(shù)據(jù)融合并以一種相互關(guān)系進(jìn)行規(guī)范化屬于表達(dá)來實(shí)現(xiàn)[16]。在本文的聚合設(shè)計(jì)中,利用Map和Join函數(shù)對(duì)元數(shù)據(jù)進(jìn)行資源整合,將館藏?cái)?shù)據(jù)、互聯(lián)網(wǎng)文獻(xiàn)庫和紙質(zhì)化信息進(jìn)行合理整合并聯(lián)。
根據(jù)圖書館目前的檢索使用情況,本文研究實(shí)現(xiàn)的算法基于讀者使用習(xí)慣,包含用戶-用戶協(xié)同過濾、用戶-圖書書名推薦等混合搜索策略,每個(gè)策略分配一定權(quán)重系數(shù),通過優(yōu)化調(diào)整排序方式,最后獲得近似值,在實(shí)際使用中根據(jù)用戶的操作習(xí)慣動(dòng)態(tài)調(diào)整權(quán)重系數(shù)的大小,最終提高了圖書文獻(xiàn)的檢索效率。由于篇幅有限,因此本文僅就用戶-用戶協(xié)同過濾檢索方法的實(shí)現(xiàn)原理。
分析圖書館用戶的使用習(xí)慣發(fā)現(xiàn),當(dāng)用戶a在進(jìn)行檢索時(shí),一方面可以通過該用戶之前借閱或者瀏覽過的圖書信息來進(jìn)行推薦;另外,還可以尋找與用戶a具有類似閱讀習(xí)慣的其他用戶的借閱歷史進(jìn)行推薦。這種基于用戶-用戶推薦的算法能夠快速讓借閱者檢索到自己想要的圖書。這一算法包含的步驟如下:首先,分析計(jì)算出與用戶a具有相似閱讀習(xí)慣的用戶列表;其次,將其他用戶借閱過的文獻(xiàn)信息按一定權(quán)重進(jìn)行排序后推薦給用戶a。具體操作,如式(1)。
(1)
式中,S表示兩個(gè)用戶a和b檢索相似度,無量綱常數(shù);Na表示讀者a的檢索列表;Nb表示讀者b的檢索列表。實(shí)際運(yùn)算過程中通過構(gòu)建一個(gè)相似度矩陣,根據(jù)用戶a的檢索行為,讀者b的檢索行為以及另外兩個(gè)用戶c和d的檢索行為,就可以建立一個(gè)4*4的矩陣。本文所研究的圖書館若有n個(gè)用戶,那么就會(huì)建立一個(gè)n階矩陣進(jìn)行運(yùn)算,如圖2所示。
圖2 基于用戶-用戶檢索算法的矩陣排列方式
由于在實(shí)際檢索過程中,若用戶a和用戶b均借閱過同一本大學(xué)通用的教科書,這種情況下并能體現(xiàn)用戶對(duì)這類文獻(xiàn)感興趣,這是由于客觀條件下大學(xué)所有學(xué)生均需要學(xué)習(xí)這本書籍。因此,本文在原有的相似度算法上增加一個(gè)懲罰系數(shù),用于排除這類型通用的檢索結(jié)果,改進(jìn)的相似度計(jì)算,如式(2)。
(2)
式中,log(1+1/Ni)表示懲罰系數(shù);Ni表示用戶的檢索習(xí)慣列表。借閱次數(shù)越高代表用戶借閱該文獻(xiàn)的Ni值越高,說明該文獻(xiàn)是教科書類普適性圖書的可能性越高,因此去懲罰系數(shù)越低,在檢索中將其排名靠后。改進(jìn)后的檢索算法流程,如圖3所示。
圖3 改進(jìn)的用戶-用戶協(xié)同檢索算法流程圖
針對(duì)加入懲罰系數(shù)后的檢索和剔除過程,本文的處理方法,如圖4所示。
圖4 檢索過程中的內(nèi)存信息分類和檢索流程
對(duì)于如何準(zhǔn)確從用戶所生成的標(biāo)簽集合中提取出用戶特征,本文通過將用戶的當(dāng)前瀏覽記錄或者用戶感興趣的記錄進(jìn)行排名,作為分布式共享內(nèi)存進(jìn)行Spark GraphX內(nèi)存計(jì)算,實(shí)現(xiàn)圖、節(jié)點(diǎn)和邊處理的計(jì)算優(yōu)化。主要按以下過程進(jìn)行實(shí)現(xiàn),首先生產(chǎn)Graph并形成空?qǐng)D表,然后將文獻(xiàn)進(jìn)行聚合轉(zhuǎn)為節(jié)點(diǎn)和邊,并記錄權(quán)重初始值的W值,最后按照節(jié)點(diǎn)的權(quán)重值進(jìn)行由大到小的排序進(jìn)而獲取檢索結(jié)果。
為了驗(yàn)證改進(jìn)的Spark內(nèi)存計(jì)算圖書館檢索服務(wù)效果,本文選取圖書館從2015—2019年共5年的用戶圖書文獻(xiàn)檢索數(shù)據(jù)進(jìn)行反演和分析。其中圖書館使用用戶約為50 000人;文獻(xiàn)數(shù)據(jù)共計(jì)285 000條;文獻(xiàn)借閱記錄約為1 304 000條。對(duì)于文獻(xiàn)檢索的標(biāo)準(zhǔn)根據(jù)準(zhǔn)確率和召回率來判定,其中準(zhǔn)確率計(jì)算標(biāo)準(zhǔn)為R1/(R1+R2),R1表示用戶感興趣并推薦的文獻(xiàn);R2表示用戶不感興趣但是被推薦的文獻(xiàn),回測(cè)過程中計(jì)算用戶在不同文獻(xiàn)數(shù)量下的準(zhǔn)確率,然后選取50位作者計(jì)算器平均值;召回率計(jì)算標(biāo)準(zhǔn)為R1/(R1+R3),R3表示用戶感興趣但是沒有推薦的文獻(xiàn),召回率的回測(cè)過程與準(zhǔn)確率一致。
將基于內(nèi)存計(jì)算方法的圖書館內(nèi)存檢索成果與傳統(tǒng)的內(nèi)存檢索結(jié)果進(jìn)行對(duì)比,如表1所示。
表1 基于內(nèi)存計(jì)算方法的文獻(xiàn)檢索準(zhǔn)確率與召回率成果對(duì)比
兩種不同檢索方式的運(yùn)行時(shí)間,如圖5所示。
圖5 兩種檢索方式的運(yùn)行時(shí)間對(duì)比
從表1可以看出:在文獻(xiàn)數(shù)量為50 000份以內(nèi)時(shí),基于內(nèi)存計(jì)算的檢索方式與傳統(tǒng)的圖書館文獻(xiàn)檢索系統(tǒng)其檢索準(zhǔn)確率和召回率分別為45.9%、31.6%和45.5%、30.5%,說明在文獻(xiàn)數(shù)量較低的情況下,兩種檢索方式的精確程度相差不大,但是,在運(yùn)行時(shí)間上,基于Spark內(nèi)存計(jì)算方式的檢索系統(tǒng)僅需要15 s,而傳統(tǒng)檢索需要28 s,效率提升約一倍。當(dāng)回測(cè)文獻(xiàn)數(shù)量超過50 000份之后,Spark內(nèi)存計(jì)算框架系統(tǒng)的準(zhǔn)確率74.9%-85.6%;召回率49.9%-60.7%;傳統(tǒng)檢索系統(tǒng)的準(zhǔn)確率為60.6%-80.1%,召回率45.6%-59.1%,整體上前者較傳統(tǒng)檢索系統(tǒng)在準(zhǔn)確率上提升約14.3%,召回率上提升10.5%,同時(shí),在運(yùn)行時(shí)間上,Spark內(nèi)存計(jì)算檢索方式僅僅需要35s,較之前縮短時(shí)間約30%。
為進(jìn)一步優(yōu)化目前圖書館在處理海量文獻(xiàn)數(shù)據(jù)檢索的效率和準(zhǔn)確率,本文提出基于Spark平臺(tái)的內(nèi)存計(jì)算方法,對(duì)圖書館檢索方式進(jìn)行了進(jìn)一步優(yōu)化處理,并將其與傳統(tǒng)的檢索方式進(jìn)行了對(duì)比分析,結(jié)論如下。
(1) 基于內(nèi)存計(jì)算框架的文獻(xiàn)檢索系統(tǒng)能夠?qū)⑦\(yùn)算中間結(jié)果保存在計(jì)算機(jī)內(nèi)部存儲(chǔ)器中,解決了傳統(tǒng)檢索方式中大數(shù)據(jù)反復(fù)在硬盤和內(nèi)存中的交換導(dǎo)致效率低下問題。但是增長(zhǎng)迅速和大數(shù)據(jù)的特征對(duì)于系統(tǒng)平臺(tái)的應(yīng)急要求較高,國(guó)內(nèi)部分高校圖書館資金有限,其代價(jià)是需要過多購置昂貴的高性能服務(wù)器等計(jì)算機(jī)設(shè)備。
(2) 基于優(yōu)化的用戶-用戶協(xié)同過濾算法,加入懲罰系數(shù),可以有效去除用戶在檢索過程中最為熱門的通用教材,在文獻(xiàn)推薦方面準(zhǔn)確率進(jìn)一步提高。
(3) 文獻(xiàn)數(shù)量在50 000份以內(nèi)時(shí),內(nèi)存計(jì)算方式運(yùn)算速度較傳統(tǒng)方式能夠提升一倍,但是檢索準(zhǔn)確率和召回率基本一致;當(dāng)文獻(xiàn)數(shù)量超過50 000份到280 000份時(shí),內(nèi)存計(jì)算檢索方法在準(zhǔn)確率上提升約14.3%,召回率上提升10.5%,同時(shí)在運(yùn)行時(shí)間上較之前縮短約30%。