本次的重點繪制詞云,所以并不太重視其他分析方面的論述。本機環境:
window 10
R x64 3.3.0
R包:
tmcn:詞頻統計
Wordcloud2:繪制詞云
Rwordseg:分詞
由于tmcn和Rwordseg包在R3.3.0的版本中沒有可以直接在線下載安裝,所以需要去搜索并且本地安裝
附Rwordseg和tmcn的下載鏈接,注意安裝Rwordseg前需要配置java環境,這里就不具體闡述了,百度即可。
https://r-forge.r-PRoject.org/R/?group_id=1054
https://r-forge.r-project.org/R/?group_id=1571
數據文件:
本次采用自主爬蟲的數據文件csv(豆瓣電影:我不是潘金蓮)的評論語料
數據樣式截圖如下:
關于此爬蟲的代碼與文件,需要可以下載,如失效,也可留言
鏈接:http://pan.baidu.com/s/1kVe9cMj 密碼:84ft
前期導入清理、分詞、詞頻統計
library(Rwordseg)library(tmcn)library(wordcloud2)data <- read.csv("d.csv",encoding="utf-8")data <- unique(data)# 去除重復的數據#去除評論中含有的英文和數字
text <- gsub('[a-zA-Z0-9]','',data$comment)
#插入自定義詞匯
words <- c('范冰冰')
insertWords(strwords=words)
#分詞
segword <- segmentCN(strwords=text)
#創建停止詞庫,并轉為向量格式
mystopwords <- read.table("stop_words.txt",stringsAsFactors=FALSE)
mystopwords <- as.vector(mystopwords[,1])
#自定義刪除停止詞函數
removewords <- function(target_words,stop_words)
{
target_words <- target_words[target_words%in%stop_words==FALSE]
return(target_words)
}
segword2 <- sapply(X=segword,FUN=removewords,mystopwords)
開始繪制詞云
首先介紹下wordcloud2這個函數
wordcloud2(data, size = 1, minSize = 0, gridSize = 0,
fontFamily = NULL, fontWeight = 'normal',
color = 'random-dark', backgroundColor = "white",
minRotation = -pi/4, maxRotation = pi/4, rotateRatio = 0.4,
shape = 'circle', ellipticity = 0.65, widgetsize = NULL)
常用參數:
(1)data:詞云生成數據,包含具體詞語以及頻率;
(2)size:字體大小,默認為1,一般來說該值越小,生成的形狀輪廓越明顯;
(3)fontFamily:字體,如‘微軟雅黑’;
(4)fontWeight:字體粗細,包含‘normal’,‘bold’以及‘600’;;
(5)color:字體顏色,可以選擇‘random-dark’以及‘random-light’,其實就是顏色色系;
(6)backgroundColor:背景顏色,支持R語言中的常用顏色,如‘gray’,‘blcak’,但是還支持不了更加具體的顏色選擇,如‘gray20’;
(7)minRontatin與maxRontatin:字體旋轉角度范圍的最小值以及最大值,選定后,字體會在該范圍內隨機旋轉;
(8)rotationRation:字體旋轉比例,如設定為1,則全部詞語都會發生旋轉;
(9)shape:詞云形狀選擇,默認是‘circle’,即圓形。還可以選擇‘cardioid’(蘋果形或心形),‘star’(星形),‘diamond’(鉆石),‘triangle-forward’(三角形),‘triangle’(三角形),‘pentagon’(五邊形);
#繪制文字云
word_freq <- getWordFreq(string=unlist(segword2))
一切使用默認參數
wordcloud2(word_freq)
提取前1000個,并改變形狀
wordcloud2(word_freq[0:1000,],size=1,shape='star',fontFamily="微軟雅黑")
#繪制出出現頻率最高的前50個詞
wordcloud2(word_freq[0:1000,],size=1,shape='star',fontFamily="微軟雅黑")
#自定義圖片,只要是黑白圖片即可,文字默認會畫在黑色部分上
wordcloud2(word_freq,figPath='horse.png',size=0.5,shape='star',fontFamily="微軟雅黑")
其實到這里很多參數你都可以隨意嘗試,怎么好看怎么調。歡迎大家對此多多提提意見,我也不知道該寫什么好了,謝謝!
新聞熱點
疑難解答