今回は、R言語のwordcloudパッケージを利用して、アンケートの自由記述回答をwordcloud形式で表現する方法をまとめます。
ワードクラウドとは?
コトバンクによれば「文章中で出現頻度が高い単語を複数選び出し、その頻度に応じた大きさで図示する手法」とのこと。例えばアンケートの自由記述で頻出する単語をこの方法で直感的に把握できます。そして、こちらで重要であると思ってほしい言葉が、回答内に頻出しているかを確認すると、アンケート回答者の理解を推し量れるでしょう。
https://kotobank.jp/word/%E3%83%AF%E3%83%BC%E3%83%89%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89-674221
実例でまとめるワードクラウドの作り方
テキストの準備
今回は、三木市子ども・子育て支援事業計画策定のためのアンケート調査の自由記述を解析します。
http://www2.city.miki.lg.jp/miki.nsf/image/9513DF93DD522FA849257CE50048B44E/$FILE/syo-no17.pdf
あらかじめ、自由記述内容をコピーペーストしたファイルをテキスト形式で保存(answertext.txt)しておきます。
R言語でこのファイルを読み込みます。
textdata <- read.table("~/Desktop/answertext.txt",sep = " ", as.is = TRUE)
3番目の引数as.isが大事です。これはデフォルトでFALSEなのですが、TRUEにすると文字列変数がfactor型で読み込まれることを防止できます。
RMeCabで形態素解析
自由記述されたテキストは単語ごとに分かち書きされていません。そこで、先日紹介したRMeCabで形態素解析を行って、単語ごとの分かち書きをするとともに、各単語の品詞をチェックします。
今回はRでは普通やらないfor文を利用して、各回答について形態素解析を実施します。
# 最終的な単語リストを保存するオブジェクトの確保 wordlist <- "" #テキストが回答ごとに別の要素になっているのでfor文を利用する for (i in 1:nrow(textdata)){ currentlist <- unlist(RMeCabC(textdata[i,"V1"], mypref = 1)) wordlist <- append(wordlist, currentlist) }
RMeCabCは文字列を形態素解析する関数です。引数のmyprefは0にするとテキスト内での表記通り、1にするとその単語の終止形で単語が出力されます。
データの整理
今のデータをワードクラウドにしてしまうと、おそらく助詞や助動詞が大きく表示されます。今回は回答の内容を把握したいので、品詞情報を利用して、名詞または動詞にデータを限定します。
res <- wordlist[names(wordlist) == "名詞" | names(wordlist) == "動詞"]
さらに、「ある」「いる」「する」「こと」のような動詞や名詞を除外します。
res <- res[res != "ある" & res != "いる" & res != "する" & res!= "こと"]
wordcloud関数を使ってワードクラウドを作る
最後にwordcloudパッケージのwordcloud関数を使います。
require(wordcloud) library(wordcloud) #日本語フォントがグラフに表示されるように設定(macの場合) par(family = "Osaka") #wordcloud wordcloud(names(table(res)),freq = table(res), min.freq = 8, color = c("purple", "blue", "green", "orange", "pink", "red"))
wordcloud関数の引数min.freqはワードクラウド内の表示されることばの最低頻度です。colorは頻度の少ないもの方高いものまでを順に表す色を指定します。