趙 冉
(河北金融學(xué)院,河北保定 071000)
用戶獲取圖書資源的重要途徑是圖書館,隨著科學(xué)技術(shù)的不斷發(fā)展,圖書館信息服務(wù)迎來巨大挑戰(zhàn)[1]。在傳統(tǒng)圖書館信息服務(wù)模式下,所有用戶統(tǒng)一使用一個圖書館平臺,用戶想要獲取自己所需圖書信息時,只需主動向圖書館平臺提交查詢請求,圖書館平臺通過用戶查詢請求后用戶就可獲取需求信息。但是隨著信息化的不斷發(fā)展,高校圖書館信息量不斷膨脹[2],導(dǎo)致傳統(tǒng)信息服務(wù)模式下的用戶難以快速發(fā)現(xiàn)符合自身偏好的圖書信息。在此情況下學(xué)者應(yīng)將研究重點(diǎn)放在圖書館推薦技術(shù)上,通過設(shè)計較好的圖書館推薦技術(shù)及時將符合目標(biāo)用戶偏好的圖書推薦給目標(biāo)用戶,且設(shè)計的圖書館推薦技術(shù)能過濾圖書館中的海量數(shù)據(jù),在較短時間內(nèi)響應(yīng)目標(biāo)用戶需求[3]。該圖書館推薦技術(shù)必須具備處理大數(shù)據(jù)的能力。經(jīng)過實際調(diào)查分析發(fā)現(xiàn),當(dāng)前主流內(nèi)存計算框架是Spark,且處理大數(shù)據(jù)的能力較好,因此基于云計算平臺設(shè)計圖書館推薦技術(shù)能提升處理大數(shù)據(jù)的能力和推薦效率[4]。通過云計算平臺處理大數(shù)據(jù)后,應(yīng)將推薦效果較好的推薦算法融合到云計算平臺中,精準(zhǔn)快速地向目標(biāo)用戶推薦圖書[5]。通過查閱相關(guān)文獻(xiàn)發(fā)現(xiàn),當(dāng)前個性化圖書館推薦技術(shù)在用戶粘稠度較低的情況下,無法精準(zhǔn)向目標(biāo)用戶推薦圖書[6],因此需在基于云計算平臺的圖書館推薦技術(shù)中添加混合推薦算法,當(dāng)用戶粘稠度較低時采用基于Spark 的聚類算法推薦圖書,當(dāng)用戶粘稠度較高時采用協(xié)同過濾算法向目標(biāo)用戶推薦圖書。根據(jù)上述分析本文研究基于云計算平臺的圖書館混合推薦技術(shù),通過該技術(shù)彌補(bǔ)當(dāng)前圖書館推薦技術(shù)存在的缺陷,提升推薦圖書的質(zhì)量[7]。
基于云計算平臺的圖書館混合推薦系統(tǒng)將并行計算框架作為計算前提,依照分布式結(jié)構(gòu)將采集到的數(shù)據(jù)信息傳輸?shù)郊海瑐鬏斶^程中采用Kafka 消息中間件傳輸數(shù)據(jù)信息,并行化處理數(shù)據(jù)信息,基于云計算平臺的圖書館混合推薦系統(tǒng)框架結(jié)構(gòu)如圖1 所示。
圖1 圖書館混合推薦系統(tǒng)Fig.1 Library hybrid recommendation system
從圖1 中可清晰明了地觀察出基于云計算平臺的圖書館混合推薦系統(tǒng)推薦過程。首先,存儲收集到的圖書館用戶日志和圖書館圖書數(shù)據(jù),存儲位置是本地數(shù)據(jù)庫[8],采用Flume 的Tail 命令觀測圖書館用戶日志變化規(guī)律,采集圖書館用戶日志信息和圖書館圖書數(shù)據(jù)[9]。其次,將圖書館用戶日志信息和圖書館圖書數(shù)據(jù)傳輸?shù)終afka 消息中間件中,采用Kafka 消息中間件將集群訂閱的圖書館用戶日志信息和圖書館圖書數(shù)據(jù)傳輸?shù)郊褐?,?chuàng)建分布式數(shù)據(jù)集,依照定義算子和函數(shù)預(yù)處理分布式數(shù)據(jù),根據(jù)用戶粘稠度采用不同推薦算法計算分布式數(shù)據(jù)。當(dāng)用戶粘稠度較低時采用聚類算法,當(dāng)用戶粘稠度較高時采用基于協(xié)同過濾的混合推薦算法,將推薦結(jié)果傳輸?shù)紿Base 數(shù)據(jù)庫中,存儲推薦結(jié)果。
同時將推薦結(jié)果傳輸?shù)郊旱暮诵慕M件中,分析計算推薦結(jié)果數(shù)據(jù)和備份推薦結(jié)果數(shù)據(jù)的同時向目標(biāo)用戶推薦圖書,將最終推薦結(jié)果存儲到HDFS 分布式文件系統(tǒng)中,Web 服務(wù)器可隨時訪問HBase 數(shù)據(jù)庫和HDFS分布式文件系統(tǒng)中的推薦數(shù)據(jù)信息。基于云計算平臺的圖書館混合推薦系統(tǒng)能夠?qū)崿F(xiàn)多種功能,包括分析用戶日志數(shù)據(jù)、推薦圖書、實時備份數(shù)據(jù)等功能[10]。分布式并行化處理顯式反饋和隱式反饋的數(shù)據(jù),其中顯式反饋數(shù)據(jù)指的是用戶收藏和屬性特征等用戶行為,隱式反饋數(shù)據(jù)指的是在某圖書上用戶消耗的時間或者搜索圖書類別等數(shù)據(jù)。依照計算的推薦結(jié)果將圖書館中圖書推薦給目標(biāo)用戶,目標(biāo)用戶可采用Web 網(wǎng)頁訪問該推薦系統(tǒng)[11]。該系統(tǒng)中最為重要的是圖書推薦算法,根據(jù)用戶粘稠度采用相應(yīng)圖書推薦算法推薦圖書。
圖書館混合推薦算法在不同粘稠度的狀況下分別采用相應(yīng)算法推薦圖書館圖書。假設(shè)用戶粘稠度較低,即存在新用戶的情況下,應(yīng)采用聚類算法,假定同類用戶具有相同的讀書偏好,依照聚類結(jié)果向目標(biāo)用戶推薦圖書。當(dāng)用戶粘稠度較高時,應(yīng)采用基于協(xié)同過濾的混合推薦算法向目標(biāo)用戶推薦圖書,下面詳細(xì)討論不同粘稠度下圖書館推薦算法的計算過程。
1.2.1 聚類算法
當(dāng)用戶粘稠度較低時需聚類用戶,假定同類用戶讀書偏好相同,基于聚類結(jié)果向目標(biāo)用戶推薦圖書。本文采用聚類算法聚類用戶[12],將圖書館圖書數(shù)據(jù)劃分成多個片區(qū),每個片區(qū)大小相同,聚類操作多個片區(qū),合并聚類結(jié)果得到最終所需聚類。算法詳細(xì)步驟如下所示:
1)通過Flume 采集圖書館圖書數(shù)據(jù),創(chuàng)建彈性分布式數(shù)據(jù)集RDD。
2)讀取map 函數(shù),通過雙層并行遺傳算法獲取聚類中心b1和b2,通過獲取的聚類中心得到新彈性分布式數(shù)據(jù)集RDD1。
3)MapToPair 操作原有彈性分布式數(shù)據(jù)集,通過每個點(diǎn)和聚類中心之間的距離聚類劃分原有彈性分布式數(shù)據(jù)集,得到RDD3。
4)reduceBykey 操作RDD3,計算新聚類中心,同時判斷聚類中心收斂性,當(dāng)聚類中心不收斂時,需繼續(xù)迭代聚類中心[13],如果聚類中心出現(xiàn)收斂的狀況,需依照key 值合并聚類中心。
5)采用filter 函數(shù)篩選出需要的聚類中心,依照聚類中心用戶讀書偏好向目標(biāo)用戶推薦圖書。
1.2.2 基于協(xié)同過濾的混合推薦算法
當(dāng)用戶粘稠度較高時,采用基于協(xié)同過濾的混合推薦算法分析用戶閱讀偏好,在用戶群中篩選出與目標(biāo)用戶閱讀偏好較為一致的用戶,采用近鄰用戶產(chǎn)品評價信息數(shù)據(jù)計算目標(biāo)用戶對圖書館的預(yù)測評分,通過預(yù)測評分?jǐn)?shù)據(jù)探析目標(biāo)用戶對圖書館中某類圖書的需求程度[14],根據(jù)需求程度的高低向用戶推薦相應(yīng)的圖書館圖書。基于協(xié)同過濾的混合推薦算法過程主要包括以下兩個步驟:
1)選取近鄰用戶。假設(shè)Di=(y1,y2,…,yj)表示其他用戶和目標(biāo)用戶評價向量,當(dāng)用戶m和目標(biāo)用戶的Dm之間相似性與既定閾值相符合時,將用戶m當(dāng)成是目標(biāo)用戶的近鄰用戶,此時選取用戶m為評分預(yù)測的計算用戶集。通過Pearson 系統(tǒng)計算用戶之間相似程度,相似度計算公式如下所示:
2)預(yù)測評分。采用全局?jǐn)?shù)值算法預(yù)測評分,將上文計算的相似度當(dāng)成權(quán)值,組合多個權(quán)值產(chǎn)生預(yù)測評分,其計算公式如下所示:
式中:m表示計算用戶集中用戶數(shù)量;Qyj表示用戶y對圖書j的預(yù)測評分。
綜上所述,基于云計算平臺的圖書館混合推薦過程是當(dāng)目標(biāo)用戶登錄基于云計算平臺的圖書館混合推薦系統(tǒng)后,系統(tǒng)需要判斷用戶粘稠度,粘稠度較低時,需聚類用戶,假定同類用戶有相同讀書偏好,依照聚類算法獲取聚類中心,通過聚類中心中用戶讀書偏好向目標(biāo)用戶推薦圖書;當(dāng)粘稠度較高時采用基于協(xié)同過濾的混合推薦算法,尋找近鄰用戶,采用評分向量計算用戶相似性,預(yù)測評分,依照預(yù)測評分結(jié)果向目標(biāo)用戶推薦圖書[15]。
為驗證本文基于云計算平臺的圖書館混合推薦技術(shù)的性能,需采用Windows XP 系統(tǒng),雙核CPU 1.85 GHz和4 GB 內(nèi)存的計算機(jī),本次實驗的測試數(shù)據(jù)為某高校圖書館讀者借閱圖書數(shù)據(jù)。
為檢測本文方法的推薦效果,檢測本文方法查準(zhǔn)率和誤判率判斷推薦效果,其中,推薦成功圖書和推薦圖書總數(shù)之間的比值表示查準(zhǔn)率,推薦失敗的圖書總數(shù)和推薦圖書總數(shù)之間比值表示誤判率。系統(tǒng)統(tǒng)計結(jié)果如圖2 所示,同時將采用本文方法推薦圖書的界面效果用圖3 呈現(xiàn)出來。
圖2 統(tǒng)計結(jié)果Fig.2 Statistical results
圖3 推薦界面Fig.3 Recommended interface
從圖2 中可以看出,隨著用戶評價圖書數(shù)目的不斷增加,本文方法推薦的查準(zhǔn)率逐漸上升,誤判率逐漸下降,且本文方法推薦查準(zhǔn)率不低于95%,說明本文方法查準(zhǔn)率較高,本文方法推薦效果較好。
從圖3 中的推薦界面可以看出,采用本文方法后用戶能夠清晰明了地從推薦界面中看到推薦圖書,簡單快速地尋找自身感興趣圖書,目標(biāo)用戶可從界面中觀察推薦圖書的推薦分值,選取自己感興趣的圖書,降低搜尋時間。
為檢測本文方法的推薦性能,需研究不同推薦列表長度下本文方法推薦的精準(zhǔn)度和多樣率,通過精準(zhǔn)度表示推薦列表中符合目標(biāo)用戶閱讀偏好的圖書占有比重,通過多樣率表示推薦圖書的多樣性,研究結(jié)果如表1所示。
表1 本文方法推薦性能Table 1 Recommending performance of this method
由表1 可得本文方法推薦精準(zhǔn)性和圖書兩兩相異性多樣率之間呈反比,隨著推薦列表長度的增加,與目標(biāo)用戶閱讀偏好較為一致的圖書進(jìn)入列表比重會逐步上升,方法精準(zhǔn)性會顯著上升,多樣性會顯著降低,且方法推薦精準(zhǔn)性最高,最高數(shù)值為99.72%,推薦性能較好。
為驗證本文方法在計算機(jī)中的運(yùn)行情況,檢測用戶量不同情況下本文方法的響應(yīng)時間、內(nèi)存使用情況和CPU 使用情況,通過SAS 繪圖軟件顯示檢測結(jié)果,如圖4所示。
圖4 本文方法運(yùn)行情況Fig.4 Operating status of this method
從圖4 可看出,隨著用戶人數(shù)的增加,采用本文方法向目標(biāo)用戶推薦圖書館的響應(yīng)時間逐漸增加,且內(nèi)存使用情況和CPU 使用情況也隨著用戶人數(shù)的增加而不斷增加,但是從總體上看,采用本文方法向目標(biāo)用戶推薦圖書后計算機(jī)的內(nèi)存使用情況和CPU 使用情況不超過60%,本文方法響應(yīng)時間不超過0.2 s,即本文方法推薦時間較短,且采用本文方法向目標(biāo)用戶推薦圖書的整個過程中較少使用CPU,占有內(nèi)存較小,說明本文方法響應(yīng)時間快,能夠節(jié)省計算機(jī)內(nèi)存空間。
當(dāng)前圖書館中含有海量圖書信息,基于云計算平臺的圖書館混合推薦技術(shù)能夠快速有效地從圖書館中采集到所需圖書館用戶日志信息,依照用戶粘稠度采用相應(yīng)算法向目標(biāo)用戶推薦圖書。本文方法充分考慮用戶粘稠度,彌補(bǔ)當(dāng)前個性化圖書館推薦技術(shù)無法向粘稠度較低的用戶推薦圖書的缺陷,經(jīng)過實驗分析發(fā)現(xiàn),本文方法推薦精準(zhǔn)度高,可將本文方法應(yīng)用到實際的圖書館推薦中。