R語言進行詞雲統計分析
阿新 • • 發佈:2018-12-19
R語言進行詞雲統計分析
本文章從爬蟲、詞頻統計、視覺化三個方面講述了R語言的具體應用,歡迎大家共同談論學習
1、使用 rvest 進行資料的爬取
#如果沒有,先安裝rvest包 install.packages("rvest") library(rvest) url <- "http://www.sohu.com/a/123426877_479559" #讀取資料,規定編碼 web <- read_html(url, encoding = "utf-8") position <- web %>% html_node("article.article") %>% html_text()
- %>%管道函式,將左邊的值賦給右邊函式作為第一個引數的值
- web儲存網頁資訊的變數。
- html_nodes()函式獲取網頁裡的相應節點
- html_text()函式獲取標籤內的文字資訊
要獲取網頁中的節點,開啟所要爬取網頁內容——>按F12——>找到內容所對應的網頁節點
2、使用jiebaR進行分詞,統計詞頻
#install.packages("jiebaR") library(jiebaR) #初始化分詞引擎並載入停用詞 #user表示需要組合到一起的單詞 #stop_word刪除不需要出現的詞 engine_s <- worker(user = "E:/R-Test/dictionary.txt", stop_word = "E:/R-Test/stopwords.txt") #分詞處理 seg<-segment(position, engine_s) #統計詞頻 f <- freq(seg) #根據詞頻降序排列(FALSE升序排列) f <- f[order(f[2], decreasing = TRUE),] #顯示前30行的資料 head(f, 30)
1)“dictionary.txt”,是指明需要組合到一起的片語,比如說在預設情況下分詞的結果可能會將“機器學習”處理成“機器”,“學習”,而我們其實想要的是“機器學習”,所以需要載入此字典表進行指定。注意:此檔案的內容是自己指定的,具體內容如下:
機器學習
公眾號
網際網路
大鱷
大資料
2)“stopwords.txt”,是需要過濾掉的片語,比如“它”、“就是”、“作者”等詞對於我們分析沒有實際意義,我們就不需要統計他們,具體內容:
是
就是
在
也
你
他
這個
作者
了
我
的
它
3、使用wordcloud2包進行視覺化
wordcloud2包的安裝就不能像前面的直接使用install.packages("wordcloud2")進行安裝了,因為這樣的安裝的wordcloud2就無法繪製圖片和漢字的詞雲。他需要先安裝“devtools”包,具體方法如下:
#安裝方法1:
install.packages('devtools')
library('devtools')
install_github("lchiffon/wordcloud2")
library(wordcloud2)
#安裝方法2(在RStudio中執行):
if(!require(devtools)) install.packages("devtools")
devtools::install_github('lchiffon/wordcloud2')
然後就使用詞雲進行繪圖了,這裡 shape 的引數有:預設為圓形(circle),cardioid(心形),star(星形),diamond(鑽石形),triangle-forward(三角形),triangle(三角形),這兩個三角形就是傾斜方向不同而已,pentagon(五邊形)。
#為了顯示效果,只提取前150個字
f2 <- f[1:150,]
#形狀設定為一顆五角星
wordcloud2(f2, size = 0.8, shape = "star"
wordcloud2(f2, size =0.745, shape = "cardioid")
wordcloud2(f2, size =0.9, shape = "diamond")
載入一張圖片,讓顯示圖片的樣式
#載入一張圖片
path <- "E:/R-Test/245937.jpg"
#如果圖形不像,調整size的值
wordcloud2(f, size = 0.45, figPath = path)
letterCloud用來顯示指定的字母或者漢字,Word引數用於設定繪製詞雲形狀為“”這個字
letterCloud(f2, word = "LOVE", size = 0.7)
【注意】可能我們已經發現,前面圖中出現的高頻詞彙“機器學習”、“演算法”等隨著我們畫出來的圖丟失了。那是應該我們後邊描繪的圖的邊太細,而“機器學習”的詞頻又特別高,所以就顯示不出來。因此我們在選擇繪圖的時候不能為了美觀而忽略了高頻詞