周文樂(lè),朱 明,陳天昊
(中國(guó)科學(xué)技術(shù)大學(xué)自動(dòng)化系,合肥 230027)
互聯(lián)網(wǎng)為廣大用戶(hù)提供了海量的影視資源,但也給用戶(hù)獲取真正感興趣的資源帶來(lái)困難。個(gè)性化推薦系統(tǒng)有針對(duì)性地向用戶(hù)推薦,提升用戶(hù)使用感受,提高資源利用率,成為當(dāng)今研究的熱點(diǎn)話題。主流推薦系統(tǒng)常用方法有基于內(nèi)容的推薦、協(xié)同過(guò)濾推薦及2種組合的推薦等[1]。
基于內(nèi)容的推薦技術(shù)是最早的推薦方法[2]。基于內(nèi)容的推薦利用關(guān)鍵詞向用戶(hù)推薦歷史記錄的相似項(xiàng)目。這類(lèi)方法是基于句法的,沒(méi)有考慮語(yǔ)義級(jí)別的含義。所以只能推薦與用戶(hù)歷史記錄包含的屬性值完全相同的項(xiàng)目,導(dǎo)致了基于內(nèi)容的推薦技術(shù)過(guò)度專(zhuān)業(yè)化。推薦結(jié)果缺乏新穎性,不能給用戶(hù)帶來(lái)新的驚喜。協(xié)同過(guò)濾推薦技術(shù)[3]是目前應(yīng)用非常廣泛的技術(shù)?;趦?nèi)存的協(xié)同過(guò)濾用相似統(tǒng)計(jì)方法得到與目標(biāo)用戶(hù)有相似興趣的鄰居用戶(hù),并將最相似的用戶(hù)歷史點(diǎn)播作為推薦源,推薦目標(biāo)用戶(hù)未看過(guò)的電影?;谀P偷姆椒ǜ鶕?jù)用戶(hù)歷史記錄得到一個(gè)模型,再用此模型進(jìn)行預(yù)測(cè)。協(xié)同過(guò)濾存在評(píng)價(jià)稀疏,新資源或新用戶(hù)加入的冷啟動(dòng)問(wèn)題。且不同用戶(hù)可能因?yàn)橄嗤x擇標(biāo)準(zhǔn)選擇不同電影,或出于不同目的選擇相同電影,沒(méi)考慮用戶(hù)的選擇偏好,所以準(zhǔn)確率較低。以上方法結(jié)合的[4]思路是,先根據(jù)協(xié)同過(guò)濾得到相似用戶(hù)歷史記錄,再得到待推薦電影集。統(tǒng)計(jì)用戶(hù)感興趣的關(guān)鍵詞,利用關(guān)鍵詞過(guò)濾待推薦集,得到結(jié)果。這類(lèi)方法準(zhǔn)確度有所提高,但仍無(wú)法解決稀疏性、冷啟動(dòng)、過(guò)度專(zhuān)業(yè)化等問(wèn)題。為克服以上問(wèn)題,本文提出一種基于網(wǎng)站聚合和語(yǔ)義知識(shí)的推薦方法,提高準(zhǔn)確度,并用于實(shí)時(shí)推薦。
聚合是指通過(guò)人工或技術(shù)方式,將互聯(lián)網(wǎng)上的海量信息進(jìn)行收集、挑選、分析、歸類(lèi),從而將相關(guān)鏈接內(nèi)容分類(lèi)聚合,為網(wǎng)民提供更具針對(duì)性的信息。
本體定義是“給出構(gòu)成相關(guān)領(lǐng)域詞匯的基本術(shù)語(yǔ)和關(guān)系,以及利用這些術(shù)語(yǔ)和關(guān)系構(gòu)成的規(guī)定這些詞匯外延的規(guī)則的定義”[5]。本體模型是概念化模型,目標(biāo)是捕獲相關(guān)領(lǐng)域的知識(shí)構(gòu)造領(lǐng)域概念模型,明確描述領(lǐng)域涉及的概念、概念的含義及概念之間的關(guān)系,為簡(jiǎn)單的術(shù)語(yǔ)賦予明確的背景知識(shí)[6]。
為衡量結(jié)構(gòu)性上下文相似性,基于“2個(gè)對(duì)象是相似的,如果與它們關(guān)聯(lián)對(duì)象相似”思想的SimRank算法被提出[7],例如圖1所示,有向箭頭表示網(wǎng)頁(yè)可鏈接至另一網(wǎng)頁(yè)。教授A、B都與Univ關(guān)聯(lián),則兩者之間有一定的相似性。同理,StudentA、B也有一定相似性。文獻(xiàn)[7]給出相似度計(jì)算公式式(1)。在有向圖G中,節(jié)點(diǎn)A指向節(jié)點(diǎn)表示為Oi(A),節(jié)點(diǎn)B指向節(jié)點(diǎn)為Oj(B),C為衰減因子,一般取為0.8。
圖1 SimRank關(guān)聯(lián)示例圖
本文根據(jù)用戶(hù)歷史記錄,利用網(wǎng)站聚合,獲取用戶(hù)歷史項(xiàng)目中每部電影在其他網(wǎng)站上的所有相關(guān)推薦,作為待推薦集。本文利用網(wǎng)絡(luò)爬蟲(chóng)采集數(shù)據(jù),爬蟲(chóng)基于Java庫(kù)HTMLParser Libraries,這種方式比直接利用正則表達(dá)式提取網(wǎng)頁(yè)信息有更強(qiáng)的復(fù)用性[8]。本 文 用 到 HTMLParser Libraries 中 的htmlparser.jar包。訪問(wèn)節(jié)點(diǎn)的方法采用Filer模式,對(duì)不同的網(wǎng)站分別設(shè)置過(guò)濾條件,對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行過(guò)濾,返回符合規(guī)則的節(jié)點(diǎn)列表,從而解析得到所需要的電影的相關(guān)信息,其中包括每部電影的推薦電影。最后,將在各個(gè)網(wǎng)站采集到的信息,利用電影名和上映日期2項(xiàng)作為關(guān)鍵字進(jìn)行去重,將去重的結(jié)果存儲(chǔ)到數(shù)據(jù)庫(kù)中。通過(guò)網(wǎng)站聚合建立源數(shù)據(jù)庫(kù)有以下優(yōu)點(diǎn):(1)整合資源。很多網(wǎng)站都會(huì)向用戶(hù)推薦電影,且推薦結(jié)果不盡相同。將每個(gè)網(wǎng)站推薦的資源匯總起來(lái),可豐富源數(shù)據(jù)庫(kù)。(2)運(yùn)算量少。聚合網(wǎng)站直接采集信息,相比協(xié)同過(guò)濾查找相似用戶(hù)的計(jì)算量大為減少,也克服了協(xié)同過(guò)濾中評(píng)價(jià)矩陣稀疏和系統(tǒng)啟動(dòng)初期用戶(hù)數(shù)量較少的問(wèn)題。(3)時(shí)效性強(qiáng)。可以根據(jù)被聚合網(wǎng)站的更新及時(shí)地將新電影信息更新至源數(shù)據(jù)庫(kù)。
基于本體論概念,抽象出用戶(hù)普遍關(guān)注的電影信息并進(jìn)行描述,構(gòu)建電影的本體模型。在傳統(tǒng)方法中,導(dǎo)演、演員等是不可分屬性,如果兩個(gè)演員不是同一個(gè)人,則相似度判斷為0。事實(shí)上,觀眾會(huì)認(rèn)為某兩個(gè)導(dǎo)演或演員有一定相似性。進(jìn)而兩部電影的導(dǎo)演或者主演之間有一定的相似性,則用戶(hù)可能會(huì)因?yàn)橄矚g一部電影而對(duì)另一部電影產(chǎn)生興趣。本文分析觀眾對(duì)影人的相似度判斷規(guī)律,將影人的性別、年齡、國(guó)籍等信息,以及主要作品類(lèi)型和共同合作過(guò)的影人作為相似度判斷標(biāo)準(zhǔn)。電影屬性本體如表1所示。
表1 電影屬性本體
在傳統(tǒng)推薦算法中,相似度計(jì)算主要有2種方式:(1)分別計(jì)算項(xiàng)目每個(gè)屬性的相似度,再對(duì)各個(gè)屬性相似度求算數(shù)平均數(shù)。(2)先將項(xiàng)目的信息進(jìn)行向量化,即用一個(gè)向量表征某個(gè)項(xiàng)目。對(duì)于2部電影中所有出現(xiàn)過(guò)的屬性值,若某個(gè)項(xiàng)目含有此屬性值,則向量中相應(yīng)元素置為1,否則為0。最后對(duì)表征2部影片的2個(gè)向量進(jìn)行余弦相似度計(jì)算。但是,在實(shí)際應(yīng)用中,考慮到不同的用戶(hù)對(duì)某一屬性的偏好,即用戶(hù)對(duì)某一屬性的重視程度是不同的,而這2種傳統(tǒng)方法存在的共同問(wèn)題都是沒(méi)有考慮到用戶(hù)的偏好差異。
本文在計(jì)算2部電影之間的相似度時(shí),考慮用戶(hù)不同的偏好。首先分別計(jì)算每個(gè)屬性的相似度,再對(duì)各個(gè)屬性相似度求加權(quán)算數(shù)平均數(shù)。例如某一個(gè)用戶(hù)在選擇電影時(shí),首先選擇自己最喜歡的電影類(lèi)型——?jiǎng)幼髌?,則在計(jì)算相似度時(shí),相應(yīng)的TYPE屬性權(quán)重應(yīng)該較大。而某個(gè)用戶(hù)最喜歡某個(gè)導(dǎo)演,他對(duì)這個(gè)導(dǎo)演或者跟這個(gè)導(dǎo)演風(fēng)格相似的導(dǎo)演所拍攝的電影可能感興趣,則對(duì)于這個(gè)用戶(hù),DCT屬性的權(quán)重應(yīng)相應(yīng)增大。以下討論相似度計(jì)算公式和各屬性權(quán)重的計(jì)算方法。
3.3.1 相似度計(jì)算公式
本文將 2部電影分別表示為 M1,M2,Mi={yeari,TYPEi,woni,loci,DCTi,ACTi,TAGi,rangei},i=1,2。用sim(propertyj)表示2部電影在第j個(gè)屬性上的相似度,wj,j=1,2,…,8 代表每個(gè)屬性的權(quán)重;sim(x1,x2)表示某個(gè)屬性上,2個(gè)屬性值之間的相似度。則兩部電影相似度計(jì)算公式為:
其中,每個(gè)屬性的相似度計(jì)算方法如下:
(1)某些用戶(hù)喜歡最新上映的電影,而一些用戶(hù)則偏愛(ài)老電影,所以電影上映時(shí)間也會(huì)成為用戶(hù)選擇的依據(jù)。設(shè)定如果2個(gè)電影年代相差不大(本文設(shè)定為不超過(guò)5年),則認(rèn)為完全相似,否則相差越大,相似性越小。
(2)某些用戶(hù)在選擇電影時(shí),其他用戶(hù)對(duì)該電影的評(píng)分可能會(huì)影響他們對(duì)電影的選擇,所以本文加入對(duì)評(píng)分相似度的計(jì)算。評(píng)分相似度sim(range)計(jì)算利用式(4):
(3)求取2部電影類(lèi)型相似度sim(TYPE)或者標(biāo)簽sim(TAG)的相似度,因?yàn)檫@2種屬性都為字符串集合,所以相似度計(jì)算利用文本相似度的計(jì)算方法。令屬性值集合分別為A,B,X=A∩B,Y=A∪B,則2個(gè)集合相似度計(jì)算公式為:
(4)求取2部電影是否都獲過(guò)國(guó)際獎(jiǎng)項(xiàng)的相似度sim(won)或者制片國(guó)家的相似度sim(loc),令a,b為相應(yīng)屬性值,則:
(5)2部電影的導(dǎo)演和演員的相似度sim(DIR),sim(ACT),利用 SimRank公式有:
其中,O(A),O(B)分別為2部電影的影人(導(dǎo)演或者演員)集合;Oi(A),Oi(B)為集合中的元素,C=0.8;s(Oi(A),Oi(B))為具體2個(gè)影人的相似度。計(jì)算規(guī)則如下:
通過(guò)統(tǒng)計(jì)電影人作品的類(lèi)型和作品中涉及到的其他影人,可以得到這個(gè)電影人的擅長(zhǎng)類(lèi)型集合(CTYPE)以及合作2次以上的電影人集合(PTN)。年齡、獲獎(jiǎng)情況、出生地以及主要作品的類(lèi)型集合、合作人集合的相似度計(jì)算方法同電影的計(jì)算方法,最終得到公式:
最終,利用式(2)將以上各個(gè)屬性相似度綜合求取加權(quán)平均值,得到電影相似度。
3.3.2 權(quán)重計(jì)算方法
某用戶(hù)歷史記錄中某屬性的屬性值越聚集于某一值,則說(shuō)明此用戶(hù)對(duì)該屬性的關(guān)注程度越高,該屬性所占權(quán)重越大;反之,某屬性的屬性值越發(fā)散、隨機(jī)性越大,則說(shuō)明用戶(hù)對(duì)該屬性的關(guān)注程度越低,該屬性權(quán)重越低。假設(shè)用戶(hù)歷史記錄中有n個(gè)電影,電影共有p個(gè)屬性,某一個(gè)屬性共出現(xiàn)mp個(gè)屬性值,則對(duì)于第j個(gè)屬性的聚集程度由式(9)衡量,分子表示屬性j的第i個(gè)屬性值在歷史記錄中實(shí)際出現(xiàn)的次數(shù),分母為點(diǎn)播電影總個(gè)數(shù)與屬性值的個(gè)數(shù)之比,表示每個(gè)屬性值平均出現(xiàn)的次數(shù)。再利用式(10)得到每個(gè)屬性權(quán)重。
根據(jù)實(shí)際應(yīng)用場(chǎng)景,提出2種推薦策略。第1種是非實(shí)時(shí)推薦,當(dāng)用戶(hù)登錄系統(tǒng)時(shí),根據(jù)用戶(hù)以往的歷史記錄,向用戶(hù)推送推薦電影。第2種是實(shí)時(shí)推薦,當(dāng)用戶(hù)點(diǎn)開(kāi)某部電影時(shí),向用戶(hù)推薦可能感興趣的相似電影。
3.4.1 場(chǎng)景 1
考慮到用戶(hù)的興趣漂移[10],用戶(hù)最近觀看過(guò)的電影能反映這個(gè)時(shí)間段的興趣特征。僅選取用戶(hù)最近觀看過(guò)的電影集 X={x1,x2,…,xn},通過(guò)網(wǎng)站聚合得到候選集 Y={y1,y2,…,ym},并將系統(tǒng)最新收錄的電影補(bǔ)充進(jìn)去,利用式(10)得到用戶(hù)偏好,再利用式(2)將Y中每個(gè)項(xiàng)目分別與X中所有項(xiàng)目計(jì)算相似度。并利用式(11)求平均值,平均值越大,說(shuō)明此部電影越符合用戶(hù)這段時(shí)間的興趣特征,依據(jù)相似度大小進(jìn)行推薦。
3.4.2 場(chǎng)景 2
當(dāng)用戶(hù)觀看某一部電影時(shí),聚合得到此電影候選集,將候選集中每部電影都與此電影計(jì)算相似度,按相似度大小進(jìn)行推薦。基于協(xié)同過(guò)濾的推薦方法在整個(gè)系統(tǒng)啟動(dòng)的初始階段,由于用戶(hù)數(shù)量少、點(diǎn)播歷史記錄的缺乏,會(huì)出現(xiàn)冷啟動(dòng)問(wèn)題。而對(duì)于其他網(wǎng)站聚合,不需要本系統(tǒng)中的相似用戶(hù)。另外,針對(duì)新用戶(hù)加入做如下處理:用戶(hù)加入時(shí),向用戶(hù)隨機(jī)推薦熱門(mén)電影,當(dāng)用戶(hù)選擇某部電影時(shí),向用戶(hù)隨機(jī)推薦網(wǎng)站聚合得到的相關(guān)電源,隨著觀看數(shù)量增加,更新對(duì)于每個(gè)屬性的偏好權(quán)重。這樣可在一定程度上解決新用戶(hù)問(wèn)題。
本文實(shí)驗(yàn)數(shù)據(jù)來(lái)自豆瓣電影網(wǎng),用戶(hù)可以對(duì)看過(guò)的電影進(jìn)行1~5的評(píng)分。本文電影信息數(shù)據(jù)庫(kù)采集豆瓣電影上的十萬(wàn)部電影。被聚合的網(wǎng)站選取用戶(hù)數(shù)量較多、信息比較全面的熱門(mén)影視資料網(wǎng)站或者在線視頻播放網(wǎng)站,如百度影視寶庫(kù)、時(shí)光網(wǎng)、樂(lè)視網(wǎng)、電影網(wǎng)、愛(ài)奇藝等。
本實(shí)驗(yàn)用于驗(yàn)證算法在應(yīng)用場(chǎng)景1時(shí)的有效性。隨機(jī)抽取豆瓣電影中100位用戶(hù),用戶(hù)歷史記錄條目大于100。選取用戶(hù)評(píng)分大于2的電影,構(gòu)成實(shí)驗(yàn)數(shù)據(jù)集。每部電影通過(guò)聚合網(wǎng)站聚合可得到約30部~40部相關(guān)電影。隨機(jī)抽取數(shù)據(jù)集80%作為訓(xùn)練集,20%作為測(cè)試集。在訓(xùn)練集中分別抽取在時(shí)間上連續(xù)的α部電影構(gòu)成某段時(shí)間觀看的電影集,按照3.4.1節(jié)所述策略計(jì)算相似度,依據(jù)相似度大小依次推薦10部電影。對(duì)照算法采用協(xié)同過(guò)濾及基于內(nèi)容的推薦方法結(jié)合的算法,首先利用協(xié)同過(guò)濾得到15個(gè)相似用戶(hù)[11],相似用戶(hù)計(jì)算采用余弦相似度[12]。從而得到待推薦電影集,再選取以某個(gè)時(shí)間點(diǎn)開(kāi)始的一段連續(xù)時(shí)間內(nèi)用戶(hù)感興趣的α部電影進(jìn)行基于內(nèi)容的推薦。算法有效性利用推薦準(zhǔn)確度來(lái)衡量:
在 α 取8 個(gè)不同值時(shí)(5,10,15,20,25,30,35,40),實(shí)驗(yàn)結(jié)果如圖2所示。
圖2 推薦準(zhǔn)確度對(duì)比
實(shí)驗(yàn)結(jié)果顯示,比較基于協(xié)同過(guò)濾和內(nèi)容的推薦,本文提出的方法平均準(zhǔn)確度提高了10%以上。另外,從圖中可以看出:2種方法準(zhǔn)確率都隨著α值的改變而變化,且都在α取20左右時(shí),有較高的推薦準(zhǔn)確度。這是因?yàn)?,在α值較小時(shí),用戶(hù)的觀看記錄較小,從統(tǒng)計(jì)學(xué)意義上講比較隨機(jī),不能準(zhǔn)確地表現(xiàn)出用戶(hù)某段時(shí)期的興趣特征,而當(dāng)α值較高時(shí),在這個(gè)時(shí)間段內(nèi),用戶(hù)可能已經(jīng)產(chǎn)生了興趣漂移,推薦準(zhǔn)確度會(huì)下降。
本實(shí)驗(yàn)驗(yàn)證推薦算法在應(yīng)用場(chǎng)景2中的有效性。構(gòu)建一個(gè)實(shí)時(shí)推薦的模擬系統(tǒng),招募30位電影愛(ài)好者作為測(cè)試用戶(hù)。根據(jù)實(shí)驗(yàn)1結(jié)果,系統(tǒng)首先令用戶(hù)輸入自己最近看過(guò)的、認(rèn)為比較好的15部~25部電影。在得到用戶(hù)歷史記錄后,算出偏好權(quán)重。在此基礎(chǔ)上每當(dāng)用戶(hù)點(diǎn)開(kāi)一個(gè)電影,系統(tǒng)界面展示2組推薦結(jié)果,每組20部。第1組推薦結(jié)果由本文算法給出,第2組由協(xié)同過(guò)濾和基于內(nèi)容的推薦算法給出。每當(dāng)?shù)玫?組推薦,系統(tǒng)要求用戶(hù)分別對(duì)推薦結(jié)果的推薦質(zhì)量做出評(píng)價(jià),評(píng)價(jià)標(biāo)準(zhǔn)為是否相似且感興趣。質(zhì)量等級(jí)分為好、一般、差。為每位用戶(hù)進(jìn)行30次實(shí)時(shí)推薦后,統(tǒng)計(jì)得到如圖3所示的結(jié)果。結(jié)果顯示,本文方法在推薦質(zhì)量上要優(yōu)于基于協(xié)同過(guò)濾和內(nèi)容的推薦方法。
圖3 實(shí)時(shí)推薦質(zhì)量對(duì)比
本文提出一種基于網(wǎng)站聚合和知識(shí)的推薦方法。新系統(tǒng)在建立源數(shù)據(jù)庫(kù)時(shí)不依靠其他用戶(hù)群,而是聚合其他權(quán)威網(wǎng)站得到相關(guān)推薦項(xiàng)目。構(gòu)建包含影人信息的領(lǐng)域本體模型,可防止過(guò)度專(zhuān)業(yè)化。并通過(guò)屬性的聚集程度得到用戶(hù)偏好差異。實(shí)驗(yàn)結(jié)果表明,本文方法的推薦準(zhǔn)確率和推薦質(zhì)量較傳統(tǒng)方法有明顯提高,且可解決冷啟動(dòng)、稀疏性等問(wèn)題。下一步工作將深入挖掘電影領(lǐng)域本體,例如對(duì)電影社會(huì)化標(biāo)簽、簡(jiǎn)介關(guān)鍵詞等方面的語(yǔ)義關(guān)聯(lián)挖掘,以改善推薦效果。
[1]許海玲,吳 瀟,李曉東,等.互聯(lián)網(wǎng)推薦系統(tǒng)比較研究[J].軟件學(xué)報(bào),2009,20(2):350-362.
[2]Zimmerm J,KurapatiK,Buczak A L,etal.TV Personalization System[D].Pittsburgh,USA:Carnegie Mellon University,2004.
[3]易 明.基于Web挖掘的個(gè)性化信息推薦[M].北京:科學(xué)出版社,2010.
[4]李忠俊,周啟海,帥青紅.一種基于內(nèi)容和協(xié)同過(guò)濾同構(gòu)化整合的推薦系統(tǒng)模型[J].計(jì)算機(jī)科學(xué),2009,36(12):142-145.
[5]鄧志鴻,唐世渭,張 銘,等.Ontology研究綜述[J].北京大學(xué)學(xué)報(bào):自然科學(xué)版,2002,38(5):730-738.
[6]李 寧,王子磊,吳 剛,等.個(gè)性化影片推薦系統(tǒng)中用戶(hù)模型研究[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(12):51-54.
[7]Jeh G,Widom J.SimRank:A Measure of Structuralcontext Similarity[C]//Proc.of the 8th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.Edmonton,Canada:ACM Press,2002:538-543.
[8]邱 哲,符滔滔.開(kāi)發(fā)自己的搜索引擎:Lucene 2.0+Heritrix[M].北京:人民郵電出版社,2007.
[9]楊卓俊.基于語(yǔ)義詞典的電子商務(wù)商品推薦系統(tǒng)研究[D].杭州:浙江工業(yè)大學(xué),2012.
[10]涂金龍,涂風(fēng)華.一種綜合標(biāo)簽和時(shí)間因素的個(gè)性化推薦方法[J].計(jì)算機(jī)應(yīng)用研究,2013,30(4):1044-1047.
[11]鄧愛(ài)林,朱揚(yáng)勇,施伯樂(lè).基于項(xiàng)目評(píng)分預(yù)測(cè)的協(xié)同過(guò)濾推薦算法[J].軟件學(xué)報(bào),2003,14(9):1621-1628.
[12]徐 翔,王煦法.協(xié)同過(guò)濾算法中的相似度優(yōu)化方法[J].計(jì)算機(jī)工程,2010,36(6):52-54.