R筋

プログラミングと時々育児

【R】保育園スレを形態素解析してトピックを眺める

4月からの保育園が決まったものの、色々と準備が必要になるようで妻とネットを漁っている。
有名な掲示板にも、保育園準備にあたり先輩ママからの助言をきけるスレがあるようだ。

【センパイ】保育園入園&復職準備スレ 11【教えて】 [無断転載禁止]©2ch.net

保育園に持っていかないといけないものや、復職後こういう場合はどうするといった様々なケースにとても丁寧なアドバイスがかかれていて、こういうのがあると友達がいなくても生きていける現代社会は本当にありがたいものだなぁとしみじみ感じる。
とはいえ1000件の書き込みを全部読むのは大変だ。
そんなときは、形態素解析とwordcloudでトピックをざっと視覚化してみよう。

まず、形態素解析エンジンMecabをインストールする。
MeCab: Yet Another Part-of-Speech and Morphological Analyzer
その後Rで、XMLパッケージでスクレイピングし、
RMecabパッケージで形態素解析
wordcloudパッケージで視覚化という手順だ。

#パッケージロード
library(XML)
library(RMeCab)
library(wordcloud)
library(dplyr)

#掲示板を取得
html <- read_html("https://mevius.5ch.net/test/read.cgi/baby/1493387671/")

#掲示板のソースを見ると、書き込み内容はspanタグのclass='escaped'と
#なっているため、対象をxpathで抽出
node <- html_nodes(html,xpath="//span[@class = 'escaped']")

#htmlをテキストに変換
comment <- html_text(node)

#一旦ファイルに出力
write.table(comment,"comment.txt")

#形態素解析を実行
mecab <- docDF("comment.txt", type = 1)

f:id:anpontan382:20180212204551p:plain
1列目が単語、2・3列目が品詞、4列目が頻度となる。
意味不明なもの、記号や数字なども含めて6,700行あった。

#一般名詞、固有名詞だけを抽出
words <- mecab %>% filter(POS1 %in% c("名詞"), POS2 %in% c("一般","固有名詞"))

#wordcloudを描画
wordcloud(words$TERM,wores$comment.txt, min.freq= 7, scale=c(1,1),colors = brewer.pal(8,"Dark2"))

f:id:anpontan382:20180212210348p:plain
7回以上出現した単語をプロットしたが結果が多すぎて一部は表示されていない。その為、wordcloudを実行するたびに結果は変わる。

今回の結果からは、「Tシャツ」「ウインドブレーカー」「ストロー」「靴」「雨傘」「コップ」などについてはみんなが気にしてるものなので、考えとかないといけないようだ。