韋 靈,黎偉強(qiáng)
(廣西科技大學(xué)鹿山學(xué)院 電氣與計(jì)算機(jī)工程系,廣西 柳州 545616)
?
基于Hadoop平臺(tái)的個(gè)性化新聞推薦系統(tǒng)的設(shè)計(jì)*
韋 靈,黎偉強(qiáng)
(廣西科技大學(xué)鹿山學(xué)院 電氣與計(jì)算機(jī)工程系,廣西 柳州 545616)
為使互聯(lián)網(wǎng)用戶快捷地查找所需信息,個(gè)性化推薦系統(tǒng)的優(yōu)勢(shì)得到了體現(xiàn)和運(yùn)用。該系統(tǒng)設(shè)計(jì)的目的是為廣大網(wǎng)民在瀏覽新聞時(shí)提供一個(gè)個(gè)性化的新聞推薦系統(tǒng),實(shí)現(xiàn)對(duì)新聞數(shù)據(jù)的協(xié)同過濾推薦處理。系統(tǒng)利用 Hadoop的MapReduce模型實(shí)現(xiàn)并行快速地聚類海量新聞數(shù)據(jù),大大提高了數(shù)據(jù)處理的速度,聚類使得新聞之間的相似度得以體現(xiàn),再利用不同的協(xié)同過濾算法實(shí)現(xiàn)個(gè)性化的新聞推薦。
Hadoop;MapReduce;聚類;個(gè)性化;Mahout
隨著互聯(lián)網(wǎng)的發(fā)展,大量新聞快速涌現(xiàn),信息嚴(yán)重過載,令用戶無從選擇。新聞推薦系統(tǒng)被廣泛應(yīng)用于解決信息過載問題[1],解決不同人之間關(guān)注新聞熱點(diǎn)不一致的問題。新聞是人們生活中必不可少的一部分,如何使人們快速地在每天眾多新聞中找出自己感興趣、想要了解并查看的新聞成為了各大新聞門戶網(wǎng)站的一大難題??焖贉?zhǔn)確的新聞推薦能節(jié)省用戶大量查找自己感興趣的新聞的時(shí)間,這能讓用戶得到一個(gè)非常好的用戶體驗(yàn)。大數(shù)據(jù)的出現(xiàn)標(biāo)志著人們生活品質(zhì)的進(jìn)步,這是社會(huì)進(jìn)化的副產(chǎn)品,它能利用許多常規(guī)機(jī)器進(jìn)行海量數(shù)據(jù)處理。將一個(gè)海量數(shù)據(jù)任務(wù)分成需要的小任務(wù),分別發(fā)給許多常規(guī)機(jī)器進(jìn)行并行處理,然后得出結(jié)果,這個(gè)過程就像許多常規(guī)機(jī)器匯聚成為一個(gè)超級(jí)機(jī)器,整個(gè)處理過程就像一個(gè)機(jī)器在處理一樣,這大大降低了數(shù)據(jù)挖掘的成本,并且在數(shù)據(jù)量很大時(shí)大大減少了計(jì)算的時(shí)間。在當(dāng)今時(shí)代,無論是新聞門戶網(wǎng)站還是購(gòu)物網(wǎng)站,無論是醫(yī)療方面的還是金融方面的,大數(shù)據(jù)平臺(tái)下的數(shù)據(jù)挖掘都是現(xiàn)在主流的發(fā)展方向。從另一個(gè)角度看,大數(shù)據(jù)的出現(xiàn)不僅幫助人們篩選出了有用的信息,同時(shí)還幫人們過濾掉了無用的信息?;旌戏椒◤浹a(bǔ)了基于內(nèi)容推薦在多樣性上的不足,但卻帶來了冷啟動(dòng)問題,在推薦熱點(diǎn)新聞或用戶具有潛在興趣的新聞時(shí),沒有得到足夠點(diǎn)擊的新聞依然無法推薦給目標(biāo)用戶[2]。目前,國(guó)內(nèi)外學(xué)者在新聞推薦領(lǐng)域已展開了一系列研究。參考文獻(xiàn)[3-6]使用了協(xié)同過濾的新聞推薦方法,本文提出了基于用戶和物品的協(xié)同過濾算法來實(shí)現(xiàn)面向不同用戶的個(gè)性化新聞內(nèi)容推薦。
個(gè)性化推薦主要分為協(xié)同過濾推薦、基于內(nèi)容推薦、混合推薦。個(gè)性化推薦本質(zhì)上是把用戶與物品進(jìn)行聯(lián)系,使得用戶能夠發(fā)現(xiàn)自己所喜愛的物品,使得物品能夠被所喜歡的用戶所了解[7]。關(guān)于協(xié)同過濾的一個(gè)最典型的例子就是看電影,有時(shí)候不知道哪一部電影是我們喜歡的或者評(píng)分比較高的,那么通常的做法就是問問周圍的朋友,看看最近有什么好的電影推薦。在詢問時(shí),都習(xí)慣于問與自己愛好相似的朋友,這就是協(xié)同過濾的核心思想。協(xié)同過濾推薦與傳統(tǒng)的基于內(nèi)容過濾推薦不同,協(xié)同過濾分析用戶興趣,在用戶群中找到指定用戶的相似(興趣)用戶,綜合這些相似用戶對(duì)某一信息的評(píng)價(jià),形成對(duì)該指定用戶對(duì)此信息的喜好程度預(yù)測(cè)。協(xié)同過濾主要分為基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾。
1.1 基于用戶的協(xié)同過濾算法
俗話說“物以類聚、人以群分”,拿看電影這個(gè)例子來說,如果你喜歡《蝙蝠俠》、《碟中諜》、《星際穿越》、《源代碼》等電影,另外有個(gè)人也喜歡這類電影,而且他還喜歡《鋼鐵俠》,則很有可能你也喜歡《鋼鐵俠》這部電影。所以說,當(dāng)一個(gè)用戶 A 需要個(gè)性化推薦時(shí),可以先找到與他興趣相似的用戶群體 G,然后把 G 喜歡的、并且 A 沒有聽說過的物品推薦給 A,這就是基于用戶的協(xié)同過濾算法。
1.2 基于物品的協(xié)同過濾算法
基于物品的協(xié)同過濾算法(ItemCF)是業(yè)界應(yīng)用最多的算法,主要思想是利用用戶之前有過的行為,給用戶推薦和之前物品類似的物品。依然以電影為例,如果喜歡《蝙蝠俠》的用戶有A、B、C和D,喜歡《碟中諜》的用戶有A、C、D。那么可以認(rèn)為《蝙蝠俠》和《碟中諜》擁有相似的用戶群體,則很可能B用戶也會(huì)喜歡《碟中諜》這部電影,于是推薦《碟中諜》給B用戶。這就是基于物品的協(xié)同過濾算法。
圖1 基于用戶的協(xié)同過濾算法推薦流程圖
協(xié)同過濾算法所需要的數(shù)據(jù)結(jié)構(gòu)是用戶id+新聞id+評(píng)分,為了將數(shù)據(jù)庫中的數(shù)據(jù)形成這樣的數(shù)據(jù)結(jié)構(gòu),通過查詢新聞表的用戶表來確定所查詢的用戶是否在其中,然后得到該用戶瀏覽過的所有新聞id,最后對(duì)該新聞的喜愛程度進(jìn)行預(yù)測(cè)。根據(jù)式(1)計(jì)算出Preference喜好值,其中Preference為預(yù)測(cè)的結(jié)果,ct為新聞聚類結(jié)果簇的個(gè)數(shù),cn為當(dāng)前新聞所在簇的新聞個(gè)數(shù),unt為當(dāng)前用戶瀏覽過的新聞總數(shù),nct為該新聞的瀏覽數(shù)。
(1)
基于用戶的協(xié)同過濾推薦流程圖如圖1所示。當(dāng)啟動(dòng)基于用戶的協(xié)同過濾算法引擎后,指定一個(gè)用戶為其推薦,系統(tǒng)將查詢數(shù)據(jù)庫中該用戶瀏覽過的所有新聞,根據(jù)新聞中用戶表查詢?yōu)g覽過的該新聞的相關(guān)用戶,然后構(gòu)建協(xié)同過濾算法用戶的模型。整個(gè)過程封裝在MyRecommender類的UserRecommender方法中,而在UserRecommender中封裝了數(shù)據(jù)庫的一系列查詢方法與協(xié)同過濾算法的調(diào)用,通過基于用戶的協(xié)同過濾算法計(jì)算出應(yīng)該為其推薦的新聞。
首先,以具有相同標(biāo)題的新聞作為查詢語句的分組條件,查詢出每一個(gè)新聞標(biāo)題下都有哪些用戶訪問過,根據(jù)查詢到的結(jié)果形成該新聞未訪問過的推薦用戶列表。另外系統(tǒng)將會(huì)查詢出瀏覽過該新聞的用戶并構(gòu)建瀏覽用戶列表,并直觀顯示在分析后的推薦列表中,同時(shí)根據(jù)用戶瀏覽的新聞分類的不同比重,推薦結(jié)果顯示時(shí),根據(jù)比重做相關(guān)的排序,把用戶最關(guān)注的那類新聞排在最前面,以此來做推薦排序?;谖锲返膮f(xié)同過濾利用式(2)計(jì)算:
(2)
其算法流程圖如圖2所示。
圖2 基于物品的協(xié)同過濾算法推薦流程圖
基于物品的協(xié)同過濾推薦,當(dāng)啟動(dòng)基于物品的協(xié)同過濾算法引擎后,指定一個(gè)用戶為其推薦,系統(tǒng)將查詢數(shù)據(jù)庫中該用戶瀏覽過的所有新聞,根據(jù)新聞中用戶表查詢?yōu)g覽過該新聞的相關(guān)用戶,然后構(gòu)建協(xié)同過濾算法用戶的模型。整個(gè)過程封裝在MyRecommender類的ItemRecommender方法中,而在ItemRecommender中封裝了數(shù)據(jù)庫的一些查詢方法和協(xié)同過濾算法的調(diào)用,通過基于物品的協(xié)同過濾算法計(jì)算出應(yīng)該推薦的新聞。
基于Hadoop平臺(tái)聚類算法的個(gè)性化新聞推薦系統(tǒng),其目的是為讓廣大網(wǎng)民在瀏覽新聞時(shí),為其提供一個(gè)個(gè)性化的新聞推薦系統(tǒng)。大量的信息使得用戶找到自己需要的信息變得很困難。為了使互聯(lián)網(wǎng)用戶快捷地查找所需信息,個(gè)性化推薦系統(tǒng)的優(yōu)勢(shì)得到了體現(xiàn),本文利用 Hadoop的MapReduce模型實(shí)現(xiàn)并行快速地聚類海量新聞數(shù)據(jù),大大提高了數(shù)據(jù)處理的速度,聚類使得新聞之間的相似度得以體現(xiàn),再利用不同的協(xié)同過濾算法實(shí)現(xiàn)個(gè)性化的新聞推薦。系統(tǒng)使用了JSP、Servlet技術(shù)及Mahout開源項(xiàng)目編寫程序,首先利用Java將新聞數(shù)據(jù)按約定格式處理并將其傳到Hadoop的HDFS上,在安裝好Hadoop的Linux端定時(shí)調(diào)用shell腳本聚類處理新聞,然后使用MySQL數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn)對(duì)新聞數(shù)據(jù)的協(xié)同過濾推薦處理。新聞推薦系統(tǒng)主要功能包括前臺(tái)與后臺(tái)的設(shè)計(jì),圖3所示為系統(tǒng)整體功能結(jié)構(gòu)圖,前臺(tái)主要負(fù)責(zé)展示推薦的新聞信息結(jié)果和供用戶瀏覽新聞;后臺(tái)處理新聞數(shù)據(jù),并將處理好的數(shù)據(jù)插入數(shù)據(jù)庫供前臺(tái)使用。
圖3 系統(tǒng)整體功能結(jié)構(gòu)圖
圖4為新聞推薦流程圖。選擇基于用戶的協(xié)同過濾推薦,系統(tǒng)將自動(dòng)啟動(dòng)基于用戶的協(xié)同過濾算法引擎進(jìn)行數(shù)據(jù)的計(jì)算并將數(shù)據(jù)推送到頁面中。同理基于物品的協(xié)同過濾算法相同。這個(gè)過程中查詢所有人的瀏覽記錄是通過多次的數(shù)據(jù)庫查詢得到的。
圖4 新聞推薦流程圖
新聞普遍存在的問題就是冷啟動(dòng)問題,當(dāng)用戶第一次使用時(shí)該如何進(jìn)行推薦,用戶新加入時(shí)沒有任何的歷史行為及其興趣,因此無法對(duì)其進(jìn)行推薦。本文使用熱門推薦來解決這種極端的情況。當(dāng)剛打開該系統(tǒng)時(shí),為模擬處理冷啟動(dòng)問題,系統(tǒng)將查詢出瀏覽數(shù)前十的新聞進(jìn)行推薦。
(1)當(dāng)用戶進(jìn)行基于用戶的協(xié)同過濾推薦算法操作時(shí),將觸發(fā)baseOnUserSer這個(gè)Servlet基類,該Servlet基類將查詢出系統(tǒng)中的所有用戶,并對(duì)所有的用戶進(jìn)行基于用戶的協(xié)同過濾算法推薦。首先,提交所有用戶的相關(guān)數(shù)據(jù)(格式為:用戶id,新聞id,評(píng)分),格式表示某用戶id瀏覽過某條新聞id,并且把喜歡程度表示為評(píng)分,利用每個(gè)用戶的新聞評(píng)分,根據(jù)皮爾遜相關(guān)系數(shù)公式計(jì)算出需要推薦的用戶與其他用戶之間的皮爾遜相似度,最后利用式(2)計(jì)算出需要推薦的用戶與用戶之間的皮爾遜相似度per。假設(shè)某用戶瀏覽過的某條新聞的評(píng)分為p,那么通過公式可以計(jì)算出該條新聞的推薦分值point=per×p,如果該條新聞被多個(gè)用戶閱讀過則需求出Σpoint=per1×p1+per2×p2…+pern×pn。得到所有新聞的推薦分后,選取被推薦用戶沒有瀏覽過的新聞中最高分的新聞作為推薦。
基于用戶的協(xié)同過濾推薦系統(tǒng)效果如圖5所示。
圖5 基于用戶的協(xié)同過濾推薦結(jié)果
(2)當(dāng)用戶進(jìn)行基于物品的協(xié)同過濾推薦操作時(shí),將觸發(fā)baseOnItemSert類,該類將查詢出系統(tǒng)中的所有用戶,并過濾掉admin這個(gè)測(cè)試用戶,將所有的用戶進(jìn)行基于物品的協(xié)同過濾算法推薦,所有推薦結(jié)果存儲(chǔ)在一個(gè)專門設(shè)計(jì)的newsModeBean類中 ,其他的操作基本與基于用戶的協(xié)同過濾推薦一樣。基于物品的協(xié)同過濾算法,提交數(shù)據(jù)的格式與基于用戶的協(xié)同過濾算法一樣。首先提取出所有的新聞,計(jì)算并建立新聞的共軛矩陣。然后使用用戶向量點(diǎn)乘共軛矩陣可以得到推薦分?jǐn)?shù)。
基于物品的協(xié)同過濾推薦系統(tǒng)如圖6所示。
圖6 基于物品的協(xié)同過濾推薦結(jié)果
隨著互聯(lián)網(wǎng)的迅速發(fā)展,用戶面對(duì)海量互聯(lián)網(wǎng)信息的時(shí)候,有時(shí)覺得很迷茫,不知道從何閱讀,甚至有時(shí)面對(duì)無關(guān)的廣告產(chǎn)生煩躁的心情。為了提高有效閱讀率,本文提出了利用基于用戶或者物品的協(xié)同過濾算法來實(shí)現(xiàn)新聞的個(gè)性化推薦,從測(cè)試的效果看,基本上達(dá)到用戶信息個(gè)性化新聞推薦的各項(xiàng)功能要求,表明該算法是有效的。因?yàn)闇y(cè)試數(shù)據(jù)較少,在Hadoop平臺(tái)上運(yùn)行,沒有體現(xiàn)出并行計(jì)算的效果,下一步將利用更多的用戶數(shù)據(jù)來驗(yàn)證系統(tǒng)。同時(shí),算法目前的實(shí)現(xiàn)主要依靠相似性來做推薦,后續(xù)將引進(jìn)其他算法來改進(jìn)個(gè)性化推薦的新聞內(nèi)容和分類,從而提高推薦的準(zhǔn)確性。
[1] JIANG S,HONG W X.A vertical news recommendation system:CCNS—an example from Chinese campus news reading system[C].ICCSE 2014: Proceedings of the 2014 9th International Conference on Computer Science & Education.Piscataway,NJ: IEEE,2014: 1105-1114.
[2] 楊武,唐瑞,盧玲.基于內(nèi)容的推薦與協(xié)同過濾融合的新聞推薦方法[J].計(jì)算機(jī)應(yīng)用, 2016, 36(2):414-418.
[3] 劉金亮.基于主題模型的個(gè)性化新聞推薦系統(tǒng)的研究與實(shí)現(xiàn)[D].北京: 北京郵電大學(xué),2013.
[4] 彭菲菲,錢旭.基于用戶關(guān)注度的個(gè)性化新聞推薦系統(tǒng)[J].計(jì)算機(jī)應(yīng)用研究,2012,29(3) : 1005-1007.
[5] 文鵬,蔡瑞,吳黎兵.一種基于潛在類別模型的新聞推薦方法[J].情報(bào)雜志,2014,33(1):161-166.
[6] 項(xiàng)亮.推薦系統(tǒng)實(shí)踐[M].北京: 人民郵電出版社,2012.
[7] 曹一鳴. 基于協(xié)同過濾的個(gè)性化新聞推薦系統(tǒng)的研究與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué), 2013.
Design of personalized news recommendation system based on Hadoop platform
Wei Ling,Li Weiqiang
(Department of Electrical and Computer Engineering,Lushan College of Guangxi University of Science and Technology , Liuzhou 545616, China)
For Internet users to quickly find the required information, personalized recommendation system has been reflected and applied. The design of this system is to allow the majority of Internet users to browse the news, it can provide a personalized news recommendation system, to achieve collaborative filtering recommended treatment of news data. The system uses Hadoop MapReduce model to realize the parallel fast clustering massive news data, can greatly improve the speed of data processing. Clustering makes the similarity between news to reflect, and using different collaborative filtering algorithm to achieve personalized news recommendation.
Hadoop;MapReduce;clustering;personalized;Mahout
廣西科技大學(xué)鹿山學(xué)院2015年科學(xué)基金項(xiàng)目(2015LSKY17)
TP301.6
A
10.19358/j.issn.1674- 7720.2016.23.006
韋靈,黎偉強(qiáng). 基于Hadoop平臺(tái)的個(gè)性化新聞推薦系統(tǒng)的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2016,35(23):21-23,27.
2016-08-12)
韋靈(1979-),男,碩士,講師,主要研究方向:人工智能、機(jī)器學(xué)習(xí)。
黎偉強(qiáng)(1981-),男,碩士,講師,主要研究方向:人工智能、數(shù)據(jù)并行化處理。