朱若馨,李研偉
(陜西國防工業職業技術學院 陜西 西安 710300)
近年來,很多用戶都喜歡使用在線新聞網站和手機APP來進行新聞閱讀[1]。但是,由于每天都有大量新聞產生和發布,用戶難以在有限的時間內從大量新聞中找到自己感興趣的內容,面臨嚴重的新聞信息過載[2]。個性化新聞推薦可以根據用戶個人興趣對候選新聞進行排序展示,是提升用戶在線新聞閱讀體驗的一項重要技術。如何設計一個高效、精準的個性化推薦系統是新聞平臺的關鍵問題[3]。
個性化新聞推薦的簡化流程見圖1[4-5]:從用戶閱讀歷史中挖掘用戶興趣,再根據用戶興趣對候選新聞進行個性化排序,最終將排名靠前的新聞展示給用戶。雖然對推薦系統已開展了廣泛的研究,但現有推薦算法仍然存在局限性:(1)新聞有強時效性。新聞平臺每天會產生大量新的新聞,而舊的新聞會快速消失。這帶來了嚴重的冷啟動問題,導致許多如協同過濾等依賴用戶行為的推薦方法無法使用;(2)新聞文章具有豐富的文本,這些文本包含重要信息未被利用,不能簡單地使用ID等特征來表示新聞;(3)準確地建模用戶對新聞的興趣存在挑戰。用戶的興趣通常比較多樣并隨時間動態演化,需要基于大量的用戶反饋行為來挖掘和建模。然而新聞平臺上往往不具有顯式的用戶反饋,甚至隱式反饋也十分稀疏。因此,新聞推薦是一個重要并具有挑戰性的研究課題。

圖1 個性化新聞推薦流程
推薦系統設計主要可以分為3個部分:數據信息層、數據處理層和用戶交互層。在數據信息層,主要將用戶的行為,如在APP上的閱讀新聞、停留時間等信息存儲到Hadoop集群中,作為離線日志使用;在數據處理層,主要使用深度學習的方法從離線日志中提取用戶的興趣,同時在新聞庫中使用用戶的興趣進行匹配,生成候選新聞集;在用戶交互層中,我們將候選新聞集反饋給用戶,當用戶產生瀏覽、點擊等行為后,再將日志落地到Hadoop集群中,以此來優化推薦系統。
在本文中,我們利用新聞豐富的文本信息來實現用戶的個性化新聞推薦。
在基于內容的推薦系統中,我們通過對新聞標題進行文本分類,對已閱讀及未閱讀的新聞打上相應標簽。基于新聞標簽進行推薦的核心就是如何對文本進行準確的自動化分類。本文的推薦系統中,我們使用TextCNN模型對文本進行分類。
Kim首先提出了TextCNN模型。網絡結構見圖2。

圖2 TextCNN網絡結構


其中,b是偏置,f是一個非線性函數。將卷積核w應用在當前句子所有的可能位置{x1:h,x2:h+1,…,xn-h+1:n},會得到一個特征向量:

然后我們在得到的特征向量上,使用max-pooling操作,在特征向量中取最大值,max-polling操作是獲取對當前卷積核響應最大的值,同時還可以將變長的向量長度變為定長的特征,這樣我們就可以得到卷積核對應的特征值。
在實際使用中,我們可以使用多個卷積核與多層卷積網絡進行深度特征的提取,最后利用全連接網絡使輸出特征數與分類類別匹配,來實現文本分類。
本文實驗環境的設置和實驗平臺的搭建如下:
(1)硬件方面:Windows10系統、CPU Inter(R) Core(TM) i7-8750H 2.20 GHz、內存8 GB。
(2)軟件和依賴的庫:Python3.7、Tensorflow_gpu-1.13.1等。
3.2.1 TextCNN模型可調參數設置
在采用TextCNN模型進行文本分類時,需要對參數進行選擇。對于模型中的可變參數,我們選擇了表1所示的參數。

表1 TextCNN可調參數設置
3.2.2 實驗設計
在實驗中,我們使用THUCNews數據集進行測試。THUCNews數據集是根據新浪新聞RSS訂閱頻道2005-2011年間的歷史數據篩選過濾生成,包含74萬篇新聞文檔(2.19 GB),劃分出14個候選分類類別:財經、彩票、房產、股票、家居、教育、科技、社會、時尚、時政、體育、星座、游戲、娛樂。
我們選擇多個基準驗證TextCNN 模型的分類性能,將TextCNN與傳統的機器學習方法進行對比。其中,TextCNN采用一層卷積層稱為TextCNN-1,TextCNN-2采用兩層卷積網絡,傳統機器學習方法包括樸素貝葉斯(NB)、最近鄰(KNN)和支持向量機(SVM)。使用各分類整體平均精確率(precision)、召回率(recall)和 F1值(F-measure)評價不同模型的分類效果,作為衡量分類器性能的標準。
3.2.3 結果分析
在訓練過程中,我們隨機選取90%作為訓練集,5%作為測試集,5%作為驗證集,結果見表2。

表2 模型分類結果比較
通過表2可以發現:(1)采用預訓練詞向量,作為模型的特征輸入分類模型,在相同的數據集上各個分類模型均取得了80%以上的精確率,說明預訓練詞向量表的的文本信息基本可以滿足分類需要。(2)無論單層卷積神經網絡還是多層卷積神經網絡,取得的分類效果都優于3種傳統機器學習算法,說明CNN模型在文本分類上有巨大的提升,相比于Naive Bayesian、KNN和SVM,TextCNN-2的F1值分別提升了9.97%、6.38%、4.52%。因此,我們可以得出,使用TextCNN能夠提取更加全面的局部文本塊特征信息,在文本分類效果上有很好的提升。
網頁前端使用CSS和HTML完成頁面布局,Java Script實現新聞的動態效果。根據預先設定的新聞分類標簽,我們將相應的新聞歸類到不同的欄目。同時,在首頁根據用戶興趣實現個性化推薦,使網頁實現千人千面,不同的用戶看到的是自己感興趣的新聞。
在網站后端,我們使用Hadoop存儲用戶的瀏覽日志,然后通過個性化推薦模塊產生候選新聞后,將其存儲在Redis中,在前端發送請求給后端后,可以迅速將推薦候選新聞反饋給前端,實現高并發條件下的高可用性。此外,我們在后端部署基于Tensorflow的深度學習模型,使系統獲取的新聞可以實現實時分類打標簽。
本文針對現有推薦系統的局限性,提出一種基于內容的新聞個性化推薦算法。該算法利用新聞豐富的文本信息,引入自然語言處理中的文本分類技術,使用TextCNN模型對新聞自動標注,實現新聞的個性化推薦。相較于傳統的編輯推薦模式,可以省去大量的人工操作,還可以根據不同的用戶推薦不同的內容,做到千人千面。調查顯示,基于內容的個性化推薦系統,受到用戶的廣泛好評。