結(jié)課作業(yè):用knime來分析社交網(wǎng)絡(luò)_第1頁
結(jié)課作業(yè):用knime來分析社交網(wǎng)絡(luò)_第2頁
結(jié)課作業(yè):用knime來分析社交網(wǎng)絡(luò)_第3頁
結(jié)課作業(yè):用knime來分析社交網(wǎng)絡(luò)_第4頁
結(jié)課作業(yè):用knime來分析社交網(wǎng)絡(luò)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

結(jié)課作業(yè):用knime來分析社交網(wǎng)絡(luò) 說實話,在用knime分析社交網(wǎng)絡(luò)之前,我只用過pkuvis和gephi來分析微博的轉(zhuǎn)發(fā)路徑,操作很簡單、傻瓜化,我也不太理解gephi是怎么算的,反正最后基本上能導(dǎo)出一張像模像樣的圖。 在用knime分析社交網(wǎng)絡(luò)時,我選用的是slashdot的數(shù)據(jù),這是一個資訊科技網(wǎng)站,比較有趣的地方在于它會對用戶的留言進行打分。這是我在網(wǎng)上搜到的打分機制:打分的方法采用分配形容詞,所有可用的形容詞分別為normal(一般發(fā)言)、offtopic(與主題無關(guān))、flamebait(挑撥)、troll(沒有價值)、redundant(廢話)、insightful(啟發(fā)性)、interesting(有趣)、informative(提供有用信息)、funny(搞笑)、overrated(評價過高)和underrated(評價過低)。所有正面的形容詞為+1分,所有負面的形容詞為-1分??吹竭@些形容詞,很容易聯(lián)想到文本挖掘,所以用slashdot來聯(lián)系textmining和netmining非常合適,我就做這個了!在文本挖掘中,一個詞是積極的還是消極的可以由詞本身的意思或者語義來判斷,一篇文章中積極或消極詞語的頻次決定了一篇文章是積極的還是消極的。用這種方式也可以判斷網(wǎng)站中,一個用戶的評論是積極的還是消極的。在knime的workflow中,為了區(qū)分詞性首先要準備字典:如上,但字典不能直接使用,還需要清洗數(shù)據(jù)。col1和col6沒有用,用columnfilter過濾掉。col0是詞性,但是詞性前都有“type=”,這個我們是不需要的,所以要用javasnippet節(jié)點去掉。使用java語句returnstr.substring(5),這句話的意思是返回從str字符串第5個字符(從0計數(shù))開始直到最后的字符。使用類似的方法可以去掉col2、col3、col4、col5等號前面的單詞。最后的結(jié)果如下: 在dictionarytagger里選擇“NE”,代表namedentities,即命名實體,比如人名、組織名、地點、生物名(比如基因、蛋白質(zhì))等等。每一個被識別的命名實體都會被賦予一個tagvalue,比如person,還有tagtype,即NE。命名實體可以勾選“不可更改”,這是為了防止命名實體在后面的節(jié)點中被拆分或者過濾。準備好字典后就可以分析了。首先要剔除匿名用戶,因為“匿名用戶”是由很多不同的用戶組成的,并非是一個用戶。那怎么剔除匿名用戶呢?可以用正則表達式SD\d+來搜索,\d+匹配1個或更多連續(xù)的數(shù)字。這里的+是和*類似的元字符,不同的是*匹配重復(fù)任意次(可能是0次),而+則匹配重復(fù)1次或更多次。剔除匿名用戶以后要創(chuàng)建document,然后將document和準備好的positivewords、negativewords一起導(dǎo)入dictionarytagger中,這樣所有帖子里的單詞都已經(jīng)被標注上詞性了,我們可以通過計算得知一篇帖子的態(tài)度和一個用戶的態(tài)度。為了方便,稍微整理一下這么多的節(jié)點。接下來要進行的步驟是給文檔和用戶打分,以此決定一篇帖子和一個用戶的態(tài)度。先是分詞,然后標注詞性,計算詞頻,有點像做詞云圖的步驟。然后再將每篇帖子的詞整合在一起,計算出一篇帖子用了多少積極(消極)的詞。為什么groupby后的結(jié)果,count(document)和sum(tfabs)不一樣呢,我是這樣理解的,比如一篇帖子里用了兩次“l(fā)ike”,這個在count(document)里被算成一個單詞,所以計數(shù)1,但是在sum(tfabs)中,相同的單詞出現(xiàn)兩次是計數(shù)2的。接下來是分析一個用戶的態(tài)度,首先先根據(jù)用戶名把數(shù)據(jù)整合,計算出一個用戶所用的詞語的頻次,使用表達式return$Sum(PERSON+First(Sum(TFabs)))$-$Sum(MONEY+First(Sum(TFabs)))$;并規(guī)定得分的范圍在多少算是積極、中立和消極最后生成的分析如下:這樣就通過文本挖掘得到了用戶的態(tài)度。綠色的表示積極的用戶,灰色的為中立的用戶,紅色的是消極的用戶。接下來開始網(wǎng)絡(luò)挖掘。網(wǎng)絡(luò)挖掘的主要目的是為了找出一個網(wǎng)絡(luò)中的“意見領(lǐng)袖”和他們的追隨者。對于網(wǎng)絡(luò)挖掘來說,最重要的是找出每個用戶是如何和其他用戶相互作用的,這種作用的效果并不能通過統(tǒng)計“點贊”或者“轉(zhuǎn)發(fā)”的數(shù)量來簡單的進行分析,但網(wǎng)絡(luò)挖掘并沒有考慮到用戶所發(fā)出的內(nèi)容,這就需要借助文本挖掘的力量。在原始數(shù)據(jù)中,每個user都可以視作網(wǎng)絡(luò)的節(jié)點,但這里沒有網(wǎng)絡(luò)的邊,所以要先創(chuàng)建邊。Postref轉(zhuǎn)發(fā)了postid的內(nèi)容,所以如果輸入兩張原始表格到j(luò)oiner節(jié)點中,選擇leftouterjoin。這樣就可以把原始數(shù)據(jù)中的postid和相應(yīng)的postref整合到一行中。接著再使用java語句if($postusername$.equals($TargetUser$))returnnull;return$postusername$+"->"+$TargetUser$; 這樣就得到了postuser->targetuser的邊表格??匆幌律傻木W(wǎng)絡(luò):使用rnetworkmining7plugin,計算出每個用戶的authorityweight和hubweight,最后將結(jié)果可視化。什么是authorityweight和hubweight呢?如果一個用戶的authorityweight很高,而hubweight很低,那就說明這個用戶有很多粉絲,但是他自己幾乎沒關(guān)注什么人,是個高冷的大v。用在slashdot上,高的hubweight是說一個用戶經(jīng)?;貜?fù)別人的帖子,而高的authorityweight是說這個用戶的帖子經(jīng)常被別人回復(fù)。工作流如上圖,其中nodeadjacencymatrix生成節(jié)點的鄰接矩陣,如果兩個節(jié)點被一條邊連接,那么就計數(shù)為1。接著很詭異的,rsnippet生成了au

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論