陳子昂 孫道賀 李民
1.天津市匯盛創世科技發展有限公司; 2.新智航大數據科技(天津)有限公司;3.天津理工大學中環信息學院; 4.天津市漢拓計算機技術研究所
目前高校的圖書館資源愈發豐富,但是卻出現學生找書難,圖書借閱率低的問題,為了擺脫以上困境,本課題擬分析,設計,實現一套針對大學圖書館的個性化圖書推薦系統。推薦系統是一種特殊形式的信息過濾系統。推薦系統通過分析用戶的歷史興趣和偏好信息,可以預測用戶可能會喜歡的項目,從而向用戶推薦相應的項目[1]。
該系統可以為不同用戶提供個性化服務,實現用戶登錄信息管理,借還功能管理,圖書基礎信息管理,圖書標簽功能管理,圖書評論功能管理,搜索功能管理。在性能上用新的架構提高系統的響應速度。
傳統的提高圖書利用率和查找圖書的速度的方法,比較常用的是模糊搜索和分類別查詢。模糊搜索方法,在搜索時只用輸入一個大概的關鍵字,系統就會給我們找到相應的資源。這就是模糊搜索。分類查詢方法對應中圖分類號。
以上方法都屬于簡單的字符匹配查找。其弊端是,用戶進行搜索時只能進行精確查找,不會出現用戶可能感興趣的圖書推薦。此外,如果用戶只是進行簡單搜索,也難以發現自己的興趣和偏好。
Collaborative Filtering 協同過濾法,是應用較廣的推薦算法,該算法簡單,易于理解,工程上好實現,準確率高,同時在高校學生用戶數目這個數目量級上計算速度還可以接受。針對高校圖書館的場景特性,本系統對基于用戶的協同過濾(UserCF),基于物品的協同過濾(ItemCF),基于標簽的推薦算法做了融合模型。協同過濾算法在工業界已有成熟的例子,為高校圖書館的圖書推薦提供了理論依據。國內高校圖書館暫時沒有大規模應用推薦算法做圖書的推薦,本系統能在一定程度上填補這個空白;用關鍵詞抽象為描述向量來度量不同圖書的關系解決了高校圖書館如何對圖書評分這一問題。
通過個性化推薦系統,提高圖書的利用率,提高了同學們尋找圖書的準確度,提升了同學們學習閱讀的興趣。
由于圖書館的數據量相對較大,對不同用戶和其偏好書籍進行匹配,直接用傳統的關系性數據庫性能堪憂,所以用Redis做緩存,Redis是一種Key-Value類型的內存數據庫產品,全名為遠程字典服務 (REmote DIctionary Server),Redis適用的場景很多,并且可以直接用于數據存儲服務[2]。
用Django+Nginx做并發模型,這樣可以在1s內實現頁面的加載訪問。Nginx是一個高性能的web server。Nginx具有很強的處理高并發的能力,并且輕便簡潔。在搭建網站時,要選擇與網絡使用環境以及硬件條件相匹配的服務程序,以提升網站的性能[3]。Nginx具有的優勢,使其受到很多網站的青睞。這里我們用Nginx作為web server。
解決了這兩個大難點后,剩下的用Python做為開發語言,可以加快開發速度,提高可維護性。用MySQL做數據庫。用Bootstrap做響應式布局,實現跨平臺的,在不同尺寸設備上的訪問。Bootstrap是目前最流行的開發框架之一,是一個響應式的web 前端框架,本身包含了很多非常漂亮的樣式,對于前端開發人員來說上手方便[4]。
由于有較多的圖片,用騰訊云的對象存儲做圖片存儲,對象存儲通過Hash等索引方法,直接將數據定位到存儲介質的具體位置,無需通過逐層查找。在物理上是扁平結構。但在邏輯上,對象存儲也提供了虛擬的樹狀結構的邏輯視圖,而且這種虛擬的樹狀結構對于不同的用戶可以不同[5]。
加上騰訊云的CDN分發,可以加速圖片加載同時節省服務器帶寬。
CDN(Content Delivery Network,即內容分發網絡),具有“互聯網加速器”之稱,其對于加快互聯網的速度,提高網絡的穩定性,具有非常重要作用[6]。
CDN分發會將我們再對象存儲中的文件分發到全國的各個省市子節點,用戶在訪問我們網站的時候會從從最近的節點下拉文件,加速網站靜態文件的加載速度。
圖書推薦系統主要采用了UserCF和ItemCF的混合推薦算法,利用網絡爬蟲提取圖書相關特征向量,利用UserCF和ItemCF計算關系度。
網絡爬蟲(Web Crawler),又稱為網絡蜘蛛(Web Spider)或Web信息采集器,是一個自動下載網頁的計算機程序或自動化腳本,是搜索引擎的重要組成部分。網絡爬蟲通常從一個稱為種子集的URL集合開始運行,它首先將這些URL全部放入到一個有序的待爬行隊列里,按照一定的順序從中取出URL并下載所指向的頁面,分析頁面內容,提取新的URL并存入待爬行URL隊列中,如此重復上面的過程,直到URL隊列為空或滿足某個爬行終止條件,從而遍歷Web[7]。
圖書館圖書推薦系統分為五大模塊,如圖1所示,包括圖書管理模塊,基本用戶信息管理模塊,圖書推薦模塊,系統搜索模塊,討論帖管理模塊。

圖1 系統功能模塊圖
系統的圖書管理功能,包括圖書信息的管理:包含圖書入庫、移庫,和圖書信息更新。圖書評論管理:包括用戶發布圖書評論,管理員刪除圖書評論。圖書標簽管理:包含管理員添加圖書標簽,刪除圖書標簽,修改圖書標簽。圖書借閱的管理:包含用戶借閱圖書,歸還借閱圖書。
系統用戶的管理功能,包括用戶信息的注冊,登錄用戶的信息驗證,管理員后臺管理的功能,對用戶權限的管理。
系統的圖書推薦功能,本文的重點,包含基于用戶的圖書推薦算法UserCF,基于物品的圖書推薦算法ItemCF。還有新用戶的冷推薦功能。
系統的搜索功能,包含對館藏圖書的檢索,對用戶的搜索,對討論帖的搜素。
系統的討論帖功能,包括用戶發布討論帖,修改討論帖,管理員刪除不合規帖子,用戶回復討論帖,用戶給討論帖點贊,用戶收藏討論帖,給討論帖點贊等功能。
總結:本系統的開發能填補高校圖書館在個性化圖書推薦上的空白。讓圖書館的圖書資源能更好的服務用戶。從開始設計到落地實踐。本系統的開發證明推薦系統在高校圖書館領域的可行性。隨著時代的進步,未來將有更多的算法應用在圖書館上,通過本次系統的開發,不僅做出了推薦系統。還融合了云計算技術,研究了如何做一個高性能,高并發的系統。這對以后其他系統的研究也十分參考意義。最終,用戶打開網頁時,響應速度在1s以內,推薦準確度在90%以上。完成了既定目標。