本方法涉及一種面向微博的疑似水軍發(fā)現(xiàn)方法,屬于社交網(wǎng)絡(luò)分析及數(shù)據(jù)挖掘技術(shù)領(lǐng)域。
背景技術(shù):
在過去的若干年中,社交網(wǎng)絡(luò)已經(jīng)成為了人們在互聯(lián)網(wǎng)中與親戚朋友保持聯(lián)系的主要方式之一。有統(tǒng)計(jì)顯示,人們在社交網(wǎng)站中花費(fèi)的平均時間要遠(yuǎn)遠(yuǎn)多于其他網(wǎng)站。大部分的社交網(wǎng)站都提供了通過移動設(shè)備進(jìn)行訪問的服務(wù),這也使得社交網(wǎng)站的訪問更加頻繁。
社交網(wǎng)絡(luò)的快速流行與廣泛使用使得這些網(wǎng)站可以收集到產(chǎn)生的大量的有關(guān)用戶、用戶的朋友和用戶的興趣的信息。不幸的是,便捷的信息傳播方式與大量的有價值的數(shù)據(jù)也吸引了許多非法團(tuán)體或個人的注意,社交網(wǎng)絡(luò)被他們看作是一條獲得高額利潤或是實(shí)現(xiàn)不法目的便捷途徑。目前,一些社交網(wǎng)站存在大量謠言或虛假消息。特別是,現(xiàn)階段的社交媒體中,人們受到了水軍賬號的極大影響,如水軍發(fā)布的大量“灌水”信息,水軍機(jī)器人發(fā)布海量垃圾郵件,以最大程度地傳播垃圾信息等,嚴(yán)重影響了上網(wǎng)體驗(yàn)。
傳統(tǒng)網(wǎng)絡(luò)水軍行為,其出現(xiàn)時間較早、數(shù)量規(guī)模相對較小、行為沒有高度隱蔽性,產(chǎn)生的垃圾信息具有明顯特征。因此,對其識別方法主要為基于垃圾信息內(nèi)容分析,如郵件內(nèi)容分析。同時,通過大量識別建立黑名單和白名單分別用來記錄可疑用戶信息和正常用戶信息,以此提高水軍行為識別效率及準(zhǔn)確率。此外,郵件領(lǐng)域網(wǎng)絡(luò)水軍行為產(chǎn)生垃圾郵件所需資源類似,通過其使用資源及其網(wǎng)絡(luò)層級特征能夠很好地定位郵件水軍。隨著網(wǎng)絡(luò)環(huán)境的復(fù)雜化和水軍危害的增加,用戶對其防范的能力也不斷增強(qiáng)。為達(dá)到其目的,網(wǎng)絡(luò)水軍行為逐漸復(fù)雜化并趨向于正常用戶,傳統(tǒng)郵件水軍行為的識別方法無法發(fā)現(xiàn)這些隱蔽的網(wǎng)絡(luò)水軍賬號。
web2.0是一種新興的互聯(lián)網(wǎng)方式,通過網(wǎng)絡(luò)應(yīng)用,促進(jìn)網(wǎng)絡(luò)中人與人之間的信息交換和協(xié)同合作,其模式以用戶為中心。當(dāng)前,web2.0網(wǎng)絡(luò)水軍識別研究按照目標(biāo)領(lǐng)域的不同,可以分為郵件領(lǐng)域、電子商務(wù)領(lǐng)域、社交網(wǎng)絡(luò)領(lǐng)域和論壇領(lǐng)域網(wǎng)絡(luò)水軍識別研究。網(wǎng)絡(luò)水軍識別研究按照研究方法的不同,可以分為基于用戶產(chǎn)生內(nèi)容特征、基于用戶相關(guān)特征、基于環(huán)境特征的識別方法。
web2.0網(wǎng)絡(luò)水軍識別研究,是傳統(tǒng)網(wǎng)絡(luò)水軍識別基礎(chǔ)上的適應(yīng)性識別研究。目前,國內(nèi)外網(wǎng)絡(luò)水軍識別研究取得了較前幾年更大的進(jìn)展,但是仍然存在很多重要問題亟待解決。國外網(wǎng)絡(luò)水軍識別研究最初集中于郵件領(lǐng)域,并在近幾年內(nèi)迅速擴(kuò)展到社交網(wǎng)絡(luò)和電子商務(wù)領(lǐng)域中。國內(nèi)網(wǎng)絡(luò)水軍識別研究相比之下較為缺乏?,F(xiàn)階段主要有基于內(nèi)容特征、用戶特征、環(huán)境特征以及綜合特征的網(wǎng)絡(luò)水軍識別方法。例如:2010年ratkiewicz等人設(shè)計(jì)了“truthy”系統(tǒng),在線搜集、分析并可視化那些熱門話題tweet的傳播,并利用如話題標(biāo)簽‘#’、短鏈、表情等采集自tweet的特征來識別twitter上的政治性的信息濫用行為。2011年,qazvinian等人嘗試在twitter上檢測謠言。他們將問題分解為兩步有監(jiān)督機(jī)器學(xué)習(xí)任務(wù):首先檢索出涉及謠言的微博,然后在此基礎(chǔ)上分類從中識別出支持謠言的微博。分類中用到了文本內(nèi)容、用戶歷史和微博特定模因這三類特征對數(shù)似然率的線性組合,實(shí)驗(yàn)結(jié)果顯示文本特征(詞頻、詞性)仍是最重要的,同時后兩個特征也明顯提升了分類性能。
但是在實(shí)際問題的處理過程中,由使用過多的特征進(jìn)行監(jiān)督學(xué)習(xí)固然可以保障識別率,但高維度的特征集合以及個別特征的提取難度過大也會相應(yīng)的導(dǎo)致系統(tǒng)的性能無法滿足實(shí)際應(yīng)用的要求,同時由于數(shù)據(jù)的稀疏性,很多時候,我們不可能總是獲取全量數(shù)據(jù)(粉絲關(guān)系、關(guān)注關(guān)系、轉(zhuǎn)發(fā)信息等),在這種情況下,因?yàn)閿?shù)據(jù)的不全面性,我們需要盡可能的簡化特征集合并使用易于提取的特征、引進(jìn)更為巧妙的識別模型來保證特征提取與識別預(yù)測的效率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為解決解決了用戶關(guān)系鏈接數(shù)據(jù)稀疏情況下無法準(zhǔn)確進(jìn)行群體發(fā)現(xiàn)的問題,提出一種面向微博的疑似水軍發(fā)現(xiàn)方法。
本發(fā)明的思想是考慮到海量數(shù)據(jù)中最容易獲得且較為全面的信息即是社交用戶所發(fā)表的文本數(shù)據(jù)信息,提出一種基于文本數(shù)據(jù)的群體發(fā)現(xiàn)及擴(kuò)充方法,主要針對用戶的文本數(shù)據(jù)進(jìn)行自然語言處理并最終提取出該用戶的特征信息,并根據(jù)特征信息進(jìn)行建模,最后通過比較各個用戶之間的相似性進(jìn)行聚類分析,最終得到群體社團(tuán),并提煉出該群體的主要標(biāo)志進(jìn)行群體擴(kuò)充。
本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的:
一種面向微博的疑似水軍發(fā)現(xiàn)方法,包括以下步驟:
步驟一、采集相關(guān)微博數(shù)據(jù),獲取如下信息:微博用戶所發(fā)的文本信息、用戶所做的評論的文本信息、用戶在微博上所進(jìn)行的互動信息,包括評論操作、轉(zhuǎn)發(fā)關(guān)系、點(diǎn)贊操作;用戶的基本屬性包括粉絲數(shù)、關(guān)注數(shù),關(guān)注關(guān)系;
基于爬蟲技術(shù)或微博公開的一些數(shù)據(jù)資源以及直接購買的水軍微博或賬號,獲取到需要分析的微博信息,這些信息主要包括:微博用戶所發(fā)的文本信息、用戶所做的評論的文本信息、用戶在微博上所進(jìn)行的互動信息,包括評論操作、轉(zhuǎn)發(fā)關(guān)系、點(diǎn)贊操作;用戶的基本屬性包括粉絲數(shù)、關(guān)注數(shù),關(guān)注關(guān)系;
步驟二、對經(jīng)由步驟一獲取的樣本數(shù)據(jù)進(jìn)行如下數(shù)據(jù)預(yù)處理工作:首先進(jìn)行數(shù)據(jù)清洗,然后對微博文本進(jìn)行中文分詞,最后通過層級關(guān)系解析數(shù)據(jù),獲得用戶-微博文本映射、用戶-評論文本映射,并保留用戶-關(guān)注關(guān)系、用戶-粉絲關(guān)系、用戶-轉(zhuǎn)發(fā)關(guān)系數(shù)據(jù);
步驟三、對經(jīng)由步驟二預(yù)處理后的數(shù)據(jù)進(jìn)行用戶特征提取:對于微博數(shù)據(jù)中的所有用戶分別提取特征“粉絲數(shù)”和“關(guān)注數(shù)”;然后根據(jù)提取用戶的微博內(nèi)容計(jì)算間接特征“粉絲關(guān)注比”、“原創(chuàng)微博比例”、“轉(zhuǎn)發(fā)微博比例”、“微博平均@數(shù)”、“發(fā)帖頻率”、“全量微博上網(wǎng)方式數(shù)”、“轉(zhuǎn)發(fā)微博上網(wǎng)方式數(shù)”和“是否參與轉(zhuǎn)發(fā)大于m次的微博”;
步驟四、構(gòu)建訓(xùn)練集:如果用戶未提供訓(xùn)練集,則對預(yù)先標(biāo)注好的用戶集合,分類標(biāo)簽為水軍、非水軍,進(jìn)行用戶特征提取構(gòu)建訓(xùn)練集,如果用戶提供訓(xùn)練集,則使用用戶提供的標(biāo)注好的數(shù)據(jù)作為訓(xùn)練集;
作為優(yōu)選,所述進(jìn)行用戶特征提取時,根據(jù)不同的識別需求,可以調(diào)整訓(xùn)練中使用的特征集合,不必使用步驟二所述的完整的特征集合。
步驟五、訓(xùn)練水軍檢測模型:使用步驟四標(biāo)注好的特征集合數(shù)據(jù)進(jìn)行分類檢測模型的訓(xùn)練;
作為優(yōu)選,本實(shí)施例使用logisticregression算法作為分類檢測模型,給定n個特征x=(x1,x2,…,xn),設(shè)條件概率p(y=1|x)為觀測樣本y相對于事件因素x發(fā)生的概率,用sigmoid函數(shù)表示為:
其中g(shù)(x)=w0+w1x1+…+wnxn,w0為截距,w1,…,wn表示特征1到特征n的權(quán)值,在x條件下y不發(fā)生的概率為:
步驟六、使用上述訓(xùn)練好的水軍檢測模型,進(jìn)行水軍用戶識別,具體過程為:用戶添加需要預(yù)測的微博用戶,如果只有用戶的id或昵稱則首先通過步驟一到步驟三采集用戶微博數(shù)據(jù)并計(jì)算用戶特征,把獲取的特征應(yīng)用于檢測模型進(jìn)行預(yù)測。
作為優(yōu)選,采用步驟六所述的水軍用戶識別過程依次對某一事件中所有用戶進(jìn)行檢測,可以判別該事件是否含有水軍。
有益效果
本發(fā)明中使用的微博文本數(shù)據(jù)信息,包含了微博用戶多角度、多方面的特征,完整的描述了一個微博賬號,這樣避免了因?yàn)樘卣骶S度較低帶來的準(zhǔn)確率較低的問題;同時在特征集合中加入了與事件相關(guān)的特征,從而規(guī)避了偶然出現(xiàn)在事件中的水軍賬號的影響,進(jìn)一步提升了識別的準(zhǔn)確率,可以在檢測賬號是否為水軍的同時對我們理解事件中是否有水軍推動提供更多的幫助,具有很強(qiáng)的使用價值。本發(fā)明實(shí)現(xiàn)了數(shù)據(jù)的充分利用,方便快捷的進(jìn)行群體發(fā)現(xiàn)而不用建立復(fù)雜的分類檢測模型,從而降低了算法的復(fù)雜度,并且算法的模塊性較高,可以投入大規(guī)模數(shù)據(jù)計(jì)算,具有較高的穩(wěn)定性。本發(fā)明除了可以對單一用戶進(jìn)行水軍檢測,還可以對某一特定事件中的一批用戶進(jìn)行識別,來判斷事件中是否有水軍幕后推動,中間處理過程中獲取的用戶關(guān)系等數(shù)據(jù)還可以用來發(fā)現(xiàn)水軍源頭、識別水軍團(tuán)體等深度挖掘,提高信息利用率,有很大的實(shí)用價值。該方法模塊性極強(qiáng),可以穩(wěn)定適用于大規(guī)模數(shù)據(jù)計(jì)算框架下。
附圖說明
圖1為本發(fā)明實(shí)施例一種面向微博的疑似水軍發(fā)現(xiàn)方法的流程示意圖;
圖2為本發(fā)明實(shí)施例針對微博的數(shù)據(jù)采集與預(yù)處理流程示意圖;
圖3為本發(fā)明實(shí)施例利用提取的特征進(jìn)行檢測模型的訓(xùn)練與新樣本預(yù)測的流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明:
以某一新浪微博用戶為例:
這名用戶的id為5364402211。當(dāng)需要判斷這一微博賬號是否為水軍賬戶時,只需要給出用戶5364402211這一用戶id,根據(jù)本發(fā)明方法即可根據(jù)用戶id進(jìn)行相關(guān)數(shù)據(jù)的采集與分析,最終對這一賬號是否為水軍給出預(yù)測結(jié)果。具體過程如圖1所示,下面詳細(xì)闡述。
根據(jù)步驟一進(jìn)行相關(guān)微博數(shù)據(jù)的采集:
針對我們要研究的新浪微博數(shù)據(jù)進(jìn)行采集或是直接獲取微博提供的公開數(shù)據(jù)。數(shù)據(jù)的采集通過建立緩沖url隊(duì)列,采用廣度優(yōu)先搜索算法(bfs)進(jìn)行網(wǎng)頁鏈接搜索,并對每個節(jié)點(diǎn)網(wǎng)頁進(jìn)行掃描下載,并對頁面進(jìn)行解析,去除無關(guān)的噪聲,保留可以描述用戶的屬性的元數(shù)據(jù)信息:用戶發(fā)表的微博文本信息、用戶評論的微博文本信息、用戶的粉絲數(shù)目、用戶的關(guān)注數(shù)目、用戶的轉(zhuǎn)發(fā)關(guān)系、用戶的注冊信息;也可以直接調(diào)用微博官方提供的api接口或是rss等反饋信息直接提取相關(guān)信息。訓(xùn)練過程中需要的水軍用戶數(shù)據(jù)則通過在互聯(lián)網(wǎng)上購買賬號或轉(zhuǎn)發(fā)評論獲取水軍用戶id,然后通過我們的采集方法獲取相應(yīng)的用戶及微博數(shù)據(jù);
根據(jù)步驟二進(jìn)行數(shù)據(jù)預(yù)處理,如圖2所示,
由于微博中存在著大量的半結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù),因此對于采集獲得的微博元數(shù)據(jù),需要進(jìn)行相應(yīng)的清洗和集成,對這些元數(shù)據(jù)進(jìn)行數(shù)據(jù)的整合存儲,并建立相應(yīng)的映射關(guān)系,便于后續(xù)過程的實(shí)施。
1)數(shù)據(jù)清洗:對于采集到的原始數(shù)據(jù),進(jìn)行數(shù)據(jù)完整性的檢查,去除用戶信息或微博信息不完整的微博用戶及其相應(yīng)微博內(nèi)容;
2)文本分詞:對用戶的微博文本信息(發(fā)表微博、評論微博)使用分詞工具(如ictclas分詞系統(tǒng))或方法進(jìn)行文本分詞,去除停用詞,得到相應(yīng)文本的向量空間模型(vsm:vectorspacemodel);
3)基于步驟1)和2)處理后的數(shù)據(jù),建立用戶-微博文本vsm映射和用戶-評論文本vsm映射,同時還可以獲得用戶-轉(zhuǎn)發(fā)關(guān)系、用戶-粉絲關(guān)系、用戶-關(guān)注關(guān)系等映射。
根據(jù)步驟三進(jìn)行用戶特征提取:
這個部分我們采用一個多維度的特征集合來對用戶進(jìn)行描述,其中既包括直接通過采集獲取的直接特征,同時也包括二次計(jì)算得到的間接特征,具體如表1所示:
表1:用戶特征
其中粉絲數(shù)、關(guān)注數(shù)和粉絲關(guān)注比可以通過步驟二的第三部分統(tǒng)計(jì)用戶的粉絲、關(guān)注關(guān)系獲得,粉絲數(shù)通過用戶-粉絲關(guān)系獲得,關(guān)注數(shù)通過用戶-關(guān)注關(guān)系獲得,粉絲關(guān)注比通過粉絲數(shù)/關(guān)注數(shù)得到。
轉(zhuǎn)發(fā)微博比例、原創(chuàng)微博比例和微博內(nèi)容平均“@”數(shù)通過步驟二的第二部分統(tǒng)計(jì)獲得。根據(jù)用戶每條微博的內(nèi)容判斷其微博類型是否為轉(zhuǎn)發(fā)微博或原創(chuàng)微博并統(tǒng)計(jì)數(shù)目,統(tǒng)計(jì)后計(jì)算與用戶總微博數(shù)的比值得到轉(zhuǎn)發(fā)微博比例、原創(chuàng)微博比例。通過vsm模型統(tǒng)計(jì)其中的@符號個數(shù),與用戶微博總數(shù)的比值作為微博內(nèi)容平均“@”數(shù)。
發(fā)帖頻率、全量微博上網(wǎng)方式數(shù)、轉(zhuǎn)發(fā)微博上網(wǎng)方式數(shù)、是否參與轉(zhuǎn)發(fā)大于100次的微博通過步驟二的第二部分獲得。對用戶每條微博中的微博發(fā)布時間進(jìn)行排序用最晚發(fā)布時間與最早發(fā)布時間的差值(小時)作為時間間隔,通過微博總數(shù)/時間間隔計(jì)算發(fā)帖頻率。統(tǒng)計(jì)每條微博中的上網(wǎng)方式,將所有上網(wǎng)方式的總和作為全量微博上網(wǎng)方式數(shù)。統(tǒng)計(jì)每條轉(zhuǎn)發(fā)微博中的上網(wǎng)方式,將所有上網(wǎng)方式的總和作為轉(zhuǎn)發(fā)微博上網(wǎng)方式數(shù)。統(tǒng)計(jì)用戶的每條轉(zhuǎn)發(fā)微博的原微博被轉(zhuǎn)發(fā)數(shù),如果有任意一條原微博被轉(zhuǎn)發(fā)超過100次則認(rèn)定用戶有轉(zhuǎn)發(fā)大于100次的微博。
根據(jù)以上描述對用戶id為5364402211進(jìn)行特征提取,獲取其特征向量為x=(38,182,0.21,0.19,0.0078,0.494,0.118,9.0,5.0,1.0)
在實(shí)際模型訓(xùn)練的過程中可以根據(jù)需求調(diào)整訓(xùn)練使用的特征,特征集合的縮減一定程度上會導(dǎo)致識別準(zhǔn)確率的降低,但是也會相應(yīng)的提升系統(tǒng)的性能。另一方面,如果對召回率的要求較高而并不是很重視整體的識別準(zhǔn)確率,則可以使用屬性特征、內(nèi)容特征的組合獲得更高的召回率。
根據(jù)步驟四,構(gòu)建訓(xùn)練集:
訓(xùn)練集包含的是用來訓(xùn)練水軍檢測模型的數(shù)據(jù),以用戶為單位每個用戶對應(yīng)一條訓(xùn)練集數(shù)據(jù)。一條訓(xùn)練集數(shù)據(jù)為一個二元組<x,l>由兩部分組成,x是一組特征向量:
x=(x1,x2,…,xd),
特征向量作為分類模型的輸入,其中xi代表用戶的一個特征值,i∈{1,2,……,d},d表示用戶的特征數(shù)量;l為用戶的標(biāo)簽屬性,即“yes”或“no”表示用戶是水軍或者不是水軍。
根據(jù)步驟五訓(xùn)練水軍檢測模型,如圖3所示:
我們將疑似水軍的識別視為一個分類問題,通過步驟四構(gòu)建的訓(xùn)練集,來訓(xùn)練分類模型,并對模型進(jìn)行保存用來進(jìn)行預(yù)測。本實(shí)施例中采用logisticregression算法作為分類模型,給定n個特征x=(x1,x2,…,xn),設(shè)條件概率p(y=1|x)為觀測樣本y相對于事件因素x發(fā)生的概率,用sigmoid函數(shù)表示為:
其中g(shù)(x)=w0+w1x1+…+wnxn,那么在x條件下y不發(fā)生的概率為:
在這一部分所要做的就是訓(xùn)練w=(w0,w1,…,wn)這一組權(quán)值。
根據(jù)步驟六、預(yù)測判別未標(biāo)注數(shù)據(jù),進(jìn)行水軍識別
檢測某個用戶是否是水軍時,首先根據(jù)用戶提供的需要檢測的微博id通過上述步驟1-步驟3所述過程進(jìn)行相關(guān)微博數(shù)據(jù)的采集,并進(jìn)行特征提取,將提取的特征應(yīng)用于訓(xùn)練好的檢測模型,輸出對于用戶是否為水軍的預(yù)測結(jié)果;即將步驟三中提取的特征向量x應(yīng)用于步驟五訓(xùn)練好的模型進(jìn)行預(yù)測,得到p(y=1|x)>p(y=0|x),則可以判斷id為5364402211的用戶是水軍,否則為非水軍。
檢測某一事件中是否有水軍時,則采用上述檢測某用戶是否為水軍同樣的流程對事件中的每一個微博用戶進(jìn)行檢測,一旦檢測到某一用戶為水軍用戶時,則認(rèn)定此事件含有水軍。
本發(fā)明方法已經(jīng)成功應(yīng)用于百萬級微博內(nèi)容的水軍檢測任務(wù),取得了80%以上的識別準(zhǔn)確率。此外本發(fā)明已被國家安全部門應(yīng)用于社交網(wǎng)絡(luò)的輿情監(jiān)測,在微博社交平臺的水軍檢測方面效果顯著,成功檢測到了大量微博水軍,為維護(hù)互聯(lián)網(wǎng)秩序做出了卓越貢獻(xiàn)。
為了說明本發(fā)明的內(nèi)容及實(shí)施方法,給出了上述具體實(shí)施例。在實(shí)施例中引入細(xì)節(jié)的目的不是限制權(quán)利要求書的范圍,而是幫助理解本發(fā)明所述方法。本領(lǐng)域的技術(shù)人員應(yīng)理解:在不脫離本發(fā)明及其所附權(quán)利要求的精神和范圍內(nèi),對最佳實(shí)施例步驟的各種修改、變化或替換都是可能的。因此,本發(fā)明不應(yīng)局限于最佳實(shí)施例及附圖所公開的內(nèi)容。