沈 華,熊開宇,閆 斌,邱桃榮*
(南昌大學(xué)a管理學(xué)院;b軟件學(xué)院;c.信息工程學(xué)院,江西 南昌 330031)
隨著互聯(lián)網(wǎng)數(shù)據(jù)的逐漸積累,“信息過載”已成為一個普遍現(xiàn)象,用戶無法從海量互聯(lián)網(wǎng)數(shù)據(jù)中快速找到自己感興趣的內(nèi)容。推薦技術(shù)的出現(xiàn)為解決“信息過載”問題提供了方向,并且初步取得了一些成效。目前,許多研究者都在為提升推薦效果進(jìn)行著不斷地嘗試和探索。知識圖譜的出現(xiàn),為提升推薦效果提供了新的思路。
知識圖譜[1-4]于2012年5月被正式提出,Google公司將其定義為一種描述實(shí)體以及實(shí)體之間鏈接關(guān)系的語義網(wǎng)絡(luò)?;谥R圖譜的推薦技術(shù)主要是利用知識圖譜對數(shù)據(jù)進(jìn)行知識抽取,得到更加細(xì)粒度的用戶和內(nèi)容的特征信息,從而更精準(zhǔn)地計(jì)算用戶與用戶、用戶與內(nèi)容以及內(nèi)容與內(nèi)容之間的相似度,進(jìn)而向用戶推薦內(nèi)容。
本文提出了一種基于知識圖譜的用戶興趣表示方法,將文本中的部分語義特征提取出來,用于對用戶興趣進(jìn)行描述。此外,本文基于卷積神經(jīng)網(wǎng)絡(luò)搭建了一個推薦模型,模型的輸入為通過知識圖譜計(jì)算得到的用戶興趣向量,輸出為每篇文本推薦給當(dāng)前用戶的概率。本文使用財(cái)新網(wǎng)的新聞文本數(shù)據(jù)集,設(shè)計(jì)實(shí)驗(yàn)驗(yàn)證了這種基于知識圖譜的推薦方法的有效性。
基于知識圖譜的推薦技術(shù)可以分為基于本體的推薦技術(shù)以及基于開放鏈接數(shù)據(jù)(Linked Open Data,LOD)的推薦技術(shù)兩種。
基于本體的推薦技術(shù)主要是利用本體中細(xì)粒度的、對概念層級關(guān)系的描述,通過對概念的細(xì)粒度的分類描述來更加精準(zhǔn)的對實(shí)體特征進(jìn)行表示,從而挖掘出事實(shí)中蘊(yùn)含的深層次信息[5]。Al-Nazer等[6]使用本體技術(shù)來分析用戶的偏好,構(gòu)建營養(yǎng)和健康導(dǎo)向的用戶檔案,并使用該檔案來組織相關(guān)知識,為用戶推薦更加健康的食品。Kethavarapu等[7]基于求職網(wǎng)站上的崗位數(shù)據(jù),動態(tài)地生成本體,然后通過重排序和相似度算法為求職者推薦崗位信息。Thanapalasingam等[8]構(gòu)建了一個基于本體的科學(xué)出版物推薦系統(tǒng),解決了科學(xué)出版物的主題表征以及推薦問題。盡管基于本體的推薦技術(shù)在一些領(lǐng)域取得了不錯的成效,但要使用基于本體的推薦技術(shù),面臨的首要問題就是本體的構(gòu)建,由于構(gòu)建本體需要相關(guān)領(lǐng)域?qū)<业纳疃葏⑴c,構(gòu)建成本較高,因此在許多的場景下并不適用。
基于開放鏈接數(shù)據(jù)的推薦技術(shù)的核心思路是將知識圖譜的數(shù)據(jù)層中豐富的語義信息應(yīng)用到現(xiàn)有的推薦方法中,用于計(jì)算用戶興趣以及內(nèi)容之間相似程度,從而給出推薦結(jié)果。Lu等[9]基于DBpedia和Wikidata構(gòu)建了一個世界級的旅行知識圖譜,從而在更細(xì)的語義粒度上對旅游景點(diǎn)進(jìn)行描述,提升了針對旅游景點(diǎn)的推薦效果。Wenige等[10]將基于開放鏈接數(shù)據(jù)的推薦方法應(yīng)用于數(shù)字圖書館中的信息檢索和推薦,使用靈活的相似性計(jì)算方法和基于約束的推薦方法對系統(tǒng)中已有的搜索功能進(jìn)行了增強(qiáng)。Chicaiza等[11]在開放鏈接數(shù)據(jù)的基礎(chǔ)上,結(jié)合每個用戶的特征(比如用戶身份)進(jìn)行推薦,從而得到更加適合用戶的推薦結(jié)果。由于開放鏈接數(shù)據(jù)的構(gòu)建難度較小,多采用自動化的方式進(jìn)行構(gòu)建,構(gòu)建成本較低,因此應(yīng)用較為廣泛。
以上基于知識圖譜的推薦方法,為推薦技術(shù)提供了新的實(shí)現(xiàn)思路,并且在特定的應(yīng)用場景下取得了相當(dāng)不俗的成果。但是,現(xiàn)有方法大多專注于使用知識圖譜對用戶特征進(jìn)行更加精細(xì)的描述,忽略了從更加泛化的維度去描述特征,使得對用戶特征的刻畫過于“精準(zhǔn)”,在一定程度上導(dǎo)致了推薦方法的泛化能力欠佳。在實(shí)際的應(yīng)用場景中,當(dāng)用戶對“喬布斯”這一實(shí)體產(chǎn)生濃厚的興趣時(shí),其往往會對與“喬布斯”有直接關(guān)聯(lián)的實(shí)體(如“蘋果公司”、“計(jì)算機(jī)”、“iOS系統(tǒng)”等)同樣感興趣。因此,在對用戶興趣進(jìn)行表示時(shí),理應(yīng)把這些相關(guān)實(shí)體考慮在內(nèi)。
本文所使用的數(shù)據(jù)集為DataCastle大數(shù)據(jù)競賽平臺所提供的財(cái)新網(wǎng)新聞數(shù)據(jù)集,此數(shù)據(jù)集包含了10000名財(cái)新網(wǎng)用戶在2014年3月的所有新聞瀏覽記錄,如圖1所示。
數(shù)據(jù)集由6個字段組成,分別為用戶編號、新聞編號、瀏覽時(shí)間(精確到秒)、新聞標(biāo)題、新聞詳細(xì)內(nèi)容以及新聞發(fā)表時(shí)間。
在數(shù)據(jù)集中,存在一些不活躍的用戶,需要將這部分用戶剔除,從而保證實(shí)驗(yàn)的可靠性。本文保留了閱讀記錄大于等于10篇的用戶數(shù)據(jù),將閱讀數(shù)量小于10篇的用戶剔除,最終得到2190個用戶的瀏覽記錄。由于數(shù)據(jù)集是以用戶為單位進(jìn)行抽取的,不同用戶可能會閱讀到相同的新聞,因此其中存在部分重復(fù)的新聞記錄,不重復(fù)的新聞記錄共計(jì)5098條。
三元組的抽取通??梢圆捎脙煞N方法,第一種是使用命名實(shí)體識別及實(shí)體關(guān)系抽取,第二種是使用依存句法分析。命名實(shí)體識別和實(shí)體關(guān)系抽取通常依賴于大量的標(biāo)注數(shù)據(jù)進(jìn)行模型訓(xùn)練,不適合本文場景,依存句法分析方法效果良好,并且不依賴標(biāo)注數(shù)據(jù),因此本文選擇通過依存句法分析方法進(jìn)行三元組的抽取,抽取算法如表1所示。
表1 三元組抽取算法
三元組抽取算法主要包含4個步驟,分別是分句、分詞及詞性標(biāo)注、依存句法分析、三元組抽取。
(1)分句
以句號、感嘆號、問號為結(jié)束標(biāo)志,對新聞?wù)倪M(jìn)行分句,并將新聞標(biāo)題作為單獨(dú)的一句,與分好的句子一同存儲,共計(jì)得到924,813條句子。
(2)分詞及詞性標(biāo)注
在分詞方面,本文采用基于規(guī)則的分詞方法。首先進(jìn)行詞圖的構(gòu)造,如圖2所示。新聞中出現(xiàn)的每個字都是詞圖上的一個節(jié)點(diǎn),使用詞典在詞圖上進(jìn)行匹配,匹配成功的字與字之間則建立一條邊。詞圖構(gòu)建完成后,分詞問題已經(jīng)成功轉(zhuǎn)化為一個最優(yōu)路徑問題,通過Viterbi算法進(jìn)行最優(yōu)路徑求解,即可得到分詞結(jié)果。
分詞完成后,還需要進(jìn)行詞性標(biāo)注。本文所選用的分詞及詞性標(biāo)注工具是HanLP工具包。首先將分好的句子進(jìn)行分詞及詞性標(biāo)注處理,詞語與詞性之間使用“/”進(jìn)行分隔,每一組詞語與詞性之間使用空格分隔。分詞及詞性標(biāo)注處理后的結(jié)果如圖3所示。
(3)依存句法分析
將處理好的分詞及詞性輸入到哈爾濱工業(yè)大學(xué)的語言技術(shù)平臺(LTP)[12]中進(jìn)行依存句法分析,結(jié)果如圖4所示。以“全國各族人民都要珍惜民族大團(tuán)結(jié)的政治局面”一句為例,其分詞及詞性標(biāo)注結(jié)果為“全國/n 各族/r 人民/n 都/d 要/v 珍惜/v 民族/n 大團(tuán)結(jié)/n 的/uj 政治/n 局面/n”,依存句法分析結(jié)果為“3/ATT 3/ATT 6/SBV 5/ADV 6/ADV 0/HED 8/ATT 11/ATT 8/RAD 11/ATT 6/VOB”。依存句法分析結(jié)果與分詞及詞性標(biāo)注結(jié)果一一對應(yīng),即“全國/n”對應(yīng)“3/ATT”,“3/ATT”表示“全國”是第三個詞“人民”的定語,以此類推?!?/HED”則表示當(dāng)前詞“珍惜”是句子的核心謂語。
(4)三元組抽取
結(jié)合分詞結(jié)果以及依存句法分析結(jié)果,進(jìn)行三元組抽取,抽取標(biāo)準(zhǔn)如下:“n/SBV”表示主語,此處“n”代表謂語在句子中的位置,即句子的第n個詞是當(dāng)前詞的謂語。根據(jù)預(yù)定義的規(guī)則(如長度應(yīng)該小于5,不能包含特殊的符號等)判斷主語是否符合規(guī)則,將不符合規(guī)則的主語丟棄,不進(jìn)行后續(xù)操作。通過“n”獲取謂語后,同樣判斷謂語是否符合預(yù)定的規(guī)則,如不符合,則不進(jìn)行后續(xù)操作。獲取到有效的謂語后,繼續(xù)根據(jù)謂語上標(biāo)注的賓語位置,找到句子的賓語,并判斷是否符合規(guī)則。將符合規(guī)則的三元組存入文件,共計(jì)獲得84 655個三元組。
知識圖譜的存儲方式比較多元,可以選擇知識描述語言進(jìn)行表示及存儲,如RDF等;也可以通過圖數(shù)據(jù)庫進(jìn)行存儲并進(jìn)行可視化,如Neo4j等。考慮到可視化的需求以及數(shù)據(jù)訪問的便捷性,本文選擇使用Neo4j進(jìn)行知識存儲。
Neo4j[14]是一個高性能的NoSQL數(shù)據(jù)庫,也是目前最流行的圖數(shù)據(jù)庫。Neo4j創(chuàng)建的圖是一個用頂點(diǎn)和邊構(gòu)成的有向圖,它包括如下幾個顯著特點(diǎn):完整的事務(wù)支持、高可用性、能夠輕易擴(kuò)展到上億級別的節(jié)點(diǎn)和關(guān)系、支持通過遍歷工具高速檢索數(shù)據(jù)。
將三元組導(dǎo)入Neo4j后,共計(jì)獲得14 492個節(jié)點(diǎn),37 309條關(guān)系。通過Neo4j進(jìn)行可視化后,以“中國”為中心的部分知識圖譜如圖5所示。
財(cái)新網(wǎng)的新聞數(shù)據(jù)集是一個純文本數(shù)據(jù)集,因此需要將文本轉(zhuǎn)化為數(shù)值向量才可以導(dǎo)入模型進(jìn)行計(jì)算。本文使用Google公司的Word2Vec模型[13],借助Gensim庫訓(xùn)練得到詞向量。Gensim(Generate Similarity)是一個簡單高效的自然語言處理Python庫,其中包含Word2Vec,F(xiàn)astText,潛在語義分析(Latent Semantic Analysis,LSA),潛在狄利克雷分布(Latent Dirichlet Allocation,LDA)等工具包。Gensim中包含的所有算法都是無監(jiān)督的,這意味著調(diào)用者不需要準(zhǔn)備訓(xùn)練集,只需要提供文本語料即可使用。
在訓(xùn)練詞向量前,需要先對新聞文本進(jìn)行分詞,并去除其中包含的停用詞。本文使用哈工大停用詞表、百度停用詞表、四川大學(xué)機(jī)器智能實(shí)驗(yàn)室停用詞庫三個停用詞表,合并得到一個綜合的停用詞表。將新聞文本中的詞語放入停用詞表進(jìn)行匹配,并將存在于停用詞表中的詞丟棄。
去除停用詞后,使用Gensim庫中的Word2Vec模型訓(xùn)練詞向量。為了不遺漏關(guān)鍵詞,將模型的最小詞頻設(shè)置為1,迭代次數(shù)設(shè)置為5,詞向量維度設(shè)置為200,訓(xùn)練得到詞向量模型,計(jì)算得到的詞向量可以描述為式1的形式。
V=[v1,v2,…,v200]
(1)
每一個用戶都會有一定的興趣傾向,表現(xiàn)在新聞系統(tǒng)中則是對新聞內(nèi)容的點(diǎn)擊及閱讀傾向。如何衡量用戶的興趣,是推薦算法的關(guān)鍵。本文將用戶瀏覽過的新聞內(nèi)容視為其感興趣的內(nèi)容,通過用戶的瀏覽記錄以及構(gòu)建好的知識圖譜,為每個用戶生成3個興趣向量,以供后續(xù)的實(shí)驗(yàn)對比。用戶興趣向量的計(jì)算方式如式2所示。
(2)
其中,N為用戶閱讀記錄中包含的所有詞的集合大小,W為用戶的閱讀記錄中包含的所有詞的詞向量集合,Wi表示第i個詞的詞向量。
用戶興趣向量的計(jì)算算法如表2所示。
表2 用戶興趣向量計(jì)算算法
用戶興趣向量的計(jì)算步驟共包含4個主要步驟,具體如下:
步驟1通過數(shù)據(jù)集中的用戶編號將新聞以用戶為單位進(jìn)行分類,獲得每個用戶的閱讀記錄。將用戶的閱讀記錄中出現(xiàn)的詞語,加入用戶的第一個興趣詞集合,記此興趣詞集合為A。
步驟2根據(jù)A集合中的詞語,在知識圖譜中匹配與之直接相連的實(shí)體詞,將匹配到的實(shí)體詞加入該用戶的第二個興趣詞集合,記此興趣詞集合為B。
步驟3將A集合與B集合合并,得到用戶的第三個興趣詞集合,記此興趣詞集合為C。
步驟4分別使用用戶興趣詞集合A、B、C中的詞,從訓(xùn)練好的詞向量模型中獲取詞向量,并求得用戶對應(yīng)興趣詞集合的平均詞向量VA、VB、VC,視為用戶的興趣向量。
自從卷積神經(jīng)網(wǎng)絡(luò)被提出以來,由于其優(yōu)秀的特征抽取能力,使得其在圖像處理領(lǐng)域大放異彩。卷積神經(jīng)網(wǎng)絡(luò)的成功使得越來越多的學(xué)者嘗試將其應(yīng)用到文本處理領(lǐng)域,并且已經(jīng)取得了一些成果[15-16]。本文基于卷積神經(jīng)網(wǎng)絡(luò)搭建了推薦模型,模型結(jié)構(gòu)如圖6所示。
首先根據(jù)用戶的興趣詞集合及詞向量模型,獲取詞向量,并計(jì)算平均向量作為用戶興趣向量。然后將用戶興趣向量傳入卷積層進(jìn)行特征提取,由于用戶興趣向量是一維數(shù)值型向量,因此此處的卷積操作為一維卷積,計(jì)算公式如式3所示。
ci=f(w·Xi,i+h-1+b)
(3)
其中,ci是特征圖中的第i個特征值;f為卷積核函數(shù);w∈Rh是滑動窗口寬度為h的濾波器;b為偏置值;Xi,i+h-1表示第i到i+h-1列組成的局部特征向量。由此,求得的特征向量C為:
C=[c1,c2,…,cn-h+1]
(4)
池化層采用最大池化方法進(jìn)行特征采樣,假設(shè)采用2×1的池化窗口,水平方向移動步長為2,池化操作完成之后,特征向量C的維度變?yōu)樵瓉淼囊话耄杀硎緸椋?/p>
Cp=[c1,c2,…,c(n-h+1)/2]
(5)
池化層之后連接一個全連接層,將提取到的特征向量傳入全連接層進(jìn)行擬合。由于卷積神經(jīng)網(wǎng)絡(luò)一般有m個卷積核進(jìn)行特征提取,對應(yīng)會產(chǎn)生m個特征向量,需要將這m個特征向量進(jìn)行重新組合后得到全連接層的輸入向量,表示為:
V=[c1,1,…,cj,i,…,cm,(n-h+1)/2]
(6)
其中,cj,i(1≤j≤m,1≤i≤(n-h+1)/2)表示第j個特征向量的第i個特征值。為了防止過擬合,全連接層上可加入一個dropout處理。最后將全連接層的輸出傳入softmax函數(shù),計(jì)算每篇新聞被推薦的概率并輸出。
模型構(gòu)建完成后,需要對其進(jìn)行訓(xùn)練。訓(xùn)練模型時(shí)的損失通過交叉熵進(jìn)行度量,損失函數(shù)定義如下:
(7)
其中,n為新聞的數(shù)量;y′i表示新聞i是否真實(shí)的被當(dāng)前用戶所喜歡,喜歡為1,不喜歡為0;yi是模型預(yù)測新聞i被當(dāng)前用戶喜歡的概率。
在本文中,訓(xùn)練Word2Vec詞向量模型時(shí)設(shè)置的詞向量維度為200維,因此從該模型中獲取的詞向量均為200維,平均后得到的用戶興趣向量的維度也為200維。卷積層卷積核維度為20*1,水平方向移動步長為1,垂直方向移動步長也為1,激活函數(shù)為relu,并進(jìn)行2×1的最大池化。全連接層的輸入為卷積層的輸出,全連接層的輸出節(jié)點(diǎn)數(shù)量為模型輸出節(jié)點(diǎn)數(shù)量的3倍,激活函數(shù)為tanh??紤]到全連接層容易過擬合,因此在全連接層加入了保留比例為0.5的dropout層。輸出層節(jié)點(diǎn)數(shù)量為不重復(fù)的新聞數(shù)量,即5098,通過softmax函數(shù)映射為每條新聞被推薦給當(dāng)前用戶的概率值。模型使用Adam算法進(jìn)行訓(xùn)練,初始學(xué)習(xí)率設(shè)置為0.000 1,為了防止過擬合以及無法收斂到全局最優(yōu)值,學(xué)習(xí)率每隔1 200步衰減為當(dāng)前學(xué)習(xí)率的0.4倍。
本文將每個用戶的閱讀記錄的最后一條新聞作為未知的預(yù)測目標(biāo),除了最后一條新聞之外的其它新聞視為已知的閱讀記錄。因此,實(shí)驗(yàn)?zāi)繕?biāo)則是根據(jù)每個用戶已經(jīng)瀏覽過的新聞,預(yù)測其下一次會瀏覽的新聞。
為了保證實(shí)驗(yàn)的準(zhǔn)確性,本文每組實(shí)驗(yàn)進(jìn)行5次,以5次實(shí)驗(yàn)的平均結(jié)果作為最終結(jié)果。每次實(shí)驗(yàn)將2 190個用戶按照7:3的比例隨機(jī)分割為訓(xùn)練集和測試集兩部分,其中訓(xùn)練集占70%,測試集占30%。如3.1節(jié)所述,為每個用戶生成3個用戶興趣向量,分別記為VA、VB、VC。其中,VA為用戶瀏覽記錄中所有詞的平均詞向量;VB為從知識圖譜中抽取到的詞集合的平均詞向量;VC為以上兩個詞集合的并集的平均詞向量。另外,本文以傳統(tǒng)的基于協(xié)同過濾的推薦方法Baseline進(jìn)行對比。
本文沿用DataCastle競賽中CCF大數(shù)據(jù)競賽的評價(jià)標(biāo)準(zhǔn),以F值作為最終的評價(jià)指標(biāo),F(xiàn)值定義如式8所示:
(8)
其中,precision的定義如式(9)所示:
(9)
其中U為數(shù)據(jù)集中2 190個用戶的集合,hit(ui)表示推薦給用戶ui的新聞中,確實(shí)被該用戶瀏覽的個數(shù)。在本文的實(shí)驗(yàn)數(shù)據(jù)中,由于每個用戶在預(yù)測集合中僅有一條記錄,因此hit(ui)要么為0,要么為1。L(ui)表示提供給用戶ui的新聞列表的長度。
recall的定義如式10所示:
(10)
hit(ui)的定義同上,T(ui)則為測試集中用戶ui真正瀏覽的新聞的數(shù)目,在本文中T(ui)=1。
本次實(shí)驗(yàn)構(gòu)造了3種用戶興趣向量,分別來源于用戶的瀏覽記錄中包含的詞集合、從知識圖譜中抽取的詞集合、融合瀏覽記錄以及知識圖譜的詞集合,將以上3種用戶興趣向量分別輸入到本文提出的模型以及傳統(tǒng)的協(xié)同過濾模型進(jìn)行實(shí)驗(yàn)。為保證實(shí)驗(yàn)結(jié)果的可靠性,使用每種用戶興趣向量進(jìn)行5次實(shí)驗(yàn)。本文提出模型實(shí)驗(yàn)結(jié)果如圖7所示,橫軸為實(shí)驗(yàn)次數(shù),縱軸為F值。
從上圖可以看出,使用知識圖譜計(jì)算出的用戶興趣向量的實(shí)驗(yàn)效果好于通過瀏覽記錄以及融合后的詞集合計(jì)算出的用戶興趣向量。主要原因是通過用戶瀏覽記錄中的詞集合計(jì)算用戶興趣向量,會使得對用戶興趣的刻畫過于“精準(zhǔn)”,反而降低了模型的泛化能力。通過知識圖譜,能夠更好地刻畫用戶的興趣,提升了模型的泛化能力。融合了瀏覽記錄以及知識圖譜的用戶興趣向量實(shí)驗(yàn)結(jié)果介于兩者之間,也印證了以上結(jié)論。
將3種用戶興趣向量輸入傳統(tǒng)的協(xié)同過濾模型的實(shí)驗(yàn)結(jié)果如圖8所示。
從圖8可以看出,協(xié)同過濾推薦模型的穩(wěn)定性較差,5次實(shí)驗(yàn)結(jié)果抖動較為明顯。但是依舊可以看出,通過知識圖譜計(jì)算出的用戶興趣向量推薦效果整體上好于通過其它兩種方式計(jì)算出的用戶興趣向量。
本文提出的模型與傳統(tǒng)的協(xié)同過濾模型的對比如圖9所示,橫軸為使用不同用戶興趣向量的不同模型,縱軸為F值。
從圖9中可以看出,本文提出的模型的推薦效果整體上好于傳統(tǒng)的協(xié)同過濾推薦模型,并且通過知識圖譜計(jì)算出來的用戶興趣向量,在兩種模型上的表現(xiàn)都要好于其它兩種用戶興趣向量,這證明了基于知識圖譜的推薦模型的有效性,也證明了知識圖譜在文本特征提取上具有一定的效果。
本文使用財(cái)新網(wǎng)的新聞數(shù)據(jù)集,通過依存句法分析提取三元組,借助圖數(shù)據(jù)庫Neo4j進(jìn)行知識存儲,構(gòu)建了一個小規(guī)模的通用知識圖譜?;诖酥R圖譜,提出了一種結(jié)合了語義特征的用戶興趣向量的計(jì)算方法,還基于卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建了一個推薦模型。實(shí)驗(yàn)表明,本文提出的用戶興趣向量的計(jì)算方法和推薦模型對提升推薦效果有一定的作用。