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

简介: R语言社区主题检测算法应用案例

使用R检测相关主题的社区


创建主题网络

对于Project Mosaic,我正在通过分析抽象文本和共同作者社交网络来研究UNCC在社会科学和计算机和信息学方面的出版物。

我遇到的一个问题是:如何衡量主题之间的关系(相关性)?特别是,我想创建一个连接类似主题的网络可视化,并帮助用户更轻松地浏览大量主题(在本例中为100个主题)。


数据准备

我们的第一步是加载作为LDA输出的主题矩阵。LDA有两个输出:字主题矩阵和文档主题矩阵。

作为加载平面文件的替代方法,您可以使用topicmodels包lda函数的输出来创建任何单词主题和文档主题矩阵。

# 读取作者主题矩阵
author.topic <- read.csv("./author_topics.csv", stringsAsFactors = F)
#

top.words <- word.topics[order(-word.topic[,i])]
name$topic_name[i] <- paste(top.words[1:5], collapse = " + ")
}
# 
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$membershipV(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 sizenodes$color.highlight.background <- "orange"


最后,让我们用交互式情节创建我们的网络。您可以使用鼠标滚轮进行缩放。


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


首先,有两个下拉菜单。第一个下拉列表允许您按名称查找任何主题(按单词概率排名前五个单词)。

第二个下拉列表突出显示了我们算法中检测到的社区。

最大的三个似乎是:

  • 计算(灰色,簇4)
  • 社交(绿蓝,簇1)
  • 健康(黄色,簇2)

检测到的较小社区有什么独特之处?你能解释一下吗?


相关文章
|
4月前
|
数据采集 机器学习/深度学习 算法
|
2月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
73 0
|
4月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
178 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
4月前
|
数据采集 机器学习/深度学习 算法
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
本文通过K-Means聚类算法对NBA球员数据进行聚类分析,旨在揭示球员间的相似性和差异性,为球队管理、战术决策和球员评估提供数据支持,并通过特征工程和结果可视化深入理解球员表现和潜力。
178 1
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
|
2月前
|
存储 数据可视化 数据挖掘
R语言在生物信息学中的应用
【10月更文挑战第21天】生物信息学是生物学、计算机科学和信息技术相结合的交叉学科,主要研究生物大分子信息的存储、处理、分析和解释。R语言作为一种强大的统计分析工具,被广泛应用于生物信息学领域。本文将介绍R语言在生物信息学中的应用,包括基因组学、转录组学、蛋白质组学、代谢组学等方面,帮助读者了解R语言在生物信息学中的重要性和应用前景。
91 4
|
2月前
|
机器学习/深度学习 数据采集 人工智能
R语言是一种强大的编程语言,广泛应用于统计分析、数据可视化、机器学习等领域
R语言是一种广泛应用于统计分析、数据可视化及机器学习的强大编程语言。本文为初学者提供了一份使用R语言进行机器学习的入门指南,涵盖R语言简介、安装配置、基本操作、常用机器学习库介绍及实例演示,帮助读者快速掌握R语言在机器学习领域的应用。
115 3
|
2月前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
61 2
|
2月前
|
存储 算法 搜索推荐
这些算法在实际应用中有哪些具体案例呢
【10月更文挑战第19天】这些算法在实际应用中有哪些具体案例呢
62 1
|
2月前
|
算法 数据可视化 新制造
Threejs路径规划_基于A*算法案例完整版
这篇文章详细介绍了如何在Three.js中完整实现基于A*算法的路径规划案例,包括网格构建、路径寻找算法的实现以及路径可视化展示等方面的内容。
91 0
Threejs路径规划_基于A*算法案例完整版
|
2月前
|
存储 算法 机器人
Threejs路径规划_基于A*算法案例V2
这篇文章详细介绍了如何在Three.js中使用A*算法进行高效的路径规划,并通过三维物理电路的实例演示了路径计算和优化的过程。
89 0