はじめに
実務で、自由回答アンケート内の頻出単語をRMeCabで抽出し、可視化する機会があったため、メモ書きとして残しておくことにします。
なお、今回はChatGPTで作成したサンプルデータを使用します。
アウトプット
添付画像のような形で、アンケートに含まれる単語ごとの出現回数を棒グラフで可視化することができました。
また、wordcloud2というライブラリで別の可視化もしてみました。
コード
単語ごとの出現回数をCSVとしてエクスポートするまでのコードは以下の通りです。
なお、RMeCabの実行環境を一から構築するのは少々面倒なため、RをランタイムとしたColaboratryを使用しています。
system("apt-get install -y fonts-noto-cjk")
system('sudo apt-get install -y mecab', intern=TRUE)
system('sudo apt-get install -y libmecab-dev', intern=TRUE)
system('sudo apt-get install -y mecab-ipadic-utf8', intern=TRUE)
install.packages("RMeCab", repos = "http://rmecab.jp/R", type = "source")
install.packages("tidyverse")
library(RMeCab)
library(tidyverse)
df_survey_responses_fix <- RMeCabFreq("{filePath}") %>%
arrange(desc(Freq)) %>%
filter(Info1 == "名詞" & Info1 != "非自立") %>%
select(Term, Freq)
df_survey_responses_fix
write_csv(df_survey_responses_fix, "df_survey_responses_fix")
ポイントは、RMeCabFreq
メソッドです。
本メソッドの引数に、Colabratoryにアップロードしたアンケートデータ(サンプルデータ)のファイルパスを指定すれば、単語ごとの出現回数を集計してくれます。
コードを実行後、以下のデータフレームの内容がCSVとしてエクスポートされます。
可視化
以降は、RStudioで可視化を行います。
棒グラフ
ggplot2で日本語を扱うと文字化けするため、以下の記述が必要です。
theme_gray (base_family = "HiraKakuPro-W3")
install.packages("readr")
install.packages("tidyverse")
install.packages("wordcloud2")
library(readr)
library(tidyverse)
library(wordcloud2)
df_survey_responses_fix <- read.csv("{filePath}") %>%
top_n(10, Freq)
g <- ggplot(df_survey_responses_fix, aes(x = reorder(Term, -Freq), y = Freq)) +
geom_bar(stat = "identity") +
labs(x = "Term", y = "Freq") +
ggtitle("Number of Occurrences per Word") +
theme_gray (base_family = "HiraKakuPro-W3")
plot(g)
ワードクラウド
ワードクラウドの利用は初めてでしたが、シンプルで分かりやすいですね。
install.packages("wordcloud2")
wordcloud2(df_survey_responses_fix, color = "black", backgroundColor = "white")
以上で可視化は完了です。
おわりに
RMecabの中には他にも便利なメソッドがあり、余裕があれば調査してみたいです。
また、Rは可視化の自由度がかなり高いので棒グラフの可視化においても細かな調整ができるのはよいですね。