對[文章]1的時候遇到wordle,根據文章中提示的**資訊,顯示為**打不開。順藤摸瓜在網上找資料,仍然找不到關於wordle的online tools,但知道了一本[書]2,其中的乙個章節講解wordle,指向同樣乙個**。我知道是乙個強大的工具,必然能夠做詞云生成,與以」r wordle」和」r 詞云」等關鍵字組合搜尋相關資料,最終我將注意力先集中到英文的詞云方法,對於中文的詞云,要採用特別的處理 (這就想寫la
tex 那樣,只要你寫英文的文章,一切好辦,而一牽涉到中文,所做的配置和努力要複雜的多。),最終找到了對我有用的一篇《r做文字挖掘:詞云分析》。下面**主要基於該文,並加上了我自己的感受,因為原文是乾巴巴的**。
在r中畫詞雲圖,需要package wordcloud,但是要畫出來最終的結果,你需要預先對文件進行必要的分析處理才行,此時需要package tm。再你載入這兩包後,系統會自動載入rcolorbrewer和nlp包。在沒深入探索之前,我們肯定能猜測出tm就text mining包,而nlp就是自然語言處理包,由此可見r語言功能的強大。
r本身沒有預設安裝包wordcloud和tm,採用下面**安裝及載入它們:
> install.packages("wordcloud")
> install.packages("tm")
> library(wordcloud)
> library(tm)
有了上面的鋪墊工作後,採用下面**話詞雲圖:
> data(crude)
> crude
> crude
(x)removewords
(x,stopwords()))
> tdm
(crude)
> m
(tdm)
> v
(rowsums(m),decreasing=true)
> d
(word=names(v),freq=v)
> wordcloud
(d$word,d$freq,random.order=false,colors=brewer.pal(8,"dark2"))
上面需要一定的r語言語法知識。在此我通俗地講解一下。先載入資料集crude,對該資料集去標點,去stopwords等後,將其轉變成乙個矩陣,行為term,列為documents。接下來就好理解了。
tm包本身已經很強大,能夠處理多個文件,當然是對多個文件的所有詞來畫雲圖。當然也能處理乙個文件,此時termdocument矩陣就變成了乙個列向量。現在的問題是你怎麼定義自己的資料集?使用tm包中自帶的資料集僅僅起到了demo的作用。
首先在如下圖所示的路徑中建立2個txt檔案:
上面c:/program files/r/r-3.13/library/tm是r系統tm包的路徑。可知,我使用的r版本是3.1.3。接下來,我們就可以畫圖了。這兩個文件的內容分別為:
text1.txt
text2.txt
畫圖命令如下:
txt
#匯入動態coporus
mydata
mydata
mydata
(x)removewords
(x,stopwords()))
tdm(mydata)
m(tdm)
v(rowsums(m),decreasing=true)
d(word=names(v),freq=v)
wordcloud
(d$word,d$freq,random.order=false,color=brewer.pal(8,"dark2"))
關於system.file的更詳細的用法及動態coporus的概念,請參見相關的幫助文件。
jane cleland-huang. mining domain knowledge. ieee software, 32(3), 2015. ↩
beautiful visualization looking at data through the eyes of experts. edited by julie steele and noah iliinsky. o』reilly, 2010. ↩
詞云分析wordcloud
jieba模組 用來切割中文的模組 pillow python3中用來專門處理影象的模組 import re import jieba from pil import image from wordcloud import wordcloud import numpy as np def gen w...
用python繪製詞云
開發環境 python2.7 需要的庫 wordcloud,jieba,matplotlib 通過jieba分詞將讀取的文字分成字串,通過wordcloud生成詞云,根據詞頻來顯示特色詞云,讓人更加直觀的明白文字的詞頻最大的文字 在寫 之前我們要引入庫 import sys from wordclo...
R做因子分析
factanal x,factors,data null,covmat null,n.obs na,subset,na.actionstart null,scores c none regression bartlett rotation varimax control null,其中x是資料的公式...