この画像、よく見ますね。テキストマイニングと聞いて、一番よくみる画像としてあげられると思います。
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を使って、AKB48のwikipediaを可視化したいと思います。
と言ってもコードはサンプルのままです(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()
できた図はこんな感じです。 明日は、呟きを品詞に分解したいと思います。
今日のAKBメンバーによる呟きは47件でした。 名詞,作戦,12 名詞,ぜんぶ,12 名詞,テレビ東京,9 名詞,さん,9 名詞,放送,9 名詞,ありがとう,8
今日はテレビ東京の池の水を全部抜くという呟きが多かったようです。