社會網絡分析數據處理(R文本挖掘社會網絡分析)
2023-09-20 09:03:51
社會網絡分析是綜合運用圖論、數學模型來研究行動者與行動者、行動者與其所處社會網絡、以及一個社會網絡與另一社會網絡之間關係的一種結構分析方法。在這個定義中的「行動者」,或稱「節點」,可以是一個個體,也可以是一個群體、一個組織,甚至是一個國家,這些行動者及其間的關係就構成了社會網絡(Socia Network)
社會網絡分析,英文social network analysis。社會網絡分析已經成為重要的研究思想,涉及了多個學科和研究領域,例如:數據挖掘領域、知識管理、數據可視化、統計分析、社會資本、小世界理論、信息傳播等。
當然了,這麼一種方法也可以用在文本挖掘中,好處多多:
These methods are especially efficient for large-scale datasets in which traditional approaches such as content analysis are prohibitively labor-intensive; however, even with relatively smaller textual data they can be effective in assisting manual analysis by identifying additional patterns which human coders may not recognize.
所以今天我們就來寫一寫如何用R語言做中文文本的社會網絡分析。
數據準備及預處理數據依然還是新年賀詞,大家自己在網上一搜,貼在記事本中就行:
library(igraph)library(tm)library(Rwordseg)library(tmcn)heci <- readLines('C:/Users/hrd/Desktop/bootcamp/dataset/2021賀詞.txt',encoding = 'UTF-8')
數據讀入之後就是分詞和向量化,建立語料庫和去停用詞:
ci <- segmentCN(heci)#此步可以自定義詞典docs <- Corpus(VectorSource(ci))inspect(docs)docs <- tm_map(docs, removeNumbers)#自定義停用詞myStopwords <- readLines('C:/Users/hrd/Desktop/bootcamp/dataset/Chinese-StopWords.txt', encoding = 'UTF-8')myStopwords<-myStopwords[Encoding(myStopwords)!="unknown"]docs <- tm_map(docs, removeWords, myStopwords)toSpace <- content_transformer(function(x, pattern) { return (gsub(pattern, " ", x))})docs <- tm_map(docs, toSpace, "c")docs <- tm_map(docs, stripWhitespace)
處理好了之後,就建立文檔詞矩陣:
tdm <- createTDM(docs, language = "zh")tdm_removed<-removeSparseTerms(tdm, 0.9)##去掉低於95%的的稀疏條數dim(tdm_removed)#查看詞和文檔的數量
社會網絡分析我們不考慮網絡中邊的粗細,只考慮連結關係,所以將詞文檔矩陣中的大於1的數字都轉化為1:
m =1] <- 1
然後我們生成社會網絡分析的專用矩陣,這個矩陣叫做term-term adjacency matrix,是詞文檔矩陣和文檔詞矩陣的矩陣乘積:
#轉化為term-term adjacency matrixtermMatrix <- m%*%t(m)
接下來我們就可以畫出社會網絡分析的圖了:
#建立graphg <- graph.adjacency(termMatrix,weighted = T,mode = 'undirected')g <- simplify( g, remove.multiple = T, remove.loops = F, ,) )V(g)$label <- V(g)$nameV(g)$degree <- degree(g)plot(g, vertex.label.dist=1.5
運行代碼就可以得到圖如下:
這個圖還有很多可以完善的地方,我還在慢慢探索中,以後再繼續更新。
小結今天給大家寫了中文文本的社會網絡分析,現學現賣,還請大神點撥,感謝大家耐心看完。發表這些東西的主要目的就是督促自己,希望大家關注評論指出不足,一起進步。內容我都會寫的很細,用到的數據集也會在原文中給出連結,你只要按照文章中的代碼自己也可以做出一樣的結果,一個目的就是零基礎也能懂,因為自己就是什麼編程基礎沒有從零學Python和R的,加油。數據分析問題諮詢,代處理請私信。
(站外連結發不了,請關注後私信回復「數據連結」獲取本頭條號所有使用數據)
往期內容:
R文本挖掘:文本聚類分析
R文本挖掘:中文文本聚類
R文本挖掘:中文詞雲生成
R文本挖掘:中文詞雲生成,以2021新年賀詞為例
R文本挖掘:手把手教你做詞雲圖,小白教程
R文本挖掘:詞雲圖怎麼做,worldcloud2初識
,