專(zhuān)利名稱(chēng):一種在微博平臺(tái)上識(shí)別機(jī)器人用戶的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種社交網(wǎng)絡(luò)領(lǐng)域,具體地說(shuō),涉及的是一種在微博平臺(tái)上識(shí)別機(jī)器人用戶的方法。
背景技術(shù):
在*吐2.0時(shí)代,社交網(wǎng)絡(luò)日益成為人們網(wǎng)絡(luò)生活的重要組成部分,其中微博 (micro-blog)這種網(wǎng)絡(luò)服務(wù)更是成為了最紅火的概念。微博是一個(gè)基于用戶關(guān)系的信息分享、傳播以及獲取平臺(tái),用戶可以通過(guò)WEB、WAP以及各種客戶端組件個(gè)人社區(qū),以140字左右的文字更新信息,并實(shí)現(xiàn)即時(shí)分享。從國(guó)外的twitter到國(guó)內(nèi)的新浪,對(duì)用戶的技術(shù)門(mén)檻都很低,同時(shí)微博api的存在使得用戶可以在各種移動(dòng)終端上登錄微博發(fā)布消息,這也加速了微博的發(fā)展。隨著高速發(fā)展而來(lái)的是各種各樣的問(wèn)題,機(jī)器人賬戶、僵尸粉網(wǎng)絡(luò)及其帶來(lái)的內(nèi)容污染和輿論誤導(dǎo)等問(wèn)題日益嚴(yán)重。國(guó)內(nèi)外有眾多的專(zhuān)家學(xué)者都開(kāi)始研究機(jī)器人賬戶的檢測(cè)和垃圾內(nèi)容的過(guò)濾技術(shù)。微博服務(wù)提供商也建立了諸如IP檢測(cè)、用戶舉報(bào)等檢測(cè)機(jī)制來(lái)發(fā)現(xiàn)和限制這些惡意的賬號(hào)。從用戶的社會(huì)關(guān)系特征這個(gè)角度來(lái)看,一般的機(jī)器人用戶的好友不會(huì)像正常人類(lèi)用戶那樣形成若干個(gè)密集的節(jié)點(diǎn)集合。因此如果分析關(guān)系圖的節(jié)點(diǎn)聚集情況,可以用來(lái)區(qū)分機(jī)器人用戶和普通賬戶。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對(duì)目前微博平臺(tái)上的機(jī)器人賬號(hào)泛濫的情況,提出一種微博平臺(tái)上識(shí)別機(jī)器人用戶的方法,該方法區(qū)別于傳統(tǒng)的用戶舉報(bào)等檢測(cè)機(jī)制,這種方法是建立在分析用戶的社會(huì)關(guān)系特點(diǎn)上,具有更高的主動(dòng)性和精確性。為實(shí)現(xiàn)上述目的,本發(fā)明所述的微博平臺(tái)上識(shí)別機(jī)器人用戶的方法,包括以下步驟步驟1 利用已注冊(cè)的賬號(hào)登錄微博;步驟2 綜合目標(biāo)用戶的關(guān)注和粉絲列表頁(yè)面,得到好友列表;步驟3 獲得這些好友之間的關(guān)系矩陣,這其中包括獲得好友和好友之間的關(guān)系以及交互系數(shù)K;步驟4 將得到的好友關(guān)系矩陣(包括交互系數(shù)K)作為Fruchterman-Reingold算法的輸入?yún)?shù),利用該算法繪制出好友社會(huì)關(guān)系圖;步驟5 處理分析關(guān)系圖得到節(jié)點(diǎn)密度分布矩陣matrix ;步驟6 利用步驟5得到的密度分布矩陣判斷賬戶是否是機(jī)器人賬戶。上述步驟3中,需要通過(guò)步驟2得到的好友列表來(lái)獲得用戶好友之間的關(guān)系矩陣, 具體過(guò)程如下(1)對(duì)好友列表中的好友進(jìn)行遍歷;
(2)獲取每個(gè)好友的好友列表;(3)將每個(gè)好友的好友列表中的人員和用戶好友列表中的人員進(jìn)行比較,得到每個(gè)好友和用戶的共同好友;(4)對(duì)每一對(duì)好友建立一個(gè)3維向量,每一維分表代表用戶A和B以及AB間的交互系數(shù);(5)對(duì)每一個(gè)用戶對(duì),搜集用戶之間的評(píng)論和@次數(shù),計(jì)算交互系數(shù)K,K的值由基準(zhǔn)值和浮動(dòng)值兩個(gè)部分組成,所述浮動(dòng)值通過(guò)將評(píng)論數(shù)和@次數(shù)加權(quán)平均的方法計(jì)算得到。步驟4中,利用修改后Fruchterman-Reingold算法繪制出好友社會(huì)關(guān)系圖,具體過(guò)程如下(1)初始化畫(huà)布、萬(wàn)有引力系數(shù)、庫(kù)倫系數(shù)、起始步長(zhǎng)時(shí)間等參數(shù);(2)獲得步驟3中三位向量組成的關(guān)系矩陣;(3)按照關(guān)系矩陣的元素初始化節(jié)點(diǎn)列表和邊列表,以及邊的彈性系數(shù),該邊的彈性系數(shù)由交互系數(shù)K決定;(4)開(kāi)始迭代;(5)計(jì)算每一個(gè)節(jié)點(diǎn)所受的合力,包括彈力、萬(wàn)有引力、庫(kù)倫斥力;(6)計(jì)算節(jié)點(diǎn)受力后在步長(zhǎng)時(shí)間內(nèi)的速度變化和位移,更新每個(gè)節(jié)點(diǎn)的速度和位移信息;(7)計(jì)算系統(tǒng)的總動(dòng)能;(8)判斷迭代結(jié)束條件是否滿足,即動(dòng)能小于某個(gè)閾值或者迭代次數(shù)超過(guò)某個(gè)閾值,如果不滿足返回(5),否則進(jìn)行(9);(9)結(jié)束迭代,記錄每個(gè)節(jié)點(diǎn)的最終位置;輸出結(jié)果。本發(fā)明跳出傳統(tǒng)的檢測(cè)思路,利用用戶的社會(huì)關(guān)系特點(diǎn)來(lái)發(fā)現(xiàn)機(jī)器人賬號(hào),通過(guò)微博搜集用戶好友之間的關(guān)系信息以及交互信息,然后利用Fruchterman-Reingold算法繪制出關(guān)系圖網(wǎng)絡(luò)圖,再分析圖中節(jié)點(diǎn)的密度分布,利用這個(gè)信息來(lái)識(shí)別機(jī)器人和正常用戶。本發(fā)明給出了一種基于社會(huì)關(guān)系信息分析的微博機(jī)器人賬號(hào)檢測(cè)方法。相比于傳統(tǒng)的舉報(bào)、ip檢測(cè)等機(jī)制,擁有更高的主動(dòng)性和精確性。
圖1是本發(fā)明方法的流程圖。圖2是數(shù)據(jù)收集好友社會(huì)關(guān)系信息的流程。圖3是獲取交互信息并計(jì)算交互系數(shù)的流程圖4是修改后的Fruchterman-Reingold算法的流程圖。圖5是分析節(jié)點(diǎn)密度分布的流程。
具體實(shí)施例方式下面對(duì)本發(fā)明的實(shí)施例作詳細(xì)說(shuō)明,本實(shí)施例以本發(fā)明技術(shù)方案為前提,給出了詳細(xì)的實(shí)施方式和具體的操作過(guò)程,但本發(fā)明的保護(hù)范圍不限于下述的實(shí)施例。如圖1所示,本實(shí)施例的流程大致可以分為以下幾個(gè)步驟
步驟1 利用已注冊(cè)的賬號(hào)登錄微博;步驟2 綜合目標(biāo)用戶的關(guān)注和粉絲列表頁(yè)面,得到好友列表;步驟3 獲得這些好友之間的關(guān)系矩陣,這其中包括獲得好友和好友之間的關(guān)系以及交互系數(shù)K,矩陣由多個(gè)三維向量組成,每一維分別代表?yè)碛泻糜殃P(guān)系的兩個(gè)用戶A和 B以及AB間的交互系數(shù)K;步驟4 將得到的好友關(guān)系矩陣(包括交互系數(shù)K)作為Fruchterman-Reingold算法的輸入?yún)?shù),利用該算法繪制出好友社會(huì)關(guān)系圖;步驟5 處理分析關(guān)系圖得到節(jié)點(diǎn)密度分布矩陣matrix ;步驟6 利用步驟5得到的密度分布矩陣判斷賬戶是否是機(jī)器人。步驟1、2、3的過(guò)程如圖2所示,需要注意的是,普通用戶無(wú)法直接獲取其他用戶的好友列表,只能得到一個(gè)用戶關(guān)注對(duì)象的列表和粉絲的列表。因此,可以看到圖2中需要首先訪問(wèn)關(guān)注頁(yè)面來(lái)獲取關(guān)注的用戶列表,再訪問(wèn)粉絲頁(yè)面獲取粉絲列表。同樣,獲取好友的好友列表也是需要兩步來(lái)完成的,圖2中綜合成一步來(lái)表示。獲取了好友列表和每個(gè)好友的好友列表后,開(kāi)始遍歷該用戶的所有好友。將每個(gè)好友的好友列表中的元素和用戶的好友列表中的元素進(jìn)行比較,找出用戶的好友之間互為好友的所有配對(duì)。然后計(jì)算每一個(gè)配對(duì)的好友的交互系數(shù)K。最后會(huì)輸出一個(gè)三維的向量集合。每個(gè)向量的每一維分別代表好友對(duì)成員A好友對(duì)成員B和AB之間的交互系數(shù)。獲取和計(jì)算交互系數(shù)K的具體過(guò)程在圖3中可以看到,對(duì)于得到的每一個(gè)好友配對(duì),有用戶A和B。本實(shí)施例利用AB之間的評(píng)論和@的次數(shù)這兩個(gè)信息來(lái)計(jì)算交互系數(shù)。 獲取這些數(shù)據(jù)需要以下幾個(gè)步驟,以獲得A對(duì)B的交互信息為例首先遍歷用戶A所有的微博消息,統(tǒng)計(jì)其中@到用戶B的情況有多少次;然后遍歷用戶B的所有微博消息,統(tǒng)計(jì)其中由A發(fā)出的評(píng)論的數(shù)量。然后同樣統(tǒng)計(jì)B對(duì)A的這些信息。利用這些信息計(jì)算AB之間的交互系數(shù)K。這個(gè)交互系數(shù)K是作為Fruchterman-Reingold算法中物理引力的計(jì)算系數(shù)的, K的值會(huì)以某個(gè)常數(shù)為基準(zhǔn)值浮動(dòng)。上面提到的評(píng)論數(shù)和@次數(shù)將以加權(quán)平均的方法最后計(jì)算得到一個(gè)浮動(dòng)值。即K = Kb+Kf。Kb的選取取決于庫(kù)侖斥力系數(shù),一般是和庫(kù)侖斥力系數(shù)取相同的值,Kf的浮動(dòng)范圍在0 50% Kb,需要對(duì)加權(quán)平均之后的值進(jìn)行歸一化。步驟4的處理就是將步驟3得到的好友關(guān)系向量作為Fruchterman-Reingold算法的參數(shù)進(jìn)行運(yùn)算,繪制出好友社會(huì)關(guān)系圖。Fruchterman-Reingold算法是一種基于力學(xué)的繪圖算法,由T.M.J. Fruchterman和E.M. Reingold在1991年提出。傳統(tǒng)的基于力學(xué)的繪圖算法將彈簧模型和同種電荷相斥模型引入節(jié)點(diǎn)圖的繪制將節(jié)點(diǎn)之間的邊看做是拉伸的彈簧,會(huì)使兩個(gè)節(jié)點(diǎn)相互靠近;同時(shí)引入節(jié)點(diǎn)之間的庫(kù)倫斥力,使節(jié)點(diǎn)在離得很近時(shí)會(huì)因?yàn)槌饬Χ蛛x。算法的大致步驟如下1)初始化一塊固定大小的畫(huà)布;將節(jié)點(diǎn)隨機(jī)放置到畫(huà)布中,并且初始化邊。初始化所有節(jié)點(diǎn)的速度為0。2)開(kāi)始迭代,計(jì)算每個(gè)節(jié)點(diǎn)受到的合力,包括所有其他節(jié)點(diǎn)對(duì)其產(chǎn)生的斥力和所有連接它的邊產(chǎn)生的拉力。按照事先設(shè)定的“步長(zhǎng)”,計(jì)算節(jié)點(diǎn)經(jīng)過(guò)移動(dòng)后的速度和位置,然后利用速度信息計(jì)算所有節(jié)點(diǎn)的動(dòng)能總和。3)繼續(xù)迭代,每次迭代都重新計(jì)算所有節(jié)點(diǎn)的位置和速度,得到動(dòng)能總和。4)按照物理規(guī)律,節(jié)點(diǎn)的動(dòng)能總和會(huì)在多次迭代之后趨于穩(wěn)定,而節(jié)點(diǎn)的位置也將固定。根據(jù)預(yù)先設(shè)定的迭代次數(shù)。完成迭代以后我們會(huì)得到一個(gè)相對(duì)穩(wěn)定的節(jié)點(diǎn)分布圖。5)記錄每個(gè)節(jié)點(diǎn)的最終位置,以坐標(biāo)形式輸出。傳統(tǒng)的基于力學(xué)的繪圖方法中,步長(zhǎng)參數(shù)是固定的,這樣做的缺點(diǎn)在于,無(wú)法確保系統(tǒng)最后是處于一個(gè)穩(wěn)定狀態(tài)。Fruchterman-Reingold算法引入了一個(gè)“環(huán)境溫度”的概念,通過(guò)溫度來(lái)控制步長(zhǎng)變量,溫度越高步長(zhǎng)越低。初始溫度較高,隨著每次迭代的進(jìn)行,溫度會(huì)降低,最后系統(tǒng)將趨于穩(wěn)定狀態(tài)。本發(fā)明使用到的Fruchterman-Reingold算法,還引入了交互系數(shù)K的概念,即不同的邊(可以看做彈簧)的彈力系數(shù)是不同的,交互性越強(qiáng),彈力系數(shù)越強(qiáng),這樣可以使得交互性較高的節(jié)點(diǎn)能夠靠得更近。修改后的Fruchterman-Reingold算法的流程如圖4所示。具體過(guò)程如下(1)初始化畫(huà)布、萬(wàn)有引力系數(shù)、庫(kù)倫系數(shù)、起始步長(zhǎng)等參數(shù);(2)獲得步驟3中三位向量組成的關(guān)系矩陣;(3)按照關(guān)系矩陣的元素初始化節(jié)點(diǎn)列表和邊列表,以及邊地彈性系數(shù)(由交互系數(shù)K決定);(4)開(kāi)始迭代;(5)計(jì)算每一個(gè)節(jié)點(diǎn)所受的合力,包括彈力、萬(wàn)有引力、庫(kù)倫斥力;(6)計(jì)算節(jié)點(diǎn)受力后在步長(zhǎng)時(shí)間內(nèi)的速度變化和位移,更新每個(gè)節(jié)點(diǎn)的速度和位移信息;(7)計(jì)算系統(tǒng)的總動(dòng)能;(8)判斷迭代結(jié)束條件是否滿足(動(dòng)能小于某個(gè)閾值或者迭代次數(shù)超過(guò)某個(gè)閾值),如果不滿足返回(5),否則進(jìn)行(9);(9)結(jié)束迭代,記錄每個(gè)節(jié)點(diǎn)的最終位置。輸出結(jié)果。步驟5是在步驟4的基礎(chǔ)上分析節(jié)點(diǎn)的分布密度,其具體流程如圖5。首先將畫(huà)布劃分為100塊小塊;然后遍歷每個(gè)節(jié)點(diǎn)的坐標(biāo),判斷它落在哪個(gè)分塊中,將相應(yīng)分塊的節(jié)點(diǎn)數(shù)加一。完成遍歷后統(tǒng)計(jì)每個(gè)分塊的節(jié)點(diǎn)數(shù)量,得到密度分布矩陣,矩陣為一個(gè)10*10的二維矩陣,每個(gè)元素代表相應(yīng)分塊中的節(jié)點(diǎn)數(shù)量。步驟6通過(guò)分析步驟5得到的密度分布矩陣來(lái)判斷賬號(hào)是否機(jī)器人。首先根據(jù)預(yù)先設(shè)定的密度閾值,統(tǒng)計(jì)100個(gè)分塊中有多少個(gè)分塊的數(shù)量超過(guò)了這個(gè)閾值,計(jì)算得到密集塊的數(shù)量;再根據(jù)設(shè)定的密集塊數(shù)量閾值來(lái)判定用戶是否是機(jī)器人,即數(shù)量高于閾值的為正常用戶,低于閾值的為機(jī)器人用戶。這種方法的思路有兩點(diǎn),首先,機(jī)器人用戶的好友不會(huì)有明顯的社會(huì)群體分布或者說(shuō)形成密集的社會(huì)圈子;其次,就算是有,它的社會(huì)群體的數(shù)量也不會(huì)有正常用戶那么多。利用這兩個(gè)性質(zhì)可以區(qū)分正常用戶和機(jī)器人用戶。盡管本發(fā)明的內(nèi)容已經(jīng)通過(guò)上述優(yōu)選實(shí)施例作了詳細(xì)介紹,但應(yīng)當(dāng)認(rèn)識(shí)到上述的描述不應(yīng)被認(rèn)為是對(duì)本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對(duì)于本發(fā)明的多種修改和替代都將是顯而易見(jiàn)的。因此,本發(fā)明的保護(hù)范圍應(yīng)由所附的權(quán)利要求來(lái)限定。
權(quán)利要求
1.一種在微博平臺(tái)上識(shí)別機(jī)器人用戶的方法,其特征在于包括以下步驟 步驟1 利用已注冊(cè)的賬號(hào)登錄微博;步驟2 綜合目標(biāo)用戶的關(guān)注和粉絲列表頁(yè)面,得到好友列表; 步驟3 獲得這些好友之間的關(guān)系矩陣,這其中包括獲得好友和好友之間的關(guān)系以及交互系數(shù)K,矩陣由多個(gè)三維向量組成,每一維分別代表?yè)碛泻糜殃P(guān)系的兩個(gè)用戶A和B以及AB間的交互系數(shù)K;步驟4 將得到的好友關(guān)系矩陣,包括交互系數(shù)K,作為Fruchterman-Reingold算法的輸入?yún)?shù),利用該算法繪制出好友社會(huì)關(guān)系圖;步驟5 處理分析關(guān)系圖得到節(jié)點(diǎn)密度分布矩陣matrix ;步驟6 利用步驟5得到的密度分布矩陣判斷賬戶是否是機(jī)器人賬戶。
2.根據(jù)權(quán)利要求1所述的在微博平臺(tái)上識(shí)別機(jī)器人用戶的方法,其特征在于步驟3中, 需要通過(guò)步驟2得到的好友列表來(lái)獲得用戶好友之間的關(guān)系矩陣,具體過(guò)程如下(1)對(duì)好友列表中的好友進(jìn)行遍歷;(2)獲取每個(gè)好友的好友列表;(3)將每個(gè)好友的好友列表中的人員和用戶好友列表中的人員信息進(jìn)行比較,得到每個(gè)好友和用戶的共同好友;(4)對(duì)每一對(duì)好友建立一個(gè)3維向量,每一維分表代表用戶A和B以及AB間的交互系數(shù);(5)對(duì)每一個(gè)用戶對(duì),搜集用戶之間的評(píng)論和@次數(shù),計(jì)算交互系數(shù)K,K的值由基準(zhǔn)值和浮動(dòng)值兩個(gè)部分組成,即K = Kb+Kf,基準(zhǔn)值Kb的選取取決于庫(kù)侖斥力系數(shù),Kf的浮動(dòng)范圍在O 50% Kbo
3.根據(jù)權(quán)利要求1或2所述的在微博平臺(tái)上識(shí)別機(jī)器人用戶的方法,其特征在于步驟 4中,利用修改后Fruchterman-Reingold算法繪制出好友社會(huì)關(guān)系圖,具體過(guò)程如下(1)初始化畫(huà)布、萬(wàn)有引力系數(shù)、庫(kù)倫系數(shù)、起始步長(zhǎng)參數(shù);(2)獲得步驟3中三位向量組成的關(guān)系矩陣;(3)按照關(guān)系矩陣的元素初始化節(jié)點(diǎn)列表和邊列表,以及邊地彈性系數(shù),該邊地彈性系數(shù)由交互系數(shù)K決定;(4)開(kāi)始迭代;(5)計(jì)算每一個(gè)節(jié)點(diǎn)所受的合力,包括彈力、萬(wàn)有引力、庫(kù)倫斥力;(6)計(jì)算節(jié)點(diǎn)受力后在步長(zhǎng)時(shí)間內(nèi)的速度變化和位移,更新每個(gè)節(jié)點(diǎn)的速度和位移信息;(7)計(jì)算系統(tǒng)的總動(dòng)能;(8)判斷迭代結(jié)束條件是否滿足,即動(dòng)能小于某個(gè)閾值或者迭代次數(shù)超過(guò)某個(gè)閾值,如果不滿足返回(5),否則進(jìn)行(9);(9)結(jié)束迭代,記錄每個(gè)節(jié)點(diǎn)的最終位置;輸出結(jié)果。
4.根據(jù)權(quán)利要求1或2所述的在微博平臺(tái)上識(shí)別機(jī)器人用戶的方法,其特征在于步驟 5中,具體如下首先將畫(huà)布劃分為100塊小塊;然后遍歷每個(gè)節(jié)點(diǎn)的坐標(biāo),判斷它落在哪個(gè)分塊中,將相應(yīng)分塊的節(jié)點(diǎn)數(shù)加一,完成遍歷后統(tǒng)計(jì)每個(gè)分塊的節(jié)點(diǎn)數(shù)量,得到密度分布矩陣,矩陣為一個(gè)10*10的二維矩陣,每個(gè)元素代表相應(yīng)分塊中的節(jié)點(diǎn)數(shù)量。
5.根據(jù)權(quán)利要求1或2所述的在微博平臺(tái)上識(shí)別機(jī)器人用戶的方法,其特征在于步驟 6,具體為將每個(gè)分塊的密度和預(yù)設(shè)的密度閾值比較,統(tǒng)計(jì)超過(guò)閾值的分塊數(shù)量,然后將這個(gè)數(shù)量和預(yù)設(shè)的數(shù)量閾值進(jìn)行比較,如果超過(guò)數(shù)量閾值,則說(shuō)明用戶符合正常用戶的社會(huì)網(wǎng)絡(luò)特點(diǎn),否則是機(jī)器人賬戶。
全文摘要
本發(fā)明公開(kāi)一種在微博平臺(tái)上識(shí)別機(jī)器人用戶的方法,通過(guò)分析用戶好友的社會(huì)關(guān)系來(lái)區(qū)分正常用戶和機(jī)器人用戶。該方法獲取用戶的好友之間的關(guān)系信息和交互程度信息,利用Fruchterman-Reingold算法得到用戶的好友關(guān)系網(wǎng)絡(luò)圖,通過(guò)分析關(guān)系網(wǎng)絡(luò)圖來(lái)鑒別機(jī)器人用戶。本發(fā)明區(qū)別于傳統(tǒng)的用戶舉報(bào)等檢測(cè)機(jī)制,這種方法是建立在分析用戶的社會(huì)特點(diǎn)上,具有更高的主動(dòng)性和精確性。
文檔編號(hào)G06F17/30GK102571485SQ20111041926
公開(kāi)日2012年7月11日 申請(qǐng)日期2011年12月14日 優(yōu)先權(quán)日2011年12月14日
發(fā)明者周異, 周曲, 楊小康, 林成峰, 陳凱 申請(qǐng)人:上海交通大學(xué)