《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于Hadoop平臺(tái)的個(gè)性化新聞推薦系統(tǒng)的設(shè)計(jì)
基于Hadoop平臺(tái)的個(gè)性化新聞推薦系統(tǒng)的設(shè)計(jì)
2016年微型機(jī)與應(yīng)用第23期
韋靈,黎偉強(qiáng)
廣西科技大學(xué)鹿山學(xué)院 電氣與計(jì)算機(jī)工程系,廣西 柳州 545616
摘要: 為使互聯(lián)網(wǎng)用戶(hù)快捷地查找所需信息,個(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é)同過(guò)濾推薦處理。系統(tǒng)利用 Hadoop的MapReduce模型實(shí)現(xiàn)并行快速地聚類(lèi)海量新聞數(shù)據(jù),大大提高了數(shù)據(jù)處理的速度,聚類(lèi)使得新聞之間的相似度得以體現(xiàn),再利用不同的協(xié)同過(guò)濾算法實(shí)現(xiàn)個(gè)性化的新聞推薦。
Abstract:
Key words :

  韋靈,黎偉強(qiáng)

 ?。◤V西科技大學(xué)鹿山學(xué)院 電氣與計(jì)算機(jī)工程系,廣西 柳州 545616)

       摘要:為使互聯(lián)網(wǎng)用戶(hù)快捷地查找所需信息,個(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é)同過(guò)濾推薦處理。系統(tǒng)利用 HadoopMapReduce模型實(shí)現(xiàn)并行快速地聚類(lèi)海量新聞數(shù)據(jù),大大提高了數(shù)據(jù)處理的速度,聚類(lèi)使得新聞之間的相似度得以體現(xiàn),再利用不同的協(xié)同過(guò)濾算法實(shí)現(xiàn)個(gè)性化的新聞推薦。

  關(guān)鍵詞:Hadoop;MapReduce;聚類(lèi);個(gè)性化;Mahout

  中圖分類(lèi)號(hào):TP301.6文獻(xiàn)標(biāo)識(shí)碼:ADOI: 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.

0引言

  隨著互聯(lián)網(wǎng)的發(fā)展,大量新聞快速涌現(xiàn),信息嚴(yán)重過(guò)載,令用戶(hù)無(wú)從選擇。新聞推薦系統(tǒng)被廣泛應(yīng)用于解決信息過(guò)載問(wèn)題[1],解決不同人之間關(guān)注新聞熱點(diǎn)不一致的問(wèn)題。新聞是人們生活中必不可少的一部分,如何使人們快速地在每天眾多新聞中找出自己感興趣、想要了解并查看的新聞成為了各大新聞門(mén)戶(hù)網(wǎng)站的一大難題??焖贉?zhǔn)確的新聞推薦能節(jié)省用戶(hù)大量查找自己感興趣的新聞的時(shí)間,這能讓用戶(hù)得到一個(gè)非常好的用戶(hù)體驗(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ò)程就像許多常規(guī)機(jī)器匯聚成為一個(gè)超級(jí)機(jī)器,整個(gè)處理過(guò)程就像一個(gè)機(jī)器在處理一樣,這大大降低了數(shù)據(jù)挖掘的成本,并且在數(shù)據(jù)量很大時(shí)大大減少了計(jì)算的時(shí)間。在當(dāng)今時(shí)代,無(wú)論是新聞門(mén)戶(hù)網(wǎng)站還是購(gòu)物網(wǎng)站,無(wú)論是醫(yī)療方面的還是金融方面的,大數(shù)據(jù)平臺(tái)下的數(shù)據(jù)挖掘都是現(xiàn)在主流的發(fā)展方向。從另一個(gè)角度看,大數(shù)據(jù)的出現(xiàn)不僅幫助人們篩選出了有用的信息,同時(shí)還幫人們過(guò)濾掉了無(wú)用的信息。混合方法彌補(bǔ)了基于內(nèi)容推薦在多樣性上的不足,但卻帶來(lái)了冷啟動(dòng)問(wèn)題,在推薦熱點(diǎn)新聞或用戶(hù)具有潛在興趣的新聞時(shí),沒(méi)有得到足夠點(diǎn)擊的新聞依然無(wú)法推薦給目標(biāo)用戶(hù)[2]。目前,國(guó)內(nèi)外學(xué)者在新聞推薦領(lǐng)域已展開(kāi)了一系列研究。參考文獻(xiàn)[3-6]使用了協(xié)同過(guò)濾的新聞推薦方法,本文提出了基于用戶(hù)和物品的協(xié)同過(guò)濾算法來(lái)實(shí)現(xiàn)面向不同用戶(hù)的個(gè)性化新聞內(nèi)容推薦。

1協(xié)同過(guò)濾算法介紹

  個(gè)性化推薦主要分為協(xié)同過(guò)濾推薦、基于內(nèi)容推薦、混合推薦。個(gè)性化推薦本質(zhì)上是把用戶(hù)與物品進(jìn)行聯(lián)系,使得用戶(hù)能夠發(fā)現(xiàn)自己所喜愛(ài)的物品,使得物品能夠被所喜歡的用戶(hù)所了解[7]。關(guān)于協(xié)同過(guò)濾的一個(gè)最典型的例子就是看電影,有時(shí)候不知道哪一部電影是我們喜歡的或者評(píng)分比較高的,那么通常的做法就是問(wèn)問(wèn)周?chē)呐笥?,看看最近有什么好的電影推薦。在詢(xún)問(wèn)時(shí),都習(xí)慣于問(wèn)與自己愛(ài)好相似的朋友,這就是協(xié)同過(guò)濾的核心思想。協(xié)同過(guò)濾推薦與傳統(tǒng)的基于內(nèi)容過(guò)濾推薦不同,協(xié)同過(guò)濾分析用戶(hù)興趣,在用戶(hù)群中找到指定用戶(hù)的相似(興趣)用戶(hù),綜合這些相似用戶(hù)對(duì)某一信息的評(píng)價(jià),形成對(duì)該指定用戶(hù)對(duì)此信息的喜好程度預(yù)測(cè)。協(xié)同過(guò)濾主要分為基于用戶(hù)的協(xié)同過(guò)濾和基于物品的協(xié)同過(guò)濾。

  1.1基于用戶(hù)的協(xié)同過(guò)濾算法

  俗話說(shuō)“物以類(lèi)聚、人以群分”,拿看電影這個(gè)例子來(lái)說(shuō),如果你喜歡《蝙蝠俠》、《碟中諜》、《星際穿越》、《源代碼》等電影,另外有個(gè)人也喜歡這類(lèi)電影,而且他還喜歡《鋼鐵俠》,則很有可能你也喜歡《鋼鐵俠》這部電影。所以說(shuō),當(dāng)一個(gè)用戶(hù) A 需要個(gè)性化推薦時(shí),可以先找到與他興趣相似的用戶(hù)群體 G,然后把 G 喜歡的、并且 A 沒(méi)有聽(tīng)說(shuō)過(guò)的物品推薦給 A,這就是基于用戶(hù)的協(xié)同過(guò)濾算法。

  1.2基于物品的協(xié)同過(guò)濾算法

  基于物品的協(xié)同過(guò)濾算法(ItemCF)是業(yè)界應(yīng)用最多的算法,主要思想是利用用戶(hù)之前有過(guò)的行為,給用戶(hù)推薦和之前物品類(lèi)似的物品。依然以電影為例,如果喜歡《蝙蝠俠》的用戶(hù)有A、B、C和D,喜歡《碟中諜》的用戶(hù)有A、C、D。那么可以認(rèn)為《蝙蝠俠》和《碟中諜》擁有相似的用戶(hù)群體,則很可能B用戶(hù)也會(huì)喜歡《碟中諜》這部電影,于是推薦《碟中諜》給B用戶(hù)。這就是基于物品的協(xié)同過(guò)濾算法。

圖像 001.png

2協(xié)同過(guò)濾算法用戶(hù)的模型構(gòu)建

  協(xié)同過(guò)濾算法所需要的數(shù)據(jù)結(jié)構(gòu)是用戶(hù)id+新聞id+評(píng)分,為了將數(shù)據(jù)庫(kù)中的數(shù)據(jù)形成這樣的數(shù)據(jù)結(jié)構(gòu),通過(guò)查詢(xún)新聞表的用戶(hù)表來(lái)確定所查詢(xún)的用戶(hù)是否在其中,然后得到該用戶(hù)瀏覽過(guò)的所有新聞id,最后對(duì)該新聞的喜愛(ài)程度進(jìn)行預(yù)測(cè)。根據(jù)式(1)計(jì)算出Preference喜好值,其中Preference為預(yù)測(cè)的結(jié)果,ct為新聞聚類(lèi)結(jié)果簇的個(gè)數(shù),cn為當(dāng)前新聞所在簇的新聞個(gè)數(shù),unt為當(dāng)前用戶(hù)瀏覽過(guò)的新聞總數(shù),nct為該新聞的瀏覽數(shù)。

  QQ圖片20170103181529.png

  基于用戶(hù)的協(xié)同過(guò)濾推薦流程圖如圖1所示。當(dāng)啟動(dòng)基于用戶(hù)的協(xié)同過(guò)濾算法引擎后,指定一個(gè)用戶(hù)為其推薦,系統(tǒng)將查詢(xún)數(shù)據(jù)庫(kù)中該用戶(hù)瀏覽過(guò)的所有新聞,根據(jù)新聞中用戶(hù)表查詢(xún)?yōu)g覽過(guò)的該新聞的相關(guān)用戶(hù),然后構(gòu)建協(xié)同過(guò)濾算法用戶(hù)的模型。整個(gè)過(guò)程封裝在MyRecommender類(lèi)的UserRecommender方法中,而在UserRecommender中封裝了數(shù)據(jù)庫(kù)的一系列查詢(xún)方法與協(xié)同過(guò)濾算法的調(diào)用,通過(guò)基于用戶(hù)的協(xié)同過(guò)濾算法計(jì)算出應(yīng)該為其推薦的新聞。

3協(xié)同過(guò)濾算法物品的模型構(gòu)建

  首先,以具有相同標(biāo)題的新聞作為查詢(xún)語(yǔ)句的分組條件,查詢(xún)出每一個(gè)新聞標(biāo)題下都有哪些用戶(hù)訪問(wèn)過(guò),根據(jù)查詢(xún)到的結(jié)果形成該新聞未訪問(wèn)過(guò)的推薦用戶(hù)列表。另外系統(tǒng)將會(huì)查詢(xún)出瀏覽過(guò)該新聞的用戶(hù)并構(gòu)建瀏覽用戶(hù)列表,并直觀顯示在分析后的推薦列表中,同時(shí)根據(jù)用戶(hù)瀏覽的新聞分類(lèi)的不同比重,推薦結(jié)果顯示時(shí),根據(jù)比重做相關(guān)的排序,把用戶(hù)最關(guān)注的那類(lèi)新聞排在最前面,以此來(lái)做推薦排序?;谖锲返膮f(xié)同過(guò)濾利用式(2)計(jì)算:

  QQ圖片20170103181532.png

  其算法流程圖如圖2所示。

圖像 002.png

  基于物品的協(xié)同過(guò)濾推薦,當(dāng)啟動(dòng)基于物品的協(xié)同過(guò)濾算法引擎后,指定一個(gè)用戶(hù)為其推薦,系統(tǒng)將查詢(xún)數(shù)據(jù)庫(kù)中該用戶(hù)瀏覽過(guò)的所有新聞,根據(jù)新聞中用戶(hù)表查詢(xún)?yōu)g覽過(guò)該新聞的相關(guān)用戶(hù),然后構(gòu)建協(xié)同過(guò)濾算法用戶(hù)的模型。整個(gè)過(guò)程封裝在MyRecommender類(lèi)的ItemRecommender方法中,而在ItemRecommender中封裝了數(shù)據(jù)庫(kù)的一些查詢(xún)方法和協(xié)同過(guò)濾算法的調(diào)用,通過(guò)基于物品的協(xié)同過(guò)濾算法計(jì)算出應(yīng)該推薦的新聞。

4個(gè)性化新聞推薦系統(tǒng)實(shí)現(xiàn)

  基于Hadoop平臺(tái)聚類(lèi)算法的個(gè)性化新聞推薦系統(tǒng),其目的是為讓廣大網(wǎng)民在瀏覽新聞時(shí),為其提供一個(gè)個(gè)性化的新聞推薦系統(tǒng)。大量的信息使得用戶(hù)找到自己需要的信息變得很困難。為了使互聯(lián)網(wǎng)用戶(hù)快捷地查找所需信息,個(gè)性化推薦系統(tǒng)的優(yōu)勢(shì)得到了體現(xiàn),本文利用 Hadoop的MapReduce模型實(shí)現(xiàn)并行快速地聚類(lèi)海量新聞數(shù)據(jù),大大提高了數(shù)據(jù)處理的速度,聚類(lèi)使得新聞之間的相似度得以體現(xiàn),再利用不同的協(xié)同過(guò)濾算法實(shí)現(xiàn)個(gè)性化的新聞推薦。系統(tǒng)使用了JSP、Servlet技術(shù)及Mahout開(kāi)源項(xiàng)目編寫(xiě)程序,首先利用Java將新聞數(shù)據(jù)按約定格式處理并將其傳到Hadoop的HDFS上,在安裝好Hadoop的Linux端定時(shí)調(diào)用shell腳本聚類(lèi)處理新聞,然后使用MySQL數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn)對(duì)新聞數(shù)據(jù)的協(xié)同過(guò)濾推薦處理。新聞推薦系統(tǒng)主要功能包括前臺(tái)與后臺(tái)的設(shè)計(jì),圖3所示為系統(tǒng)整體功能結(jié)構(gòu)圖,前臺(tái)主要負(fù)責(zé)展示推薦的新聞信息結(jié)果和供用戶(hù)瀏覽新聞;后臺(tái)處理新聞數(shù)據(jù),并將處理好的數(shù)據(jù)插入數(shù)據(jù)庫(kù)供前臺(tái)使用。

圖像 003.png

  圖4為新聞推薦流程圖。選擇基于用戶(hù)的協(xié)同過(guò)濾推薦,系統(tǒng)將自動(dòng)啟動(dòng)基于用戶(hù)的協(xié)同過(guò)濾算法引擎進(jìn)行數(shù)據(jù)的計(jì)算并將數(shù)據(jù)推送到頁(yè)面中。同理基于物品的協(xié)同過(guò)濾算法相同。這個(gè)過(guò)程中查詢(xún)所有人的瀏覽記錄是通過(guò)多次的數(shù)據(jù)庫(kù)查詢(xún)得到的。

圖像 004.png

  新聞普遍存在的問(wèn)題就是冷啟動(dòng)問(wèn)題,當(dāng)用戶(hù)第一次使用時(shí)該如何進(jìn)行推薦,用戶(hù)新加入時(shí)沒(méi)有任何的歷史行為及其興趣,因此無(wú)法對(duì)其進(jìn)行推薦。本文使用熱門(mén)推薦來(lái)解決這種極端的情況。當(dāng)剛打開(kāi)該系統(tǒng)時(shí),為模擬處理冷啟動(dòng)問(wèn)題,系統(tǒng)將查詢(xún)出瀏覽數(shù)前十的新聞進(jìn)行推薦。

  (1)當(dāng)用戶(hù)進(jìn)行基于用戶(hù)的協(xié)同過(guò)濾推薦算法操作時(shí),將觸發(fā)baseOnUserSer這個(gè)Servlet基類(lèi),該Servlet基類(lèi)將查詢(xún)出系統(tǒng)中的所有用戶(hù),并對(duì)所有的用戶(hù)進(jìn)行基于用戶(hù)的協(xié)同過(guò)濾算法推薦。首先,提交所有用戶(hù)的相關(guān)數(shù)據(jù)(格式為:用戶(hù)id,新聞id,評(píng)分),格式表示某用戶(hù)id瀏覽過(guò)某條新聞id,并且把喜歡程度表示為評(píng)分,利用每個(gè)用戶(hù)的新聞評(píng)分,根據(jù)皮爾遜相關(guān)系數(shù)公式計(jì)算出需要推薦的用戶(hù)與其他用戶(hù)之間的皮爾遜相似度,最后利用式(2)計(jì)算出需要推薦的用戶(hù)與用戶(hù)之間的皮爾遜相似度per。假設(shè)某用戶(hù)瀏覽過(guò)的某條新聞的評(píng)分為p,那么通過(guò)公式可以計(jì)算出該條新聞的推薦分值point=per×p,如果該條新聞被多個(gè)用戶(hù)閱讀過(guò)則需求出Σpoint=per1×p1+per2×p2…+pern×pn。得到所有新聞的推薦分后,選取被推薦用戶(hù)沒(méi)有瀏覽過(guò)的新聞中最高分的新聞作為推薦。

  基于用戶(hù)的協(xié)同過(guò)濾推薦系統(tǒng)效果如圖5所示。

圖像 005.png

  (2)當(dāng)用戶(hù)進(jìn)行基于物品的協(xié)同過(guò)濾推薦操作時(shí),將觸發(fā)baseOnItemSert類(lèi),該類(lèi)將查詢(xún)出系統(tǒng)中的所有用戶(hù),并過(guò)濾掉admin這個(gè)測(cè)試用戶(hù),將所有的用戶(hù)進(jìn)行基于物品的協(xié)同過(guò)濾算法推薦,所有推薦結(jié)果存儲(chǔ)在一個(gè)專(zhuān)門(mén)設(shè)計(jì)的newsModeBean類(lèi)中 ,其他的操作基本與基于用戶(hù)的協(xié)同過(guò)濾推薦一樣?;谖锲返膮f(xié)同過(guò)濾算法,提交數(shù)據(jù)的格式與基于用戶(hù)的協(xié)同過(guò)濾算法一樣。首先提取出所有的新聞,計(jì)算并建立新聞的共軛矩陣。然后使用用戶(hù)向量點(diǎn)乘共軛矩陣可以得到推薦分?jǐn)?shù)。

  基于物品的協(xié)同過(guò)濾推薦系統(tǒng)如圖6所示。

圖像 006.png

5結(jié)論

  隨著互聯(lián)網(wǎng)的迅速發(fā)展,用戶(hù)面對(duì)海量互聯(lián)網(wǎng)信息的時(shí)候,有時(shí)覺(jué)得很迷茫,不知道從何閱讀,甚至有時(shí)面對(duì)無(wú)關(guān)的廣告產(chǎn)生煩躁的心情。為了提高有效閱讀率,本文提出了利用基于用戶(hù)或者物品的協(xié)同過(guò)濾算法來(lái)實(shí)現(xiàn)新聞的個(gè)性化推薦,從測(cè)試的效果看,基本上達(dá)到用戶(hù)信息個(gè)性化新聞推薦的各項(xiàng)功能要求,表明該算法是有效的。因?yàn)闇y(cè)試數(shù)據(jù)較少,在Hadoop平臺(tái)上運(yùn)行,沒(méi)有體現(xiàn)出并行計(jì)算的效果,下一步將利用更多的用戶(hù)數(shù)據(jù)來(lái)驗(yàn)證系統(tǒng)。同時(shí),算法目前的實(shí)現(xiàn)主要依靠相似性來(lái)做推薦,后續(xù)將引進(jìn)其他算法來(lái)改進(jìn)個(gè)性化推薦的新聞內(nèi)容和分類(lèi),從而提高推薦的準(zhǔn)確性。

  參考文獻(xiàn)

 ?。?] 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.

 ?。?] 楊武,唐瑞,盧玲.基于內(nèi)容的推薦與協(xié)同過(guò)濾融合的新聞推薦方法[J].計(jì)算機(jī)應(yīng)用, 2016, 36(2):414-418.

 ?。?] 劉金亮.基于主題模型的個(gè)性化新聞推薦系統(tǒng)的研究與實(shí)現(xiàn)[D].北京: 北京郵電大學(xué),2013.

  [4] 彭菲菲,錢(qián)旭.基于用戶(hù)關(guān)注度的個(gè)性化新聞推薦系統(tǒng)[J].計(jì)算機(jī)應(yīng)用研究,2012,29(3) : 1005-1007.

 ?。?] 文鵬,蔡瑞,吳黎兵.一種基于潛在類(lèi)別模型的新聞推薦方法[J].情報(bào)雜志,2014,33(1):161-166.

  [6] 項(xiàng)亮.推薦系統(tǒng)實(shí)踐[M].北京: 人民郵電出版社,2012.

 ?。?] 曹一鳴. 基于協(xié)同過(guò)濾的個(gè)性化新聞推薦系統(tǒng)的研究與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué), 2013.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。