一種基于Simhash算法的旅游網(wǎng)絡社區(qū)劃分方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于數(shù)據(jù)挖掘領(lǐng)域,具體是一種將Simhash去重算法作為聚類算法應用于 旅游復雜網(wǎng)絡社區(qū)劃分。
【背景技術(shù)】
[0002] 近年來,復雜網(wǎng)絡成為信息科學、社會學、物理學、乃至生命科學等學科研究的熱 點。自然界中的很多系統(tǒng)都可以表示為復雜網(wǎng)絡的形式,例如社會關(guān)系網(wǎng)、通信網(wǎng)、互聯(lián)網(wǎng) 等。論壇、BBS、微博、旅游網(wǎng)站等社交平臺因其速度快、成本小、方便使用等特點而被廣大旅 游愛好者廣泛使用,因此用這些社交平臺進行交流,逐漸形成了一個復雜的旅游網(wǎng)絡。
[0003] 目前對于復雜網(wǎng)絡社區(qū)劃分有不同種類的算法,一類是分圖的策略,如譜二分法、 K - L算法;它們存在的缺點是必須事先確定兩個社區(qū)的大小,由于多數(shù)情況下網(wǎng)絡中社區(qū) 的個數(shù)未知,因而也就無法確定該算法重復劃分社區(qū)的次數(shù)。另一類是聚類的方式,G-N(Girvan and Newman)是典型的層次聚類算法。G-N算法思想簡單,但該方法計算量較 大,計算時間復雜度也相對較高。劃分聚類典型的是K - Means和K - Medoids,這兩個算法 雖然運行時間快,但缺點是初始中心簇選取會影響到聚類結(jié)果,容易受到孤立點的影響等。 層次聚類的代表性算法有BIRCHXURE、Chamel e〇n,它的缺點是在進程之中一旦結(jié)束就無法 修正,例如在合并或者分裂的步驟中完成就不能更正導致即使劃分錯誤也無法彌補。網(wǎng)格 聚類的缺點是對于大規(guī)模數(shù)據(jù)的處理不是很得心應手。因此,目前的網(wǎng)絡社區(qū)劃分方法均 存在不同的缺陷,以致其在推廣應用時受限。
【發(fā)明內(nèi)容】
[0004] 針對目前網(wǎng)絡社區(qū)劃分方法存在的問題和不足,本發(fā)明從用戶旅游文本信息出 發(fā),提供了一種基于Simhash算法的簡單、運算速度快、空間存儲小的旅游網(wǎng)絡社區(qū)劃分方 法,能夠提高復雜網(wǎng)絡社區(qū)的劃分效率。
[0005] 本發(fā)明實現(xiàn)上述目的所采用的技術(shù)方案是由以下步驟實現(xiàn):
[0006] (1)爬取旅游網(wǎng)絡上的用戶ID以及文本數(shù)據(jù),并存入數(shù)據(jù)庫;
[0007] (2)對數(shù)據(jù)庫中所存放的文本數(shù)據(jù)進行分詞處理,對照停用詞表去掉停用詞,得到 文本的特征值,并確定特征值對應的權(quán)重;
[0008] (3)根據(jù)步驟(2)所得的文本特征值及其對應的權(quán)重,用Simhash算法進行處理, 得到該文本的語義指紋,并將其存入數(shù)據(jù)庫中;
[0009] (4)用海明距離算法將步驟(3)所得到的一個文本的語義指紋與預先劃分類別中 的中心文本進行對比,若兩者之間的海明距離小于等于3,則將該文本歸類至該中心文本所 對應的類別中,并將其對應類別存入數(shù)據(jù)庫中對應的用戶信息中;否則,將其與預先劃分類 別中的其他中心文本進行對比;若不存在滿足條件的中心文本,則將該文本作為新類別的 中心文本;
[0010] (5)重復步驟(4),完成數(shù)據(jù)庫中的其它文本的類別劃分,完成了旅游網(wǎng)絡社區(qū)劃 分。
[0011] 上述步驟(1)具體是由以下步驟實現(xiàn):
[0012] (I. 1)申請旅游網(wǎng)絡爬取數(shù)據(jù)的權(quán)限;
[0013] (1. 2)根據(jù)旅游網(wǎng)絡接口查看用戶的注冊住址addressl、用戶文本信息內(nèi)容text 以及用戶發(fā)表文本信息內(nèi)容時所在地址address2 ;
[0014] (1. 3)判斷用戶的注冊住址addressl與用戶發(fā)表文本信息內(nèi)容時所在地址 addreSS2是否相同,若不相同,則確定文本信息內(nèi)容與旅游相關(guān),將其用戶ID以及文本數(shù) 據(jù)存入數(shù)據(jù)庫;否則,返回步驟(2)查看下一個用戶。
[0015] 上述步驟(2)中的分詞處理可以采用正向最大匹配算法或者也可以采用逆向最 大匹配算法或雙向最大匹配算法。
[0016] 上述步驟(3)中的Simhash算法具體由以下步驟實現(xiàn):
[0017] (3. 1)用hash編碼算法對步驟(2)所得的每個文本特征值進行處理,將其轉(zhuǎn)化為 64位的編碼,得到hash編碼;
[0018] (3. 2)對hash編碼的每一位進行處理,若對應位置處的編碼為1,則將其相應位數(shù) 變?yōu)檎龣?quán)重;否則為負權(quán)重,得到相應的權(quán)重編碼;
[0019] (3. 3)將所有文本特征的權(quán)重編碼對應位求和,得到求和后的編碼,若求和后的編 碼中的位數(shù)為正,則將其標記為1 ;否則,標記為0,得到Simhash編碼值,即為語義指紋。
[0020] 本發(fā)明提供的基于Simhash算法的旅游網(wǎng)絡社區(qū)劃分方法是利用Simhash算法對 文本進行處理計算文本的語義指紋,用海明距離來比較文本的語義指紋之間的距離,推算 文本相似度,從而達到對相似用戶進行聚類的目的。該方法將短文本高維度的特征向量進 行降維處理,大大減少了其所占用的存儲空間,而且本發(fā)明的算法簡單方便、運算時間少, 對文本的處理速度快,進而提高了復雜網(wǎng)絡社區(qū)的劃分效率,這對預測旅游活動的趨勢與 動向,提供旅游服務信息,推薦旅游線路乃至預測旅游高峰都有重大意義。
【附圖說明】
[0021] 圖1為新浪微博短文本網(wǎng)絡社區(qū)劃分的流程圖。
[0022] 圖2為Simhash算法過程圖。
【具體實施方式】
[0023] 實施例1
[0024] 現(xiàn)以新浪微博為例,本發(fā)明的基于Simhash算法的旅游網(wǎng)絡社區(qū)劃分方法參見圖 1,由以下步驟實現(xiàn):
[0025] (1)爬取旅游網(wǎng)絡上的用戶ID以及文本數(shù)據(jù),并存入數(shù)據(jù)庫,具體包括以下步驟:
[0026] (I. 1)申請新浪 APP key ;
[0027] (1. 2)根據(jù)新浪提供的API接口查看所需接口的URUHTTP請求方式、參數(shù)請求爬 取用戶ID、用戶注冊住址addressl、用戶微博信息內(nèi)容text、用戶發(fā)表微博地址address2, 接口返回json格式的數(shù)據(jù);
[0028] (1. 3)用java程序,對微博返回的json數(shù)據(jù)進行處理,判斷第一個用戶的注冊住 址addressl與用戶發(fā)表文本信息內(nèi)容的地址address2是否相同,若不相同,則確定文本信 息內(nèi)容與旅游相關(guān),將旅游數(shù)據(jù)的用戶ID、用戶微博信息text安爬取順序放入數(shù)據(jù)庫中, 如下表1 ;否則,查看下一個用戶。
[0029] 表1為數(shù)據(jù)庫中的存儲格式
[0030]
[0031] (2)對數(shù)據(jù)庫中所存放的文本數(shù)據(jù)進行分詞處理,對照停用詞表去掉停用詞,得到 文本的特征值,并確定特征值對應的權(quán)重;
[0032] (2. 1)采用正向最大匹配算法對數(shù)據(jù)庫中所存放的文本數(shù)據(jù)進行分詞處理,如:
[0033] (2. I. I) st = "我們是旅游愛好者",maxlen (最大詞長)=10〇
[0034] (2. 1. 2)取w = "我們是旅游";
[0035] (2. 1. 3)查詞典判斷w中的字符串不是詞;
[0036] (2. L 4)從w右邊減掉一個字后w = "我們是旅";
[0037] (2. 1. 5)判斷w中的字串不是詞;
[0038] (2. L 6)從w右邊減掉一個字后w = "我們是";
[0039] (2. 1. 7)判斷w中的字串不是詞;
[0040] (2. L 8)從w右邊減掉一個字后w = "我們";
[0041] (2. 1. 9)判斷w中的字符串是一個詞,則輸出到st中,st = "我們/"。
[0042] (2. 1. 10)重復(2. 1. 2) (2. 1. 3) (2. 1. 4) (2. 1. 5) (2.