Rでワードクラウド
本日、ワードクラウドに挑戦してみます。
質的データの扱い方がわからな過ぎて、アンケートの結果をワードクラウドでおしゃれに表示させようということです。
ワードクラウドでは、文章の中での出現頻度が高い単語が大きな文字で表示されます。
Rの勉強にもなりそうなので、ちょっと頑張ってみます(^^)
このブログを参考にしました。
[R] テキストマイニング~ワードクラウド~ - Qiita
普通は、これを見るだけで出来るんでしょうが、私はコードを書いたりとかの経験がないので、これだけ見てもよくわからないところがありまして、色んな人に聞いたりしながらちょっとずつ進めました。
1.サンプルデータの作成
まず最初に、サンプルデータを作ります。
私は、お化け屋敷から出てきた人からの感想を入力して、そのデータを使いました。
エクセルに入力していましたが、テキストデータにすると良いようなので、エクセルで入力したものをメモ帳にコピペして、テキストファイルを作りました。
お化け屋敷の感想のデータなので、「obake.text」というファイル名にしました。
2.前処理
前処理には、RMeCabパッケージを使います。
最初に、ここ↓でMeCabをダウンロードしておきます。
MeCab: Yet Another Part-of-Speech and Morphological Analyzer (taku910.github.io
ここまできたらいよいよRstudioでMeCabを使えるようにします。
Rを起動して以下を実行します。
```
install.packages("RMeCab", repos = "http://rmecab.jp/R")
```
これで、RMeCabがインストールされます。
次に、RMeCabを読み込むために以下を実行します。
```
library(RMeCab)
```
使えるようになったか確認するために以下を実行してみます。
```
library(RMeCab)
res <- RMeCabC("すもももももももものうち")
unlist (res)
```
すると以下のような結果が得られます。
名詞 助詞 名詞 助詞 名詞 助詞 名詞
"すもも" "も" "もも" "も" "もも" "の" "うち"
サンプルのtxtデータ「obake.text」をさっそくRMeCabで読み込んでみます。
以下のように入力し、「tm」と「magrittr」のパッケージをインストールします。
```
install.packages("tm")
install.packages("magrittr")
```
そして、この2つのパッケージを読み込みます。
```
library(tm)
library(magrittr)
```
そして、sampleという入れ物に、最初に作ったテキストファイル(obake.text)を読み込む作業をします。
```
sample <- VCorpus(DirSource(dir="local/"),readerControl=list(language="english"))
sample %<>% tm_map(stripWhitespace)#空白の削除
sample %<>% tm_map(removePunctuation)#記号の削除
sample %<>% tm_map(content_transformer(tolower))#大文字小文字統一
sample %<>% tm_map(removeWords,stopwords("english"))#ストップワードの削除
```
1行目でlocalというフォルダの中のテキストファイルをcorpusとして取り込む作業をしています。
2行目は、テキストファイルの中にある空白を削除する作業をしています。
3行目は、テキストファイルの中にある記号を削除します。
4行目は、大文字小文字を統一します。
5行目は、ストップワードを削除します。
今回の私のデータでは、2~5行目は入れなくてもよさそうですが、あっても困らないし、今後使うかもしれないので、メモしておきます。
読み込んだテキストファイルから、不要なもの(空白や記号などなど)を削除したりの作業ができたので、これを読み出します。
```
sample1 %>% as.character() %>% writeLines("obake_r.txt")
```
今度は、obake_r.textというタイトルにしてみます。
これは、R_practiceのファイルに保存されます。
(最初にRstudioを設定する時に、こうなるように設定しています。)
処理したobake_r.txtを改めてRMeCabで解析してみます。
以下の4つのパッケージを読み込みます。
```
library(RMeCab)
library(dplyr)
library(magrittr)
library(stringr)
```
インストールしていない場合は、読み込む前に以下を実行してインストールしておきます。
```
install.packages("RMeCab")
install.packages("dplyr")
install.packages("magrittr")
install.packages("stringr")
```
続いて、「obake_r.text」ファイルを読み込んで、品詞の抽出、数字や不要列の削除、出現頻度の集約、降順での並べ替えを行います。
```
sample <- RMeCabFreq("obake_r.txt")
sample_r1 <- sample %>% filter(Info1 %in% c("名詞", "形容詞")) %>%
filter(Info2 != "数") %>% select(Term, Freq) %>% group_by(Term) %>%
summarise(count = sum(Freq)) %>% ungroup() %>% arrange(desc(count))
```
3.ワードクラウドにしてみる
実は、ここからはめちゃ簡単です。
ここまでに、謎のエラーなどもあり、すごく時間がかかっちゃいましたが。。。
ここまできたらもう安心です!!
これをインストール!
```
>install.packages("devtools")
```
からの、読み込み!
```
library(devtools)
```
そして、wordcloud2をインストールします。
```
devtools::install_github("lchiffon/wordcloud2")
```
それでは、いきます!!
```
wordcloud2(sample_r1, size=1.6, color='random-light', backgroundColor="black")
```
でました。
怖くて楽しいお化け屋敷だったんですね(^^)
色んな形にできます。
> library(wordcloud2)
> wordcloud2(sample_r1, size=1.6, color='random-light', backgroundColor="black", shape ="star")
これ星ですが…あんまり意味ないですね(^_^;)
怖いと楽しいでかすぎ…。
好きな形にかたどることもできます。
library(wordcloud2)
wordcloud2(sample_r1, figPath = "C:/R_practice/139202.jpg", size = 1.5,color = 'random-light', backgroundColor="black")
139202.jpgというのは、適当に見つけたお化けの画像です。
この形にしたかったのですが…。
似てるけどちょっと違います。
どこか間違えてるのかな?
もう少し勉強の余地はありますが、必要最低限のことはできそうです。
今日もよく頑張りました(^^)笑