王海萍
(西安理工大學 圖書館, 陜西 西安 710054)
隨著大數據時代背景下,圖書館館藏所占用的信息量暴漲,其具有總量大、種類多和高價值的特點[1-2]。在海量的數據文獻與有限的計算機處理能力中如何找到平衡,研究設計出可行的文獻檢索服務方案,具有十分重要的意義。目前,國內外關于圖書館文獻檢索信息化的實踐研究主要體現在3個方面:首先,對于多種文獻來源的收集和分類檢索,大數據時代下文獻資源較傳統的圖書資源信息量更為復雜,如何挖掘并進行有效聚合是研究熱點,例如部分學者以深度聚合可視化模型為出發點,建立了基于數據資源收集、信息處理、資源整合和可視化的圖書館館藏數據系統[3-4];其次,文獻大數據的分析方法研究,支持向量機方法、多維檢索排序方法和文獻活躍度方法等均是在這一背景下所提出的數據分析法[5-8];最后,圖書館文獻管理系統的性能和用戶友好程度,這一領域的研究成果較多,結合最新的操作系統界面以及云存儲等方法,Hadoop云平臺、Worldcat數據庫和虛擬現實技術等均有所應用[9-11]。以上3種研究方向均在圖書館文獻檢索方面做出了巨大貢獻,但是隨著大數據和5G時代的到來更加海量的文獻數據對于現有的檢索服務方案提出了新的挑戰。
目前較為主流的大數據分析技術以內存計算為主,其中Spark平臺作為內存計算的主要框架,在互聯網娛樂、游戲和網絡電商平臺獲得了十分成功的應用[12]。Spark框架內的彈性分布數據機制具有較高的容錯能力,并且具備高效的機器學習庫,能夠對海量數據以及圖形的節點進行分析研究。最為重要的是,Spark框架采用分布式集群計算法,對計算機硬件的依賴性小,能夠有效降低硬件成本。因此,本文提出基于Spark框架下的圖書館文獻檢索服務方案,希望能夠在充分利用有限計算資源的前提下,滿足大數據高強度計算檢索服務。
基于Spark架構進行圖書館文獻服務方案設計,本文采用3層,分別為文獻服務平臺設計、文獻數據分析設計和文獻數據聚合設計。其基本結構,如圖1所示。

圖1 Spark架構下圖書館文獻系統設計結構
文獻服務平臺通過Web形式給用戶提供互聯網在線服務,采用了Web顯示系統技術和網絡可視化技術。主要實現文獻檢索、文獻推薦和文獻可視化3個功能。例如,用戶在網絡搜索框輸入想要檢索的目標詞匯,搜索引擎會觸發實體或屬性檢索算法,根據Spark RDD線索尋找出相關性靠前的資源并自動排序。然后,可視化模塊將排序的文獻內容展示在Web網頁上,脈絡清晰,通熟易懂。
目前的云數據模式存儲的數據具有價值高、密度低的特征,對于數據分析和挖掘能力要求高[13-15]。本文采用Spark框架下的Lib和Graph函數庫實現對數據的挖掘和智能化分析,該分析方式可以智能挖掘用戶偏好,將用戶比較感興趣的文獻排名靠前。
文獻數據聚合是數據資源整合的基礎功能,是將本體與關聯數據融合并以一種相互關系進行規范化屬于表達來實現[16]。在本文的聚合設計中,利用Map和Join函數對元數據進行資源整合,將館藏數據、互聯網文獻庫和紙質化信息進行合理整合并聯。
根據圖書館目前的檢索使用情況,本文研究實現的算法基于讀者使用習慣,包含用戶-用戶協同過濾、用戶-圖書書名推薦等混合搜索策略,每個策略分配一定權重系數,通過優化調整排序方式,最后獲得近似值,在實際使用中根據用戶的操作習慣動態調整權重系數的大小,最終提高了圖書文獻的檢索效率。由于篇幅有限,因此本文僅就用戶-用戶協同過濾檢索方法的實現原理。
分析圖書館用戶的使用習慣發現,當用戶a在進行檢索時,一方面可以通過該用戶之前借閱或者瀏覽過的圖書信息來進行推薦;另外,還可以尋找與用戶a具有類似閱讀習慣的其他用戶的借閱歷史進行推薦。這種基于用戶-用戶推薦的算法能夠快速讓借閱者檢索到自己想要的圖書。這一算法包含的步驟如下:首先,分析計算出與用戶a具有相似閱讀習慣的用戶列表;其次,將其他用戶借閱過的文獻信息按一定權重進行排序后推薦給用戶a。具體操作,如式(1)。

(1)
式中,S表示兩個用戶a和b檢索相似度,無量綱常數;Na表示讀者a的檢索列表;Nb表示讀者b的檢索列表。實際運算過程中通過構建一個相似度矩陣,根據用戶a的檢索行為,讀者b的檢索行為以及另外兩個用戶c和d的檢索行為,就可以建立一個4*4的矩陣。本文所研究的圖書館若有n個用戶,那么就會建立一個n階矩陣進行運算,如圖2所示。

圖2 基于用戶-用戶檢索算法的矩陣排列方式
由于在實際檢索過程中,若用戶a和用戶b均借閱過同一本大學通用的教科書,這種情況下并能體現用戶對這類文獻感興趣,這是由于客觀條件下大學所有學生均需要學習這本書籍。因此,本文在原有的相似度算法上增加一個懲罰系數,用于排除這類型通用的檢索結果,改進的相似度計算,如式(2)。
(2)
式中,log(1+1/Ni)表示懲罰系數;Ni表示用戶的檢索習慣列表。借閱次數越高代表用戶借閱該文獻的Ni值越高,說明該文獻是教科書類普適性圖書的可能性越高,因此去懲罰系數越低,在檢索中將其排名靠后。改進后的檢索算法流程,如圖3所示。

圖3 改進的用戶-用戶協同檢索算法流程圖
針對加入懲罰系數后的檢索和剔除過程,本文的處理方法,如圖4所示。

圖4 檢索過程中的內存信息分類和檢索流程
對于如何準確從用戶所生成的標簽集合中提取出用戶特征,本文通過將用戶的當前瀏覽記錄或者用戶感興趣的記錄進行排名,作為分布式共享內存進行Spark GraphX內存計算,實現圖、節點和邊處理的計算優化。主要按以下過程進行實現,首先生產Graph并形成空圖表,然后將文獻進行聚合轉為節點和邊,并記錄權重初始值的W值,最后按照節點的權重值進行由大到小的排序進而獲取檢索結果。
為了驗證改進的Spark內存計算圖書館檢索服務效果,本文選取圖書館從2015—2019年共5年的用戶圖書文獻檢索數據進行反演和分析。其中圖書館使用用戶約為50 000人;文獻數據共計285 000條;文獻借閱記錄約為1 304 000條。對于文獻檢索的標準根據準確率和召回率來判定,其中準確率計算標準為R1/(R1+R2),R1表示用戶感興趣并推薦的文獻;R2表示用戶不感興趣但是被推薦的文獻,回測過程中計算用戶在不同文獻數量下的準確率,然后選取50位作者計算器平均值;召回率計算標準為R1/(R1+R3),R3表示用戶感興趣但是沒有推薦的文獻,召回率的回測過程與準確率一致。
將基于內存計算方法的圖書館內存檢索成果與傳統的內存檢索結果進行對比,如表1所示。

表1 基于內存計算方法的文獻檢索準確率與召回率成果對比
兩種不同檢索方式的運行時間,如圖5所示。

圖5 兩種檢索方式的運行時間對比
從表1可以看出:在文獻數量為50 000份以內時,基于內存計算的檢索方式與傳統的圖書館文獻檢索系統其檢索準確率和召回率分別為45.9%、31.6%和45.5%、30.5%,說明在文獻數量較低的情況下,兩種檢索方式的精確程度相差不大,但是,在運行時間上,基于Spark內存計算方式的檢索系統僅需要15 s,而傳統檢索需要28 s,效率提升約一倍。當回測文獻數量超過50 000份之后,Spark內存計算框架系統的準確率74.9%-85.6%;召回率49.9%-60.7%;傳統檢索系統的準確率為60.6%-80.1%,召回率45.6%-59.1%,整體上前者較傳統檢索系統在準確率上提升約14.3%,召回率上提升10.5%,同時,在運行時間上,Spark內存計算檢索方式僅僅需要35s,較之前縮短時間約30%。
為進一步優化目前圖書館在處理海量文獻數據檢索的效率和準確率,本文提出基于Spark平臺的內存計算方法,對圖書館檢索方式進行了進一步優化處理,并將其與傳統的檢索方式進行了對比分析,結論如下。
(1) 基于內存計算框架的文獻檢索系統能夠將運算中間結果保存在計算機內部存儲器中,解決了傳統檢索方式中大數據反復在硬盤和內存中的交換導致效率低下問題。但是增長迅速和大數據的特征對于系統平臺的應急要求較高,國內部分高校圖書館資金有限,其代價是需要過多購置昂貴的高性能服務器等計算機設備。
(2) 基于優化的用戶-用戶協同過濾算法,加入懲罰系數,可以有效去除用戶在檢索過程中最為熱門的通用教材,在文獻推薦方面準確率進一步提高。
(3) 文獻數量在50 000份以內時,內存計算方式運算速度較傳統方式能夠提升一倍,但是檢索準確率和召回率基本一致;當文獻數量超過50 000份到280 000份時,內存計算檢索方法在準確率上提升約14.3%,召回率上提升10.5%,同時在運行時間上較之前縮短約30%。