R語言社群主題檢測演算法應用案例
原文連結: http://tecdat.cn/?p=5658
使用R檢測相關主題的社群
建立主題網路
對於Project Mosaic,我正在通過分析抽象文字和共同作者社交網路來研究UNCC在社會科學和計算機和資訊學方面的出版物。
我遇到的一個問題是:如何衡量主題之間的關係(相關性)?特別是,我想建立一個連線類似主題的網路視覺化,並幫助使用者更輕鬆地瀏覽大量主題(在本例中為100個主題)。
資料準備
我們的第一步是載入作為LDA輸出的主題矩陣。LDA有兩個輸出:字主題矩陣和文件主題矩陣。
作為載入平面檔案的替代方法,您可以使用topicmodels包lda函式的輸出來建立任何單詞主題和文件主題矩陣。
# load in author-topic matrix, first column is wordauthor.topic <- read.csv("./author_topics.csv", stringsAsFactors = F)# load in word-topic matrix, first column is wordtop.words <- word.topics[order(-word.topic[,i])]name$topic_name[i] <- paste(top.words[1:5], collapse = " + ")}# rename topicscolnames(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)
檢測到的較小社群有什麼獨特之處?你能解釋一下嗎?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69982319/viewspace-2739020/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mann–Whitney U test R語言檢驗R語言
- r語言R語言
- 【R語言入門】R語言環境搭建R語言
- 隨機森林R語言預測工具隨機森林R語言
- SMOTE與SMOGN演算法R語言程式碼演算法R語言
- R 語言使用
- GO語言敏感詞檢測Go
- 地理探測器R語言實現:geodetectorR語言
- 多語言檢測工具實踐
- [NLP]OpenNLP語言檢測器的使用
- R語言快速入門R語言
- R語言:畫樹圖R語言
- 什麼是r語言R語言
- R語言函式-tolowerR語言函式
- 【目標檢測】Fast R-CNN演算法實現ASTCNN演算法
- 用R語言進行時間序列ARMA模型分析R語言模型
- 物體檢測(YOLO)示例:使用 C 語言YOLO
- R語言的入門教程R語言
- R語言-Survival analysis(生存分析)R語言
- R語言課程設計之-深圳房價預測模型R語言模型
- Go語言反射(reflect)及應用Go反射
- 【目標檢測】R-CNNCNN
- KMeans演算法全面解析與應用案例演算法
- 使用R語言分析微信好友R語言
- R語言批量建立資料框R語言
- Lasso迴歸及其R語言操作R語言
- R語言的初級學習R語言
- R語言資料質量分析R語言
- Python真的勒死R語言了嗎?PythonR語言
- R語言經典統計分析R語言
- python和r語言的區別PythonR語言
- 機器學習在實時性欺詐檢測中的應用案例機器學習
- 簡化stream流等工具類(函數語言程式設計的應用案例)函數程式設計
- 探索自然語言處理:語言模型的發展與應用自然語言處理模型
- R語言中管道符號 %>% 的應用 及 舉例R語言符號
- [應用案例]OT應用案例之dasdig
- C 語言實現物體檢測:使用 YOLO 模型YOLO模型
- 使用 Go 語言與 OpenCV 進行物體檢測GoOpenCV