歐陽(yáng)龍,盧 琪,彭艷兵
(1.武漢郵電科學(xué)研究院湖北武漢430000;2.南京烽火星空通信發(fā)展有限公司江蘇南京210000)
免費(fèi)一直被國(guó)內(nèi)的互聯(lián)網(wǎng)界奉為圭臬,但是,內(nèi)容付費(fèi)卻偏偏在其中獨(dú)樹(shù)一幟的發(fā)展了起來(lái)。2016年底,新浪微博推出微博問(wèn)答這一新功能,很快就占領(lǐng)了內(nèi)容付費(fèi)市場(chǎng)的半壁江山。
微博問(wèn)答的應(yīng)用場(chǎng)景是:用戶(hù)群A付費(fèi)對(duì)用戶(hù)B提出問(wèn)題,用戶(hù)B從問(wèn)題中選擇問(wèn)題進(jìn)行作答,作答后,用戶(hù)A提問(wèn)所付的費(fèi)用進(jìn)入用戶(hù)B的錢(qián)包,問(wèn)題和答案會(huì)以微博問(wèn)答的形式被用戶(hù)B自動(dòng)轉(zhuǎn)發(fā),其他用戶(hù)可以付費(fèi)1元進(jìn)行圍觀,圍觀的費(fèi)用一半進(jìn)入用戶(hù)A的錢(qián)包,另一半進(jìn)入用戶(hù)B的錢(qián)包。有一些好問(wèn)題甚至能以幾十元的問(wèn)題價(jià)格吸引數(shù)萬(wàn)的圍觀量,其中的商機(jī)不言而喻。本文研究的目的在于針對(duì)特定的微博問(wèn)答用戶(hù),提出更容易被回答且收益率更高的問(wèn)題。
需要解決的關(guān)鍵問(wèn)題是對(duì)用戶(hù)的關(guān)鍵詞挖掘,也可以說(shuō)是對(duì)用戶(hù)興趣的挖掘。對(duì)微博用戶(hù)興趣的挖掘一般分為兩類(lèi):1)基于背景挖掘用戶(hù)興趣;2)基于內(nèi)容挖掘用戶(hù)興趣。
基于背景的用戶(hù)興趣挖掘通過(guò)微博平臺(tái)的個(gè)人簡(jiǎn)介、職業(yè)、標(biāo)簽、畢業(yè)院校、生日、性別等信息對(duì)不同的用戶(hù)進(jìn)行分類(lèi)[1],針對(duì)某些平臺(tái)用戶(hù)背景信息較少的問(wèn)題,可以使用多平臺(tái)分析的方法[2],也可以利用朋友的信息[3],但是只有背景相似的朋友的信息才有效[4],甚至可以以朋友的背景為基礎(chǔ)推斷出用戶(hù)的背景信息[5],使用其他用戶(hù)對(duì)該用戶(hù)的分組描述作為用戶(hù)的背景[6]也是一種不錯(cuò)的方法。
基于背景的用戶(hù)興趣挖掘存在的主要問(wèn)題:用戶(hù)背景數(shù)據(jù)不完善,在對(duì)新浪微博1.4億用戶(hù)的統(tǒng)計(jì)中,添加了標(biāo)簽的用戶(hù)只占21.8%,標(biāo)簽個(gè)數(shù)大于5的用戶(hù)只占6.2%[7]。
基于內(nèi)容的用戶(hù)興趣挖掘可以看作文本主題或關(guān)鍵詞提取問(wèn)題。由于微博一般比較短小,可以從每一條微博中提取一個(gè)主題[8],或者將一個(gè)用戶(hù)的所有微博合并成一個(gè)大文本之后再進(jìn)行主題提取[9],當(dāng)用戶(hù)的微博內(nèi)容比較少時(shí),可以用該用戶(hù)多個(gè)朋友的共同興趣推出該用戶(hù)的興趣[10],AT模型可以用于發(fā)現(xiàn)用戶(hù)和主題的關(guān)系[11],針對(duì)微博的特性,MBLDA模型也能進(jìn)行微博主題挖掘[12]。
基于內(nèi)容的用戶(hù)興趣挖掘存在的主要問(wèn)題:1)沒(méi)有考慮到博主與粉絲的交互,2)缺少一種對(duì)關(guān)鍵詞進(jìn)行推薦的方法。
本文在針對(duì)博主與粉絲的交互提出了基于微博轉(zhuǎn)發(fā)、評(píng)論、點(diǎn)贊和詞頻的詞語(yǔ)權(quán)重計(jì)算方法,針對(duì)背景數(shù)據(jù)不全,提出了基于背景和內(nèi)容的AW-LDA用戶(hù)關(guān)鍵詞挖掘方法,并結(jié)合背景和內(nèi)容分析用戶(hù)之間相似度,進(jìn)而達(dá)到推薦問(wèn)題關(guān)鍵詞的目的。
LDA的模型結(jié)構(gòu)如圖1所示。
圖1 LDA模型圖
在LDA模型中,一篇文檔的生成方式如下:
1)對(duì)于一篇文檔di,從狄利克雷分布(即Dirichlet分布)α中取樣生成文檔di的主題分布θi,即主題分布θi由參數(shù)為α的Dirichlet分布生成;
2)從主題的多項(xiàng)式分布θi中取樣生成文檔di的第j個(gè)詞的主題zij;
3)從狄利克雷分布ε中取樣生成主題zij對(duì)應(yīng)的詞語(yǔ)分布βij,即詞語(yǔ)分布βij由參數(shù)為ε的Dirichlet分布生成;
4)從詞語(yǔ)的多項(xiàng)式分布β中采樣最終生成詞語(yǔ)wij。
即每個(gè)詞語(yǔ)出現(xiàn)的概率為:
LDA原始論文中采用變分-EM算法估計(jì)未知參數(shù)[13]。EM算法,即期望最大算法,其基本思想是:首先隨機(jī)選取一個(gè)值去初始化估計(jì)值θ(0),然后不斷迭代尋找更優(yōu)的θ(n+1)使得其似然函數(shù)比原來(lái)的要大??梢杂脕?lái)給LDA模型求解。
EM算法的關(guān)鍵便是要找到L(θ)的一個(gè)下界,然后不斷最大化這個(gè)下界。從而逼近要求解的似然函數(shù)算法的一般步驟為:
3)重新估計(jì)參數(shù)θ,即求,使得
4)如果L(θ)收斂,即Q(Q;Qn)收斂,則算法完成,否則回到步驟2[15]。
這樣就能求得LDA模型中的主題分布和詞分布。
LDA原始論文中采用變分-EM算法估計(jì)未知參數(shù),后來(lái)發(fā)現(xiàn)另一種估計(jì)LDA未知參數(shù)的方法更好,這種方法就是:Gibbs Sampling,有時(shí)叫Gibbs采樣或Gibbs抽樣[16]。Gibbs抽樣是馬爾可夫鏈蒙特卡爾理論(MCMC)中用來(lái)獲取一系列近似等于指定多維概率分布(比如2個(gè)或者多個(gè)隨機(jī)變量的聯(lián)合概率分布)觀察樣本的算法[17]。通過(guò)求解出主題分布和詞分布的后驗(yàn)分布,從而成功解決主題分布和詞分布這兩參數(shù)未知的問(wèn)題。
Gibbs采樣算法的步驟為:
表示對(duì)z(t+1)中的第i個(gè)參數(shù)進(jìn)行抽樣,對(duì)于包含隱變量的LDA模型來(lái)說(shuō),抽樣公式為:
本文的數(shù)據(jù)來(lái)自于新浪微博的微博問(wèn)答模塊中系統(tǒng)推薦的前5000個(gè)用戶(hù),都是業(yè)內(nèi)專(zhuān)家或者名人,他們?cè)诟髯缘奈⒉﹩?wèn)答主頁(yè)上都有各自擅長(zhǎng)回答的問(wèn)題等標(biāo)簽,將這些標(biāo)簽作為用戶(hù)的背景信息;另外采集這5000個(gè)用戶(hù)發(fā)布的微博文本信息,包括原創(chuàng)微博內(nèi)容和轉(zhuǎn)發(fā)微博內(nèi)容以及本條微博轉(zhuǎn)發(fā)、評(píng)論、點(diǎn)贊的數(shù)量,將這些文本信息作為內(nèi)容分析用戶(hù)的興趣;采集這5000個(gè)用戶(hù)的所有微博問(wèn)答內(nèi)容,包括問(wèn)題內(nèi)容、問(wèn)題價(jià)值、圍觀數(shù)量,將這些文本作為內(nèi)容分析用戶(hù)的答題興趣。
由于采用的數(shù)據(jù)集是微博原始文本,所以需要對(duì)數(shù)據(jù)進(jìn)行一定的處理[19]。第一步是對(duì)文本進(jìn)行切詞處理。文中采用的是python第三方庫(kù)jieba分詞,其精確模式可以將句子以精確的方式切開(kāi),消除歧義。
第二步去除文本中的停用詞(代詞和語(yǔ)氣詞)[20],這類(lèi)詞一般在文本中很常見(jiàn),但是對(duì)用戶(hù)興趣挖掘沒(méi)有用處。本文使用的是Github上的中文停用詞詞表,共1598個(gè)詞,并且在處理文本的過(guò)程中根據(jù)文本的內(nèi)容和語(yǔ)義不斷添加停用詞,最后將停用詞個(gè)數(shù)擴(kuò)充到1912個(gè)。
第三步是對(duì)詞頻進(jìn)行統(tǒng)計(jì)。針對(duì)用戶(hù)的微博內(nèi)容,由于微博是用戶(hù)與用戶(hù)之間的交流,所以關(guān)注者對(duì)被關(guān)注者的反饋信息比如轉(zhuǎn)發(fā)、評(píng)論、點(diǎn)贊都會(huì)影響到被關(guān)注者,比如某個(gè)話(huà)題的微博受到了大量的轉(zhuǎn)發(fā)、評(píng)論、點(diǎn)贊,那么被關(guān)注者可能會(huì)更傾向于喜歡個(gè)話(huà)題,在微博問(wèn)答中回答這類(lèi)問(wèn)題的可能性也會(huì)比較高,關(guān)注者的圍觀人數(shù)也可能會(huì)很多。所以本文在進(jìn)行詞頻統(tǒng)計(jì)的時(shí)候并不是簡(jiǎn)單的只統(tǒng)計(jì)詞出現(xiàn)的次數(shù),而是結(jié)合各條微博被轉(zhuǎn)發(fā)、評(píng)論、點(diǎn)贊的次數(shù)對(duì)該條微博中出現(xiàn)的詞的詞頻進(jìn)行加成,微博被轉(zhuǎn)發(fā)、評(píng)論、點(diǎn)贊的次數(shù)越多,詞的詞頻加成也越多,即
其中WTwi表示詞wi的詞頻,Tij表示詞wi在微博j中出現(xiàn)的次數(shù),repj表示微博j被轉(zhuǎn)發(fā)的次數(shù),comj表示微博j被評(píng)論的次數(shù),likj表示微博j被評(píng)論的次數(shù)。針對(duì)用戶(hù)的微博問(wèn)答內(nèi)容,關(guān)鍵詞的推薦需要與問(wèn)題的收益率掛鉤才能正確反映基于微博內(nèi)容的關(guān)鍵詞推薦的正確性,所以在對(duì)微博問(wèn)答問(wèn)題內(nèi)容進(jìn)行詞頻統(tǒng)計(jì)時(shí),不僅要統(tǒng)計(jì)詞出現(xiàn)的次數(shù),還要統(tǒng)計(jì)問(wèn)題的收益率
其中WTwi表示詞wi的詞頻,Tij表示詞wi在微博j中出現(xiàn)的次數(shù),REij表示問(wèn)題的收益率。
由于本文的目的是對(duì)微博問(wèn)答的問(wèn)題作出推薦,所以對(duì)于微博內(nèi)容來(lái)說(shuō),關(guān)注的重點(diǎn)不是主題,而是主題中的詞,即對(duì)問(wèn)題的關(guān)鍵詞作出推薦。傳統(tǒng)的LDA模型采用的是“用戶(hù)-主題-詞袋”的模式[21],即用戶(hù)以一定的概率分布選擇主題,主題以一定的概率分布選擇詞袋中的詞,最終構(gòu)成文檔。但是傳統(tǒng)的LDA模型對(duì)于關(guān)鍵詞的推薦并不合適,我們需要的是“用戶(hù)-詞袋”的概率分布,主題層對(duì)于問(wèn)題的關(guān)鍵詞推薦來(lái)說(shuō)沒(méi)有意義。所以本文基于傳統(tǒng)的LDA模型提出了AW-LDA模型,重點(diǎn)分析用戶(hù)(author)與詞袋(words)的概率分布關(guān)系。AW-LDA模型如圖2所示。
對(duì)于一個(gè)用戶(hù)的微博內(nèi)容或者背景文檔di,從
圖2 AW-LDA模型
其中REij表示問(wèn)題的收益率,Gij表示問(wèn)題的圍觀人數(shù),PAij表示問(wèn)題價(jià)值,i表示用戶(hù)編號(hào),j表示問(wèn)題編號(hào)。根據(jù)問(wèn)題的收益率對(duì)問(wèn)題中出現(xiàn)的關(guān)鍵詞的詞頻進(jìn)行加成,收益率越高,詞的詞頻加成也越多。即狄利克雷分布(即Dirichlet分布)ε中取樣生成文檔di的詞分布βi,即詞分布βi由參數(shù)為ε的Dirichlet分布生成,對(duì)于文檔di中的第j個(gè)詞語(yǔ)wij,從詞語(yǔ)的多項(xiàng)式分布β中采樣最終生成詞語(yǔ)wij。
采用Gibbs采樣算法對(duì)AW-LDA模型進(jìn)行求解,首先用歐拉公式將P(w|ε)展開(kāi):
然后用Gibbs算法對(duì)如下后驗(yàn)分布進(jìn)行抽樣:
對(duì)上式進(jìn)行反復(fù)迭代,并對(duì)所有詞進(jìn)行抽樣,抽樣結(jié)果穩(wěn)定時(shí),結(jié)果為
這樣,AW-LDA模型就使用Gibbs抽樣解出了微博內(nèi)容在詞語(yǔ)上的概率分布βw。
使用AW-LDA模型分別對(duì)用戶(hù)的微博內(nèi)容和背景進(jìn)行分析,得到針對(duì)用戶(hù)微博內(nèi)容的推薦詞集WCi及其概率分布PCi和針對(duì)用戶(hù)微博背景的推薦詞集WBi及其概率分布PBi,其中i表示用戶(hù)編號(hào)。
得到用戶(hù)的推薦詞集及其概率分布后,采用余弦相似度算法計(jì)算用戶(hù)之間的相似度,具體實(shí)現(xiàn)為:先將兩個(gè)用戶(hù)的推薦詞集合并,組成一個(gè)新的含有N個(gè)詞的詞集WN,可以通過(guò)補(bǔ)零的方式根據(jù)用戶(hù)對(duì)推薦詞集WCi的概率分布PCi求得用戶(hù)對(duì)詞集WN的概率分布PWi,其中i表示用戶(hù)編號(hào),這樣就能得到兩個(gè)用戶(hù)對(duì)詞集WN的概率分布PWi和PWj,可以看作是兩個(gè)N維向量,然后采用余弦相似度算法
計(jì)算兩個(gè)向量的余弦值,結(jié)果可以表示兩個(gè)用戶(hù)的內(nèi)容相似度sim(Cij),其中xi、yi分別表示概率分布PWi和PWj中的元素。用相同的方法可以求出兩個(gè)用戶(hù)的背景相似度sim(Bij)。將兩個(gè)相似度結(jié)合起來(lái),令兩個(gè)用戶(hù)的相似度
其中a表示微博內(nèi)容相似度所占的權(quán)重。
在對(duì)訓(xùn)練集中的用戶(hù)A進(jìn)行關(guān)鍵詞推薦時(shí),根據(jù)simij在樣本集中找到與用戶(hù)A相似度最高的用戶(hù)B,并將用戶(hù)B的問(wèn)答關(guān)鍵詞中權(quán)重最高的10個(gè)詞推薦為用戶(hù)A的問(wèn)答關(guān)鍵詞。實(shí)驗(yàn)結(jié)果表明當(dāng)a取值為0.79時(shí),推薦的關(guān)鍵詞所包含的問(wèn)題的價(jià)值總和占所有問(wèn)題價(jià)值總和的比例最大,為92.56%;當(dāng)a取值為0.84時(shí),推薦的關(guān)鍵詞所包含的問(wèn)題個(gè)數(shù)占所有問(wèn)題總量的比例最大,為83.73%。
文中采用perlexity指標(biāo)對(duì)模型的優(yōu)劣進(jìn)行衡量。Perlexity指標(biāo)通常用來(lái)衡量一個(gè)概率模型的好壞,在主題模型領(lǐng)域也是比較常見(jiàn)的衡量指標(biāo),perlexity指數(shù)越低表示模型的性能越好。Perlexity定義為:
其中W為測(cè)試集,wm為測(cè)試集中的單詞,Nm為測(cè)試集中的單詞數(shù)。LDA模型與AW-LDA模型的perlexity指數(shù)對(duì)比如表1所示。
表1 LDA模型與AW-LDA模型對(duì)比
由表1可以看出隨著迭代次數(shù)的增加,LDA模型的Perlexity指數(shù)越來(lái)越低,模型性能越來(lái)越好,且變化率越來(lái)越低,表示模型趨于穩(wěn)定;AW-LDA模型的Perlexity指數(shù)不隨迭代次數(shù)變化是因?yàn)橹付嗣總€(gè)用戶(hù)的文本主題數(shù)為1,即用戶(hù)選擇詞的概率已經(jīng)確定,迭代不會(huì)影響用戶(hù)選擇詞的概率;在LDA模型收斂的過(guò)程中,AW-LDA模型的Perlexity指數(shù)一直比LDA模型低,表明使用AW-LDA模型對(duì)微博用戶(hù)的微博文本和背景進(jìn)行分析,的確能提升模型的性能。
本文采用文本內(nèi)容關(guān)鍵詞與背景關(guān)鍵詞結(jié)合的方式計(jì)算測(cè)試集與樣本集中的用戶(hù)相似度,并推薦問(wèn)答關(guān)鍵詞。推薦效果如圖3所示。
圖3 問(wèn)題數(shù)量推薦效果
由圖3可以看出,當(dāng)基于微博內(nèi)容和背景進(jìn)行關(guān)鍵詞推薦時(shí),隨著微博內(nèi)容所占的權(quán)重不斷增加,推薦的關(guān)鍵詞命中的問(wèn)題個(gè)數(shù)比例先增加后減少,且當(dāng)微博內(nèi)容所占的權(quán)重為0.84時(shí),推薦的關(guān)鍵詞命中的問(wèn)題個(gè)數(shù)比例達(dá)到最高,為83.73%;只基于微博內(nèi)容進(jìn)行關(guān)鍵詞推薦時(shí),關(guān)鍵詞命中的問(wèn)題個(gè)數(shù)比例為74.58%;只基于背景進(jìn)行關(guān)鍵詞推薦時(shí)關(guān)鍵詞命中的問(wèn)題個(gè)數(shù)比例為16.33%。都低于將微博內(nèi)容和背景以最優(yōu)的方式結(jié)合后的問(wèn)題關(guān)鍵詞推薦命中率,表明改進(jìn)后的關(guān)鍵詞推薦方法能使問(wèn)題更容易被回答。
圖4 問(wèn)題價(jià)值推薦效果
由圖4可以看出,當(dāng)基于微博內(nèi)容和背景進(jìn)行關(guān)鍵詞推薦時(shí),隨著微博內(nèi)容所占的權(quán)重不斷增加,推薦的關(guān)鍵詞命中的問(wèn)題價(jià)值比例先增加后減少,且當(dāng)微博內(nèi)容所占的權(quán)重為0.79時(shí),推薦的關(guān)鍵詞命中的問(wèn)題價(jià)值比例達(dá)到最高,為92.56%;只基于微博內(nèi)容進(jìn)行關(guān)鍵詞推薦時(shí),關(guān)鍵詞命中的問(wèn)題價(jià)值比例為77.03%;只基于背景進(jìn)行關(guān)鍵詞推薦時(shí)關(guān)鍵詞命中的問(wèn)題價(jià)值比例為23.95%。都低于將微博內(nèi)容和背景以最優(yōu)的方式結(jié)合后的問(wèn)題關(guān)鍵詞推薦命中率,表明改進(jìn)后的關(guān)鍵詞推薦方法能在問(wèn)題的價(jià)值方面做出有效的推薦。
文中針對(duì)微博的用戶(hù)關(guān)系,改進(jìn)了詞頻統(tǒng)計(jì)方法;針對(duì)微博文本的特殊結(jié)構(gòu),提出了一個(gè)適合提取微博用戶(hù)關(guān)鍵詞的模型AW-LDA,并針對(duì)微博文本內(nèi)容和用戶(hù)背景共存的特點(diǎn),提出了將內(nèi)容和背景結(jié)合起來(lái)進(jìn)行關(guān)鍵詞推薦的方法,實(shí)驗(yàn)表明該方法能從問(wèn)題個(gè)數(shù)和問(wèn)題價(jià)值方面做出有效的關(guān)鍵詞推薦。
今后的研究工作中將繼續(xù)優(yōu)化AW-LDA模型的效率,探索微博文本內(nèi)容和用戶(hù)背景結(jié)合的更好方法,并在詞頻統(tǒng)計(jì)環(huán)節(jié)加入對(duì)原創(chuàng)微博和轉(zhuǎn)發(fā)微博的考慮。