本發(fā)明涉及計(jì)算機(jī)學(xué)科中的數(shù)據(jù)挖掘,scrapy框架、html數(shù)據(jù)包分析、機(jī)器學(xué)習(xí)、計(jì)算機(jī)網(wǎng)絡(luò)和概率論與數(shù)理統(tǒng)計(jì)等,尤其是一種基于用戶影響力以及內(nèi)容的微博傳播預(yù)測(cè)方法。
背景技術(shù):
scrapy框架是利用python語(yǔ)言開(kāi)發(fā)的一個(gè)成熟、快速、高層次的web抓取框架,提供了多種類型的基類爬蟲,用來(lái)從網(wǎng)頁(yè)上提取結(jié)構(gòu)化信息。pagerank網(wǎng)頁(yè)排名技術(shù)是一種根據(jù)網(wǎng)絡(luò)之間相互的超鏈接來(lái)計(jì)算網(wǎng)頁(yè)等級(jí)的技術(shù),如今這種技術(shù)大都用來(lái)計(jì)算網(wǎng)絡(luò)結(jié)構(gòu)中節(jié)點(diǎn)的重要性。tf-idf技術(shù)是一種信息檢索的統(tǒng)計(jì)方法,用來(lái)評(píng)估數(shù)據(jù)挖掘領(lǐng)域中一個(gè)字詞對(duì)于一個(gè)文本集或者一個(gè)語(yǔ)料庫(kù)的重要程度。
微博網(wǎng)絡(luò)可以被理解為一個(gè)獨(dú)立的平臺(tái),使得每個(gè)微博用戶可以通過(guò)瀏覽、分享、收集有用或有趣的信息建立聯(lián)系。在微博網(wǎng)絡(luò)中,大量的微博用戶通過(guò)關(guān)注的方式建立好友關(guān)系。并且通過(guò)微博將信息共享出去來(lái)不斷擴(kuò)大自己的好友交流圈和粉絲團(tuán),最終形成海量的復(fù)雜的微博網(wǎng)絡(luò)關(guān)系。
快速發(fā)展的新浪微博網(wǎng)絡(luò)為信息的分享交流提供了快速傳播的途徑,逐漸成為網(wǎng)絡(luò)上信息傳播的一個(gè)重要的平臺(tái),甚至產(chǎn)生了社交媒體(social-media)這一新概念。目前研究現(xiàn)狀來(lái)看,傳統(tǒng)的信息傳播模式已經(jīng)有了比較成熟的傳播理論,但對(duì)于微博網(wǎng)絡(luò)中的信息傳播預(yù)測(cè)的研究分析還沒(méi)有得到足夠的重視。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明主要是解決現(xiàn)有技術(shù)所存在的技術(shù)問(wèn)題;提供了一種從基礎(chǔ)數(shù)據(jù)爬取、預(yù)測(cè)因子提取、訓(xùn)練集劃分、機(jī)器學(xué)習(xí)模型訓(xùn)練四個(gè)方面來(lái)實(shí)現(xiàn)粉絲轉(zhuǎn)發(fā)微博的預(yù)測(cè),較好地提升了預(yù)測(cè)精確度的一種基于用戶影響力以及內(nèi)容的微博傳播預(yù)測(cè)方法。
本發(fā)明的上述技術(shù)問(wèn)題主要是通過(guò)下述技術(shù)方案得以解決的:
一種基于用戶影響力以及內(nèi)容的微博傳播預(yù)測(cè)方法,其特征在于,包括:
步驟1、基于scrapy模塊創(chuàng)建分布式爬蟲,利用輸入的用戶和其粉絲的新浪微博id對(duì)該用戶和粉絲的個(gè)人信息、用戶與粉絲之間的轉(zhuǎn)發(fā)關(guān)系、轉(zhuǎn)發(fā)微博進(jìn)行信息抓取。抓取的信息包括,用戶方面:用戶名、用戶新浪id、用戶新浪微博標(biāo)簽、待預(yù)測(cè)微博正文內(nèi)容、待預(yù)測(cè)微博發(fā)布時(shí)間、用戶粉絲數(shù)量,用戶關(guān)注;粉絲方面:粉絲名、粉絲新浪id、粉絲的新浪標(biāo)簽、粉絲微博總數(shù)、粉絲轉(zhuǎn)發(fā)用戶的微博數(shù)以及轉(zhuǎn)發(fā)時(shí)間;
步驟2、基于pagerank模塊來(lái)計(jì)算用戶在微博網(wǎng)絡(luò)中的權(quán)威程度,計(jì)算公式為:
其中vi表示用戶id;f(vi)表示用戶的粉絲id集合;l(vj)表示用戶的關(guān)注其他用戶數(shù);a為傳播阻尼系數(shù),表示該用戶隨機(jī)關(guān)注其他用戶的概率。其大小影響迭代算法的效果和收斂速度,取值范圍(0,1);從抓取到的用戶關(guān)系網(wǎng)絡(luò)結(jié)構(gòu)數(shù)據(jù)中計(jì)算用戶pagerank值,進(jìn)行歸一化處理,形成用戶權(quán)威預(yù)測(cè)因子。
步驟3、將一天平均分為n個(gè)時(shí)間段,采用單個(gè)時(shí)間段粉絲轉(zhuǎn)發(fā)微博占粉絲所有抓發(fā)微博中百分比的計(jì)算方法,計(jì)算出粉絲關(guān)于n個(gè)不同時(shí)間段的轉(zhuǎn)發(fā)活躍度預(yù)測(cè)因子。經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,n在取6的時(shí)候有最好的實(shí)驗(yàn)效果。
步驟4、采用tf-idf詞語(yǔ)權(quán)重技術(shù)對(duì)微博內(nèi)容進(jìn)行重要性分析,計(jì)算公式如下:
步驟5、利用滾雪球的抽樣方法將提取到的轉(zhuǎn)發(fā)關(guān)系數(shù)據(jù)劃分成m折。通過(guò)實(shí)驗(yàn)測(cè)試,m取10折數(shù)據(jù)劃分具有最好的效率。
步驟6、在每一次的抽取的樣例中,將已轉(zhuǎn)發(fā)微博標(biāo)記為微博轉(zhuǎn)發(fā)訓(xùn)練集,即正向訓(xùn)練集;將未被轉(zhuǎn)發(fā)的微博標(biāo)記為未轉(zhuǎn)發(fā)訓(xùn)練集,即負(fù)向訓(xùn)練集;利用weka平臺(tái)提供的分類器api,貝葉斯網(wǎng)絡(luò)訓(xùn)練網(wǎng)絡(luò)標(biāo)注特征值依次為,微博重要性預(yù)測(cè)因子、粉絲時(shí)間段活躍度預(yù)測(cè)因子、原微博用戶權(quán)威性預(yù)測(cè)因子。進(jìn)行有監(jiān)督的貝葉斯網(wǎng)絡(luò)對(duì)訓(xùn)練集進(jìn)行訓(xùn)練,直至分類器參數(shù)收斂。貝葉斯網(wǎng)絡(luò)基于公式:
其中,p(b∩a)表示a與b的聯(lián)合概率,聯(lián)合概率表示兩個(gè)事件共同發(fā)生的概率;p(b)是b的邊緣概率,邊緣概率又稱先驗(yàn)概率,是b事件發(fā)生的概率。當(dāng)一個(gè)待預(yù)測(cè)微博輸入時(shí),可能轉(zhuǎn)發(fā)記為a,可能不轉(zhuǎn)發(fā)記為b。在預(yù)測(cè)錯(cuò)誤的先驗(yàn)概率b發(fā)生的情況下,找出最大概率p(a|b)的值就是可以最大概率地預(yù)測(cè)微博轉(zhuǎn)發(fā)。
本發(fā)明創(chuàng)造性的提出了一種基于用戶影響力以及內(nèi)容的微博傳播預(yù)測(cè)方法,整個(gè)方法流程概括如下:
基礎(chǔ)數(shù)據(jù)爬?。焊鶕?jù)獲得的用戶id,從特定的新浪微博網(wǎng)址上提取用戶個(gè)人信息,用戶之間微博轉(zhuǎn)發(fā)關(guān)系,用戶轉(zhuǎn)發(fā)微博的正文內(nèi)容。
預(yù)測(cè)因子提?。簭奶崛〉降臄?shù)據(jù)中分析得出,用戶權(quán)威性預(yù)測(cè)因子,粉絲轉(zhuǎn)發(fā)活躍度預(yù)測(cè)因子,微博內(nèi)容重要性預(yù)測(cè)因子,根據(jù)這三個(gè)預(yù)測(cè)因子綜合對(duì)訓(xùn)練集標(biāo)注。
訓(xùn)練集劃分:合理的數(shù)據(jù)集劃分,合理的采樣方法,合理的交叉驗(yàn)證將訓(xùn)練集分為微博轉(zhuǎn)發(fā)集和微博忽略集可以顯著提高預(yù)測(cè)模型的準(zhǔn)確度。
機(jī)器學(xué)習(xí):利用weka平臺(tái),采用有監(jiān)督的貝葉斯網(wǎng)絡(luò)對(duì)訓(xùn)練集訓(xùn)練,直至貝葉斯網(wǎng)絡(luò)參數(shù)收斂。
在上述的一種基于用戶影響力以及內(nèi)容的微博傳播預(yù)測(cè)方法,所述步驟5具體包括:先在未被選取的樣例中隨機(jī)選擇一些節(jié)點(diǎn),然后再用簡(jiǎn)單的寬度優(yōu)先搜索算法,從選中的用戶節(jié)點(diǎn)擴(kuò)展成一個(gè)節(jié)點(diǎn)范圍,這個(gè)節(jié)點(diǎn)范圍就可以被作為一個(gè)完整的抽樣樣例。然后再?gòu)臑楸贿x取的樣例中隨機(jī)選擇一些節(jié)點(diǎn),依次類推。因?yàn)榫W(wǎng)絡(luò)結(jié)構(gòu)的信息是十分龐大的,所以10次滾雪球抽樣基本不會(huì)相互覆蓋。將已轉(zhuǎn)發(fā)微博標(biāo)記為微博轉(zhuǎn)發(fā)訓(xùn)練集,將未轉(zhuǎn)發(fā)微博標(biāo)記為微博忽略訓(xùn)練集。
在上述的一種基于用戶影響力以及內(nèi)容的微博傳播預(yù)測(cè)方法,還包括一個(gè)驗(yàn)證貝葉斯模型的步驟,通過(guò)步驟1-6得到一個(gè)成熟的可用于預(yù)測(cè)的貝葉斯模型,對(duì)于這個(gè)模型的,驗(yàn)證貝葉斯模型效果的具體方法是:用8次抽樣來(lái)訓(xùn)練,用剩下2次抽樣來(lái)驗(yàn)證分類器效果。反復(fù)進(jìn)行交叉驗(yàn)證,即變換訓(xùn)練樣例與驗(yàn)證樣例。
因此,本發(fā)明具有如下優(yōu)點(diǎn):1.該爬蟲方法獲得原創(chuàng)微博更全面的信息傳播過(guò)程,包括轉(zhuǎn)發(fā)微博,轉(zhuǎn)發(fā)用戶,用戶評(píng)論等。2.通過(guò)pagerank算法找到信息傳播過(guò)程中的關(guān)鍵節(jié)點(diǎn),從而獲得信息傳播的關(guān)鍵路徑。3.通過(guò)在分類器中加入時(shí)間段活躍度因子,可以提高分類器精度。4.使用滾雪球抽樣方法,提高訓(xùn)練集抽取速度且不失一般性。5.使用tf-idf計(jì)算微博重要性,提高預(yù)測(cè)新浪微博特定粉絲轉(zhuǎn)發(fā)微博的準(zhǔn)確度。
附圖說(shuō)明
圖1是本發(fā)明中的scrapy框架的工作流程圖。
圖2是本發(fā)明中的pagerank技術(shù)概念示意圖。
圖3是本發(fā)明中的tf-idf技術(shù)工作示意圖。
圖4是本發(fā)明中的貝葉斯網(wǎng)絡(luò)工作示意圖。
具體實(shí)施方式
下面通過(guò)實(shí)施例,并結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步具體的說(shuō)明。
實(shí)施例:
一、首先介紹一下本發(fā)明的整個(gè)方法流程,包括:
步驟1:scrapy程序創(chuàng)建分布式spiders,利用輸入的用戶和其粉絲的新浪微博id對(duì)該用戶和粉絲的個(gè)人信息(http://weibo.cn/attgroup/opening?uid=id)、用戶與粉絲之間的轉(zhuǎn)發(fā)關(guān)系、轉(zhuǎn)發(fā)微博(http://weibo.cn/id/profile?filter=1&page=1)進(jìn)行信息抓取。抓取的信息包括,用戶方面:用戶名、用戶新浪id、用戶新浪微博標(biāo)簽、待預(yù)測(cè)微博正文內(nèi)容、待預(yù)測(cè)微博發(fā)布時(shí)間、用戶粉絲數(shù)量,用戶關(guān)注;粉絲方面:粉絲名、粉絲新浪id、粉絲的新浪標(biāo)簽、粉絲微博總數(shù)、粉絲轉(zhuǎn)發(fā)用戶的微博數(shù)以及轉(zhuǎn)發(fā)時(shí)間;
步驟2:利用pagerank技術(shù)來(lái)計(jì)算用戶在微博網(wǎng)絡(luò)中的權(quán)威程度,計(jì)算公式為:
其中vi表示用戶id;
f(vi)表示用戶的粉絲id集合;
l(vj)表示用戶的關(guān)注其他用戶數(shù);
a為傳播阻尼系數(shù),表示該用戶隨機(jī)關(guān)注其他用戶的概率。其大小影響迭代算法的效果和收斂速度,取值范圍(0,1);
從抓取到的用戶關(guān)系網(wǎng)絡(luò)結(jié)構(gòu)數(shù)據(jù)中計(jì)算用戶pagerank值,進(jìn)行歸一化處理,形成用戶權(quán)威預(yù)測(cè)因子。
步驟3:將一天平均分為6個(gè)時(shí)間段,采用單個(gè)時(shí)間段粉絲轉(zhuǎn)發(fā)微博占粉絲所有抓發(fā)微博中百分比的計(jì)算方法,計(jì)算出粉絲關(guān)于6個(gè)不同時(shí)間段的轉(zhuǎn)發(fā)活躍度預(yù)測(cè)因子。
步驟4:采用tf-idf詞語(yǔ)權(quán)重技術(shù)對(duì)微博內(nèi)容進(jìn)行重要性分析,計(jì)算公式如下:
步驟5:利用滾雪球的抽樣方法將提取到的轉(zhuǎn)發(fā)關(guān)系數(shù)據(jù)劃分成10折。具體做法為,先在未被選取的樣例中隨機(jī)選擇一些節(jié)點(diǎn),然后再用簡(jiǎn)單的寬度優(yōu)先搜索算法,從選中的用戶節(jié)點(diǎn)擴(kuò)展成一個(gè)節(jié)點(diǎn)范圍,這個(gè)節(jié)點(diǎn)范圍就可以被作為一個(gè)完整的抽樣樣例。然后再?gòu)臑楸贿x取的樣例中隨機(jī)選擇一些節(jié)點(diǎn),依次類推。因?yàn)榫W(wǎng)絡(luò)結(jié)構(gòu)的信息是十分龐大的,所以10次滾雪球抽樣基本不會(huì)相互覆蓋。
將已轉(zhuǎn)發(fā)微博標(biāo)記為微博轉(zhuǎn)發(fā)訓(xùn)練集,將未轉(zhuǎn)發(fā)微博標(biāo)記為微博忽略訓(xùn)練集。
步驟6:在每一次的抽取的樣例中,將已轉(zhuǎn)發(fā)微博標(biāo)記為微博轉(zhuǎn)發(fā)訓(xùn)練集,即正向訓(xùn)練集;將未被轉(zhuǎn)發(fā)的微博標(biāo)記為未轉(zhuǎn)發(fā)訓(xùn)練集,即負(fù)向訓(xùn)練集;利用weka平臺(tái)提供的分類器api,貝葉斯網(wǎng)絡(luò)訓(xùn)練網(wǎng)絡(luò)標(biāo)注特征值依次為,微博重要性預(yù)測(cè)因子、粉絲時(shí)間段活躍度預(yù)測(cè)因子、原微博用戶權(quán)威性預(yù)測(cè)因子。進(jìn)行有監(jiān)督的貝葉斯網(wǎng)絡(luò)對(duì)訓(xùn)練集進(jìn)行訓(xùn)練,直至分類器參數(shù)收斂。貝葉斯網(wǎng)絡(luò)是一個(gè)簡(jiǎn)單的條件概率模型,公式可以簡(jiǎn)單的被表示為:
其中,p(b∩a)表示a與b的聯(lián)合概率,聯(lián)合概率表示兩個(gè)事件共同發(fā)生的概率;p(b)是b的邊緣概率,邊緣概率又稱先驗(yàn)概率,是b事件發(fā)生的概率。當(dāng)一個(gè)待預(yù)測(cè)微博輸入時(shí),可能轉(zhuǎn)發(fā)記為a,可能不轉(zhuǎn)發(fā)記為b。在預(yù)測(cè)錯(cuò)誤的先驗(yàn)概率b發(fā)生的情況下,找出最大概率p(a|b)的值就是可以最大概率地預(yù)測(cè)微博轉(zhuǎn)發(fā)。
評(píng)估方法是,用8次抽樣來(lái)訓(xùn)練,用剩下2次抽樣來(lái)驗(yàn)證分類器效果。反復(fù)進(jìn)行交叉驗(yàn)證,即變換訓(xùn)練樣例與驗(yàn)證樣例。
二、下面以微博名人高曉松的微博轉(zhuǎn)發(fā)預(yù)測(cè)為例,詳細(xì)介紹采用上述方法的具體預(yù)測(cè)流程。
以下環(huán)境作為測(cè)試平臺(tái)為例來(lái)說(shuō)明:intelcorei5-4460@3.20ghz,內(nèi)存為8gb。在該平臺(tái)下,對(duì)高曉松的一條微博進(jìn)行轉(zhuǎn)發(fā)預(yù)測(cè)并測(cè)試其預(yù)測(cè)準(zhǔn)確率。
圖1是本發(fā)明中的scrapy框架工作流程圖,本發(fā)明采用windows+scrapy+mysql+weka綜合平臺(tái)來(lái)實(shí)現(xiàn)微博轉(zhuǎn)發(fā)預(yù)測(cè)。
首先由scrapy控制中心啟動(dòng)爬蟲,根據(jù)步驟1,爬蟲向下載器發(fā)送requests請(qǐng)求,下載器從互聯(lián)網(wǎng)上下載網(wǎng)頁(yè)資源,交由爬蟲解析處理,爬蟲從網(wǎng)頁(yè)數(shù)據(jù)資源上提取出高曉松的個(gè)人信息,高曉松的微博以及高曉松微博的轉(zhuǎn)發(fā)關(guān)系等,利用物件中間件存放到數(shù)據(jù)庫(kù)中。
關(guān)于利用pagerank技術(shù)計(jì)算用戶權(quán)威值的策略,圖2為其概念圖。
這個(gè)概念圖顯示出這個(gè)算法兩個(gè)最重要的核心:如果一個(gè)網(wǎng)頁(yè)被很多其他網(wǎng)頁(yè)鏈接到的話說(shuō)明這個(gè)網(wǎng)頁(yè)比較重要,也就是說(shuō)pagerank值會(huì)相對(duì)較高;如果一個(gè)pagerank值很高的網(wǎng)頁(yè)鏈接到一個(gè)其他的網(wǎng)頁(yè),那么被連接的網(wǎng)頁(yè)的pagerank值會(huì)相應(yīng)提高。根據(jù)步驟2的公式可以計(jì)算出高曉松在新浪微博中的權(quán)威度。
關(guān)于tf-idf技術(shù)計(jì)算微博正文重要性,圖3是本發(fā)明中步驟4所涉及的微博文本計(jì)算模型,通過(guò)統(tǒng)計(jì)詞頻tf和逆文檔頻率idf可以計(jì)算出此條微博正文的熱度,從而更好地預(yù)測(cè)該熱度的微博是否更容易被轉(zhuǎn)發(fā)。
關(guān)于滾雪球采樣是指隨機(jī)抽取一個(gè)節(jié)點(diǎn)對(duì)其實(shí)施訪問(wèn),在從次節(jié)點(diǎn)出發(fā)收集其他節(jié)點(diǎn)的調(diào)查數(shù)據(jù)數(shù)據(jù),因?yàn)槌槿〉降霓D(zhuǎn)發(fā)關(guān)系是龐大的。宏觀計(jì)算浪費(fèi)計(jì)算機(jī)資源并且對(duì)轉(zhuǎn)發(fā)預(yù)測(cè)的增益很少。故而采用10折滾雪球采樣生成微博轉(zhuǎn)發(fā)訓(xùn)練集和微博忽略訓(xùn)練集。
關(guān)于貝葉斯網(wǎng)絡(luò)使用,圖4是貝葉斯網(wǎng)絡(luò)的工作原理,在傳播過(guò)程中,轉(zhuǎn)發(fā)預(yù)測(cè)轉(zhuǎn)換為條件概率模型,高曉松粉絲的粉絲轉(zhuǎn)發(fā)預(yù)測(cè)要基于高曉松粉絲的轉(zhuǎn)發(fā)概率,采取合理的轉(zhuǎn)發(fā)預(yù)測(cè)模型,可以顯著地提高轉(zhuǎn)發(fā)預(yù)測(cè)的精度。
本文中所描述的具體實(shí)施例僅僅是對(duì)本發(fā)明精神作舉例說(shuō)明。本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員可以對(duì)所描述的具體實(shí)施例做各種各樣的修改或補(bǔ)充或采用類似的方式替代,但并不會(huì)偏離本發(fā)明的精神或者超越所附權(quán)利要求書所定義的范圍。