陳玉鳴
(南京大學信息管理學院,江蘇 南京 210046)
快節(jié)奏的生活方式讓越來越少的人傾向于去圖書館、檔案館、博物館(以下簡稱“圖博檔”)等實體機構查找資料。因此,為了滿足人們的需要,數(shù)字化的圖博檔平臺開始出現(xiàn)并快速發(fā)展起來。僅以圖書館的數(shù)字化為例,截至2016年底,國家圖書館的數(shù)字資源總量達1 323.35 TB,與2015年相比增加162.37 TB。其中,館藏特色數(shù)字化資源1 059.69 TB,外購數(shù)據(jù)庫101 TB,網(wǎng)絡導航和網(wǎng)絡資源采集114.73 TB,征集數(shù)字資源42 TB,電子報紙呈繳5.93 TB[1]。然而,在信息資源數(shù)量大幅增加的同時,很多真正迎合用戶需要的信息卻被淹沒在茫茫的信息海洋中,難以被有需求的用戶輕易發(fā)現(xiàn)。同時,由于現(xiàn)在圖博檔數(shù)字資源平臺的信息量巨大,用戶需要花費很多時間搜索所需信息,而人們的時間精力也有限,需要在盡可能短的時間內(nèi)獲取盡可能多的有效信息資源,在這種情況下,圖博檔平臺有必要采用一套推薦系統(tǒng)讓用戶快速并精確地獲取所需信息。
推薦系統(tǒng)利用用戶的一些行為,通過一些數(shù)學算法,推測出用戶可能喜歡的東西,并將這些結果推薦給用戶。推薦系統(tǒng)現(xiàn)被廣泛應用于購物網(wǎng)站、旅游網(wǎng)站等。推薦系統(tǒng)的核心是推薦算法,常見的推薦算法包括基于協(xié)同過濾的推薦算法、基于內(nèi)容的推薦算法、基于關聯(lián)規(guī)則的推薦算法等。這些算法有各自的優(yōu)點,但對于圖博檔數(shù)字資源平臺來說,也存在缺陷。國內(nèi)外專家學者們將這些基礎的推薦算法進行改進與融合,完善了其功能。
GIOVANNI SEMERARO等人[2]提出了一種基于內(nèi)容的推薦算法,它通過基于內(nèi)容的經(jīng)典模型中的社交標簽來集成用戶生成的內(nèi)容,讓用戶通過輸入數(shù)字評分以及用自由標簽注釋項來表達對物品的偏好。該推薦算法提高了推薦內(nèi)容的準確性,是個性化博物館設計的網(wǎng)絡服務的核心。
“冷啟動”問題是推薦算法常見的難題。為了解決這一問題,Jason Morawski等人[3]在傳統(tǒng)的協(xié)同過濾推薦算法上進行改進,提出了一種使用模糊向量的協(xié)同過濾與內(nèi)容過濾混合的推薦算法。該算法有效解決了傳統(tǒng)協(xié)同過濾推薦算法的“冷啟動”問題,適合于館藏相對較少的圖書館,這種方法對稀疏數(shù)據(jù)集特別有效。
為了更加切合項目,Alvaro Tejeda-Lorente等人[4]提出一種能夠考慮項目質(zhì)量的推薦算法,這個系統(tǒng)使用項目的質(zhì)量來計量它們的相關性,該算法提出一種策略能在基于內(nèi)容的推薦算法和協(xié)同過濾算法之間切換,該推薦系統(tǒng)采用模糊語言學的方法開發(fā),并在大學數(shù)字圖書館中得到了令人滿意的測試。
Gabroveanu Mihai[5]提出一種基于分布式學習管理系統(tǒng)關聯(lián)規(guī)則的推薦系統(tǒng),利用分布式數(shù)據(jù)挖掘算法分析來自LMS數(shù)據(jù)庫的信息已提取關聯(lián)規(guī)則,然后提取的規(guī)則被用作推理規(guī)則來提供個性化推薦,可以使推薦更加準確。
國內(nèi)學者也為推薦算法的研究做出了杰出貢獻:張紅燕[6]借助數(shù)據(jù)挖掘技術找到關聯(lián)規(guī)則,分析高校圖書館內(nèi)讀者的借閱行為,并運用基于數(shù)據(jù)庫的知識發(fā)現(xiàn)(KDD)方法,構建一個以書目或書目階層為導向的高校圖書館新書推薦系統(tǒng),以幫助讀者快速找到適合自己的學習資料,增強其對圖書館服務的滿意度。徐文青、雙林平[7]依照Web2.0的“社會化標注”思想,針對基于內(nèi)容的推薦算法(CBR)和協(xié)同過濾推薦算法(CF)存在的不足,提出了基于讀者標簽(TAGS)的、融合圖書“熱門度”因子的個性化圖書推薦的兩個改進算法。利用統(tǒng)計分析軟件R,重點對改進后的CBR算法進行實驗分析和驗證,結果表明,改進算法的圖書個性化推薦效果有明顯改善。田磊等人[8]利用改進的K-mean算法對借閱用戶的類別與偏好性進行了系統(tǒng)的分析,然后通過構造用戶借閱偏好性矩陣與用戶相似性度量,采用協(xié)同過濾算法實現(xiàn)了圖書借閱的個性化推薦。該算法可根據(jù)用戶的借閱愛好準確地為其推薦圖書,整體上具有較高的性能,提高了圖書推薦的準確率。
國內(nèi)外專家學者所研究的這些推薦算法,為本文所介紹的服務于圖博檔數(shù)字資源平臺的推薦算法提供了寶貴的參考價值。
本文所介紹的圖博檔數(shù)字資源推薦算法,總結了以上推薦算法的優(yōu)點,在此基礎上進行改善。通過獲取用戶的歷史瀏覽記錄,在整個數(shù)字資源數(shù)據(jù)庫中進行遍歷,推薦給用戶相關的數(shù)字資源。這一方式解決了不能推薦新加入數(shù)據(jù)庫的物品的問題,同時可以推薦出數(shù)據(jù)庫中所包含的用戶所感興趣的全部內(nèi)容,不至于喪失多樣性。如圖1所示,首先從圖博檔數(shù)字資源平臺中獲取需要推薦給用戶的數(shù)字資源,加以整理,提取關鍵屬性,然后再獲取用戶的瀏覽記錄,從瀏覽記錄中提取關鍵詞,在提取出來的需要推薦給用戶的數(shù)字資源中匹配這些關鍵詞,就能把用戶所感興趣的、所需要的信息資源提取出來,屏蔽掉一些無關的信息,推薦給用戶,讓用戶在數(shù)字資源平臺中瀏覽信息時難以錯過潛在的符合需要的數(shù)字資源。
圖1 推薦算法流程圖
本文所介紹的推薦算法是基于python編程語言在eclipse平臺上開發(fā)的,python是一種面向對象的解釋型計算機程序設計語言,語法簡潔清晰,擁有豐富和強大的庫,是當今主流的編程語言之一。
在圖博檔數(shù)字資源平臺浩如煙海的數(shù)據(jù)資源中,存在著各種類型的數(shù)據(jù)。如果針對每一種類型的數(shù)據(jù)都用一種推薦算法,過程煩瑣且工作量大。本文介紹的推薦系統(tǒng)可以適用于各種類型的數(shù)據(jù)推薦服務,簡單有效。在實驗中,將采用講座類型的數(shù)據(jù)進行實驗分析。
由于源數(shù)據(jù)的信息量很大,而很多信息對于所要實現(xiàn)的推薦功能來說是無效信息,因此要對這些信息進行加工,提取出所需要的信息序列,將其重新寫入一個文本文檔當作新的數(shù)據(jù)源。對于講座類型的數(shù)據(jù)進行推薦,需要知道講座舉辦的時間、地點、主講人、主題等信息。
關鍵詞獲取是該推薦算法的核心功能。在python環(huán)境下,筆者采用了jieba中文分詞[9]。中文分詞指的是將一個漢字序列切分成一個一個單獨的詞。Jieba分詞是一款比較成熟的中文分詞工具,具有支持三種分詞模式的特點:(1)精確模式。試圖將句子最精確地切開,適合文本分析;(2)全模式。把句子中所有的可以成詞的詞語都掃描出來,速度非??欤遣荒芙鉀Q歧義;(3)搜索引擎模式。在精確模式的基礎上,對長詞再次切分,提高召回率,適用于搜索引擎分詞。
Jieba分詞的基本思路如下:(1)加載詞典dict.txt;(2)從內(nèi)存的詞典中構建該句子的DAG(有向無環(huán)圖);(3)對于詞典中未收錄的詞,使用HMM模型的viterbi算法嘗試分詞處理;(4)已收錄詞和未收錄詞全部分詞完畢后,使用dp尋找DAG的最大概率路徑;(5)輸出分詞結果。
通過對用戶瀏覽記錄的分詞分析,得到用戶所需求的關鍵信息,根據(jù)這些關鍵詞,就可以在數(shù)據(jù)庫中進行查找,得到與用戶所需相符合的講座信息。
以Eclipse Java Oxygen為試驗平臺,搭載python2.7語言,以推薦講座為樣例進行實驗。
連接平臺的數(shù)據(jù)庫,從存有講座信息的表lecture里獲得講座全部信息,擇取其中主要屬性data,time,topic,speaker,lectureInfo,place,address,形成一組新的講座信息,以文本文檔的格式保存到本地文件lecture.txt里。運行結果如圖2所示。
圖2 獲取的講座信息圖
以相同方式獲取用戶的瀏覽記錄,這里主要獲取用戶瀏覽記錄的title參數(shù)屬性,將結果以文本文檔的格式保存到本地文件trace.txt里。
定義Get_Keywords()函數(shù),用open()函數(shù)打開trace.txt文件,調(diào)用jieba中文分詞插件,獲取用戶瀏覽痕跡的關鍵詞,以文本文檔的形式保存到本地文件keywords.txt里。因為用戶瀏覽記錄是以表的形式存儲的,而表存在換行問題,單行的瀏覽記錄與多行的瀏覽記錄可能存在差異,因此在這里筆者將瀏覽記錄分為單行和多行的情況分別進行實驗測試。
4.2.1 單行瀏覽記錄的關鍵詞獲取
當瀏覽記錄是單行記錄時,如圖3所示。
圖3 單行瀏覽記錄示例圖
把需要獲取的關鍵詞數(shù)目設為3個,運行結果如圖4所示。
圖4 單行瀏覽記錄關鍵詞獲取圖
4.2.2 多行瀏覽記錄的關鍵詞獲取
當瀏覽記錄是多行記錄時,如圖5所示。
圖5 多行瀏覽記錄示例圖
把需要獲取的關鍵詞數(shù)目設為3個,運行結果如圖6所示。用戶瀏覽記錄里的關鍵信息。
圖6 多行瀏覽記錄關鍵詞獲取圖
定義Find_match()函數(shù),將這些得到的講座信息放進文本文檔result.txt,系統(tǒng)平臺可以將這些內(nèi)容推薦給用戶。同關鍵詞獲取所存在的問題一樣,對于單個關鍵詞和多個關鍵詞,能否做到每個關鍵詞逐行遍歷是該算法的一個難點,筆者將關鍵詞設定為1個和多個分別進行試驗來驗證該算法的有效性。
4.3.1 單個關鍵詞匹配
當獲取的關鍵詞為單個時(如圖7所示),預期的結果是能夠在lecture.txt文件里篩選出所有包含該關鍵詞的講座條目。
圖7 單個關鍵詞示例圖
運行結果如圖8所示。
圖8 單個關鍵詞匹配實驗結果圖
4.3.2 多個關鍵詞匹配
當獲取的關鍵詞為多個時(如圖9所示),預期的結果是能夠在lecture.txt文件里篩選出所有包含一個或多個關鍵詞的講座條目。
圖9 多個關鍵詞示例圖
運行結果如圖10所示。
由上述實驗結果可知,無論對于單行瀏覽記錄還是多行瀏覽記錄,該算法都可以成功地獲取
圖10 多個關鍵詞匹配實驗結果圖
由此可見,無論是單個關鍵詞還是多個關鍵詞,該推薦算法都可以準確地推薦出所有包含這些關鍵詞的講座條目。
在大數(shù)據(jù)時代,推薦系統(tǒng)可以很大程度上便利用戶的信息檢索需求,在未來必將成為圖博檔數(shù)字服務平臺里不可缺少的一部分。經(jīng)實驗論證,本文所介紹的基于python的圖博檔數(shù)字資源推薦算法可以成功地實現(xiàn)為用戶推薦的功能,該推薦算法的優(yōu)點是推薦內(nèi)容全面且具有多樣性,適用性強,其基于python開發(fā)語言的特性,能應用于各種圖博檔數(shù)字服務平臺。除了適用性外,該算法靈活多變,管理者可以在后臺更改推薦給用戶的信息數(shù)量。
本文提出的推薦算法目前的弊端是需要平臺本身提供用戶瀏覽痕跡,對于沒有保存用戶瀏覽痕跡的平臺,該算法的具體應用將作為今后研究的課題。