码迷,mamicode.com
首页 > 编程语言 > 详细

R语言社区主题检测算法应用

时间:2018-09-17 17:39:18      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:location   current   soc   研究   mmu   交互   重要性   flow   flex   

使用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语言社区主题检测算法应用

标签:location   current   soc   研究   mmu   交互   重要性   flow   flex   

原文地址:https://www.cnblogs.com/tecdat/p/9662806.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!