PythonでWord Cloudを試してみた話

qiita.com amueller.github.io

この記事を見てやってみた。

準備

git clone https://github.com/amueller/word_cloud
cd word_cloud
python setup.py install

setup.pyの実行時にC++のビルド環境を求められた。

visualstudio.microsoft.com

ここから、「VisualStudio2019のツール>Build Tools for Visual Studio 2019」をダウンロード。
実行して、「Visual C++ Build Tools」をインストール。

再度setup.py installをしたら無事完了した。

WindowsでのMeCabの導入

qiita.com

実装

import matplotlib.pyplot as plt
from wordcloud import WordCloud
import MeCab as mc
import sys
import re
from collections import Counter

def create_wordcloud(text):
    # 環境に合わせてフォントのパスを指定する。
    fpath = "C:\\Windows\\fonts\\YuGothM.ttc"

    # ストップワードの設定
    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'']

    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()


# ファイル読み込み
infile = 'C:\\Users\\hiyoriaya\\Desktop\\teshita_wordCloud\\talk.csv' # ※txtファイルの格納場所は各自変えてください
with open(infile ,encoding="utf-8") as f:
    data = f.read()
parse = mc.Tagger().parse(data)
lines = parse.split('\n')
items = (re.split('[\t,]', line) for line in lines)
output = []
for item in items:
    if item[0] == 'EOS':
        break
    if item[1] in ["形容詞", "動詞", "名詞", "副詞"]:
        output.append(item[0])

create_wordcloud(" ".join(output))

今回はあらかじめDBからCSVファイルを書き出していたので、 ファイル読み込みでデータを作成しました。
冒頭の記事を参考に、MeCab形態素解析をさせたあと、スペース区切りに分解してWordCloudに渡します。

実行結果

f:id:iine_programming:20190909231607p:plain

対象のデータはLINEbotが集めた会話データをそのまま投げてみた。
ちゃんとそれらしいのができてすごい。
形態素解析MeCabに投げればいいだけなのでお手軽でたのしい。