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