何穎,劉英華,鄒妍
(赤峰學院數學與計算機科學學院,赤峰024000)
推薦系統(Recommendation System)是一種信息過濾系統,根據分析用戶的興趣特點和歷史行為數據可以預測用戶對物品的評分或偏好,幫助用戶決策分析[1]。推薦系統具有以下兩個最顯著的特性:①主動化。從用戶的角度來看,傳統搜索引擎解決信息過載是最直接,最有效的方式,但它需要用戶有明確的目標,然后輸入目標關鍵詞進行搜索相似的內容,但是在實際生活應用中,用戶有時不明確自己的需求甚至存在潛在的隱形需求,傳統搜索引擎就無法向用戶提供準確的服務。而推薦系統可以不必掌握用戶的明確需求,而是通過分析用戶的歷史行為數據,主動為用戶推薦用戶感興趣的信息。②個性化。推薦系統適合挖掘長尾數據[2](Long tail data),將用戶感興趣的信息個性化推送給用戶,滿足不同用戶不同的需求。推薦系統已經開始廣泛運用在各個領域,但是對于推薦系統的優化仍然是一個難以解決的問題,目前主流的推薦系統技術是協同過濾推薦[3](Collaborative Filtering Recommendation)技術或基于內容推薦(Content-based Recommendations)技術。協同過濾推薦技術一般又可細分為基于物品的協同過濾(Item-Based)和基于用戶(User-Based)的協同過濾推薦,二者本質上沒有區別,一般都是采用最近領[4](KNN)算法,只是各自側重點不同,前者側重于搜索物品相似度,后者側重于搜索相似用戶。內容推薦技術其主要思想是根據用戶過去喜歡的物品,為用戶推薦和用戶過去喜歡的物品相似的物品。
在新聞領域,推薦系統將用戶的特征作為依據,利用用戶歷史行為數據進而挖掘用戶可能感興趣的文章內容并推送給用戶,以減少用戶在新聞搜索上花費的時間和精力。基于內容推薦系統是當下最符合解決新聞信息在傳播過程降低價值和效率的有效解決方式,考慮到單一推薦算法的不足,本系統根據用戶自定義標簽、行為屬性以及興趣愛好作為特征,將用戶感興趣的新聞推送給用戶,對推薦系統進行了個性化推薦策略優化,解除了傳統搜索引擎對明確目標需求的依賴,獲得了有針對性地、用戶喜愛的信息內容。該系統的實現對于提升新聞信息在用戶中的推送效果、為用戶增加良好的用戶體驗都有著較高的參考價值。
在真實應用場景中,往往會使用一系列具有代表性的屬性去描述物品的特征,這些屬性通常可分為結構化屬性和非結構化屬性。本系統構建了新聞熱度值屬性與新聞標簽屬性來描述新聞特征。
(1)新聞熱度值計算。對于特定新聞領域,其熱度的公式計算是:

其中,hotValue 是新聞熱度分,indexValue 表示初始新聞熱度分,userValue 是用戶交互產生的熱度分,timeValue 代表隨時間衰弱的熱度分。新聞入庫后,首先對新聞進行聚類分析,對于不同類型的新聞系統要為其賦予相應的初始熱度值,隨后該新聞進入推薦列表進行熱度值排序;隨著新聞不斷被用戶瀏覽、評價、收藏、閱讀等,這些用戶行為可被視為幫助提升新聞熱度。由于新聞具有較強的時效性,因此新聞發布后,熱度需隨著時間推移而衰弱。
(2)新聞標簽統計。構建自定義標簽是為解決新用戶加入系統后遇到冷啟動問題,用戶選擇標簽后系統生成“為你推薦”內容,這里為用戶選取具有代表性的標簽供用戶選擇:AI、技術、綜藝、互聯網、字節跳動、金融、特朗普、脫貧、公益、美國、新冠肺炎、文化、音樂、電影等標簽。這些社會化的標簽既可以作為新聞資源分類的工具,也可以側面反映用戶個人喜愛偏好。這部分偽代碼如下:

在確定好新聞的特征和用戶的偏好模型后,需要計算新聞之間的相似度。可以使用新聞主題詞或者正文內容的重合度來衡量新聞的相似度。新聞標題是新聞正文的高度概括,當兩則新聞標題重合度越高,新聞正文內容相似度也越高。因此本系統對新聞標題進行分詞處理并提取出關鍵詞,對于關鍵詞相似度計算采用切比雪夫距離[5](Chebyshev Distance)計算方法。在二維平面中,計算點a(x1,y1)與b(x2,y2)橫縱坐標差的最大值的計算公式如下:

在推薦算法中評價用戶是否喜歡物品主流技術是利用監督學習(Supervised Learning)或非監督學習(Unsupervised Learning),評判用戶對物品的喜好程度,根據用戶的喜好程度,為用戶生成一個偏好模型,進而對未知的物品進行分析預測評判。
在基于內容推薦系統中,使用監督學習,利用用戶歷史閱讀數據,學習用戶對各種新聞的偏好程度,然后結合新聞標簽特征計算出用戶對新聞的偏好程度。
推薦系統是基于用戶大量的歷史行為數據為用戶進行相應的推薦,但是對于新加入系統的用戶,系統中尚未存儲新用戶的歷史行為數據,這就是冷啟動問題。常見的解決冷啟動實現方法如下:
(1)基于熱門數據推薦實現冷啟動。熱門數據是指(某類)物品依照事先預定好的規則排序得到的排名靠前的數據。在冷啟動時,推送的熱門數據需要具有多樣性,系統事先不知道用戶的興趣,而用戶可能擁有很多不同的興趣甚至潛在的興趣,為了匹配到用戶復雜多樣的興趣,系統同樣需要提供多樣的熱門數據。熱門數據反映大眾的偏好,雖然不能個性化推薦給用戶,但是當用戶與熱門數據進行交互,產生了歷史行為數據之后,即可進行針對用戶歷史行為數據的個性化推薦,如圖1 所示。

圖1 個性化新聞推薦系統的熱門數據
(2)利用用戶注冊信息。用戶注冊信息是指當新用戶加入系統中所填寫的信息。這些注冊信息是用戶與系統連接的橋梁,系統根據用戶注冊填寫的信息分析用戶感興趣的新聞領域,并把屬于用戶感興趣的領域的新聞推送給用戶。在本系統中新用戶在加入系統時,可以選擇感興趣的自定義標簽,個性化推薦系統根據用戶的注冊時選擇的自定義標簽推送相應的新聞。此外,某些推薦系統將用戶的注冊信息以及第三方社交平臺的個人信息采集起來,利用大數據技術構建一個包括但不限于用戶性別、職業、收入、興趣點等屬性的精準用戶畫像[6],這種基于大數據用戶畫像的推薦系統,其推薦精度得到了大幅提升,收到用戶廣泛好評,如圖2 所示。

圖2 新用戶選擇感興趣的自定義標簽
個性化推薦系統需要靈活多變的推薦策略以滿足不同的用戶的不同需求,系統需要根據用戶的興趣特點推薦其感興趣的對象的活動。個性化推薦策略既能豐富新聞推薦系統的維度,又能滿足不同維度偏好的用戶在瀏覽過程中激發其潛在的興趣發展需求。系統的構建策略和使用流程主要可分為以下幾個階段:
①用戶登錄個性化新聞推薦網站,②網站自動檢測用戶是否注冊,③不同用戶不同的推薦策略,對于新用戶進行注冊并讓用戶選擇感興趣的新聞領域,即選擇自定義新聞標簽。如果不選擇自定義標簽,則自動推薦實時熱門數據;對于已經注冊過用戶,檢測數據庫是否存儲用戶的歷史行為數據,以分析用戶對新聞的偏好程度并把用戶感興趣的新聞推送給用戶。如果用戶雖然已經注冊,但是數據庫尚未存儲用戶的歷史行為數據,則檢測該用戶是否選擇了自定義標簽,若存在自定義標簽,則按自定義標簽予以推薦,沒有選擇自定義標簽則推薦熱門數據,如圖3 所示。

圖3 個性化推薦策略流程圖
Vue.js 是一套輕量級的基于MVVM[7](Model View ViewModel)設計構建用戶界面的漸進式JavaScript 框架,與其他重量級框架不同的是,因其被設計為可自底向上增量開發的逐層應用,使其具有高性能、靈活性強的特點,現如今已被各大互聯網公司和組織采用。Vue.js 的主要優點有:①雙向數據綁定,Vue.js 會實時自動響應數據的變化情況,Vue 通過Object.defineProperty()方法監考數據變化并更新視圖,視圖變化更新數據則可以通過事件監聽實現,通常是使用input 標簽監聽input 事件,這也是Vue.js 最大的優點,通過MVVM思想實現數據的雙向綁定,簡化了Web 前端開發流程,大大提高開發效率。②組件化開發,Vue.js 通過組件把一個整體應用中的各種模塊拆分到一個一個單獨的組件中,降低了耦合度,便于后期維護系統。③具有豐富的組件庫,在實際的開發過程中,豐富的組件庫可以大大減少開發成本,提高開發效率。基于上述優點,本系統使用了Vue.js 框架搭建前端界面,如圖4 所示。

圖4 個性化推薦系統展示界面(部分)
本文提出了基于內容推薦系統的推薦策略優化方法,通過個性化新聞推薦系統把用戶感興趣的新聞及時推薦給用戶,并且解決了傳統推薦系統對目的搜索的依賴以及推薦系統的冷啟動問題,極大提升了用戶粘性,避免用戶流失,因此對于新聞門戶網站,基于內容推薦的個性化推薦系統具有廣闊的應用前景。本文研究的不足之處在于基于內容推薦系統新穎性不足,只能根據用戶的歷史行為數據進行預測推薦,不利于發掘用戶潛在的感興趣的新聞,因此在實際開發中可以結合多種推薦算法對它進行改進,例如可以將協同過濾技術和基于內容的推薦技術結合起來混合使用,可以達到取長補短的效果。這種混合推薦技術[8]可以利用加權、分層等方式進一步提升推薦的精度。通過一系列加權計算,找出兩個算法相應的權重比例組合處理,得到最優結果并推薦給用戶,分層方式把一個算法的輸出作為輸入到另一個算法,逐步縮小推薦候選集,進一步得到更為精確的推薦結果。