背景

ただなんとなくやってみようと…。

環境

  • Windows
  • Python 2.7

使用ライブラリ

  • janome:他にもmecabなどがありますが、今回はこちら
  • matplotlib:描画用
  • wordcloud:描画用

これらをpip installでインストールします。

janome確認

このライブラリがどのように動くかを確認します。

from janome.tokenizer import Tokenizer

t = Tokenizer()
tokens = t.tokenize(u'私はPythonが好きです。')
for token in tokens:
    print str(token).decode('utf-8')

※Windowsのコマンドプロンプトだと文字コードに注意してください。

実行結果は下記です。

私      名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
Python  名詞,固有名詞,組織,*,*,*,Python,*,*
が      助詞,格助詞,一般,*,*,*,が,ガ,ガ
好き    名詞,形容動詞語幹,*,*,*,*,好き,スキ,スキ
です    助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。      記号,句点,*,*,*,*,。,。,。

データ

実際テキストマイニングするデータですが、
当初Twitterのデータを取得する方法も考えたが途中頓挫したので、国会の議事録を取得
http://www.shugiin.go.jp/internet/itdb_kaigiroku.nsf/html/kaigiroku/kaigi_l.htm

実装

まず上のデータをちょっと加工してテキストで保存。

from janome.tokenizer import Tokenizer

# データ読み込み
fin = open('test_data.txt')
txt = fin.read().replace('\n', '')
fin.close()

# テキストマイニング実行
t = Tokenizer()
tokens = t.tokenize(txt.decode('utf-8'))
words = {}
for token in tokens:
    data = str(token).decode('utf-8').split()[1].split(',')
    # 名詞のみ取得
    if data[0] == u'名詞':
        key = data[6]
        if key not in words:
            words[key] = 1
        else:
            words[key] += 1

ソースが汚いのはおいといて、
これでWindowsで実行すると、[文字:個数]の辞書型が取得できます。

描画

wordcloudを使って描画してみます、一般的な使い方はこちらです。

wordcloud = WordCloud().generate(txt)

テキストのままだとgenerateもしくはgenerate_from_txt、辞書型の場合はgenerate_from_frequenciesになります。
では上のwordsで描画してみます。

失敗

import matplotlib.pyplot as plt
from wordcloud import WordCloud

wordcloud = WordCloud().generate_from_frequencies(words)
plt.figure(figsize=())
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

Figure_1.png

幾何学模様の完成です(笑)

成功

先程失敗した原因はフォントの指定がないためでした。

import matplotlib.pyplot as plt
from wordcloud import WordCloud

# Windows標準フォントを定義
fpath = "C:\\Windows\\Fonts\\msgothic.ttc"
wordcloud = WordCloud().generate_from_frequencies(words)
plt.figure(figsize=())
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

Figure_1-1.png

見事に成功。

※画像が見にくい場合はWordCloudの引数に背景色の設定などがありますので、適宜変更するとよいと思います。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.