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

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

ans 通過 獲取 nag line lda public industry 傳播

使用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概念可能會將這些主題與社區之外的主題聯系起來?

技術分享圖片

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