趙峰濤
(西安培華學(xué)院, 圖書館, 陜西, 西安 710125)
互聯(lián)網(wǎng)時(shí)代,圖書無論是在種類上還是在數(shù)量上都呈現(xiàn)激增狀態(tài),高校學(xué)生在日常的學(xué)習(xí)過程中離不開圖書館的書本借閱,而傳統(tǒng)的借閱形式很難在數(shù)百萬冊(cè)的圖書中快速準(zhǔn)確的找到目標(biāo)種類,查找類似題材時(shí)更是需要耗費(fèi)大量時(shí)間成本。傳統(tǒng)的檢索形式時(shí)間成本高、檢索效率低,已經(jīng)完全落后于時(shí)代。相較于傳統(tǒng)形式,智能化書目推薦系統(tǒng)可以通過學(xué)生偏好、興趣度等數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,從而有針對(duì)性的為讀者推薦相應(yīng)書目,既節(jié)省時(shí)間又更為準(zhǔn)確。
協(xié)同過濾算法主要是假設(shè)具有同樣或類似興趣點(diǎn)的用戶在需求上也存在相似性,通過分析用戶的歷史行為過濾篩選有用信息,利用近鄰技術(shù)獲取不同用戶或不同項(xiàng)目之間的相似性,采用權(quán)重加權(quán)平均分值預(yù)測(cè)目標(biāo)偏好,從而進(jìn)行智能推薦。
近鄰檢索法是利用數(shù)據(jù)的相似性查找目標(biāo)數(shù)據(jù),當(dāng)目標(biāo)數(shù)據(jù)為距離最近的前k個(gè)時(shí)則稱為k近鄰搜索法。相似性通常采用空間上的數(shù)據(jù)距離來進(jìn)行表征,距離越近,則認(rèn)為相似性越高。常用的包括歐氏距離、皮爾森積矩系數(shù)以及余弦相似性等。歐氏距離最直觀,但在受主觀影響大的評(píng)分時(shí)效果不佳;皮爾森積矩系數(shù)主要是反映線性變量的相關(guān)性;余弦相似度通常用向量之間的夾角來反映相似程度[1]。
高校圖書館中的圖書量遠(yuǎn)遠(yuǎn)多于學(xué)生量,針對(duì)這種用戶比項(xiàng)目少的情況,基于用戶的協(xié)同過濾算法更為適合。由于缺少用戶評(píng)分的渠道,因此引入借閱持續(xù)時(shí)長(zhǎng)、借閱總次數(shù)以及續(xù)借次數(shù)作為影響用戶興趣的因子[2]。
(1)
(2) 借閱總次數(shù):被借次數(shù)越多,興趣越大。設(shè)借閱總次數(shù)為t,最大值為max,以最大值為基準(zhǔn)劃分為5個(gè)級(jí)別:
like2=1,0 (2) (3) 續(xù)借次數(shù):用戶感興趣才會(huì)續(xù)借,否則會(huì)及時(shí)歸還。將續(xù)借次數(shù)進(jìn)行映射: (3) 最終用戶對(duì)某一圖書的興趣度采用3個(gè)分量的平均值,即: like=(like1+like2+like3)/3 (4) 協(xié)同過濾法項(xiàng)目之間的權(quán)值是算法的核心,本研究采用中國(guó)圖書館分類號(hào)作為權(quán)值進(jìn)行計(jì)算。根據(jù)中圖分類號(hào),每本書都有唯一編號(hào),從左到右通過數(shù)字、字母代表分類,其樹形結(jié)構(gòu)如圖1所示。 圖1 中圖分類樹 根據(jù)分類樹中的位置,兩本書之間的類型因子可以通過式(5)計(jì)算: (5) 其中,height為分類樹高度,parent(i,j)為圖書i與j的父節(jié)點(diǎn)所處高度。 由于高校圖書管的圖書數(shù)量龐大,導(dǎo)致學(xué)生借閱圖書的關(guān)系矩陣特別稀疏,因此采用嵌入基于項(xiàng)目的協(xié)同過濾法與基于用戶的協(xié)同過濾法混合的形式,首先搜索近鄰用戶,然后通過圖書興趣度以及類型因子構(gòu)建推薦模型,整體流程如圖2所示。 圖2 協(xié)同過濾推薦模型建立流程 設(shè)n代表圖書類型,u(t)代表借閱頻次,則特征向量表示為U=(u(1),u(2),u(3),…,u(n)),將U作為讀者特征進(jìn)行k近鄰檢索,v代表近鄰用戶,采用余弦定理計(jì)算用戶之間的相似度,將與目標(biāo)距離最近的k個(gè)近鄰記作讀者集Uk[3]: (6) 由于借閱關(guān)系矩陣稀疏,在計(jì)算用戶相似度時(shí)嵌入基于項(xiàng)目的協(xié)同過濾,采用這種混合協(xié)同過濾算法得出的評(píng)分彌補(bǔ)矩陣空缺。設(shè)Iu代表目標(biāo)用戶u的待推薦項(xiàng)目集,Iv代表近鄰用戶v參與評(píng)分的項(xiàng)目集,對(duì)于Iu~I(xiàn)v這部分項(xiàng)目,利用已參與評(píng)分的項(xiàng)目的加權(quán)平均得到的分?jǐn)?shù)計(jì)算未評(píng)分的項(xiàng)目得分,從而計(jì)算得出目標(biāo)用戶對(duì)這部分項(xiàng)目的評(píng)分。 (7) 高校圖書館不僅是學(xué)生借閱圖書的場(chǎng)地,也是各類讀書小組、學(xué)術(shù)探討的重要活動(dòng)場(chǎng)地。因此書目推薦系統(tǒng)的不僅要包括圖書檢索、自助借閱、超時(shí)扣費(fèi)等基礎(chǔ)功能,還要提供圖書推薦、新書推薦、共同興趣好友推薦等輔助功能。利用原有的借閱數(shù)據(jù)庫(kù)獲取協(xié)同過濾推薦模型所需源數(shù)據(jù),采用Hadoop分布式框架增加運(yùn)行效率,作為附加推薦功能的借閱系統(tǒng)為學(xué)生提供圖書管理與推薦工作。 由于推薦算法涉及輸入借閱記錄,需要從借閱數(shù)據(jù)庫(kù)提取數(shù)據(jù),因此采用與傳統(tǒng)業(yè)務(wù)分離的模式設(shè)計(jì)系統(tǒng)整體結(jié)構(gòu),主要包括數(shù)據(jù)層、預(yù)處理層、計(jì)算層、業(yè)務(wù)層以及展示層,整體結(jié)構(gòu)如圖3所示。 圖3 系統(tǒng)整體結(jié)構(gòu) 其中,數(shù)據(jù)層主要負(fù)責(zé)存儲(chǔ)借閱記錄,學(xué)生信息、圖書信息等基礎(chǔ)數(shù)據(jù);預(yù)處理層主要是剔除噪聲數(shù)據(jù),補(bǔ)充缺失數(shù)據(jù),將數(shù)據(jù)進(jìn)行規(guī)范化格式轉(zhuǎn)換以利于計(jì)算;計(jì)算層作為推薦系統(tǒng)的核心模塊,利用MapReduce分布式框架并行運(yùn)行關(guān)鍵算法,將運(yùn)算結(jié)果存儲(chǔ)在數(shù)據(jù)層;業(yè)務(wù)層主要與數(shù)據(jù)層進(jìn)行交互,封裝算法邏輯,分別處理借閱與推薦業(yè)務(wù);展示層主要是通過圖形化界面為學(xué)生提供推薦書目。 根據(jù)學(xué)生的需求以及系統(tǒng)整體架構(gòu),將高校圖書館書目推薦系統(tǒng)劃分為前臺(tái)及后臺(tái)兩大核心功能,整體功能模塊組成如圖4所示。其中, 圖4 系統(tǒng)功能模塊 (1) 后臺(tái)管理:主要包括登錄管理、圖書管理、學(xué)生管理、公告管理、超期扣費(fèi)、參數(shù)設(shè)置6個(gè)模塊。登錄管理模塊主要驗(yàn)證用戶的賬號(hào)及密碼,確保權(quán)限;圖書管理模塊主要記錄圖書分類號(hào)、作者等基本信息;學(xué)生管理模塊負(fù)責(zé)學(xué)生帳號(hào)及基本信息管理;公告管理模塊實(shí)現(xiàn)管理員發(fā)布各項(xiàng)規(guī)定、時(shí)間表等信息;超期扣費(fèi)模塊實(shí)現(xiàn)自主扣費(fèi);參數(shù)設(shè)置模塊由管理員進(jìn)行參數(shù)管理[5]。 (2) 前臺(tái)展示:主要包括個(gè)性化圖書推薦、相同興趣好友推薦、新書推薦、借閱排行、系統(tǒng)公告、圖書搜索6個(gè)模塊。個(gè)性化圖書推薦展示根據(jù)協(xié)同過濾模型推薦的topN書目列表;新書推薦主要展示近期新增圖書;借閱排行展示按照借閱次數(shù)排序的列表;系統(tǒng)公告展示相關(guān)公告信息;圖書搜索模塊提供按照書名、作者、出版社等查詢條件的檢索查詢功能。 高校圖書館書目推薦系統(tǒng)中的推薦模型需要利用學(xué)生的借閱信息計(jì)算借閱持續(xù)時(shí)長(zhǎng)、借閱總次數(shù)以及續(xù)借次數(shù),權(quán)值計(jì)算時(shí)涉及使用中圖分類號(hào)作為類型因子,因此系統(tǒng)的核心數(shù)據(jù)庫(kù)表需包括借閱記錄表、圖書信息表、興趣度記錄表、推薦書目表等。 (1) 借閱記錄表:主要包括學(xué)生姓名、學(xué)號(hào)、性別、學(xué)院、操作時(shí)間、圖書編號(hào)、圖書名稱、作者、isbn編號(hào)、操作類型等字段。其中操作類型包括借閱、歸還、續(xù)借三類。按年份進(jìn)行分區(qū)存儲(chǔ)。 (2) 圖書信息表:主要包括圖書編號(hào)、中圖編號(hào)類型、圖書大類、類型名稱、圖書名稱、圖書類型、作者、出版社、出版年份、入館日期、位置、isbn編號(hào)等字段。其中中圖分類號(hào)采用“/”分隔,之前編號(hào)代表最小區(qū)分類型。 (3) 推薦好友表:主要包括學(xué)號(hào)、圖書編號(hào)、圖書名稱、興趣度、好友學(xué)號(hào)等字段。 (4) 推薦書目表:主要包括學(xué)號(hào)、圖書編號(hào)、圖書名稱、興趣度、作者、出版社等字段。 為驗(yàn)證系統(tǒng)功能,選用國(guó)內(nèi)某大學(xué)圖書館的1 000名學(xué)生的實(shí)例借閱數(shù)據(jù)帶入設(shè)計(jì)的推薦模型進(jìn)行實(shí)驗(yàn)測(cè)試,設(shè)置服務(wù)器配置為8 G內(nèi)存,500 G硬盤,在Eclipse環(huán)境下利用Java語言編程,利用1 000名學(xué)生的實(shí)際借閱記錄54 w條作為實(shí)驗(yàn)數(shù)據(jù),其中包括18個(gè)專業(yè)、22類圖書。統(tǒng)計(jì)不同類型圖書的借閱次數(shù)、時(shí)長(zhǎng)、續(xù)借次數(shù),根據(jù)圖書興趣度模型計(jì)算,最終借閱頻次組成22維的圖書興趣數(shù)據(jù)表如表1所示(隨機(jī)截取了5位學(xué)生的記錄)。 表1 圖書借閱頻次即興趣度數(shù)據(jù)表 對(duì)得到的新數(shù)據(jù)表采用k近鄰搜索算法進(jìn)行同類興趣同學(xué)的搜索,計(jì)算不同學(xué)生的近鄰用戶的余弦相似度,以學(xué)生J09240215為例,當(dāng)k=5時(shí),計(jì)算得到近鄰用戶相似度如表2所示。 表2 學(xué)生J09240215近鄰用戶相似度 由于借閱矩陣稀疏,采用推薦命中率評(píng)判推薦效果較難,因此本研究采用評(píng)價(jià)絕對(duì)誤差MAE衡量協(xié)同過濾推薦算法的實(shí)際效果,計(jì)算公式為 (8) 為了驗(yàn)證模型推薦書目的實(shí)際效果,計(jì)算不同近鄰個(gè)數(shù) k與不同推薦個(gè)數(shù)N的推薦絕對(duì)誤差MAE進(jìn)行衡量,分別取k為10~80,N為10、15、20,將1 000名學(xué)生的借閱記錄代入系統(tǒng)模型,計(jì)算MAE值,得到結(jié)果如圖5所示。 圖5 不同k與N的推薦MAE值對(duì)比 由上圖可知k值過小則推薦效率降低,k值過大則算法運(yùn)行負(fù)擔(dān)加重,當(dāng)k值取10~50之間逐步增加時(shí),推薦效果有顯著增強(qiáng),當(dāng)k值達(dá)到60以后,推薦效果不再顯著提升。而且,k值較少時(shí),N的數(shù)量越小推薦效果越好。由此可知,當(dāng)近鄰個(gè)數(shù)太少時(shí),可推薦書目也很少,沒有包含目標(biāo)用戶喜歡的大部分的書目,此時(shí)若推薦數(shù)量過多反而將用戶不喜歡的也加入了進(jìn)去,反過來講,近鄰個(gè)數(shù)多則推薦數(shù)量多為好。因此建議近鄰個(gè)數(shù)k值選擇60以上,推薦數(shù)量N選擇20,此時(shí)誤差最小,推薦效果最好。 本研究基于圖書興趣度排序構(gòu)建基于類型因子的協(xié)同過濾推薦模型,經(jīng)過實(shí)際借閱數(shù)據(jù)證明推薦效果隨著近鄰個(gè)數(shù)與推薦數(shù)量的變化有所不同,為高校圖書館的書目推薦提供了有實(shí)際意義的信息化方案。但目前模型采用的興趣度分量還比較少,后續(xù)如可以加入圖書標(biāo)簽、文本摘要等信息則系統(tǒng)功能會(huì)更加完善,另外在圖書相似度算法方面還需進(jìn)一步深入研究。2.2 基于類型因子計(jì)算權(quán)重
3 協(xié)同過濾推薦模型
3.1 模型建立流程
3.2 讀者特征提取
3.3 構(gòu)建協(xié)同過濾推薦模型
4 高效圖書館書目推薦系統(tǒng)設(shè)計(jì)
4.1 學(xué)生需求分析
4.2 系統(tǒng)整體結(jié)構(gòu)
4.3 功能模塊設(shè)計(jì)
4.4 核心數(shù)據(jù)庫(kù)表
5 系統(tǒng)功能實(shí)例驗(yàn)證
5.1 實(shí)例驗(yàn)證過程
5.2 推薦效果檢驗(yàn)標(biāo)準(zhǔn)
5.3 推薦書目效果
6 總結(jié)