劉展
摘要:構(gòu)建文章推薦系統(tǒng)需要把文章向量化,然后組建一個(gè)推薦矩陣,矩陣?yán)锏脑獢?shù)據(jù)(數(shù)值)會影響推薦效果,如何使文章推薦矩陣元數(shù)據(jù)更好地與用戶行為關(guān)聯(lián)起來,這里提出了基于TFIDF算法關(guān)聯(lián)到用戶行為的表示和更新機(jī)制,根據(jù)用戶行為的特點(diǎn),給予不同的權(quán)重,最終會影響到元數(shù)據(jù)的取值,進(jìn)而能量化用戶行為標(biāo)簽的興趣值,另一方面也能產(chǎn)生更好的推薦效果。
關(guān)鍵詞:TFIDF算法;余弦相似度;文章推薦系統(tǒng);推薦矩陣;數(shù)據(jù)建模
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)07-0017-04
Abstract: Static Building the article recommendation system needs to vectorize the article, and then form a recommendation matrix. The metadata (value) in the matrix will affect the recommendation effect. How to make the article recommendation matrix metadata better correlated with user behavior, here is based on TFIDF, The algorithm is associated with the representation and update mechanism of the user's behavior. According to the characteristics of the user's behavior, different weights are given, which ultimately affects the value of the metadata, thereby enlightening the interest value of the user's behavior tag, and on the other hand, it can produce better recommended effect.
Key words: TFIDF algorithm; cosine similarity; article recommendation system; recommendation matrix;data modeling
1 背景與意義
隨著移動互聯(lián)網(wǎng)的發(fā)展和智能手機(jī)的廣泛普及,越來越多的人選擇在智能手機(jī)端或者平板設(shè)備上閱讀,網(wǎng)絡(luò)中的資源數(shù)量增長非常迅猛,比如微博、微信公眾號、各種自媒體等,在海量資源用戶面前,用戶很難從中找到自己真正感興趣的內(nèi)容,或者要耗費(fèi)大量的時(shí)間和精力才能找到自己所需要的資源。
如何在眾多資源中,快速地找到我們真正感興趣的資源呢? 個(gè)性化推薦系統(tǒng)就是在這種背景下誕生的。個(gè)性化推薦系統(tǒng)是通過建立用戶與信息產(chǎn)品之間的二元關(guān)系,利用已有的選擇過程或相似性關(guān)系,挖掘每個(gè)用戶潛在感興趣的對象,進(jìn)而進(jìn)行個(gè)性化推薦。高效的推薦系統(tǒng)可以挖掘用戶潛在的消費(fèi)傾向,為眾多的用戶個(gè)性化服務(wù)[1]。
個(gè)性化推薦系統(tǒng)目前已被廣泛應(yīng)用于電子商務(wù)、廣告推送、電影推薦等包含海量信息并需要提供個(gè)性化服務(wù)的應(yīng)用領(lǐng)域。因此,研究個(gè)性化推薦技術(shù)與系統(tǒng)具有非常重要的意義。
2 推薦系統(tǒng)的概念和分類
推薦系統(tǒng)的定義有不少,但被廣泛接受的推薦系統(tǒng)的概念和定義是Resnick 和Varian在1997[2]年給出的:“它是利用電子商務(wù)網(wǎng)站向客戶提供商品信息和建議,幫助用戶決定應(yīng)該購買什么產(chǎn)品,模擬銷售人員幫助客戶完成購買過程”。
推薦算法(或叫推薦策略)是整個(gè)推薦系統(tǒng)中最核心和關(guān)鍵的部分,在很大程度上決定了推薦系統(tǒng)類型和性能的優(yōu)劣[3]。常見的推薦系統(tǒng)可以分為基于內(nèi)容的推薦系統(tǒng)、基于協(xié)同過濾的推薦系統(tǒng)以及混合型推薦系統(tǒng)。
2.1 基于內(nèi)容的推薦系統(tǒng)(Content-based Recommendation)
基于內(nèi)容的推薦算法利用信息內(nèi)容(如文本文檔)和用戶興趣的相似性來過濾信息[4]。根據(jù)物品或內(nèi)容的數(shù)據(jù),發(fā)現(xiàn)物品或內(nèi)容的相關(guān)性,然后基于用戶以前的喜好記錄推薦給用戶相似的物品。如圖1所示:
圖1是基于內(nèi)容推薦的一種示例,電影推薦系統(tǒng)。通過比較電影內(nèi)容的相似度進(jìn)行推薦,電影的類型很大程度能代表用戶關(guān)注的興趣方向。這里簡單地描述了一下電影的類型,把類型轉(zhuǎn)換成元數(shù)據(jù),通過元數(shù)據(jù)計(jì)算電影間的相似度,因?yàn)殡娪耙缓碗娪叭念愋投际顷P(guān)于“愛情”,用戶看了電影一而沒有看電影三,所以我們可以把電影三推薦給用戶,這也就是用戶在交互界面常見的 “您也可能喜歡...”。
2.2 基于協(xié)同過濾的推薦系統(tǒng)(Collaborative Filtering-based Recommendation)
協(xié)同過濾是一種基于一組興趣相同的用戶或項(xiàng)目進(jìn)行的推薦,它根據(jù)鄰居用戶(與目標(biāo)用戶興趣相似的用戶) 的偏好信息產(chǎn)生對目標(biāo)用戶的推薦列表。而基于協(xié)同過濾推薦又分為以下三類:
2.2.1 基于用戶的協(xié)同過濾推薦(User-based Collaborative Filtering Recommendation)
基于用戶的協(xié)同過濾推薦算法是先尋找與目標(biāo)用戶有相同喜好的鄰居,然后根據(jù)目標(biāo)用戶的鄰居的喜好產(chǎn)生向目標(biāo)用戶的進(jìn)行推薦?;驹砭褪抢糜脩粼L問行為的相似性來互相推薦用戶可能感興趣的資源,如圖2所示:
圖2示意出基于用戶的協(xié)同過濾推薦機(jī)制的基本原理。用戶A喜歡物品一、物品三。用戶C喜歡物品一、物品三和物品四。用戶A 和用戶C的偏好是比較類似的,因?yàn)槎枷矚g物品一和物品三。同時(shí)用戶C還喜歡物品四,那么我們可以推斷用戶A可能也會喜歡物品四,因此可以將物品四推薦給用戶A。在電商網(wǎng)站常??梢钥吹筋愃啤百徺I了某產(chǎn)品的用戶,還購買了某某產(chǎn)品”的廣告語。
2.2.2 基于項(xiàng)目的協(xié)同過濾推薦(Item-based Collaborative Filtering Recommendation)
根據(jù)所有用戶對物品或者信息的評價(jià),發(fā)現(xiàn)物品和物品之間的相似度,然后根據(jù)用戶的歷史偏好信息將類似的物品推薦給該用戶,如圖所示:
圖3示意出基于項(xiàng)目的協(xié)同過濾推薦機(jī)制的基本原理。用戶A喜歡了物品一和物品三,可以理解為因?yàn)樗鼈儍烧呦嗨撇艜瑫r(shí)喜歡,而用戶C也喜歡物品一,卻沒有發(fā)現(xiàn)有物品三和它類似,所以把物品三推薦給用戶C。
2.2.3 基于模型的協(xié)同過濾推薦(Model-based Collaborative Filtering Recommendation)
基模型的協(xié)同過濾推薦就是基于樣本的用戶喜好信息,訓(xùn)練一個(gè)推薦模型,然后根據(jù)實(shí)時(shí)的用戶喜好的信息進(jìn)行預(yù)測推薦。
2.3 混合型推薦系統(tǒng)
混合型推薦系統(tǒng)就是把多種不同的推薦算法結(jié)合起來,利用不同算法的優(yōu)點(diǎn)而避免相關(guān)的缺點(diǎn),提高推薦系統(tǒng)的性能和質(zhì)量。
3 相關(guān)算法
3.1 TFIDF算法
TF-IDF(term frequency–inverse document frequency)算法是權(quán)重計(jì)算中經(jīng)典的算法之一 ,如今其應(yīng)用領(lǐng)域已從單純的權(quán)重計(jì)算拓展到特征選擇,領(lǐng)域詞典的構(gòu)造,用戶興趣模板的構(gòu)建等[5] 。 對該算法最通俗的理解就是:一個(gè)詞語在一篇文章中出現(xiàn)次數(shù)越多, 同時(shí)在所有文章中出現(xiàn)次數(shù)越少, 越能夠代表該文章。
3.2 余弦相似度
余弦相似度是計(jì)算相似度的一種方法,該方法首先將個(gè)體的指標(biāo)數(shù)據(jù)映射到向量空間,然后通過測量兩個(gè)個(gè)體向量之間的內(nèi)積空間夾角余弦值來度量它們之間的相似性。兩個(gè)個(gè)體向量夾角越接近0°,即夾角余弦值越大,說明兩個(gè)個(gè)體的相似度越高,而兩個(gè)個(gè)體夾角越接近180°,夾角余弦值越小,說明相似度越低。 如圖4所示,與向量B相比,向量A與向量C的相似度更高[6]。
4 基于TFIDF算法的建模方法
4.1中文分詞和關(guān)鍵詞提取
對文章進(jìn)行分詞和關(guān)鍵詞提取,這里用到了jieba分詞,它能很好支持中文分詞、關(guān)鍵詞提取、詞性標(biāo)等功能。提取關(guān)鍵詞后根據(jù)詞性標(biāo)注對關(guān)鍵詞進(jìn)行篩選,一般會剔除不必要的動詞。
4.2 對TFIDF算法的理解
對于整個(gè)文本庫,文本的數(shù)量和關(guān)鍵詞的數(shù)量都是事先確定好的,所以逆向文件頻率IDF是確定的,很顯然這個(gè)文本庫越大,越能反映這個(gè)詞的權(quán)重。在github開源項(xiàng)目有現(xiàn)成統(tǒng)計(jì)好的數(shù)據(jù)可以用,這些詞都是去掉停用詞的,其中jieba分詞也集成該部分?jǐn)?shù)據(jù)。
所以求取TFIDF值,就是確定詞頻TF部分,它的值可看似一個(gè)概率,取值在[0,1],取值越大越反映該詞T在這個(gè)文章D出現(xiàn)的次數(shù)越多,可能影響越大,關(guān)鍵詞的提取也是利用了該特性,它是根據(jù)TFIDF的值從大到小排列,取值越大越能體現(xiàn)該詞T的關(guān)鍵性。
4.3 文章-關(guān)鍵詞矩陣
在文章推薦系統(tǒng)中,往往需要找出內(nèi)容相似的文章,內(nèi)容相似可作為推薦的一個(gè)很重要的維度。在與用戶的交互中表述為:“你可能也喜歡...”。為了做到這一點(diǎn),可采用“文章-關(guān)鍵詞”推薦矩陣,如表1所示,D1、D2、...D3代表了不同的文章,T1、T2、...T5代表了所有文章出現(xiàn)的關(guān)鍵詞。如果關(guān)鍵詞T1在文章D1中并沒那么重要或者沒有出現(xiàn),那它的對應(yīng)的值就是0,因?yàn)槲覀兛梢哉J(rèn)為詞頻TF=0,根據(jù)公式可知它的TFIDF值也是[v1]。對于一篇文章,所出現(xiàn)的所有關(guān)鍵詞加和應(yīng)該是1。也就是如果求與文章D2最為相似的5篇文章,可通過KNN算法即可得到,也可通過求余弦相似度值來從大到小的top5來確定。
4.4 用戶推薦矩陣
4.4.1 用戶行為數(shù)據(jù)源
現(xiàn)在移動端APP可以收集很多有用的用戶行為數(shù)據(jù),這些數(shù)據(jù)可以為運(yùn)營決策,改善用戶體驗(yàn)等起重要作用,這些用戶數(shù)據(jù)我們一般稱之為“埋點(diǎn)數(shù)據(jù)”。
4.4.2 用戶行為權(quán)重
在用戶閱讀行為數(shù)據(jù)中,對文章的收藏、評論、閱讀時(shí)長、轉(zhuǎn)發(fā)、點(diǎn)贊、點(diǎn)擊等這些行為,對于用戶而言可以認(rèn)為是重要性或者興趣度不一樣,如表2,給出不同的權(quán)重得分,得分越高認(rèn)為重要或者興趣越高,同理,如同表3,在用戶閱讀速度方面,結(jié)合用戶大數(shù)據(jù)分析,綜合給出一個(gè)閱讀速度的均值然后再定義其權(quán)重得分。如果一個(gè)用戶僅僅只是點(diǎn)擊了文章,然后再迅速關(guān)閉,前后花費(fèi)時(shí)間不到1秒,我們一般可以認(rèn)為這個(gè)行為的權(quán)重是很低的,甚至是0。
4.4.3 行為權(quán)重策略
權(quán)重得分應(yīng)該會受時(shí)間影響,這點(diǎn)不難理解,用戶今天感興趣的文章可能因?yàn)榻裉煲呀?jīng)閱讀,到了明天或者將來就不再那么感興趣,因此對于權(quán)重得分要引入時(shí)間衰減機(jī)制,如同表4,時(shí)間越長,曾經(jīng)較高的權(quán)重得分項(xiàng)目,現(xiàn)在因?yàn)闇p去了較高的衰減分值,最終得到一個(gè)較低或者是0的權(quán)重得分。具體的衰減分值要結(jié)合大數(shù)據(jù)分析以及結(jié)合具體業(yè)務(wù)綜合給出。
4.4.4 建模表
通過累積用戶行為歷史,可計(jì)算出某個(gè)用戶不同關(guān)鍵詞(標(biāo)簽)的得分,如同表5,該表是在實(shí)際應(yīng)用中截取的表結(jié)構(gòu)的一個(gè)片段,下面對字段簡單加以介紹。
l 主鍵:數(shù)據(jù)表的唯一索引。
l 設(shè)備ID: 是指用戶設(shè)備的標(biāo)識,android,ios智能(手機(jī))設(shè)備都會有自己唯一的ID,一般都是字符串形式,比如:34D5DEB9-8F84-4BE4-B565-7DC00E0314E0
在軟件開發(fā)中,這個(gè)字符串也是作用一個(gè)用戶的唯一標(biāo)識。特殊的情況是一個(gè)用戶可能有多個(gè)設(shè)備(手機(jī)),在數(shù)據(jù)上要做好映射關(guān)系即可。
l 標(biāo)簽權(quán)重:采用json格式表示數(shù)據(jù),key表示標(biāo)簽指文章提取出來的關(guān)鍵詞,value表示權(quán)重也就是標(biāo)簽后面對應(yīng)的取值。
l 用戶向量:向量的長度是整個(gè)文章提取關(guān)鍵詞數(shù)量,與表1的列數(shù)是一樣的,同時(shí)關(guān)鍵詞的排列也是有順序的,向量里的每個(gè)值代表了該標(biāo)簽的TFIDF值。
4.4.5 建模過程
用戶向量是根據(jù)用戶標(biāo)簽權(quán)重計(jì)算出來的,比如以關(guān)鍵詞T1(標(biāo)簽)為例它的具體計(jì)算方法:
首先拿到T1標(biāo)簽權(quán)重值v1,再拿到該用戶下所有標(biāo)簽的權(quán)重之和v,然后兩者相除v1/v得到的商,該商就是同詞頻TF等價(jià)的數(shù),因?yàn)樗囊饬x和詞頻是等價(jià)的。該商與T1所對應(yīng)的IDF值相乘得到它的TFIDF值,最終根據(jù)T1在向量中的排序位置放入TFIDF值。
在用戶的閱讀歷史可能有多篇文章,所以有多個(gè)標(biāo)簽,根據(jù)上述方法產(chǎn)生和更新多個(gè)標(biāo)簽的TFIDF值,進(jìn)而更新該用戶向量所有值,除此之外還可以加上其他影響因素,比如時(shí)間衰減機(jī)制。
4.4.6 用戶推薦矩陣應(yīng)用
在用戶推薦矩陣中,可以通過近鄰算法或者聚類算法,也可以通過余弦相似度等方法來選擇類似的用戶,這就是達(dá)到“閱讀了該文章的用戶還閱讀了某某文章”的效果,解決越推薦選擇面越窄的問。計(jì)算相似用戶可從人的特征,環(huán)境的特征,文章的特征三個(gè)維度去做權(quán)重評分。
5 結(jié)論
本方法結(jié)合了實(shí)際生產(chǎn)環(huán)境的應(yīng)用,提出了一種文章推薦系統(tǒng)的數(shù)據(jù)建模方法,實(shí)現(xiàn)起來直接簡單,TFIDF算法也易于理解,數(shù)據(jù)來源容易獲取,有比較好的實(shí)際應(yīng)用價(jià)值。
參考文獻(xiàn):
[1] 高鳳麗,孫連山.個(gè)性化推薦系統(tǒng)概述[J].技術(shù)與市場,2015, 22(2):78-79.
[2] Resinick P,Varian H R.Recommender systems[J].Communications of the ACM,1997,40(3):56-58.
[3] 王國霞,劉賀平.個(gè)性化推薦系統(tǒng)綜述[J].計(jì)算機(jī)工程與應(yīng)用,201248(7):66-76.
[4] GB/T 7714曹小娜.一種適用于禮品推薦領(lǐng)域的基于內(nèi)容推薦算法[J].中國科技論文在線,2010.
[5] 施聰鶯,徐朝軍,楊曉江.TFIDF算法研究綜述[J].計(jì)算機(jī)應(yīng)用,2009,29(b06):167-170.
[6] 陳大力,沈巖濤,謝檳竹,等.基于余弦相似度模型的最佳教練遴選算法[J].東北大學(xué)學(xué)報(bào)(自然科學(xué)版), 2014, 35(12):1697-1700.
【通聯(lián)編輯:唐一東】