Rでテキストマイニング ~ワードクラウドの作成~

仕事でテキストマイニングを使う需要がある。さくっとできるようになってほしい・・・そんな期待を感じ、連休を使ってRでテキストマイニングをやってみた。

仕事で共起ネットワーク図の作成ができるTMSも実装されているし、まずはユーザーが興味を持ってくれそうなワードクラウドの作成をしてみた。

最も、ワードクラウドから何か知見を導き出したり、ユーザーに改善アクションの実行を促すことは難しい。しかも今はFormsでワードクラウドは作成してもらえるというのもあって、わざわざRでやらなくてはいけないのかという問題まで抱えている。

ものは試し、まずはここから、ということでRで阿部総理大臣の方針演説をワードクラウドで可視化してみた。なお、こちらのサイトおよびRMeCabの公式サイトを参考にさせていただいた。ものほんエンジニア、しゅごすぎ。

Rで日本語のテキストマイニングをするには、MeCabというアプリ、RMeCabとwordcloud2というパッケージのインストールが必要となる。

# 阿部総理の方針演説(https://www.kantei.go.jp/jp/98_abe/statement2/20190128siseihousin.html)
sample <- RMeCabFreq("speech.txt")
result <- sample %>% as_tibble
# 名詞のみ出力
result <- result %>% filter(Info1=="名詞")
# filter関数で頻度5以下のものをなくし、mutate()はtidyverseで関数を新しく作る関数。
# str_length関数は文字列の長さ(文字数)を算出するもの。strmatchはマスターを参照して文字データを抽出する。
result <- result %>% filter(Freq>=5) %>% mutate(noun=str_match((Term), '[^0-90-9]+'))
result <- result %>% filter(str_length(noun[,1])>=2)
result <- result %>% select(5, 4) %>% arrange(desc(Freq))
result <- result[-c(1,2,3,5),]

# ここからワードクラウドの作成
# shape はtriangle circle(=tree) diamond  star 
result %>% wordcloud2(fontFamily='游ゴシック', color='skyblue', minRotation=0, maxRotation=0, size=0.5, shape='tree')

すると、以下のようなワードクラウドを作成できた。


続いて、さらに練習としてアメリカの大学でトヨタの社長がスピーチ原稿の日本版を作成してみた。
https://www.businessinsider.jp/post-193351

# もう少し練習 トヨタ社長のアメリカでのスピーチをテキストマイニングしてワードクラウドにより可視化

toyota <- RMeCabFreq("speech_toyota.txt")
toyota <- filter(toyota,Info1 %in% c("名詞", "形容詞"))
toyota <- toyota %>% filter(Freq>=2) %>% mutate(noun=str_match((Term), '[^0-90-9]+'))
toyota <- toyota %>% filter(str_length(noun[,1])>=2)

toyota <- subset(toyota,select = c(Term,Freq))
toyota <- toyota %>% arrange(desc(Freq))

toyota <- toyota[-1,]

toyota %>% wordcloud2(fontFamily='游ゴシック', color='skyblue', minRotation=0, maxRotation=0, size = 1, shape='tree')


データ量が少なく、あんまり美しくない図が作成された


まあ目を引くもの成果物なので、余興としてはいいかな。
(本来は共起ネットワーク図が最も有効な気もする。Rでこれを実装するにはテキストマイニングの教科書を買わないといけない。)

この記事が気に入ったらサポートをしてみませんか?