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