毎日テキストマイニング

180日間、毎日テキストマイニングをするブログです

2018/6/24【2日目】word_cloudを使って可視化をする

f:id:rimt:20180625011109p:plain
word_cloud
この画像、よく見ますね。テキストマイニングと聞いて、一番よくみる画像としてあげられると思います。

WordCloudというライブラリで簡単に作れる上、いつまでも画像がないのも寂しいので初めのうちに作ってしまいましょう。 Gitのページに行ってみますと、インストールの方法が書いてあります。

https://github.com/amueller/word_cloud

wget https://github.com/amueller/word_cloud/archive/master.zip

と書いてありますが、wgetをいれてないので、普通にzipでダウンロードします。

unzip word_cloud-master.zip
rm word_cloud-master.zip
cd word_cloud-master
python setup.py install

とりあえずインストールしたところで、仕様を調べてみます。 色々なブログを見てみましたが、どうやらスペースで区切られたテキストにしか対応していないとのこと。 とりあえず、今日はGithub上にあるexamples/simple.pyを使って、AKB48wikipediaを可視化したいと思います。

と言ってもコードはサンプルのままです(akb.txtはwikipediaのテキストをコピーしたものです)。

from os import path
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

from wordcloud import WordCloud, STOPWORDS

d = path.dirname(__file__)

# Read the whole text.
text = open(path.join(d, 'akb.txt')).read()

# read the mask image
# taken from
# http://www.stencilry.org/stencils/movies/alice%20in%20wonderland/255fk.jpg
alice_mask = np.array(Image.open(path.join(d, "alice_mask.png")))

stopwords = set(STOPWORDS)
stopwords.add("said")

wc = WordCloud(background_color="white", max_words=2000, mask=alice_mask, stopwords=stopwords)

# generate word cloud
wc.generate(text)

# store to file
wc.to_file(path.join(d, "alice.png"))

# show
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.figure()
plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()

できた図はこんな感じです。

f:id:rimt:20180625011050p:plain
word_cloud_alice
明日は、呟きを品詞に分解したいと思います。

今日のAKBメンバーによる呟きは47件でした。 名詞,作戦,12 名詞,ぜんぶ,12 名詞,テレビ東京,9 名詞,さん,9 名詞,放送,9 名詞,ありがとう,8

今日はテレビ東京の池の水を全部抜くという呟きが多かったようです。