湯偉韜,余敦輝,2,魏世偉
(1.湖北大學 計算機與信息工程學院,武漢 430062; 2.湖北省教育信息化工程技術中心,武漢 430062)
隨著互聯網的快速發展,電子商務系統得到了廣泛應用,其中的商品信息不斷擴增,隨之也帶來了信息過載的問題。為解決該問題,商品推薦[1-2]應運而生,其通過分析用戶過往的購買記錄或商品的受歡迎程度等信息,推斷用戶的喜好并為用戶推薦他們感興趣的商品。
知識圖譜[3]是一種基于圖的網絡數據結構,其由多個節點和邊構成,其中,實體作為節點,關系作為邊,以多個<頭實體,關系,尾實體>的三元組形式存儲在知識庫中。知識圖譜作為大數據時代的產物,是物品與物品之間關系的最有效的表現方式,并且其能夠融合多源異構信息,因此,越來越多的學者將知識圖譜應用于推薦算法中[4]。
知識圖譜的圖結構能夠體現用戶評論之間的商品網絡結構信息,因此,本文提出一種融合知識圖譜與用戶評論的商品推薦算法。結合知識圖譜分析每個用戶評論,提取商品特征及其對應的情感詞,根據情感詞計算商品特征得分。將知識圖譜融入到商品相似度矩陣的計算中,在隨機游走模型中輸入相似度矩陣以分配特征權重,在此基礎上,通過商品特征分數和特征權重計算商品推薦價值,根據商品推薦價值進行Top-k推薦。
推薦算法主要分為協同過濾算法、基于內容的推薦算法和混合推薦算法。
1)協同過濾算法將某個用戶感興趣的物品推薦給和該用戶興趣相似的用戶。文獻[5]通過將信息熵和雙聚類引入到協同工作中,提取局部密集評分模塊從而提高推薦效率。文獻[6]提出一種基于可信數據和用戶相似度融合的“斜率一”算法,但是該算法沒有考慮商品本身信息對結果的影響,受限于評分數據稀疏和冷啟動問題。
2)基于內容的推薦算法為用戶推薦與他喜歡的物品相似的物品。文獻[7]將概率模型與經典的基于內容的過濾推薦算法相結合,文獻[8]提出一種基于內容的加權粒度序列推薦算法,但是上述2種算法受物品內容信息提取技術的制約,推薦效果一般。
3)混合推薦算法將多個推薦算法進行組合,以發揮各自優勢。文獻[9]在ConvMF中加入雙嵌入層,更加注意物品的側面信息,文獻[10]考慮用戶行為數據和社會關系的互補性,但是上述研究增加了復雜度,運行時間成本較高。
近年來,基于用戶評論的推薦算法相繼被提出。文獻[11]進行用戶評論主題挖掘,其引入情感因素,構建主題情感混合模型,并結合用戶評分進行推薦,據此提出一種基于用戶評論的個性化產品推薦算法。文獻[12]在情感分類輔助任務中引入格外監督信息,以降低推薦任務的學習難度,通過在2個任務間共享短語的表示,使推薦任務更好地理解情感短語的語義。文獻[13]提出一種正則約束方式,對評論文本信息與模型的融合方法進行深入研究?;谟脩粼u論的推薦算法同時結合了用戶特性與商品特性,獲取的商品細粒度信息準確度高,避免了用戶評分數據稀疏性的問題。但是,現有的多數研究重點關注對評論文本的自然語言處理,孤立地處理單個評論而忽略了評論之間的網絡結構信息。
綜上所述,協同過濾算法主要探究用戶之間以及商品之間的關系,但沒有深入研究用戶和商品本身所具有的許多信息。大部分基于用戶評論的推薦算法雖然將評論融入到用戶和商品的關系中,但其關注文本處理而忽視了評論與評論之間可能存在的網絡結構。本文通過知識圖譜構造評論之間的網絡結構,利用該網絡結構挖掘用戶評論所富含的信息,從而進行商品推薦。
在用戶對商品的評論中,需要提取用戶關注度高的商品特征及其對應的情感詞。多數商品特征提取方法都是獨立地分析單個評論文本而忽略了評論之間的聯系。因此,本文將知識圖譜融入到商品特征提取算法中,將多個商品的多個評論聯系在一起進行討論。
本文將商品作為知識圖譜中的實體,商品的特征作為商品實體的屬性,情感詞作為屬性值,將該規則關聯到知識圖譜中并進行研究。
從評論文本中有效地提取商品特征和情感詞并獲取特征級別的情感傾向,是商品評論細粒度情感分析的關鍵。文獻[14]根據中文商品評論文本的特點,從句法分析、詞義理解和語境相關等多角度獲取詞語間的語義關系,然后將其作為約束知識并嵌入到主題模型中,提出一種語義關系約束的主題模型SRC-LDA,以實現語義指導下LDA的細粒度主題詞提取。本文將通過SRC-LDA對商品i的某條用戶評論所提取出的特征組成的集合,定義為評論中的商品特征集合CFi={cf1,cf2,…}。
通過SRC-LDA從用戶評論中提取商品特征,需要與商品知識圖譜中的商品特征進行融合,并對商品知識圖譜進行補全。某商品在知識圖譜中可能存在以下2種情況:
1)知識圖譜中存在特定商品所對應的實體
在該情形下,將知識圖譜中商品實體i的屬性所組成的集合定義為知識圖譜中的商品特征集KFi={kf1,kf2,…},取評論特征集和知識圖譜特征集的交集作為暫時確定的最終商品特征集Fi={f1,f2,…},如下:
Fi=CFi∩KFi
(1)
但是,僅取兩者的交集是不夠完整的,原因是知識圖譜中的商品特征不完整,可能存在評論中是特征的詞而知識圖譜中還未收納,因此,需要在該集合中找出確實是特征的詞并補全到知識圖譜中,定義待補全特征集為:
RFi=CFi-KFi
(2)
在得到待補全特征集RFi后,需要將真正表示特征的詞從中提取出并加入到最終商品特征集Fi中。針對商品i的評論有若干條,每條評論可得到一個RFi,將所有評論的RFi組合在一起,合并相同的元素,同時記錄特征f、特征出現的次數fn以及包含該特征的評論數fc,得到詞倉庫為:
WWH={(f1,fn1,fc1),(f2,fn2,fc2),…}
(3)
參考TF-IDF[15]中依據詞頻來計算詞的重要程度的思想,本文構建一種基于詞頻的模型WTF-IDF,并將其應用于詞倉庫集合中。設一共有n篇用戶評論,定義特征詞頻為:
(4)
逆向集合頻率為:
(5)
詞總權重為:
WTF-IDF=WTF×WIDF
(6)
根據WTF-IDF的值進行排序,取值最大的λ個詞作為補充詞形成補充詞集SFi={sf1,sf2,…},將該詞集補充到最終商品特征集中,即:
Fi=(CFi∩KFi)∪SFi
(7)
2)知識圖譜中不存在該商品所對應的實體
在該情形下,KFi為空集,最終的商品特征集就為評論中的商品特征集:
Fi=CFi
(8)
在得到最終商品特征集Fi后,需要對知識圖譜進行實體和特征補全。若該商品原先不在知識圖譜中,將實體補全進知識圖譜中,補全過程注意特征消歧[16]。然后將知識圖譜進行特征集補全,即更新KFi=Fi。
將商品對用戶群體的利用價值定義為商品推薦價值。在得到用戶群體真正關心的商品特征集合后,分析商品特征的得分和權重,然后根據特征得分和權重計算商品推薦價值。
在通過SRC-LDA得到商品特征對應的情感詞后,根據情感詞庫中情感詞對應的正面情感、中性情感和負面情感3種情況設置不同的得分,如表1所示。

表1 情感詞語得分情況Table 1 Scores of emotional words
不同用戶對同一商品特征往往會表現出不同的情感,此外,用戶評論的時間也是一個重要的衡量因素,近期的評論應當更具價值。假設此刻的時間為nt,評論時間為ct,最大時間差Δt=nt-ctmin,β為時間差比,則定義時間參數為:
(9)
假設通過SRC-LDA求得某商品特征fi的情感詞集為Efi={e1,e2,…},加入情感詞得分s和時間T后,計算考慮時間的每個特征情感詞的得分為:
es=s×T
(10)
情感詞集轉變為Efi={(e1,es1),(e2,es2),…},則該特征的總得分v定義為所有情感詞得分es的n分位數。最后,商品特征集可更新表示為帶特征得分的商品特征集Fi={(f1,v1),(f2,v2),…}。
對于特征集合中的不同特征,需要分析其重要程度,即為每個特征分配權重。復雜網絡中的隨機游走模型[17]在克服數據稀疏性問題上能夠取得良好的效果,其可以看作一個描述隨機游走者訪問頂點序列的馬爾可夫鏈。文獻[18]指出當游走達到穩態后,每一個節點被訪問的概率可作為該節點的權重表示。但是,一般的隨機游走模型將每個轉移概率設置為定值,未考慮到不同商品具有不同相似度的特點。因此,本文將基于商品特征向量的商品相似度與基于知識圖譜的商品相似度的加權作為隨機游走中邊的權值,構造轉移概率矩陣,通過隨機游走來傳遞商品間的影響關系,從而確定特征的權重。知識圖譜中的隨機游走策略如圖1所示,其中,實線為關系邊,虛線為游走路線。

圖1 隨機游走策略示意圖Fig.1 Schematic diagram of random walk strategy
3.2.1 融合知識圖譜的商品相似度計算
融合知識圖譜的商品相似度計算分為2個部分:
1)基于商品向量的商品相似度sim
前文將每個商品以商品特征集Fi的形式來表示,Fi中僅包含該商品具有的特征元素,本節改進商品的表示形式,定義商品i的向量表示為:
Ii=(I1,I2,…)T
(11)
(12)
將所有商品表示為式(11)的向量后,用Pearson相關系數計算商品相似度:
(13)
2)基于知識圖譜的商品相似度sim′
知識圖譜中的商品實體之間的關系邊同樣可以表示商品的相似度。知識表示方法TransE[19]將知識圖譜嵌入到低維向量空間中以進行計算,基于TransE的變種方法TransM[20]在嵌入的同時還可以表示出實體之間關系邊的權重大小,該參數在一定程度上反映了商品在知識圖譜網絡結構中的相似關系。在知識圖譜中,對于三元組
(14)
(15)
其中,Δr表示含有關系r的所有三元組,hr表示關系為r的三元組的所有頭商品實體,tr表示關系為r的三元組的所有尾商品實體?;赥ransM可得知識圖譜的關系邊權重,關系邊權重可表示商品相似度:
(16)
結合基于商品特征向量的商品相似度與基于知識圖譜的商品相似度,最終定義2個商品的加權相似度為:
(17)
Sim越大表示商品x與商品y越相似。
3.2.2 基于隨機游走模型的特征權重分配
通過Sim可得任意2個商品之間的相似度,構建商品相似度矩陣如下:
(18)
(19)
令最大值元素為max,最小值元素為min,將所有元素進行0-1歸一化:
(20)
將得到的商品相似度矩陣S作為概率轉移矩陣并輸入到隨機游走模型中,第m次隨機游走時的商品游走概率向量為Pm=(P1,P2,…)T,Pi指第i個商品的游走概率,則對應的隨機游走策略為:
Pm=(1-θ)·P0+θ·S·Pm-1
(21)
其中,θ為阻尼因子,表示游走項到達某一商品節點后繼續向后游走的概率,1-θ即表示下一次游走后返回初始商品節點的概率,阻尼因子θ一般取0.85[21]。經過多次的迭代隨機游走,每個商品的游走概率逐漸趨于穩定,最終的商品游走概率向量為Pm。
在實際中,游走的節點對象是商品,而希望得到的卻是特征向量f=(wf1,wf2,…)T,wfi指第i個特征的權重,因此,需要在商品和特征之間建立一層轉化關系。商品i的向量為Ii=(I1,I2,…)T,設一共有n件商品,則可得到總商品矩陣為:
(22)
商品游走概率向量的實質就是商品的權重,而商品的權重又與特征的權重直接關聯,因此,理論上商品游走概率向量也可以表示為特征權重的加權,即商品i的游走概率Pi可以表示為:
(23)
特征權重向量可表示為:
f=(I′)-1×Pm
(24)
最終的商品特征集可更新表示為帶得分和權重的集合Fi={(f1,wf1,v1),(f2,wf2,v2),…}。
對于商品i,求得該商品的特征權重和特征得分后,根據其特征集Fi可計算推薦價值為:
(25)
求得所有商品的推薦價值后,根據推薦價值從大到小進行Top-k排序,分數高的商品應當更受到用戶群體的喜愛,因此,推薦序列中的前k個商品給用戶。
商品推薦價值計算(KCRW)算法描述如下:
算法1KCRW算法
輸入商品i的特征集合Fi={(f1,v1),(f2,v2),…}
輸出商品推薦價值序列
1.for each 商品i:
2.表示出商品向量Ii=(I1,I2,…)T
3.for each 商品i:
4.for each 除商品i以外的商品j:
6.構建相似度矩陣S
7.計算商品游走概率向量Pm=(1-θ)·P0+θ·S·Pm-1
9.計算特征權重向量f=(I′)-1×Pm
10.for each 商品i:
11.特征集合更新為Fi={(f1,wf1,v1),(f2,wf2,v2),…}
13.return 商品推薦價值序列
假設一共有n個商品,每個商品包含m個特征。KCRW算法步驟1~步驟2的時間復雜度為O(n),步驟3~步驟5的時間復雜度為O(m·n2),步驟6~步驟7的時間復雜度為O(n2),步驟10~步驟12的時間復雜度為O(n)。綜上,KCRW算法的時間復雜度為O(m·n2)。
本文實驗數據集包含用戶評論和知識圖譜2個方面。在用戶評論方面,本文爬取的數據來自淘寶、天貓商城和京東商城這3個全球大型電商平臺,其中涵蓋了5 000個商品總共100 000條用戶評論,每個商品平均約有20條用戶評論。在知識圖譜方面,本文選取1.4億中文通用知識圖譜思知(ownthink),數據以<實體、屬性、值>、<實體、關系、實體>混合的形式存儲在apache-jena-fuseki服務器中。
實驗使用準確率(Precision)、召回率(Recall)以及F值(F-Score)3個指標[22]進行評價,各指標的計算公式分別如下:
(26)
(27)
(28)
其中,TP指用戶喜歡且推薦了的樣本,FN指用戶不喜歡但推薦了的樣本,FP指用戶喜歡但沒被推薦的樣本。
準確率反映了推薦算法的推薦水平,表示將用戶喜歡的物品推薦給用戶,而用戶不喜歡的物品則不推薦。召回率反映了推薦算法所推薦的物品占用戶真正喜歡的物品的比重。F值是準確率和召回率的加權平均。將數據集以6∶4劃分為訓練集和測試集進行實驗。實驗硬件環境:處理器型號為Intel?CoreTMi7-8550U CPU @ 1.80 GHz 1.99 GHz,內存為16 GB;實驗軟件環境:Python3.7.5,JDK-13.0.1,apache-jena-fuseki-3.13.1。實驗參數設置如表2所示。

表2 實驗參數設置Table 2 Experimental parameters setting
4.3.1 特征參數確定
設定商品數量為5 000,評論數量為100 000,特征參數確定如下:
1)補充量λ和時間差比β的聯合確定
設置嵌入維度k為200,探究不同λ和β下的準確率、召回率和F值,結果如圖2所示。

圖2 不同λ和β值下的實驗結果Fig.2 Experimental result under different λ and β values
從圖2可以看出,隨著補充量λ的提高,準確率、召回率和F值開始逐漸遞增后來逐漸減小,當λ=2時達到峰值。因此,將最佳的補充量λ設置為2。此外,當時間差比β取1.5Δt時,準確率、召回率和F值相對較高,再增大β時準確率明顯下降。
2)嵌入維度k的確定
已確定最佳補充量λ為2,最佳時間差比β為1.5Δt,探究不同k下的準確率、召回率和F值,結果如圖3所示。

圖3 不同k值下的實驗結果Fig.3 Experimental result under different k values
從圖3可以看出,隨著嵌入向量維度k的提高,準確率、召回率和F值開始逐漸遞增,在k=200時達到峰值,然后逐漸減小。因此,將最佳的嵌入向量維度k設置為200。
4.3.2 算法有效性驗證
確定參數的最佳值后,補充量λ設為2,時間差比β設為1.5Δt,嵌入維度k設為200。將本文推薦算法與基于知識圖譜的推薦算法(KG)[23]、協同過濾算法(CF)[5]、基于內容的推薦算法(CB)[7]和混合推薦算法(MX)[9]的推薦效果進行比較,分別探究在商品數量和評論數量變化時準確率、召回率和F值的變化情況,以驗證本文推薦算法的有效性。
1)探究評論數量對算法性能的影響(商品數量設定為5 000)。從圖4可以看出,隨著評論數量的增多,本文算法的準確率、召回率和F值都在不斷上升,準確率在評論數量大于40 000后明顯優于其他3種算法,并且召回率和F值一直高于其他3種算法,本文算法相對其他算法的性能提升比率如表3所示。

圖4 不同評論數量下的實驗結果Fig.4 Experimental result under different number of comments

表3 本文算法相對其他算法的性能提升比率1Table 3 The performance improvement ratio 1 of the proposed algorithm compared with other algorithms %
2)探究商品數量對算法性能的影響(針對每個商品隨機取10條評論)。從圖5可以看出,隨著商品數量的增多,本文算法的召回率在不斷增大,F值趨于穩定,算法的準確率、召回率和F值一直高于其他3種算法,性能提升比率如表4所示。

圖5 不同商品數量下的實驗結果Fig.5 Experimental result under different number of commodity

表4 本文算法相對其他算法的性能提升比率2Table 4 The performance improvement ratio 2 of the proposed algorithm compared with other algorithms %
本文提出一種融合知識圖譜與用戶評論的商品推薦算法,以商品特征作為研究對象使推薦更加準確。利用知識圖譜的網絡結構關聯所有評論文本以挖掘商品特征信息,從而更充分地利用商品內部信息,然后進行知識圖譜補全以避免數據稀疏問題。在隨機游走模型中的相似度矩陣構建中結合知識圖譜,使模型的準確性進一步提高。實驗結果表明,本文商品推薦算法能夠取得較好的推薦效果。用戶評論和知識圖譜之間還有很多待挖掘的內容,如評論中的隱語義部分含有大量的商品隱含特征,這些特征對于分析用戶偏好具有較大作用。下一步將通過知識圖譜來挖掘用戶評論中的隱含信息,以提高推薦系統的準確性和有效性。