一種視頻領(lǐng)域相關(guān)的分布式微博數(shù)據(jù)抓取系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種視頻領(lǐng)域相關(guān)的分布式微博數(shù)據(jù)抓取系統(tǒng),該系統(tǒng)包括視頻網(wǎng)站抓取子系統(tǒng)、微博用戶名匹配子系統(tǒng)及微博數(shù)據(jù)抓取子系統(tǒng),本發(fā)明使用對整個(gè)分布式系統(tǒng)中的抓取器節(jié)點(diǎn)進(jìn)行管理和監(jiān)控,在頁面解析過程中,構(gòu)建解析方法庫,解決了因視頻網(wǎng)站頁面結(jié)構(gòu)變化導(dǎo)致的完全重寫解析器的問題。在更新控制中,使用視頻熱度模型來控制視頻網(wǎng)頁的解析頻次,使用基于PageRank的微博用戶影響力模型來控制微博用戶數(shù)據(jù)抓取的頻次。在微博數(shù)據(jù)抓取過程中引入了LDA模型構(gòu)建微博用戶的主題模型,從而對特定領(lǐng)域的微博用戶進(jìn)行過濾。本發(fā)明極大的提高了抓取海量視頻領(lǐng)域微博數(shù)據(jù)的效率和穩(wěn)定性。
【專利說明】一種視頻領(lǐng)域相關(guān)的分布式微博數(shù)據(jù)抓取系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)挖掘【技術(shù)領(lǐng)域】,具體地說是一種視頻領(lǐng)域相關(guān)的分布式微博數(shù)據(jù) 抓取系統(tǒng)。
【背景技術(shù)】
[0002] 隨著社交網(wǎng)絡(luò)的快速發(fā)展,類似微博的社交工具已經(jīng)深入到人們生活的方方面 面,同時(shí)網(wǎng)絡(luò)視頻的發(fā)展也使得更多的人會在互聯(lián)網(wǎng)上觀看視頻,兩者結(jié)合起來的結(jié)果就 是出現(xiàn)這樣的現(xiàn)象:越來越多的用戶在視頻網(wǎng)站上看完視頻后會到微博上去發(fā)表與該視頻 相關(guān)的博文。建立視頻領(lǐng)域相關(guān)的微博數(shù)據(jù)集對于用戶了解視頻的內(nèi)容和評價(jià)以及研究人 員針對視頻領(lǐng)域的文本的研究分析會有很大的幫助。
[0003] 傳統(tǒng)的爬蟲的目標(biāo)是盡可能地采集信息頁面,并不關(guān)心采集的頁面是否符合特定 的主題,同時(shí)對頁面數(shù)據(jù)的更新也不會根據(jù)一些條件加以區(qū)分。這樣一方面導(dǎo)致了大量的 系統(tǒng)資源和網(wǎng)絡(luò)帶寬浪費(fèi)在抓取與主題無關(guān)的頁面上,同時(shí)由于對所有頁面一視同仁,而 沒有考慮頁面本身的更新頻率,同樣浪費(fèi)了大量的資源。在海量數(shù)據(jù)的情況下,傳統(tǒng)的分布 式爬蟲雖然通過分布式解決了節(jié)點(diǎn)擴(kuò)展的問題,但是對于抓取特定領(lǐng)域的數(shù)據(jù)沒有給出有 效的方法,對頁面的內(nèi)容更新頻率不加區(qū)分,也造成了大量重復(fù)頁面的抓取,降低了分布式 為海量數(shù)據(jù)的抓取帶來的效率上的提升。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的是針對海量數(shù)據(jù)情況下特定領(lǐng)域微博數(shù)據(jù)抓取現(xiàn)有技術(shù)的缺陷而 提出的一種視頻領(lǐng)域相關(guān)的分布式微博數(shù)據(jù)抓取系統(tǒng),該系統(tǒng)可以快速有效的抓取到大量 的視頻及與之相關(guān)的微博數(shù)據(jù)。
[0005] 實(shí)現(xiàn)本發(fā)明目的的具體技術(shù)方案是: 一種視頻領(lǐng)域相關(guān)的分布式微博數(shù)據(jù)抓取系統(tǒng),該系統(tǒng)包括視頻網(wǎng)站抓取子系統(tǒng)、微 博用戶名匹配子系統(tǒng)及微博數(shù)據(jù)抓取子系統(tǒng),首先通過視頻網(wǎng)站抓取子系統(tǒng),得到與視頻 相關(guān)視頻、演員和導(dǎo)演名稱實(shí)體名和播放量、評論量和收藏量的統(tǒng)計(jì)數(shù)據(jù),通過分析這些統(tǒng) 計(jì)數(shù)據(jù),得到視頻的熱門程度,針對不同的熱門程度視頻相關(guān)數(shù)據(jù)的抓取設(shè)置不同的抓取 頻率;接著通過微博用戶名匹配子系統(tǒng)將這些實(shí)體名與微博名進(jìn)行匹配,得到微博用戶種 子集;最后通過微博數(shù)據(jù)抓取子系統(tǒng),在微博用戶種子集的基礎(chǔ)上,通過微博開放平臺關(guān)注 關(guān)系A(chǔ)PI抓取與種子用戶關(guān)系在三層以內(nèi)的所有用戶作為候選用戶集合,同時(shí)通過微博用 戶博文API獲取用戶博文和用戶信息,一方面使用用戶博文構(gòu)建用戶主體模型,對用戶進(jìn) 行主題過濾,留下與視頻相關(guān)的用戶作為最后的用戶集合,另一方面使用微博用戶相關(guān)的 統(tǒng)計(jì)信息計(jì)算用戶影響力,針對不同影響力程度的用戶設(shè)置不同的抓取頻率。
[0006] 所述視頻網(wǎng)站抓取子系統(tǒng)為一種可動態(tài)擴(kuò)展節(jié)點(diǎn)與負(fù)載均衡的分布式系統(tǒng),包括 服務(wù)器配置及抓取器結(jié)構(gòu),其中:所述服務(wù)器配置包括: 參數(shù)設(shè)置:通過一個(gè)配置服務(wù)器來提供抓取器節(jié)點(diǎn)的參數(shù)配置的設(shè)置,并在抓取器向 服務(wù)器發(fā)送參數(shù)配置請求時(shí),根據(jù)抓取器的唯一編號(MAC_ID)返回該抓取器的配置信息; 節(jié)點(diǎn)擴(kuò)展:當(dāng)增加抓取節(jié)點(diǎn)時(shí),配置服務(wù)器接收到該節(jié)點(diǎn)通過socket協(xié)議發(fā)送過來的 添加抓取節(jié)點(diǎn)的命令(ADD_CRAWLER),配置服務(wù)器向配置信息數(shù)據(jù)中添加一條記錄,并將運(yùn) 行的抓取器節(jié)點(diǎn)的總數(shù)加1 ; 異常監(jiān)控:每個(gè)抓取器節(jié)點(diǎn)每隔一段時(shí)間(5分鐘)向配置服務(wù)器發(fā)送表示此抓取器節(jié) 點(diǎn)正在正常運(yùn)行的命令(RUNNING),配置服務(wù)器在抓取器節(jié)點(diǎn)狀態(tài)列表中記錄每個(gè)抓取器 節(jié)點(diǎn)的ID和對應(yīng)的最后收到該節(jié)點(diǎn)發(fā)出表示正在正常運(yùn)行的命令的時(shí)間;配置服務(wù)器每 隔一段時(shí)間(10分鐘)會遍歷抓取器節(jié)點(diǎn)狀態(tài)列表,如果某個(gè)抓取器節(jié)點(diǎn)最后發(fā)出表示正在 正常運(yùn)行的命令到當(dāng)前時(shí)間的時(shí)間間隔大于10分鐘,則表示該抓取器已出現(xiàn)異常,配置服 務(wù)器將運(yùn)行的抓取器的總數(shù)減1 ; 負(fù)載均衡:各個(gè)抓取器完成的任務(wù)相同,抓取器上的負(fù)載指的是配置服務(wù)器分配到各 個(gè)抓取器上要抓取視頻數(shù)量的多少;負(fù)載均衡涉及到兩個(gè)階段;第一個(gè)階段為數(shù)據(jù)的分 發(fā);數(shù)據(jù)分為兩類:電影和電視??;電視劇因?yàn)榘募瘮?shù)多,因此要和電影獨(dú)立開來;數(shù) 據(jù)分發(fā)的過程是將電影和電視的唯一編碼(URL)通過一種均勻的散列函數(shù)映射到正在運(yùn)行 的抓取器節(jié)點(diǎn)的MAC_ID上,從而抓取器在運(yùn)行時(shí)能夠通過MAC_ID來獲取要抓取的電影和 電視劇列表;第二階段,在一次的數(shù)據(jù)抓取完成之后,通過記錄下的抓取器抓取的開始和結(jié) 束時(shí)間,計(jì)算所有抓取器完成一次抓取所需要的時(shí)間,當(dāng)下次有新的需要抓取的視頻加入 到列表中時(shí),按照各個(gè)抓取器上次記錄下的抓取一次所需時(shí)間的比例將這些新的電影和電 視劇分配到各個(gè)抓取器節(jié)點(diǎn); 更新控制:針對視頻熱門程度的不同,采用不同的抓取頻率;獲取到所有視頻的統(tǒng)計(jì) 數(shù)據(jù)之后,通過視頻的播放量、評論量和收藏量計(jì)算視頻的熱門指數(shù),按照熱門指數(shù)將視頻 分為三個(gè)等級,三個(gè)等級的更新頻率分別為:1次/1天,1次/3天,1次/7天;使用更新控 制器來設(shè)置視頻對應(yīng)的鏈接在網(wǎng)頁解析器下的解析頻率;同時(shí),更新控制器中熱門指數(shù)的 計(jì)算頻率設(shè)定為每周一次; 所述抓取器結(jié)構(gòu):每個(gè)抓取器節(jié)點(diǎn)包括鏈接抓取器、網(wǎng)頁解析器、數(shù)據(jù)存儲器和更新控 制器,其中: 所述鏈接抓取器,按照廣度遍歷算法對整個(gè)視頻網(wǎng)站進(jìn)行掃描,獲取滿足條件的網(wǎng)頁 的鏈接,并將這些鏈接存儲在鏈接數(shù)據(jù)庫中;同時(shí),為數(shù)據(jù)庫中每個(gè)鏈接添加是否已被訪問 的標(biāo)識,如果某個(gè)鏈接已被其中一個(gè)節(jié)點(diǎn)訪問過,則其他則跳過該節(jié)點(diǎn),獲取下一個(gè)鏈接, 如果此鏈接未被訪問,則訪問該頁面并將該網(wǎng)頁中包含的屬于本網(wǎng)站的鏈接加入到鏈接數(shù) 據(jù)庫中;所述滿足要求的網(wǎng)頁指含有導(dǎo)演、演員基本信息和視頻播放、評分?jǐn)?shù)據(jù)的網(wǎng)頁; 所述網(wǎng)頁解析器,從數(shù)據(jù)存儲器中獲取所有滿足的鏈接,加載鏈接對應(yīng)的網(wǎng)頁,然后進(jìn) 行網(wǎng)頁的解析,得到所需的視頻數(shù)據(jù);構(gòu)建解析方法庫,如果鏈接沒有標(biāo)明解析的方法,則 遍歷每一種方法解析每個(gè)鏈接,當(dāng)鏈接被成功解析時(shí),將該鏈接的解析方法標(biāo)記為該方法, 如果已經(jīng)標(biāo)明了解析方法的鏈接在使用該方法解析失敗時(shí),則向解析方法庫中添加新的解 析方法; 所述數(shù)據(jù)存儲器,用于存儲視頻鏈接列表、視頻基本信息和統(tǒng)計(jì)數(shù)據(jù)、解析方法庫數(shù) 據(jù); 所述更新控制器,根據(jù)數(shù)據(jù)庫中存儲的視頻鏈接列表中每條鏈接的更新頻率,使用定 時(shí)任務(wù)控制網(wǎng)頁解析器解析網(wǎng)頁的頻率。
[0007] 所述微博用戶名匹配子系統(tǒng)包括查找模塊及過濾模塊,其中: 所述查找模塊,在視頻網(wǎng)站抓取結(jié)束之后,得到與視頻相關(guān)視頻、演員和導(dǎo)演名稱的實(shí) 體名,將這些視頻名與海量的微博用戶名進(jìn)行匹配,找出對應(yīng)的微博名;查找的過程按照條 件嚴(yán)格程度的不同分為三個(gè)步驟: 步驟1 :嚴(yán)格按照視頻名、演員和導(dǎo)演名來查找微博用戶; 步驟2 :使用一些關(guān)鍵詞來給視頻名、演員和導(dǎo)演名加上前綴和后綴,然后嚴(yán)格按照加 了前綴或后綴的詞查找微博用戶;其中,所述關(guān)鍵詞為電影、電視劇、演員和導(dǎo)演; 步驟3 :使用視頻名、演員和導(dǎo)演名進(jìn)行模糊查找; 所述過濾模塊,通過查找模塊步驟2獲取到的用戶可以確定為視頻領(lǐng)域的用戶,其他 用戶則主要基于主題過濾,通過主題模型構(gòu)建所有用戶的主題分布,選取與視頻主題概率 大的用戶作為種子用戶;構(gòu)建主題模型的過程如下: 步驟1 :獲取查找到的所有用戶的博文,將每個(gè)用戶的所有博文作為一篇文檔,使用 LDA算法進(jìn)行訓(xùn)練,得到每個(gè)用戶的主題分布; 步驟2 :選取每個(gè)用戶主題分布下概率值最大的N個(gè)主題(N取5),采用語義相似度計(jì) 算這N個(gè)主題每個(gè)主題下的前Μ個(gè)詞(M取20)與視頻的語義相似度之和,如果這個(gè)值小于 一定的閾值則過濾掉該用戶。
[0008] 所述微博用戶名匹配子系統(tǒng)為一種可動態(tài)擴(kuò)展節(jié)點(diǎn)的分布式系統(tǒng),該系統(tǒng)包括服 務(wù)器配置及抓取器結(jié)構(gòu),其中,所述服務(wù)器配置包括: 參數(shù)設(shè)置:通過一個(gè)配置服務(wù)器來提供抓取器節(jié)點(diǎn)的參數(shù)配置的設(shè)置,并在抓取器向 服務(wù)器發(fā)送參數(shù)配置請求時(shí),根據(jù)抓取器的唯一編號(MAC_ID)返回該抓取器的配置信息; 擴(kuò)展節(jié)點(diǎn):當(dāng)增加抓取器節(jié)點(diǎn)時(shí),配置服務(wù)器會接收到該節(jié)點(diǎn)通過socket協(xié)議發(fā)送過 來的添加抓取器節(jié)點(diǎn)的命令(ADD_CRAWLER),配置服務(wù)器向配置信息數(shù)據(jù)中添加一條記錄, 并將總運(yùn)行的抓取器的數(shù)量加1 ; 異常監(jiān)控:每個(gè)抓取器節(jié)點(diǎn)每隔一段時(shí)間(5分鐘)向配置服務(wù)器發(fā)送表示此抓取器節(jié) 點(diǎn)正在正常運(yùn)行的命令(RUNNING);配置服務(wù)器在抓取器節(jié)點(diǎn)狀態(tài)列表中記錄每個(gè)抓取器 節(jié)點(diǎn)的ID和對應(yīng)的最后收到該節(jié)點(diǎn)發(fā)出表示正在正常運(yùn)行的命令的時(shí)間;配置服務(wù)器每 隔一段時(shí)間(10分鐘)會遍歷抓取器節(jié)點(diǎn)狀態(tài)列表,如果某個(gè)抓取器節(jié)點(diǎn)最后發(fā)出表示正在 正常運(yùn)行的命令到當(dāng)前時(shí)間的時(shí)間間隔大于10分鐘,則表示該抓取器已出現(xiàn)異常,配置服 務(wù)器將運(yùn)行的抓取器的總數(shù)減1 ; 更新控制:采用依據(jù)用戶活躍度和影響力的更新來控制抓取頻率;用戶活躍度的計(jì)算 基于用戶原創(chuàng)微博和轉(zhuǎn)發(fā)微博的發(fā)布頻率,用戶影響力的計(jì)算基于加入權(quán)重的PageRank 算法;按照用戶影響力將所有用戶分為三個(gè)級別,設(shè)定不同的更新頻率,分別為:1次/1天, 1次/3天,1次/7天;將用戶影響力的計(jì)算頻率設(shè)為每周一次; 加入權(quán)重的PageRank算法,通過用戶之間的粉絲和關(guān)注關(guān)系構(gòu)建用戶關(guān)系網(wǎng),將微博 用戶看作網(wǎng)絡(luò)中的節(jié)點(diǎn),用戶之間的粉絲與關(guān)注關(guān)系看作節(jié)點(diǎn)之間的邊;微博用戶的影響 力計(jì)算通過改進(jìn)的PageRank算法獲?。桓倪M(jìn)的PageRank算法加入了用戶自身因素的影響; 其中,所述用戶自身因素的影響為用戶微博數(shù)、用戶粉絲數(shù)、用戶的活躍度、用戶微博的傳 播能力、用戶粉絲的影響力; 所述抓取器結(jié)構(gòu):每個(gè)抓取器節(jié)點(diǎn)包括微博用戶集合抓取器、用戶數(shù)據(jù)抓取器、數(shù)據(jù)存 儲器、用戶過濾器和更新控制器,其中: 所述微博用戶集合抓取器,將微博用戶名匹配子系統(tǒng)中得到的微博用戶作為種子用 戶,通過微博用戶關(guān)系A(chǔ)PI獲取這些用戶關(guān)注的用戶,并將這些新的用戶加入到用戶集合 中; 所述用戶數(shù)據(jù)抓取器,首先從用戶集合得到用戶列表,使用HASH函數(shù)將用戶ID映射到 〇到節(jié)點(diǎn)數(shù)目之間的整數(shù),如果該整數(shù)為當(dāng)前節(jié)點(diǎn),這樣每個(gè)用戶的數(shù)據(jù)抓取就被分配到該 節(jié)點(diǎn)上,同時(shí)對該用戶ID取余,將其分配到線程ID與余數(shù)相等的線程上進(jìn)行抓??;接著,通 過微博API抓取用戶的基本信息和博文數(shù)據(jù); 所述數(shù)據(jù)存儲器,進(jìn)行用戶集合、用戶基本信息和博文數(shù)據(jù)的存儲; 所述用戶過濾器,過濾掉與視頻領(lǐng)域相關(guān)性小于一定閾值的微博用戶; 所述更新控制器,根據(jù)用戶集合中存儲每個(gè)用戶的數(shù)據(jù)更新頻率,使用定時(shí)器來設(shè)置 用戶數(shù)據(jù)抓取器對每個(gè)用戶的抓取頻率。
[0009] 本發(fā)明使用視頻熱度模型來控制視頻網(wǎng)頁的解析頻次,使用基于PageRank的微 博用戶影響力模型來控制微博用戶數(shù)據(jù)抓取的頻次。同時(shí)引入了 LDA模型構(gòu)建微博用戶的 主題模型,對特定領(lǐng)域的微博用戶進(jìn)行過濾,有助于方便快捷的抓取到大量的與所給領(lǐng)域 相關(guān)的數(shù)據(jù)。
【專利附圖】
【附圖說明】
[0010] 圖1為本發(fā)明結(jié)構(gòu)框圖; 圖2為本發(fā)明實(shí)施例的視頻網(wǎng)站抓取子系統(tǒng)結(jié)構(gòu)框圖; 圖3為本發(fā)明實(shí)施例的微博用戶名匹配子系統(tǒng)結(jié)構(gòu)框圖; 圖4為本發(fā)明實(shí)施例的微博數(shù)據(jù)抓取子系統(tǒng)結(jié)構(gòu)框圖。 具體實(shí)施方案
[0011] 下面結(jié)合附圖詳細(xì)說明本發(fā)明的實(shí)施例。 實(shí)施例
[0012] 參閱圖1,本發(fā)明包括視頻網(wǎng)站抓取子系統(tǒng)、微博用戶名匹配子系統(tǒng)及微博數(shù)據(jù)抓 取子系統(tǒng)。視頻網(wǎng)站抓取子系統(tǒng)抓取視頻網(wǎng)站上的視頻數(shù)據(jù),將這些數(shù)據(jù)存儲到數(shù)據(jù)存儲 器中,微博用戶名匹配子系統(tǒng)從數(shù)據(jù)存儲器的視頻數(shù)據(jù)中抽取出包含視頻名、導(dǎo)演名和演 員名的實(shí)體名,通過查找和過濾兩個(gè)過程之后,得到微博用戶種子集,最后微博數(shù)據(jù)抓取子 系統(tǒng)在微博用戶種子集的基礎(chǔ)上抓取更多的微博用戶,并抓取這些用戶的基本信息和博文 數(shù)據(jù),對這些用戶進(jìn)行過濾后得到最終的用戶集合,最終用戶集合的微博數(shù)據(jù)即為本發(fā)明 所要抓取的視頻領(lǐng)域微博數(shù)據(jù)。
[0013] 參閱圖2,視頻網(wǎng)站抓取子系統(tǒng)由兩部分構(gòu)成:視頻網(wǎng)站抓取器和配置服務(wù)器中 的視頻熱度計(jì)算模塊。視頻網(wǎng)站抓取器包括鏈接抓取器,頁面解析器、數(shù)據(jù)存儲器和更新控 制器;鏈接抓取器根據(jù)給定的種子鏈接,采用廣度遍歷的方式對視頻網(wǎng)站進(jìn)行遍歷,將遍歷 得到的鏈接使用數(shù)據(jù)存儲器存入到數(shù)據(jù)庫中,如果某個(gè)鏈接被分布式系統(tǒng)中的某個(gè)抓取器 節(jié)點(diǎn)抓取過則將此URL標(biāo)記為已抓取,其他抓取器節(jié)點(diǎn)不再獲取這條URL。
[0014] 頁面解析器加載通過HASH函數(shù)映射到此抓取節(jié)點(diǎn)上鏈接,對網(wǎng)頁進(jìn)行解析,提取 出視頻基本信息和視頻播放信息,通過數(shù)據(jù)存儲器進(jìn)行存儲。
[0015] 配置服務(wù)器中的視頻熱度計(jì)算模塊從數(shù)據(jù)庫中查詢出每個(gè)視頻的播放數(shù)據(jù)包括 播放量、播放日增量、評論數(shù)、日增評論數(shù)、收藏?cái)?shù)和日增評論數(shù),通過這些數(shù)據(jù)計(jì)算視頻的 熱度,通過熱度值的大小,分別給每部視頻增加熱度值分類字段,熱度值在0到0. 3之間的 值為〇,熱度值在〇. 3到0. 6之間的值為1,熱度值在0. 7到1之間的值為2,,將通過數(shù)據(jù)存 儲器對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行更新。視頻熱度計(jì)算模塊計(jì)算視頻熱度的頻率為1次/15天。
[0016] 更新控制器獲取視頻熱度值分類,按照如下規(guī)則控制頁面解析器對頁面的解析頻 率,熱度值標(biāo)簽〇、1、2對應(yīng)的控制機(jī)制依此為:1次/1天,1次/3天,1次/7天。
[0017] 參閱圖3,微博用戶名匹配子系統(tǒng)屬于配置服務(wù)器的一部分,首先從數(shù)據(jù)庫中抽取 出視頻的實(shí)體名集合,包括視頻名、演員名和導(dǎo)演名。這些實(shí)體名通過微博用戶名查找模塊 找到符合規(guī)則的候選微博用戶集合,再通過微博用戶過濾模塊過濾不屬于視頻領(lǐng)域的微博 用戶。
[0018] 候選用戶集模塊通過三種方式來產(chǎn)生候選用戶集。第一種方式按照實(shí)體名進(jìn)行全 匹配查詢,第二種方式為實(shí)體名加上前綴和后綴,按照修改后的實(shí)體名進(jìn)行全匹配查詢,第 三種方式按照實(shí)體名進(jìn)行模糊匹配。
[0019] 微博用戶過濾模塊將每個(gè)用戶的微博作為一個(gè)文檔,使用所有文檔訓(xùn)練LDA主題 模型,得到每個(gè)文檔的主題分布即每個(gè)用戶的主題分布。選取每個(gè)用戶主題分布下概率值 最大的N個(gè)主題(N取5),采用語義相似度計(jì)算這N個(gè)主題每個(gè)主題下的前Μ個(gè)詞與視頻的 語義相似度(Μ取20)之和,如果這個(gè)值小于一定的閾值則過濾掉該用戶。
[0020] 參閱圖4,微博數(shù)據(jù)抓取子系統(tǒng)有兩部分構(gòu)成:微博抓取器和配置服務(wù)器中的微 博用戶影響力計(jì)算模塊。微博抓取器包括用戶集合抓取器、用戶數(shù)據(jù)抓取器、數(shù)據(jù)存儲器、 用戶過濾器和更新控制器。
[0021] 在微博種子用戶集合的基礎(chǔ)上,通過用戶集合抓取器,獲取用戶的關(guān)注列表構(gòu)建 新的微博用戶集合,在獲取了大量的微博用戶之后,用戶數(shù)據(jù)抓取器負(fù)責(zé)抓取用戶基本信 息和博文數(shù)據(jù)。接著,通過博文數(shù)據(jù)構(gòu)建LDA模型。對用戶集合進(jìn)行過濾,得到與視頻領(lǐng)域 相關(guān)的微博用戶。配置服務(wù)器的用戶影響力計(jì)算模塊使用PageRank算法計(jì)算微博用戶的 影響力,按影響力的值將用戶分為3類:活躍、一般和不活躍,通過數(shù)據(jù)存儲器將每個(gè)用戶 的影響力分類更新到數(shù)據(jù)庫中。微博抓取器中的更新控制獲取每個(gè)用戶的影響力分類,以 此控制用戶數(shù)據(jù)抓取器對用戶基本信息和博文數(shù)據(jù)的抓取頻率。
[0022] 微博種子用戶集合中的用戶的ID經(jīng)過HASH函數(shù)映射后的值與當(dāng)前微博抓取器的 ID相等用戶,則該微博抓取器的用戶集合抓取器通過微博API獲取到當(dāng)前用戶的關(guān)注列表 用戶ID集合,加入到微博用戶集合中,并使用數(shù)據(jù)存儲器進(jìn)行存儲。
[0023] 微博用戶集合中的用戶的ID經(jīng)過HASH函數(shù)映射后的值與當(dāng)前微博抓取器的ID 相等,則當(dāng)前微博抓取器的用戶數(shù)據(jù)抓取器通過微博API獲取當(dāng)前用戶的基本信息和所有 博文數(shù)據(jù),并通過數(shù)據(jù)存儲器進(jìn)行存儲。
[0024] 配置服務(wù)器的用戶影響力計(jì)算模塊從數(shù)據(jù)庫中獲取用戶的關(guān)注關(guān)系構(gòu)建用戶關(guān) 系圖,邊的兩端為用戶,邊的權(quán)值通過用戶粉絲數(shù)、用戶微博數(shù)、用戶轉(zhuǎn)發(fā)和評論微博數(shù)等 計(jì)算得到,在用戶關(guān)系圖上使用PageRank算法得到用戶影響力排名。影響力的計(jì)算的頻率 設(shè)置為每周一次。
[0025] 更新控制器使用用戶影響力的排名來對用戶在用戶數(shù)據(jù)抓取器的抓取頻率進(jìn)行 控制。按照用戶影響力將所有用戶分為三個(gè)級別,設(shè)定不同的更新頻率,分別為:1次/1天, 1次/3天,1次/7天。
[0026] 用戶數(shù)據(jù)抓取器抓取到的用戶博文數(shù)據(jù)使用LDA主題模型構(gòu)建用戶主題分布。選 取每個(gè)用戶主題分布下概率值最大的N個(gè)主題(N取5),采用語義相似度計(jì)算這N個(gè)主題每 個(gè)主題下的前Μ個(gè)詞與視頻的語義相似度(M取20)之和,如果這個(gè)值小于一定的閾值則過 濾掉該用戶。
【權(quán)利要求】
1. 一種視頻領(lǐng)域相關(guān)的分布式微博數(shù)據(jù)抓取系統(tǒng),其特征在于該系統(tǒng)包括視頻網(wǎng)站抓 取子系統(tǒng)、微博用戶名匹配子系統(tǒng)及微博數(shù)據(jù)抓取子系統(tǒng),首先通過視頻網(wǎng)站抓取子系統(tǒng), 得到與視頻相關(guān)的視頻、演員和導(dǎo)演名稱實(shí)體名和播放量、評論量和收藏量的統(tǒng)計(jì)數(shù)據(jù),通 過分析這些統(tǒng)計(jì)數(shù)據(jù),得到視頻的熱門程度,針對不同的熱門程度視頻相關(guān)數(shù)據(jù)的抓取設(shè) 置不同的抓取頻率;接著通過微博用戶名匹配子系統(tǒng)將這些實(shí)體名與微博名進(jìn)行匹配,得 到微博用戶種子集;最后通過微博數(shù)據(jù)抓取子系統(tǒng),在微博用戶種子集的基礎(chǔ)上,通過微博 開放平臺關(guān)注關(guān)系A(chǔ)PI抓取與種子用戶關(guān)系在三層以內(nèi)的所有用戶作為候選用戶集合,接 著通過微博用戶博文API獲取用戶博文和用戶信息,一方面使用用戶博文構(gòu)建用戶主體模 型,對用戶進(jìn)行主題過濾,留下與視頻相關(guān)的用戶作為最后的用戶集合,另一方面使用微博 用戶相關(guān)的統(tǒng)計(jì)信息計(jì)算用戶影響力,針對不同影響力程度的用戶設(shè)置不同的抓取頻率。
2. 根據(jù)權(quán)利要求1所述的抓取系統(tǒng),其特征在于所述視頻網(wǎng)站抓取子系統(tǒng)為一種可動 態(tài)擴(kuò)展節(jié)點(diǎn)與負(fù)載均衡的分布式系統(tǒng),包括服務(wù)器配置及抓取器結(jié)構(gòu),其中:所述服務(wù)器配 置包括: 參數(shù)設(shè)置:通過一個(gè)配置服務(wù)器來提供抓取器節(jié)點(diǎn)的參數(shù)配置的設(shè)置,并在抓取器向 服務(wù)器發(fā)送參數(shù)配置請求時(shí),根據(jù)抓取器的唯一編號MAC_ID返回該抓取器的配置信息; 節(jié)點(diǎn)擴(kuò)展:當(dāng)增加抓取節(jié)點(diǎn)時(shí),配置服務(wù)器接收到該節(jié)點(diǎn)通過socket協(xié)議發(fā)送過來的 添加抓取節(jié)點(diǎn)的命令(ADD_CRAWLER),配置服務(wù)器向配置信息數(shù)據(jù)中添加一條記錄,并將運(yùn) 行的抓取器節(jié)點(diǎn)的總數(shù)加1 ; 異常監(jiān)控:每個(gè)抓取器節(jié)點(diǎn)每隔一段時(shí)間向配置服務(wù)器發(fā)送表示此抓取器節(jié)點(diǎn)正在正 常運(yùn)行的命令(RUNNING),配置服務(wù)器在抓取器節(jié)點(diǎn)狀態(tài)列表中記錄每個(gè)抓取器節(jié)點(diǎn)的ID 和對應(yīng)的最后收到該節(jié)點(diǎn)發(fā)出表示正在正常運(yùn)行的命令的時(shí)間;配置服務(wù)器每隔一段時(shí)間 會遍歷抓取器節(jié)點(diǎn)狀態(tài)列表,如果某個(gè)抓取器節(jié)點(diǎn)最后發(fā)出表示正在正常運(yùn)行的命令到當(dāng) 前時(shí)間的時(shí)間間隔大于10分鐘,則表示該抓取器已出現(xiàn)異常,配置服務(wù)器將運(yùn)行的抓取器 的總數(shù)減1 ; 負(fù)載均衡:各個(gè)抓取器完成的任務(wù)相同,抓取器上的負(fù)載指的是配置服務(wù)器分配到各 個(gè)抓取器上要抓取視頻數(shù)量的多少;負(fù)載均衡涉及到兩個(gè)階段;第一個(gè)階段為數(shù)據(jù)的分 發(fā);數(shù)據(jù)分為兩類:電影和電視劇;電視劇因?yàn)榘募瘮?shù)多,因此要和電影獨(dú)立開來;數(shù) 據(jù)分發(fā)的過程是將電影和電視的唯一編碼(URL)通過一種均勻的散列函數(shù)映射到正在運(yùn)行 的抓取器節(jié)點(diǎn)的MAC_ID上,從而抓取器在運(yùn)行時(shí)能夠通過MAC_ID來獲取要抓取的電影和 電視劇列表;第二階段,在一次的數(shù)據(jù)抓取完成之后,通過記錄下的抓取器抓取的開始和結(jié) 束時(shí)間,計(jì)算所有抓取器完成一次抓取所需要的時(shí)間,當(dāng)下次有新的需要抓取的視頻加入 到列表中時(shí),按照各個(gè)抓取器上次記錄下的抓取一次所需時(shí)間的比例將這些新的電影和電 視劇分配到各個(gè)抓取器節(jié)點(diǎn); 更新控制:針對視頻熱門程度的不同,采用不同的抓取頻率;獲取到所有視頻的統(tǒng)計(jì) 數(shù)據(jù)之后,通過視頻的播放量、評論量和收藏量計(jì)算視頻的熱門指數(shù),按照熱門指數(shù)將視頻 分為三個(gè)等級,三個(gè)等級的更新頻率分別為:1次/1天,1次/3天,1次/7天;使用更新控 制器來設(shè)置視頻對應(yīng)的鏈接在網(wǎng)頁解析器下的解析頻率;同時(shí),更新控制器中熱門指數(shù)的 計(jì)算頻率設(shè)定為每周一次; 所述抓取器結(jié)構(gòu):每個(gè)抓取器節(jié)點(diǎn)包括鏈接抓取器、網(wǎng)頁解析器、數(shù)據(jù)存儲器和更新控 制器,其中: 所述鏈接抓取器,按照廣度遍歷算法對整個(gè)視頻網(wǎng)站進(jìn)行掃描,獲取滿足條件的網(wǎng)頁 的鏈接,并將這些鏈接存儲在鏈接數(shù)據(jù)庫中;同時(shí),為數(shù)據(jù)庫中每個(gè)鏈接添加是否已被訪問 的標(biāo)識,如果某個(gè)鏈接已被其中一個(gè)節(jié)點(diǎn)訪問過,則其他則跳過該節(jié)點(diǎn),獲取下一個(gè)鏈接, 如果此鏈接未被訪問,則訪問該頁面并將該網(wǎng)頁中包含的屬于本網(wǎng)站的鏈接加入到鏈接數(shù) 據(jù)庫中;所述滿足要求的網(wǎng)頁指含有導(dǎo)演、演員基本信息和視頻播放、評分?jǐn)?shù)據(jù)的網(wǎng)頁; 所述網(wǎng)頁解析器,從數(shù)據(jù)存儲器中獲取所有滿足的鏈接,加載鏈接對應(yīng)的網(wǎng)頁,然后進(jìn) 行網(wǎng)頁的解析,得到所需的視頻數(shù)據(jù);構(gòu)建解析方法庫,如果鏈接沒有標(biāo)明解析的方法,則 遍歷每一種方法解析每個(gè)鏈接,當(dāng)鏈接被成功解析時(shí),將該鏈接的解析方法標(biāo)記為該方法, 如果已經(jīng)標(biāo)明了解析方法的鏈接在使用該方法解析失敗時(shí),則向解析方法庫中添加新的解 析方法; 所述數(shù)據(jù)存儲器,用于存儲視頻鏈接列表、視頻基本信息和統(tǒng)計(jì)數(shù)據(jù)、解析方法庫數(shù) 據(jù); 所述更新控制器,根據(jù)數(shù)據(jù)庫中存儲的視頻鏈接列表中每條鏈接的更新頻率,使用定 時(shí)任務(wù)控制網(wǎng)頁解析器解析網(wǎng)頁的頻率。
3. 根據(jù)權(quán)利要求1所述的抓取系統(tǒng),其特征在于所述微博用戶名匹配子系統(tǒng)包括查找 模塊及過濾模塊,其中: 所述查找模塊,在視頻網(wǎng)站抓取結(jié)束之后,得到與視頻相關(guān)視頻、演員和導(dǎo)演名稱的實(shí) 體名,將這些視頻名與海量的微博用戶名進(jìn)行匹配,找出對應(yīng)的微博名;查找的過程按照條 件嚴(yán)格程度的不同分為三個(gè)步驟: 步驟1 :嚴(yán)格按照視頻名、演員和導(dǎo)演名來查找微博用戶; 步驟2 :使用一些關(guān)鍵詞來給視頻名、演員和導(dǎo)演名加上前綴和后綴,然后嚴(yán)格按照加 了前綴或后綴的詞查找微博用戶;其中,所述關(guān)鍵詞為電影、電視劇、演員和導(dǎo)演; 步驟3 :使用視頻名、演員和導(dǎo)演名進(jìn)行模糊查找; 所述過濾模塊,通過查找模塊步驟2獲取到的用戶可以確定為視頻領(lǐng)域的用戶,其他 用戶則主要基于主題過濾,通過主題模型構(gòu)建所有用戶的主題分布,選取與視頻主題概率 大的用戶作為種子用戶;構(gòu)建主題模型的過程如下: 步驟1 :獲取查找到的所有用戶的博文,將每個(gè)用戶的所有博文作為一篇文檔,使用 LDA算法進(jìn)行訓(xùn)練,得到每個(gè)用戶的主題分布; 步驟2 :選取每個(gè)用戶主題分布下概率值最大的N個(gè)主題,采用語義相似度計(jì)算這N個(gè) 主題每個(gè)主題下的前Μ個(gè)詞與視頻的語義相似度之和,如果這個(gè)值小于一定的閾值則過濾 掉該用戶。
4. 根據(jù)權(quán)利要求1所述的抓取系統(tǒng),其特征在于所述微博用戶名匹配子系統(tǒng)為一種可 動態(tài)擴(kuò)展節(jié)點(diǎn)的分布式系統(tǒng),該系統(tǒng)包括服務(wù)器配置及抓取器結(jié)構(gòu),其中,所述服務(wù)器配置 包括: 參數(shù)設(shè)置:通過一個(gè)配置服務(wù)器來提供抓取器節(jié)點(diǎn)的參數(shù)配置的設(shè)置,并在抓取器向 服務(wù)器發(fā)送參數(shù)配置請求時(shí),根據(jù)抓取器的唯一編號MAC_ID返回該抓取器的配置信息; 擴(kuò)展節(jié)點(diǎn):當(dāng)增加抓取器節(jié)點(diǎn)時(shí),配置服務(wù)器會接收到該節(jié)點(diǎn)通過socket協(xié)議發(fā)送過 來的添加抓取器節(jié)點(diǎn)的命令(ADD_CRAWLER),配置服務(wù)器向配置信息數(shù)據(jù)中添加一條記錄, 并將總運(yùn)行的抓取器的數(shù)量加1 ; 異常監(jiān)控:每個(gè)抓取器節(jié)點(diǎn)每隔一段時(shí)間向配置服務(wù)器發(fā)送表示此抓取器節(jié)點(diǎn)正在正 常運(yùn)行的命令(RUNNING);配置服務(wù)器在抓取器節(jié)點(diǎn)狀態(tài)列表中記錄每個(gè)抓取器節(jié)點(diǎn)的ID 和對應(yīng)的最后收到該節(jié)點(diǎn)發(fā)出表示正在正常運(yùn)行的命令的時(shí)間;配置服務(wù)器每隔一段時(shí)間 會遍歷抓取器節(jié)點(diǎn)狀態(tài)列表,如果某個(gè)抓取器節(jié)點(diǎn)最后發(fā)出表示正在正常運(yùn)行的命令到當(dāng) 前時(shí)間的時(shí)間間隔大于10分鐘,則表示該抓取器已出現(xiàn)異常,配置服務(wù)器將運(yùn)行的抓取器 的總數(shù)減1 ; 更新控制:采用依據(jù)用戶活躍度和影響力的更新來控制抓取頻率;用戶活躍度的計(jì)算 基于用戶原創(chuàng)微博和轉(zhuǎn)發(fā)微博的發(fā)布頻率,用戶影響力的計(jì)算基于加入權(quán)重的PageRank 算法;按照用戶影響力將所有用戶分為三個(gè)級別,設(shè)定不同的更新頻率,分別為:1次/1天, 1次/3天,1次/7天;將用戶影響力的計(jì)算頻率設(shè)為每周一次; 加入權(quán)重的PageRank算法,通過用戶之間的粉絲和關(guān)注關(guān)系構(gòu)建用戶關(guān)系網(wǎng),將微博 用戶看作網(wǎng)絡(luò)中的節(jié)點(diǎn),用戶之間的粉絲與關(guān)注關(guān)系看作節(jié)點(diǎn)之間的邊;微博用戶的影響 力計(jì)算通過改進(jìn)的PageRank算法獲?。桓倪M(jìn)的PageRank算法加入了用戶自身因素的影響; 其中,所述用戶自身因素的影響為用戶微博數(shù)、用戶粉絲數(shù)、用戶的活躍度、用戶微博的傳 播能力、用戶粉絲的影響力; 所述抓取器結(jié)構(gòu):每個(gè)抓取器節(jié)點(diǎn)包括微博用戶集合抓取器、用戶數(shù)據(jù)抓取器、數(shù)據(jù)存 儲器、用戶過濾器和更新控制器,其中: 所述微博用戶集合抓取器,將微博用戶名匹配子系統(tǒng)中得到的微博用戶作為種子用 戶,通過微博用戶關(guān)系A(chǔ)PI獲取這些用戶關(guān)注的用戶,并將這些新的用戶加入到用戶集合 中; 所述用戶數(shù)據(jù)抓取器,首先從用戶集合得到用戶列表,使用HASH函數(shù)將用戶ID映射到 〇到節(jié)點(diǎn)數(shù)目之間的整數(shù),如果該整數(shù)為當(dāng)前節(jié)點(diǎn),這樣每個(gè)用戶的數(shù)據(jù)抓取就被分配到該 節(jié)點(diǎn)上,同時(shí)對該用戶ID取余,將其分配到線程ID與余數(shù)相等的線程上進(jìn)行抓??;接著,通 過微博API抓取用戶的基本信息和博文數(shù)據(jù); 所述數(shù)據(jù)存儲器,進(jìn)行用戶集合、用戶基本信息和博文數(shù)據(jù)的存儲; 所述用戶過濾器,過濾掉與視頻領(lǐng)域相關(guān)性小于一定閾值的微博用戶; 所述更新控制器,根據(jù)用戶集合中存儲每個(gè)用戶的數(shù)據(jù)更新頻率,使用定時(shí)器來設(shè)置 用戶數(shù)據(jù)抓取器對每個(gè)用戶的抓取頻率。
【文檔編號】G06F17/30GK104063448SQ201410271438
【公開日】2014年9月24日 申請日期:2014年6月18日 優(yōu)先權(quán)日:2014年6月18日
【發(fā)明者】賀樑, 向平, 陳昊, 倪敏杰, 陳琴 申請人:華東師范大學(xué)