![見出し画像](https://assets.st-note.com/production/uploads/images/26399492/rectangle_large_type_2_dea0eae21fe66ae25f571052fc396ff8.png?width=1200)
Word Cloudで読む「ぼっちゃん」
仕事で従業員満足度調査みたいなアンケートを取って、コメントを1件1件読んでいたのが、最近勉強したPythonでも使ってちょっと前によく見た文字がいっぱい大きさバラバラで敷き詰められているワードアート的なもの(Word Cloudといいます)を作って見ようって事でやってみた。流石に従業員アンケートの文字列を公開する事は出来ないのでサンプルとして使ったテキストは青空文庫の「ぼっちゃん」。
まずは外部ライブラリとしてグラフを描くmatplotlibとWord Couldを描いてくれるwordcloudをインストール。Windowsなら以下で一発。
py -m pip install wordcloud
サンプルコードは以下の通り。sample.txtに書いてある日本語テキストを読み込み、textに放り込んで、WordCloudに食わせるだけ。fpathで描画に使うフォントも指定してあげないと日本語は化けるみたい。これはググった時に出てきたGoogleの無料フォントの"Noto Sans"を使ってみた。
stop_wordsで描画に使って欲しくない単語を除外して微調整。サクッと添付の様な画像が得られる。もっと「赤シャツ」とか「マドンナ」とか大きく出てくるとそれっぽいんだけどな。WordCloudは形態素解析やってくれてるんだろうか。あんまり調べてないから分かんないけど、それなりにはやってるっぽいけど文章の区切りは完全に品詞毎ではない。あと頻出頻度も計算しているのかよくわからない。ここら辺はさらに調査が必要だけど、まぁこんなもんでしょ。
Pythonすごい。めちゃ楽。楽しい。
import matplotlib.pyplot as plt
from wordcloud import WordCloud
f = open('sample.txt',encoding='utf-8')
text = f.read()
f.close()
fpath = "NotoSansCJKjp-Black.otf"
stop_words = [ u'てる', u'いる', u'なる', u'れる', u'する', u'ある', u'こと', u'これ', u'さん', u'して', \
u'また', u'そのため', u'しかし', u'もし', u'いいえ', u'うん', u'おれは', u'へぇ', u'と云った',\
u'すると', u'へえ', u'そんなら', u'いえ', u'おい', u'それじゃ', u'あなた', u'おい', u'と云うと', u'と云って',\
u'どうして', u'それから', u'こんな', u'いきなり', u'やがて', u'と云ったら', u'どうせ', \
u'くれる', u'やる', u'くださる', u'そう', u'せる', u'した', u'思う', \
u'それ', u'ここ', u'ちゃん', u'くん', u'', u'て',u'に',u'を',u'は',u'の', u'が', u'と', u'た', u'し', u'で', \
u'ない', u'も', u'な', u'い', u'か', u'ので', u'よう', u'']
wordcloud = WordCloud(background_color="white",font_path=fpath, width=900, height=500, \
stopwords=set(stop_words)).generate(text)
plt.figure(figsize=(15,12))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()