1. 程式人生 > >R語言社群主題檢測演算法應用

R語言社群主題檢測演算法應用

使用R檢測相關主題的社群

建立主題網路

對於Project Mosaic,我正在通過分析抽象文字和共同作者社交網路來研究UNCC在社會科學和計算機和資訊學方面的出版物。

我遇到的一個問題是:如何衡量主題之間的關係(相關性)?特別是,我想建立一個連線類似主題的網路視覺化,並幫助使用者更輕鬆地瀏覽大量主題(在本例中為100個主題)。

在本教程中,我通過組合來自兩個非常棒的資源的程式碼來實現這一目標:

  • Tyler Rinker的主題建模回購(參見“關於主題的詞語分佈的網路”)
  • Katherine Ognyanova的網路視覺化教程。

資料準備

我們的第一步是載入作為LDA輸出的主題矩陣。LDA有兩個輸出:字主題矩陣和文件主題矩陣。在本教程中,我上傳了以前儲存為平面(csv)檔案的已儲存LDA結果。

作為載入平面檔案的替代方法,您可以使用topicmodels包lda函式的輸出來建立任何單詞主題和文件主題矩陣。獲取函式的輸出並在輸出上lda執行該posterior函式。

# load in author-topic matrix, first column is word
author.topic <- read.csv("./author_topics.csv", stringsAsFactors = F)
# load in word-topic matrix, first column is word
top.words <- word.topics[order(-word.topic[,i])]
name$topic_name[i] <- paste(top.words[1:5], collapse = " + ")
}
# rename topics
colnames(author.topic) <- c("author_name",name$topic_name)

與摘要是文件的標準LDA不同,我運行了一個“以作者為中心”的LDA,其中所有作者的摘要被合併並被視為每個作者的一個文件。我跑這是因為我的最終目標是使用主題建模作為資訊檢索過程來確定研究人員的專業知識。

建立靜態網路

在下一步中,我使用每個主題的單詞概率之間的相關性建立一個網路。

首先,我決定只保留具有顯著相關性(20%+相關性)的關係(邊緣)。我使用20%,因為它對於100個觀察維基百科的樣本具有0.05的統計顯著性水平。

cor_threshold <- .2

接下來,我們使用相關矩陣來建立igraph資料結構,刪除所有具有小於20%最小閾值相關性的邊。

library(igraph)

讓我們繪製一個簡單的igraph網路。

par(mar=c(0, 0, 3, 0))
y30")
title("Strength Between Topics Based On Word Probabilities", cex.main=.8)

每個數字代表一個主題,每個主題都有編號以識別它。

我的第一個觀察是,似乎有三個主要的叢集。

讓我們使用社群檢測,特別是igraph中的標籤傳播演算法來確定網路中的群集。

clp <- cluster_label_prop(graph)
class(clp)
title("Community Detection in Topic Network", cex.main=.8)

社群檢測發現了13個社群,以及每個孤立主題的多個額外社群(即沒有任何聯絡的主題)。

與我最初的觀察結果類似,該演算法找到了我們在第一個圖中識別的三個主要聚類,但也添加了其他較小的聚類,這些聚類似乎不適合三個主要聚類中的任何一個。

讓我們儲存我們的社群,並計算我們將在下一部分使用的學位中心性和中介性。

V(graph)$community <- clp$membership
V(graph)$degree <- degree(graph, v = V(graph))

動態視覺化

在本節中,我們將使用visNetwork允許R中的互動式網路圖的包。

首先,讓我們呼叫庫並執行visIgraph一個互動式網路,但是使用igraph圖形設定在igraph結構(圖形)上執行。

library(visNetwork)

這是一個良好的開端,但我們需要有關網路的更多詳細資訊。

讓我們通過建立visNetwork資料結構走另一條路。為此,我們將igraph結構轉換為visNetwork資料結構,然後將列表分成兩個資料幀:節點和邊緣。

data <- toVisNetworkData(graph)
nodes <- data[[1]]

刪除沒有連線的節點(主題)(度= 0)。

nodes <- nodes[nodes$degree != 0,]

讓我們新增顏色和其他網路引數來改善我們的網路。

library(RColorBrewer)
col <- brewer.pal(12, "Set3")[as.factor(nodes$community)]
nodes$shape <- "dot"
s$betweenness))+.2)*20 # Node size
nodes$color.highlight.background <- "orange"

最後,讓我們用互動式情節建立我們的網路。您可以使用滑鼠滾輪進行縮放。

visNetwork(nodes, edges) %>%
visOptions(highlightNearest = TRUE, selectedBy = "community", nodesIdSelection = TRUE)

按ID選擇

學生+規模+專案+有效性+過程

糖尿病+卡羅萊納州+北卡羅來納州+教育+北方

教師+數學+學校+小學+學生

地位+女性+性別+個人+理論

資料+跟蹤+動作+分類+視訊

物種+資料+序列+病例+遺傳

學生+學校+學校+幹+成就

victimization + criminal + victims + rates + violence

older + aging + adults + successful + older_adults

joint + control + controls + balance + lateral

protein + flexibility + properties + structure + families

security + system + configuration + attacks + smart

mobile + information + application + search + data

genes + gene + expression + genetic + genome

energy + intervention + data + hypertension + dietary

health + patients + hospitals + racial + rate

providers + work + care + hiv + violence

health + ability + cognitive + outcomes + factors

power + users + information + user + systems

spatial + urban + location + geographic + information

public + organizations + data + evaluation + program

framework + image + images + retrieval + features

data + systems + problem + scheme + key

women + ci + pregnancy + health + odds

visual + data + problem + analytics + events

students + instruction + disabilities + skills + literacy

image + images + visual + algorithm + object

health + care + smoking + current + data

technology + teacher + learning + teachers + chapter

systems + agents + complex + agent + control

routing + network + networks + topology + nodes

social + issues + gender + challenges + perceptions

knowledge + software + management + important + effective

members + team + virtual + teams + diversity

health + care + community + primary + primary_care

network + networks + addresses + techniques + novel

images + flow + image + building + tracking

stress + exercise + function. + age + n

health + women + care + cognitive + united

meetings + meeting + organizational + work + job

reading + schools + implementation + behavior + academic

continuum + objects + robot + object + motion

data + plans + finally + online + plan

workplace + organizational + work + temporal + workers

students + learning + course + computing + student

transition + practices + program + students + evidence.based

attacks + security + system + mechanism + protocol

urban + charlotte + economic + cities + areas

security + developers + vulnerabilities + software + secure

health + children + care + areas + florida

virtual + environment + children + technique + user

genomes + binding + genes + sites + similar

early + development + literacy + professional + childhood

structural + binding + tranion + protein + structures

agents + navigation + game + data + world

visualization + time + data + network + security

users + policy + user + access + social

data + time + factors + provide + variables

design + data + understanding + process + issues

information + risk + real + process + social

game + students + games + educational + student

health + physical + older + african + americans

firms + value + financial + information + accounting

public + environmental + commitment + values + industry

students + intervention + alcohol + college + drinking

development + housing + prices + economic + offers

novel + insight + visual + evaluation + text

land + data + urban + lidar + spatial

graph + privacy + database + social + theoretical

spatial + parallel + computing + modeling + data

youth + services + children + child + family

activity + physical + physical_activity + running + strains

patients + patient + costs + care + outcomes

genes + splicing + alternative + rna.seq + gene

data + values + applied + peak + mass

array + expression + microarray + de + probe

Select by community

首先,請注意有兩個下拉選單。第一個下拉列表允許您按名稱查詢任何主題(按單詞概率排名前五個單詞)。

第二個下拉列表突出顯示了我們演算法中檢測到的社群。玩這個選單。使用主題名稱(使用滑鼠滾動放大),您能解釋主題社群似乎是什麼嗎?

最大的三個似乎是:

  • 計算(灰色,簇4)
  • 社交(綠藍,群集1)
  • 健康(黃色,群集2)

檢測到的較小社群有什麼獨特之處?你能解釋一下嗎?

最後,泡沫的大小基於網路(中心)度量中介。這可以衡量該節點對整個網路連線的重要性。在此示例中,較大的節點具有較高的中介性,這意味著主題在跨主題群集時更為重要。

哪個是最大的節點?這些主題是保持網路連線的“粘合劑”。什麼resesarch概念可能會將這些主題與社群之外的主題聯絡起來?

大資料部落——中國專業的第三方資料服務提供商,提供定製化的一站式資料探勘和統計分析諮詢服務

統計分析和資料探勘諮詢服務 :y0.cn/teradat(諮詢服務請聯絡官網客服

點選這裡給我發訊息QQ:3025393450

【服務場景】  

科研專案; 

公司專案外包 ;線上線下一對一培訓 ;資料採集;學術研究;報告撰寫;市場調查。

【大資料部落】提供定製化的一站式資料探勘和統計分析諮詢服務

【大資料部落】大資料部落提供定製化的一站式資料探勘和統計分析諮詢服務

分享最新的大資料資訊,每天學習一點資料分析,讓我們一起做有態度的資料人【大資料部落】大資料部落提供定製化的一站式資料探勘和統計分析諮詢服務

微信客服號:lico_9e

QQ交流群:186388004 大資料部落

【大資料部落】r語言電商網站爬蟲

歡迎關注微信公眾號,瞭解更多資料乾貨資訊!

【大資料部落】大資料部落提供定製化的一站式資料探勘和統計分析諮詢服務