一種基于Floyd-Warshall的互聯(lián)網(wǎng)社區(qū)檢測算法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及互聯(lián)網(wǎng)社區(qū)檢測算法領(lǐng)域,提高了一種基于Floyd-Warshall的互聯(lián) 網(wǎng)社區(qū)檢測算法。
【背景技術(shù)】
[0002] 從互聯(lián)網(wǎng)社區(qū)概念的提出到現(xiàn)在的十多年中,各國的研宄者對互聯(lián)網(wǎng)社區(qū)檢測的 相關(guān)技術(shù)和研宄給予了很多關(guān)注,取得了很多實質(zhì)性的進展。
[0003] 研宄者首先對互聯(lián)網(wǎng)的拓撲結(jié)構(gòu)進行了更加深入的分析。與人們的設(shè)想不同,互 聯(lián)網(wǎng)和其他很多網(wǎng)絡(luò)的相互關(guān)聯(lián)并不完全是隨機的,并不能完全用隨機圖來描述互聯(lián)網(wǎng)社 區(qū)的結(jié)構(gòu)。尤其是在對越來越多互聯(lián)網(wǎng)數(shù)據(jù)進行分析后,隨機圖結(jié)構(gòu)的概念受到嚴重的沖 擊。互聯(lián)網(wǎng)的實際結(jié)構(gòu)遠比我們想象得要復(fù)雜得多,鏈接、網(wǎng)站、頁面、用戶、管理者之間的 關(guān)系也是多樣化的。在互聯(lián)網(wǎng)中有很多區(qū)域內(nèi)部聯(lián)系緊密同外部的聯(lián)系較弱,這些區(qū)域就 是互聯(lián)網(wǎng)社區(qū),互聯(lián)網(wǎng)社區(qū)的結(jié)構(gòu)特征是無法用隨機圖描述清楚的。
[0004] 隨著互聯(lián)網(wǎng)社區(qū)概念的提出和相關(guān)研宄的深入展開,開發(fā)者們設(shè)計了各種不同類 型的的互聯(lián)網(wǎng)社區(qū)檢測算法對其進行結(jié)構(gòu)檢測,并根據(jù)實驗結(jié)果不斷地對算法進行改進和 優(yōu)化。隨著研宄的深入開展,對互聯(lián)網(wǎng)社區(qū)進行檢測的算法也在不斷地被優(yōu)化改進。
[0005] 與傳統(tǒng)方法相比,現(xiàn)在的算法大多能夠充分考慮到網(wǎng)絡(luò)運行的并行性、實時性和 可擴展性等來解決物理上的限制。比如Sadi等人提出的用并行的螞蟻找圈的社區(qū)檢測方 法。這樣可以在不影響結(jié)果效果的前提下,壓縮互聯(lián)網(wǎng)結(jié)構(gòu)圖直至一個穩(wěn)定的大小以降低 算法運行的成本,從而完成對大規(guī)模網(wǎng)絡(luò)的處理。也有Leung等人提出的對標簽傳播算法 進行改進,并加入啟發(fā)式教育法的方法對大規(guī)模網(wǎng)絡(luò)進行實時的社區(qū)檢測。針對不同的互 聯(lián)網(wǎng)社區(qū)檢測方法,Leskovec等人對現(xiàn)有的一些方法進行研宄比較,發(fā)現(xiàn)大規(guī)模網(wǎng)絡(luò)社區(qū) 檢測問題并不是一個簡單算法就能解決的,是一個非常復(fù)雜的問題,要考慮到網(wǎng)絡(luò)結(jié)構(gòu)、數(shù) 據(jù)分布、網(wǎng)絡(luò)爬行效果等多方面的問題。隨著檢測技術(shù)的不斷成熟,互聯(lián)網(wǎng)社區(qū)檢測有效度 也在不斷提升,同傳統(tǒng)的蠻力算法相比較,社區(qū)檢測技術(shù)已經(jīng)越來越成為一種藝術(shù)。作為社 區(qū)檢測一個新興的方向,將會對互聯(lián)網(wǎng)結(jié)構(gòu)挖掘做出巨大影響。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的目的在于通過社區(qū)檢測的概念,可以較好地描述并檢測出網(wǎng)絡(luò)社區(qū)這樣 的網(wǎng)絡(luò)結(jié)構(gòu)并加以應(yīng)用。
[0007] 一種基于Floyd-Warshall的互聯(lián)網(wǎng)社區(qū)檢測算法,其特征在于包括如下步驟:
[0008] 步驟1、數(shù)據(jù)獲取:為了從給定的起始博客鏈接出發(fā)獲得跟它相關(guān)的博客鏈接信 息,通過Spider對相關(guān)數(shù)據(jù)進行爬取,并將得到博客關(guān)系圖用矩陣表示;
[0009] 步驟2、特征提取:選定圖中任意兩點的最小距離作為特征值,為了從圖中提取最 小距離作為聚類的特征基礎(chǔ),使用Floyd-Warshall算法對圖中任意兩點的最小距離進行 計算。
[0010] 步驟3、聚類分割:為了按一定特征異同將網(wǎng)絡(luò)劃分為不同的社區(qū),以最小距離作 為特征進行聚類分割,得到指定個數(shù)的聚類結(jié)果。
[0011] 步驟4、影響力排名:為了判斷每個聚類中哪些節(jié)點有更高的影響力,使用 PageRank對每個聚類進行排名;
[0012] 步驟5、結(jié)果可視化:為了直觀形象地表達結(jié)果,使用GraphViz對結(jié)果可視化表 達。
[0013] Spider包括如下步驟:
[0014] 步驟2-1、添加起始鏈接至待分析鏈表;
[0015] 步驟2-2、如鏈表不為空,進行步驟2-3,否則結(jié)束;
[0016] 步驟2-3、從鏈表中取出最前鏈接分析其內(nèi)容;
[0017] 步驟2-4、如存在下一個鏈接,進行步驟2-5,否則進行步驟2-2 ;
[0018] 步驟2-5、鏈接處理,是否為目標連接,是則更新數(shù)據(jù),否則進行步驟2-4。
[0019] 連接處理包括如下步驟:
[0020] 步驟3-1、判斷連接是否滿足格式一,如果滿足則進行步驟3-4,否則進行步驟 3-2 ;
[0021] 步驟3-2、判斷連接是否滿足格式二,如個滿足則去掉連接中"m/"部分,并進行步 驟3-4,否則進行步驟3-2;
[0022] 步驟3-3、判斷連接是否滿足格式三,如果滿足則進行步驟3-4,記錄當前連接不 是目標連接,進行步驟3-5;
[0023] 步驟3-4、記錄當前連接是目標連接;
[0024] 步驟3-5、結(jié)束。
[0025] 更新數(shù)據(jù)包括如下步驟:
[0026] 步驟4-1、判斷當前鏈接是否已插入數(shù)據(jù)庫,如已插入則進行步驟步驟4-3,否則 進行步驟4-2 ;
[0027] 步驟4-2、判斷已存目標連接數(shù)未超過最大,如未超過則將鏈接插入待分析鏈表, 并將鏈接插入數(shù)據(jù)庫,否則結(jié)束;
[0028] 步驟4-3、將鏈接關(guān)系插入數(shù)據(jù)庫,結(jié)束。
[0029] 本發(fā)明因為采用以上技術(shù)方案,因此具備以下有益效果:
[0030] 本發(fā)明通過社區(qū)檢測的概念,可以較好地描述并檢測出網(wǎng)絡(luò)社區(qū)這樣的網(wǎng)絡(luò)結(jié)構(gòu) 并加以應(yīng)用。
【附圖說明】
[0031] 圖1為本發(fā)明的整體流程;
[0032] 圖2為本發(fā)明的Spider需要爬取的鏈接圖示;
[0033] 圖3為本發(fā)明的Spider流程圖;
[0034] 圖4為本發(fā)明的Spider鏈接處理子流程流程圖
[0035] 圖5為本發(fā)明的Spider更新數(shù)據(jù)子流程流程圖
[0036] 圖6為本發(fā)明的數(shù)據(jù)庫中兩個鏈接關(guān)系
[0037] 圖7為本發(fā)明的Floyd-Warshall算法流程;
[0038] 圖8為本發(fā)明的k-means算法流程圖;
[0039] 圖9為本發(fā)明的PageRank算法流程圖。
【具體實施方式】
[0040] 本文提出一種基于Floyd-Warshall的互聯(lián)網(wǎng)社區(qū)檢測算法并應(yīng)用于博客社區(qū)檢 測中。
[0041] 如圖1所示,算法分為五個步驟:
[0042] 數(shù)據(jù)獲取:為了從給定的起始博客鏈接出發(fā)獲得跟它相關(guān)的博客鏈接信息,我在 實驗中通過實現(xiàn)一個WebSpider程序?qū)ο嚓P(guān)數(shù)據(jù)進行爬取,并將得到博客關(guān)系圖用矩陣表 不〇
[0043] 特征提?。簩嶒炦x定圖中任意兩點的最小距離作為特征值。本過程為了從圖中提 取最小距離作為聚類的特征基礎(chǔ),使用Floyd-Warshall算法對圖中任意兩點的最小距離 進行計算。
[0044] 聚類分割:為了按一定特征異同將網(wǎng)絡(luò)劃分為不同的社區(qū),以最小距離作為特征 進行聚類分割,得到指定個數(shù)的聚類結(jié)果。
[0045] 影響力排名:為了判斷每個聚類中哪些節(jié)點有更高的影響力,使用PageRank對每 個聚類進行排名。
[0046] 結(jié)果可視化:為了直觀形象地表達結(jié)果,使用GraphViz對結(jié)果可視化表達。
[0047] 下面小節(jié)對程序流程中主要過程使用的算法進行說明。
[0048] 數(shù)據(jù)獲取
[0049] 實驗是以新浪博客為對象進行社區(qū)檢測,所以針對新浪博客網(wǎng)頁及網(wǎng)頁所設(shè)置的 鏈接做了相關(guān)的觀察和分析,一個博客所設(shè)置的鏈接可能分成不同的區(qū)域,每一個鏈接可 能為新浪博客,也可能為其他網(wǎng)站的鏈接。如圖2所示。紅色箭頭指向的紅色邊框區(qū)域是 當前博客所設(shè)置的友情鏈接區(qū)域,其中,這些區(qū)域中用紅線標出的是滿足爬取要求的新浪 博客。所以爬蟲要做的主要工作就是從網(wǎng)頁的所有鏈接中,篩選出滿足要求的部分。
[0050] 通過分析,滿足要求的鏈接可以有以下幾種格式:
[0051] 格式1 :http://blog. sina. com. cn/xxx,其中xxx是數(shù)字和英文字母的組合;
[0052] 格式2. :http://blog. sina. com. cn/m/xxx,其中xxx也是數(shù)字和英文字母的組 合,現(xiàn)在這樣類型的鏈接會直接被轉(zhuǎn)到http://blog. sina. com. cn/xxx ;
[0053] 格式 3 :http://blog. sina. com. cn/u/number,其中 number 代表的是數(shù)字的組合。
[0054] Spider從起始博客鏈接出發(fā),采用廣度優(yōu)先的遍歷方法實現(xiàn)數(shù)據(jù)爬取。廣度優(yōu)先 的遍歷爬蟲即以起始鏈接為樹的根部,按照網(wǎng)頁的鏈接形成樹的結(jié)構(gòu),按照樹的寬度進行 遍歷。由此可以得到針對新浪博客的爬蟲的主要算法的流程圖,如圖3