鄔登峰, 白 琳, 王 濤, 李 慧, 許舒人
1(中國科學院大學,北京 100049)
2(中國科學院 軟件研究所 軟件工程技術(shù)研究開發(fā)中心,北京 100190)
3(北京智識企業(yè)管理咨詢有限公司,北京 100101)
針對文庫系統(tǒng)中文檔數(shù)據(jù)量較大,且數(shù)據(jù)量日趨增多,會導致大量文檔無法有效展現(xiàn),用戶難以精準地獲取到所需文檔,引發(fā)數(shù)據(jù)利用率降低的問題. 因此迫切地需要一種機器輔助功能幫助用戶做一些信息篩選的工作. 傳統(tǒng)的基于文檔分類、基于用戶搜索的方法,在文檔數(shù)據(jù)量達到較大規(guī)模時,篩選能力有限,且無法為用戶發(fā)掘潛在的可能感興趣的內(nèi)容,可以考慮引入推薦系統(tǒng). 文庫系統(tǒng)中的推薦,本質(zhì)即是文本內(nèi)容的推薦,因此可以參考新聞推薦領(lǐng)域的方法,如文獻[1]中的協(xié)同過濾的推薦方法,通過計算用戶行為的相似度,為目標用戶生成推薦列表,但是協(xié)同過濾方法的冷啟動問題較為嚴重. 文獻[2]中的基于內(nèi)容的推薦方法,通過匹配用戶興趣與文本特征的相似度從而產(chǎn)生推薦結(jié)果,但是這種方法只能為用戶推薦與其歷史興趣相似的內(nèi)容,因此在新穎度上存在不足,無法發(fā)掘用戶潛在興趣.此外,文檔推薦系統(tǒng)的一個重要基礎(chǔ)是精準的用戶興趣及文檔特征模型,業(yè)界一般基于文本內(nèi)容抽取特征詞語后采用空間向量模型來表示,但是直接采用詞語特征向量模型來計算,存在著向量維度過高、數(shù)據(jù)稀疏的問題.
針對上述問題,本文提出了一種基于多粒度特征和混合算法的文檔推薦系統(tǒng),系統(tǒng)綜合了用戶的顯式反饋和隱式反饋為用戶興趣建模,且在用戶興趣模型和文檔特征模型中分別設(shè)計了詞語和短語兩個粒度,這種建模方法既保證了模型的精準度,也避免了模型的過擬合問題. 系統(tǒng)還綜合了時間窗口法和遺忘函數(shù)法動態(tài)更新用戶興趣模型,確保模型的精準可靠. 在推薦方法上,系統(tǒng)采用了基于內(nèi)容推薦和協(xié)同過濾推薦相結(jié)合的混合推薦方法,彌補了單一算法的不足.
推薦系統(tǒng)為用戶提供個性化服務(wù)的過程中,服務(wù)質(zhì)量高度依賴于系統(tǒng)掌握的用戶興趣的準確程度,因此確定用戶興趣模型并針對用戶興趣的變化及時更新模型也是提高推薦系統(tǒng)服務(wù)質(zhì)量的一個重要方面.
基于向量空間模型的方法是業(yè)界常用的方法,該方法通過抽取所采集用戶興趣數(shù)據(jù)的特征項并計算相應(yīng)權(quán)值構(gòu)成表示用戶興趣模型的向量[3]. 這種方法在一定程度上能夠準確刻畫用戶興趣,且簡單易實現(xiàn),但也存在著一些問題,如某些標簽缺乏語義明確性,無法體現(xiàn)用戶個性化的興趣偏好,且此方法中興趣標簽是離散的,在大型應(yīng)用系統(tǒng)中可能存在著數(shù)據(jù)稀疏的問題.
此外,區(qū)別于文檔特征模型一次建立始終有效的特點,用戶興趣模型還面臨著動態(tài)漂移的問題,針對該問題的主流解決方案有時間窗口法和遺忘函數(shù)法. 時間窗口法[4]認為用戶只對最近訪問的概念感興趣,利用滑動時間窗濾除過時的興趣,時間窗口法簡單易實現(xiàn),且能兼顧用戶興趣的累計計算以及歷史興趣的淘汰策略,但是其應(yīng)用效果非常依賴于時間窗口大小的取值,而且存在用戶興趣突變的問題. 遺忘函數(shù)法[5]假設(shè)用戶興趣的變遷是一種漸進的過程,即用戶興趣隨著時間的流逝逐漸減弱,遺忘的速度是先快后慢,對于用戶長時間沒有更新的特征,認為其不能再代表用戶的當前興趣,可以通過遺忘函數(shù)讓其不斷“衰老”來達到過濾的目的[6],如Maloof和Michalski等采用了一種遺忘函數(shù)處理用戶興趣特征[7]. 遺忘函數(shù)法符合人類記憶衰減特性,但是該方法需要輔助設(shè)計淘汰策略,用以淘汰無效特征,避免大量無效特征積累影響系統(tǒng)效果.
推薦系統(tǒng)[8,9]是一種重要的信息過濾機制,可以有效地解決信息過載的問題. 通過挖掘用戶和信息之間的關(guān)聯(lián)關(guān)系,從而幫助用戶從大量的信息中獲取到他們可能會感興趣的內(nèi)容.
推薦算法是整個推薦系統(tǒng)最核心的部分,在很大程度上決定了推薦效果. 業(yè)界主流算法主要有基于內(nèi)容的推薦(Content-Based Recommendation)、協(xié)同過濾(Collaborative Filtering)和混合推薦方法(Hybrid Approach)[10]等.
基于內(nèi)容的方法是信息檢索領(lǐng)域的重要研究內(nèi)容,是指通過比較資源和用戶興趣模型的相似程度向用戶推薦信息的方式,該方法較多的應(yīng)用在可計算的文本領(lǐng)域,如瀏覽頁面的推薦、新聞推薦等[11-14],這種推薦方式簡單有效,不需要領(lǐng)域知識,也有著比較成熟的分類學習方法能夠為其提供支持,如數(shù)據(jù)挖掘、聚類分析等,但是也存在著一些缺點,如很難推薦較為新穎的結(jié)果,對新用戶的推薦處理較為困難等. 業(yè)界常用的用于比對內(nèi)容相似度的算法有: 余弦相似度算法,Jaccard系數(shù)值計算法等.
協(xié)同過濾的方法是推薦系統(tǒng)中常用的算法之一,其基本思想是計算用戶間或項目間的相似度,然后根據(jù)該相似度,預(yù)測目標用戶對目標項目的偏好程度而產(chǎn)生推薦結(jié)果[15,16]. 協(xié)同過濾算法不需要考慮被推薦項目的具體內(nèi)容[17],可以為用戶提供較為新穎的推薦結(jié)果. 目前,主流的協(xié)同過濾算法分為兩類: 基于用戶的協(xié)同過濾算法[18]和基于項目的協(xié)同過濾算法[19]. 基于用戶的協(xié)同過濾算法根據(jù)用戶對項目的偏好,計算用戶之間的相似度,找出目標用戶的最近鄰居集合,基于近鄰用戶的偏好為目標用戶生成推薦集[20,21],該算法能夠有效地利用相似用戶的反饋信息,為目標用戶產(chǎn)生推薦集,但是當用戶和項目間的關(guān)聯(lián)數(shù)據(jù)較少時,無法精準計算出目標用戶的相似用戶群體,此時的冷啟動問題較為嚴重[22,23]. 基于項目的協(xié)同過濾算法根據(jù)用戶操作過的項目,對項目之間的相似度進行預(yù)測,這在一定程度上減少了冷啟動問題對推薦系統(tǒng)質(zhì)量的影響,但是這種方法生成的推薦集覆蓋率低,且無法為用戶提供較為新穎的推薦[24].
針對傳統(tǒng)方法中用戶興趣及文檔特征建模時存在的問題. 本系統(tǒng)中,基于空間向量模型做了進一步的優(yōu)化,精細劃分特征模型,將用戶興趣及文檔特征模型分為短語和詞語兩個粒度. 短語粒度上采用了空間向量模型來刻畫用戶及文檔的特征,計算用戶興趣或文檔中涉及到某特征標簽的次數(shù)來刻畫模型,次數(shù)越多則表明該用戶或文檔與該主題的相關(guān)度越高,最終以帶有權(quán)重值的特征標簽向量對用戶興趣及文檔特征建模,這種方法簡便易實現(xiàn),但在應(yīng)用到文檔推薦系統(tǒng)中時,也存在一些缺點,由于特征短語來源于海量文檔內(nèi)容,短語分布離散,過于稀疏,無法有效地進行相似度匹配計算,因此,在本系統(tǒng)中設(shè)計了詞語粒度上的特征,相較于短語粒度的空間向量模型而言,改善了特征標簽稀疏的問題,也提高了系統(tǒng)的覆蓋率. 為建立上述兩個粒度的特征模型,在實現(xiàn)中,需要首先從文本數(shù)據(jù)中提取出能夠代表文本特征的關(guān)鍵短語以及關(guān)鍵詞語,本文基于開源中文處理項目HanLP提供的API (Application Programming Interface)來實現(xiàn),HanLP提供了標準分詞、NLP分詞、索引分詞、最短路徑分詞、詞典分詞等多種分詞方式,在關(guān)鍵短語提取方面提供了基于互信息和左右信息熵的短語提取識別解決方案,在工程實現(xiàn)時,直接調(diào)用相關(guān)接口即可,簡單易實現(xiàn).
對用戶興趣建模時,為確保用戶興趣模型的精準可靠,系統(tǒng)綜合了多項數(shù)據(jù)來源分析用戶的興趣特征,包括用戶的顯式反饋和隱式反饋,本文中用戶顯式反饋指用戶在瀏覽文檔時點擊“喜歡”或“不喜歡”按鈕,顯式表達偏好的行為,這種通過顯式反饋得到的用戶興趣是比較準確客觀的,但是也存在靈活性差,對用戶工作侵入性強等缺點. 用戶隱式反饋是指用戶使用文庫系統(tǒng)時,系統(tǒng)后臺記錄的用戶日志,這種隱式反饋對用戶是透明的,不會干擾用戶的正常工作,但是基于隱式反饋得到的用戶興趣準確性不夠高,存在一定的偏差.因此,本文中將用戶顯式反饋與隱式反饋相結(jié)合,以達到更好的用戶興趣建模效果.
系統(tǒng)基于用戶的每條顯式反饋日志、搜索日志、瀏覽日志及下載日志,分析該操作關(guān)聯(lián)的文檔標題,從中提取出關(guān)鍵短語、關(guān)鍵詞語,得到刻畫用戶興趣的特征短語空間向量及特征詞語列表[25],綜合所有日志數(shù)據(jù),做累加操作,得到最終的用戶興趣模型及其評分值. 系統(tǒng)在累加的時候?qū)Σ煌瑏碓丛O(shè)置了不同的權(quán)重值,權(quán)重值是基于對業(yè)務(wù)系統(tǒng)的分析及實際使用中數(shù)據(jù)的統(tǒng)計學習得到的. 用戶興趣特征短語權(quán)重評分計算公式如下:
式中,D表示所有不同來源的集合,Wd表示各個不同來源預(yù)設(shè)的權(quán)重值,N表示該短語出現(xiàn)的頻次.
最終,由這些特征短語及其權(quán)重評分值、操作日期構(gòu)成用戶興趣特征Ti,公式如下:式中,Phrasei表示特征短語,Weighti表示權(quán)重評分值,Timei表示操作日期.
用戶的興趣模型由若干個獨立的興趣特征組成,公式如下:
此即為短語粒度上的用戶興趣特征空間向量.
最后,系統(tǒng)將短語粒度上的用戶興趣特征空間向量作為中間結(jié)果保存到數(shù)據(jù)庫中,以備后續(xù)計算使用.
詞語粒度上,用戶興趣模型由關(guān)鍵詞語列表組成,公式如下:
式中,Wi表示用戶興趣特征詞列表中的單個關(guān)鍵詞語.
詞語粒度的用戶興趣特征,是基于短語興趣特征計算而來的,對短語特征取出全部的Phrase數(shù)據(jù),進行分詞處理,去重后得到一個詞語列表,即為詞語粒度的用戶興趣特征,本文中調(diào)用了HanLP提供的標準分詞接口實現(xiàn).
文檔特征的建模,類似于用戶興趣建模,分別處理文檔路徑、文檔標題、文檔摘要以及附件內(nèi)容,結(jié)合不同來源的權(quán)重值對多個關(guān)鍵短語列表進行累加合并,得到短語粒度的文檔特征模型,其中文檔路徑為目標文檔的分級路徑,包含了其分類信息. 對合并后的特征短語空間向量做進一步的分詞、去重處理,即得到詞語粒度的文檔特征.
針對用戶興趣動態(tài)漂移的問題,系統(tǒng)中綜合滑動窗口法和遺忘函數(shù)法更新用戶興趣模型,既能將用戶無效興趣特征淘汰,也能動態(tài)更新用戶有效興趣特征的權(quán)重值,這是符合自然狀態(tài)下人類興趣漂移狀態(tài)的.
時間窗口法,基于對實際業(yè)務(wù)系統(tǒng)運行數(shù)據(jù)的統(tǒng)計分析,設(shè)置時間窗口大小K=15,單位是: 日. 即對最近K日內(nèi)用戶興趣進行累積計算. 具體計算過程如下:系統(tǒng)初始化時,分析近K日內(nèi)所有日志數(shù)據(jù),得到用戶的初始興趣模型. 后續(xù)每日更新的時候,則分析當日活躍用戶日志數(shù)據(jù),進行如下操作:
(1) 將新出現(xiàn)的特征短語加入用戶興趣特征池中;
(2) 將當日涉及到的,而用戶興趣特征池中已有的興趣特征短語的時間戳更新為當前日期,權(quán)重值更新為舊權(quán)重值與當日權(quán)重值之和;
(3) 將時間戳超出K日窗口大小的興趣特征淘汰,這樣即可保證用戶興趣特征池中所有興趣特征都是在K日窗口內(nèi)的數(shù)據(jù).
遺忘函數(shù)法,對時間窗口法維護的特征池中每個特征短語的權(quán)重值進行衰減,計算公式如下:
其中S為遺忘因子,由參考文獻[6]中提到的方法確定.
通過相關(guān)技術(shù)一節(jié)的分析可以發(fā)現(xiàn),基于內(nèi)容推薦算法和協(xié)同過濾算法分別有擅長的領(lǐng)域及適用性較差的領(lǐng)域,因此,在本系統(tǒng)中,綜合了兩種算法形成一個混合的推薦系統(tǒng),這樣既可以發(fā)揮各自的優(yōu)點,也能彌補單一算法的不足[26].
由于協(xié)同過濾算法分為基于用戶的協(xié)同過濾和基于項目的協(xié)同過濾兩種,考慮本系統(tǒng)的應(yīng)用場景中與用戶對個人興趣傳承的需求相比,更需要關(guān)注相同興趣群體中的熱點事件,因此,采用了基于用戶的協(xié)同過濾算法,且從計算量和存儲需求考慮,本系統(tǒng)中用戶數(shù)量遠遠少于文檔數(shù)量,采用基于用戶的協(xié)同過濾算法也是較為合適的.
系統(tǒng)中的基于協(xié)同過濾算法,首先計算目標用戶的相似用戶群,將相似用戶群中用戶感興趣的文檔推薦給目標用戶,在這個過程中需要和目標用戶的歷史數(shù)據(jù)比對,過濾已操作過的文檔,避免重復(fù)推薦,算法的流程圖如圖1所示.
圖1 協(xié)同過濾推薦模塊流程圖
首先,基于用戶興趣模型計算用戶之間的相似度,確定目標用戶的相似用戶群,這里分別處理短語和詞語兩個粒度上的特征.
短語粒度上,采用余弦相似度的算法來計算兩個不同用戶之間的相似度,即取出兩個用戶的短語特征向量,計算兩者的余弦夾角值,公式如下:
式中Uw,Uv分別表示兩個不同用戶的短語粒度上的興趣特征向量.
詞語粒度上,采用Jaccard系數(shù)值來計算用戶間的相似度,Jaccard系數(shù)是兩個集合交集與并集的元素數(shù)目之比,用于測量兩個集合在共同項目上的重疊度. 其匹配兩個對象之間的相似度時,僅關(guān)注特征是否存在,而不關(guān)注該特征的權(quán)重值. 此處,在兩個不同用戶的特征詞語集合之間進行計算,公式如下:式中N(w),N(v)分別表示兩個不同用戶的特征詞語集合.
經(jīng)過短語、詞語兩個粒度上的相似度計算,系統(tǒng)分別得到了Scorepcol,Scorewcol兩個值,將二者相加作為最終的用戶間相似度,公式如下:
算法中將目標用戶興趣模型分別與其他用戶的興趣模型進行匹配計算,按照相似度數(shù)值排序,取前M個用戶作為最近鄰居集合. 這里M值可以結(jié)合業(yè)務(wù)系統(tǒng)實驗確定. 最后,從這M個近鄰用戶的歷史記錄中取若干篇文檔作為協(xié)同過濾算法的推薦結(jié)果,選取算法如下.
以選取T篇文檔為例,系統(tǒng)在配置文件中設(shè)置近鄰個數(shù)為M個,因此我們從每個近鄰用戶的閱讀歷史中取篇文檔進行推送,此處我們按照時間順序由最近操作的文檔開始向前取,同時在取文檔的時候需要與目標用戶的閱讀歷史列表進行比對,過濾掉目標用戶已經(jīng)操作過的文檔,避免重復(fù)推薦.
基于內(nèi)容的推薦算法,直接匹配用戶興趣模型和文檔特征模型的相似度,為目標用戶生成推薦列表,計算內(nèi)容相似度的算法流程圖如圖2所示.
圖2 基于內(nèi)容推薦模塊流程圖
與協(xié)同過濾部分類似,這里分別處理短語和詞語兩個粒度上的特征.
短語粒度上,基于余弦相似度算法,計算短語粒度上用戶興趣和文檔特征兩個特征向量之間的余弦夾角值作為二者相似度的度量,公式如下:
式中,Up表示短語粒度上的用戶興趣特征向量,Dp表示短語粒度上的文檔特征向量.
詞語粒度上,基于Jaccard系數(shù)值計算用戶與文檔的相似度,公式如下:
式中,N(U)表示用戶特征詞語集合,N(D)表示文檔特征詞語集合.
經(jīng)過短語、詞語兩個粒度上用戶和文檔的相似度計算,系統(tǒng)分別得到了Scorepcon和Scorewcon,將二者相加作為最終的基于內(nèi)容相似度匹配值,公式如下:
算法中將目標用戶的興趣模型分別與推薦庫中的每一篇文檔特征進行匹配計算,基于相似度值Scoretcon排序,取前Z篇文檔作為基于內(nèi)容推薦的結(jié)果. 這里的Z值可以結(jié)合業(yè)務(wù)系統(tǒng)進行實驗確定.
由于最終給用戶展示的推薦列表只有一個,因此需要對基于內(nèi)容推薦和協(xié)同過濾推薦的結(jié)果融合,系統(tǒng)中采用了預(yù)留推薦位的方法,設(shè)最終的推薦列表中包含A篇文檔,融合策略中,將前B個推薦位預(yù)留給基于內(nèi)容推薦,后(A-B)個推薦位預(yù)留給協(xié)同過濾推薦,這里A、B值在系統(tǒng)實現(xiàn)時均設(shè)在配置文件中,可根據(jù)系統(tǒng)運行數(shù)據(jù)修改A、B值,調(diào)整兩種推薦算法的權(quán)重,優(yōu)化系統(tǒng)推薦效果. 此外,對新注冊用戶處理時,由于缺乏基礎(chǔ)數(shù)據(jù),無法確定該用戶的興趣模型,因此無法使用基于內(nèi)容推薦和協(xié)同過濾算法為該用戶生成推薦列表,針對這樣的冷啟動問題,系統(tǒng)中設(shè)置了獨立的冷啟動策略,基于同部門用戶的下載熱度給新用戶推送其可能感興趣的文檔,即將該用戶的同部門用戶下載過的文檔按照下載頻度排序,推薦前列的A篇文檔.
本系統(tǒng)為服務(wù)端程序,以文庫系統(tǒng)中的文檔作為推薦庫. 首先計算出文檔特征、用戶興趣模型,再基于混合推薦算法,生成推薦結(jié)果,返回給文庫系統(tǒng),由文庫系統(tǒng)向用戶展現(xiàn). 本著高效、低耦合、分層、模塊化的原則,將系統(tǒng)劃分為5個模塊,包括: 用戶興趣特征提取模塊、文檔特征提取模塊、基于內(nèi)容推薦模塊、協(xié)同過濾推薦模塊和推薦結(jié)果融合模塊. 組織結(jié)構(gòu)如圖3所示.
圖3 基于多粒度特征和混合算法的文檔推薦系統(tǒng)結(jié)構(gòu)圖
系統(tǒng)通過調(diào)用文庫系統(tǒng)提供的API獲得文檔數(shù)據(jù)、用戶數(shù)據(jù)、日志數(shù)據(jù)等,這些數(shù)據(jù)都由文庫系統(tǒng)維護,文庫系統(tǒng)通過瀏覽器與用戶交互. 基于HanLP提供的API進行分詞、關(guān)鍵短語提取、關(guān)鍵詞語提取.綜合對文檔數(shù)據(jù)、用戶數(shù)據(jù)、日志數(shù)據(jù)的分析,為文檔特征、用戶興趣建模. 從而進行基于內(nèi)容的推薦、協(xié)同過濾推薦并將推薦結(jié)果融合. 推薦結(jié)果會再次通過文庫系統(tǒng)提供的API存回數(shù)據(jù)庫中,供文庫系統(tǒng)使用. 本系統(tǒng)也提供若干API供文庫系統(tǒng)二次開發(fā)使用.
本模塊中實現(xiàn)了文檔特征建模的算法,分析文檔的主要信息,包括文檔路徑、文檔標題、文檔摘要、附件內(nèi)容等,基于HanLP提供的API進行分詞,提取關(guān)鍵短語、關(guān)鍵詞語,建立文檔的特征模型,模塊的類圖如圖4所示.
圖4 文檔特征提取模塊類圖
為提升計算效率,模塊實現(xiàn)時采用了多線程的解決方案. 其中,DocTagThread為文檔特征提取的線程,通過調(diào)用GetDocTags類中提供的方法,分別從文檔路徑、文檔標題、文檔摘要、附件內(nèi)容中獲取到文檔特征,這些文檔數(shù)據(jù)則通過GeiRecommendImpl類中提供的API從文庫系統(tǒng)中獲取. 系統(tǒng)計算得到的文檔特征也會通過GeiRecommendImpl類中提供的API存回數(shù)據(jù)庫中. DocModel類中定義了文檔特征模型的數(shù)據(jù)結(jié)構(gòu). DocRecommendProperties為加載配置文件的類.
本模塊中實現(xiàn)了用戶興趣建模的算法,分析用戶操作日志數(shù)據(jù),經(jīng)過分類計算后,融合得到用戶的興趣模型. 由于用戶興趣漂移現(xiàn)象的存在,在系統(tǒng)日常運營時,此模塊還負責對用戶興趣模型進行更新,模塊的類圖如圖5所示.
圖5 用戶興趣特征提取模塊類圖
為提升計算效率,模塊實現(xiàn)時采用了多線程的解決方案. 其中,UserTagThread為用戶特征提取的線程,通過調(diào)用GetUserTags類中提供的方法,分別從用戶顯式反饋、用戶搜索日志、下載日志、瀏覽日志中提取用戶的興趣特征,這些日志數(shù)據(jù)則通過GeiRecommendImpl類中提供的API從文庫系統(tǒng)中獲取. 系統(tǒng)計算得到的用戶興趣特征也會通過GeiRecommendImpl類中提供的API存回數(shù)據(jù)庫中. PeriodicUpdateUser類中提供了創(chuàng)建線程定時更新用戶興趣模型及推薦列表的方法.UserModel類中的屬性及方法定義了用戶興趣模型的數(shù)據(jù)結(jié)構(gòu).
由于累積K日窗口內(nèi)的興趣特征數(shù)量比較龐大,且大量特征短語權(quán)重評分值較低,使用這些特征進行相似度計算對整個推薦系統(tǒng)的效果提升并不是很明顯,卻會增加系統(tǒng)的計算量,降低系統(tǒng)效率. 因此,系統(tǒng)中采用了以下優(yōu)化策略,選取其中權(quán)重值前10的特征短語組成用戶短語粒度的興趣特征向量,而詞語粒度的詞語集合則由這10個特征短語經(jīng)過分詞生成. 用這樣的短語特征向量和詞語列表來計算相似度,既能保證較好的推薦效果,也降低了系統(tǒng)計算量,這里的數(shù)值10設(shè)置在配置文件中,可以根據(jù)系統(tǒng)運行效果優(yōu)化調(diào)整.
基于實際業(yè)務(wù)需求考慮,系統(tǒng)中對用戶興趣模型及推薦列表的更新都是采用的每日更新策略,即夜間系統(tǒng)低負載時,對當日活躍用戶更新興趣特征模型和推薦列表.
推薦模塊基于已建立的用戶興趣模型及文檔特征模型,使用基于內(nèi)容推薦和協(xié)同過濾推薦結(jié)合的混合推薦算法為目標用戶生成個性化文檔推薦列表. 由于最終在文庫系統(tǒng)中展現(xiàn)給用戶的推薦列表只有一個,因此還需要對推薦列表進行融合.
本模塊中實現(xiàn)了基于內(nèi)容推薦算法,對用戶興趣模型和文檔特征模型進行相似度匹配,依據(jù)相似度數(shù)值從高到低進行篩選,為目標用戶生成推薦列表,模塊的類圖如圖6所示.
圖6 基于內(nèi)容推薦模塊類圖
圖6中,RecommendUserDoc類創(chuàng)建了基于內(nèi)容推薦計算線程CountThread,在該計算線程中進行相似度計算,線程數(shù)可以由配置文件類DocRecommend-Properties根據(jù)配置文件設(shè)定,CountThread計算線程中實現(xiàn)了余弦相似度算法與Jaccard系數(shù)算法,進行詞語、短語兩個粒度上用戶間相似度的計算,其調(diào)用了GeiRecommenderImpl中提供的API獲取存在數(shù)據(jù)庫中的用戶興趣模型和文檔特征模型數(shù)據(jù),最終的輸出結(jié)果是包含文檔ID及相似度評分值的推薦列表. 基于內(nèi)容推薦結(jié)果會作為中間結(jié)果,通過GeiRecommenderImpl類提供的API存回數(shù)據(jù)庫中. RecWithWeight類中定義了基于內(nèi)容推薦列表的數(shù)據(jù)結(jié)構(gòu),包括文檔ID和權(quán)重.
本模塊中實現(xiàn)了基于用戶的協(xié)同過濾推薦算法,對不同用戶的興趣模型進行相似度匹配,按匹配分值從高到低順序,計算出目標用戶的相似用戶群,根據(jù)該相似用戶群中用戶偏好的文檔為目標用戶生成推薦列表,模塊的類圖如圖7所示.
圖7中,CollaborativeFiltering類關(guān)聯(lián)其他類,創(chuàng)建多線程進行相似度計算. Evaluator類中實現(xiàn)了余弦相似度算法以及Jaccard系數(shù)算法,進行詞語、短語兩個粒度上用戶間相似度的計算,其調(diào)用了GeiRecommenderImpl類提供的API獲取計算所需的基礎(chǔ)數(shù)據(jù). 協(xié)同過濾推薦模塊的計算結(jié)果會被作為中間結(jié)果通過GeiRecommenderImpl類提供的API存回數(shù)據(jù)庫中.UserPhraseModel類中定義了短語粒度的用戶興趣模型數(shù)據(jù)結(jié)構(gòu).
圖7 協(xié)同過濾推薦模塊類圖
本模塊對基于內(nèi)容推薦結(jié)果及協(xié)同過濾推薦結(jié)果進行融合,并實現(xiàn)了面向新用戶推薦文檔的冷啟動策略,模塊的類圖如圖8所示.
圖8 推薦結(jié)果融合模塊類圖
圖8中,RecommenderImpl類中提供的方法getRecommendDocsByUserId()實現(xiàn)了融合算法,完成了基于內(nèi)容推薦和協(xié)同過濾推薦結(jié)果的融合,并實現(xiàn)了針對新用戶按照同部門用戶下載熱度進行推薦的策略.GeiRecommenderImpl類提供了與文庫系統(tǒng)交互的API.
本文采用了離線實驗的方法評測推薦系統(tǒng)的效果,基于北京市長城企業(yè)戰(zhàn)略研究所的知識管理平臺KRP系統(tǒng)進行實驗,實驗數(shù)據(jù)集中包含了脫密后的300活躍用戶數(shù)據(jù),17萬篇文檔數(shù)據(jù),以及10日周期內(nèi)的系統(tǒng)運行日志數(shù)據(jù).
實驗中,以活躍用戶的相鄰2個活躍日為一個測試用例. 根據(jù)用戶原有興趣模型結(jié)合首個活躍日用戶操作確定用戶最新的興趣模型,以此為用戶生成推薦列表. 將用戶第二個活躍日所有操作過的且未顯式標記為“不喜歡”的所有文檔認定為用戶感興趣的文檔,基于此,計算系統(tǒng)的準確率、召回率、覆蓋率、新穎度,并對10日實驗周期內(nèi)所有實驗結(jié)果取均值,作為系統(tǒng)最終評測數(shù)據(jù). 經(jīng)多次實驗分析,系統(tǒng)相關(guān)參數(shù)設(shè)置如表1所示時推薦效果較好.
表1 實驗配置
關(guān)于系統(tǒng)的評測指標說明如下[27].
(1)準確率
準確率描述最終的推薦列表中有多少比例是用戶實際感興趣的文檔,如下式計算:
式中,R(u)表示系統(tǒng)為用戶生成的推薦列表,T(u)表示用戶行為展現(xiàn)的實際偏好列表.
(2)召回率
召回率描述的是有多少用戶實際感興趣的文檔包含在最終的推薦列表中,如下式計算:
式中,R(u)表示系統(tǒng)為用戶生成的推薦列表,T(u)表示用戶行為展現(xiàn)的實際偏好列表.
(3)覆蓋率
覆蓋率反映了系統(tǒng)發(fā)掘長尾的能力,覆蓋率越高說明越能夠?qū)㈤L尾中的文檔推薦給用戶,如下式計算:
式中,R(u)表示系統(tǒng)為用戶生成的推薦列表,I表示全部文檔.
(4)新穎度
新穎度可以用被推薦的文檔的平均流行度來度量,如果推薦出的文檔都很熱門,則說明推薦的新穎度較低,否則說明推薦結(jié)果比較新穎; 計算平均流行度的時候?qū)γ總€文檔的流行度取對數(shù),這是因為文檔的流行度分布滿足長尾分布,在取對數(shù)后,流行度的平均值更加穩(wěn)定. 如下式計算:
式中,R(u)表示單個用戶的推薦列表,d表示單個文檔,P(d)表示文檔的流行度,即該文檔在所有用戶感興趣文檔數(shù)據(jù)集中出現(xiàn)的頻次.
實驗中以單獨的基于內(nèi)容推薦列表、協(xié)同過濾推薦列表與混合推薦列表三者對比分析,相關(guān)實驗數(shù)據(jù)如表2所示.
表2 不同推薦算法在實驗數(shù)據(jù)集中的性能
由實驗數(shù)據(jù)分析可知本系統(tǒng)建立的用戶及文檔標簽較為精準可靠,基于混合推薦算法為用戶生成的推薦列表也較為契合用戶實際需求. 系統(tǒng)的準確率、召回率、覆蓋率、新穎度等指標的實驗數(shù)值,直接表明了本系統(tǒng)的有效性. 實際應(yīng)用時,可在更長周期內(nèi)監(jiān)測系統(tǒng)運行數(shù)據(jù),并結(jié)合用戶調(diào)查和在線實驗的測評方法,不斷優(yōu)化系統(tǒng)參數(shù),提升系統(tǒng)綜合性能.
本文介紹了基于多粒度特征和混合算法的文檔推薦系統(tǒng)架構(gòu)、功能模塊、文檔特征模型、用戶興趣模型以及推薦過程的設(shè)計與實現(xiàn). 系統(tǒng)中綜合了用戶顯式反饋和隱式反饋信息,經(jīng)過分詞、關(guān)鍵短語提取、關(guān)鍵詞語提取等操作后,在短語粒度和詞語粒度兩個層面對用戶興趣建模. 系統(tǒng)對文檔特征建模時也分別處理了短語粒度和詞語粒度兩個層面,這種方法既能較為準確的刻畫用戶興趣及文檔特征也在一定程度上解決了數(shù)據(jù)稀疏問題,提升了推薦系統(tǒng)的效果; 在此基礎(chǔ)上,系統(tǒng)使用基于內(nèi)容推薦和協(xié)同過濾推薦混合的推薦算法為用戶生成文檔推薦列表,此方法綜合了兩種推薦算法的優(yōu)點,又互相彌補了單一算法的不足. 在系統(tǒng)實現(xiàn)時,將推薦模型相關(guān)參數(shù)都設(shè)置在配置文件中,增強了系統(tǒng)的靈活性,也便于系統(tǒng)的迭代優(yōu)化. 文章最后對系統(tǒng)的實驗效果分析,得出系統(tǒng)中所用的方法是有效可行的.
1彭菲菲,錢旭. 基于用戶關(guān)注度的個性化新聞推薦系統(tǒng). 計算機應(yīng)用研究,2012,29(3): 1005-1007.
2Li LH,Chu W,Langford J,et al. A contextual-bandit approach to personalized news article recommendation.Proceedings of the 19th International Conference on World Wide Web. Raleigh,NC,USA. 2010. 661-670.
3Vatturi PK,Geyer W,Dugan C,et al. Tag-based filtering for personalized bookmark recommendations. Proceedings of the 17th ACM Conference on Information and Knowledge Management. Napa Valley,CA,USA. 2008. 1395-1396.
4Klinkenberg R. Learning drifting concepts: Example selection vs. example weighting. Intelligent Data Analysis,2004,8(3): 281-300.
5Koychev I,Schwab I. Adaptation to drifting user’s interests.Proceedings of ECML 2000 Workshop: Machine Learning in New Information Age. Barcelona,Spain. 2000. 39-46.
6單蓉. 用戶興趣模型的更新與遺忘機制研究. 微型電腦應(yīng)用,2011,27(7): 10-11.
7Bollacker KD ,Lawrence S,Giles CL. Discovering relevant scientific literature on the Web. IEEE Intelligent Systems and Their Applications,2000,15(2): 42-47. [doi: 10.1109/5254.850826]
8Ricci F,Rokach L,Shapira B,et al. Recommender Systems Handbook. Berlin,Germany: Springer,2011: 1-842.
9王立才,孟祥武,張玉潔. 上下文感知推薦系統(tǒng). 軟件學報,2012,23(1): 1-20.
10許海玲,吳瀟,李曉東,等. 互聯(lián)網(wǎng)推薦系統(tǒng)比較研究. 軟件學報,2009,20(2): 350-362.
11van den Oord A,Dieleman S,Schrauwen B. Deep contentbased music recommendation. Advances in Neural Information Processing Systems 26. Lake Tahoe,NV,USA.2013. 2643-2651.
12Lops P,de Gemmis M,Semeraro G,et al. Content-based and collaborative techniques for tag recommendation: An empirical evaluation. Journal of Intelligent Information Systems,2013,40(1): 41-61. [doi: 10.1007/s10844-012-0215-6]
13Achakulvisut T,Acuna DE,Tulakan R,et al. Science concierge: A fast content-based recommendation system for scientific publications. PLoS One,2016,11(7): e0158423.[doi: 10.1371/journal.pone.0158423]
14Philip S,Shola PB,Abari OJ. Application of content-based approach in research paper recommendation system for a digital library. International Journal of Advances Computer Science and Applications,2014,5(10): 37-40.
15Jeong B,Lee J,Cho H. An iterative semi-explicit rating method for building collaborative recommender systems.Expert Systems with Applications,2009,36(3): 6181-6186.[doi: 10.1016/j.eswa.2008.07.085]
16de Campos LM,Fernández-Luna JM,Huete JF,et al.Combining content-based and collaborative recommendations:A hybrid approach based on Bayesian networks. International Journal of Approximate Reasoning,2010,51(7): 785-799.[doi: 10.1016/j.ijar.2010.04.001]
17楊家慧,劉方愛. 基于巴氏系數(shù)和Jaccard系數(shù)的協(xié)同過濾算法. 計算機應(yīng)用,2016,36(7): 2006-2010.
18Konstan JA,Miller BN,Maltz D,et al. GroupLens: Applying collaborative filtering to Usenet news. Communications of the ACM,1997,40(3): 77-87. [doi: 10.1145/245108.245126]
19Zhao ZD,Shang MS. User-based collaborative-filtering recommendation algorithms on hadoop. Proceedings of the 3rd International Conference on Knowledge Discovery and Data Mining. Phuket,Thailand. 2010. 478-481.
20黃裕洋,金遠平. 一種綜合用戶和項目因素的協(xié)同過濾推薦算法. 東南大學學報(自然科學版),2010,40(5): 917-921.
21Lee SK,Cho YH,Kim SH. Collaborative filtering with ordinal scale-based implicit ratings for mobile music recommendations. Information Sciences,2010,180(11):2142-2155. [doi: 10.1016/j.ins.2010.02.004]
22Lika B,Kolomvatsos K,Hadjiefthymiades S. Facing the cold start problem in recommender systems. Expert Systems with Applications,2014,41(4): 2065-2073. [doi: 10.1016/j.eswa.2013.09.005]
23Fernández-Tobías I,Braunhofer M,Elahi M,et al.Alleviating the new user problem in collaborative filtering by exploiting personality information. User Modeling User-Adapted Interaction,2016,26(2-3): 221-255. [doi: 10.1007/s11257-016-9172-z]
24鄧愛林,朱揚勇,施伯樂. 基于項目評分預(yù)測的協(xié)同過濾推薦算法. 軟件學報,2003,14(9): 1621-1628.
25上海林原信息科技有限公司. HanLP: Han language processing. http://hanlp.linrunsoft.com/. [2015-04-02].
26Lu ZQ,Dou ZC,Lian JX,et al. Content-based collaborative filtering for news topic recommendation. Proceedings of the 29th AAAI Conference on Artificial Intelligence and the 27th Innovative Applications of Artificial Intelligence Conference.Austin,TX,USA. 2015. 217-223.
27項亮. 推薦系統(tǒng)實踐. 北京: 人民郵電出版社,2012.