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