LoginSignup
1

More than 1 year has passed since last update.

WordCloudで可視化|つぶやきをWordcloudで可視化④

Last updated at Posted at 2021-07-15

私事ではありますが、2020年5月にコーギーという中型犬をお迎えしました。
愛犬のブログを運営してますので、見てもらえると嬉しいです。

corgi_komugi

「コーギー関連のツイートをWordCloudで可視化したい!」と思い立ち、以下の4項目を実施しました。

  1. TwitterAPIでツイートを取得
  2. 正規表現を用いてツイートを整形
  3. SudachiPyで形態素単位に分割
  4. WordCloudで可視化 ← 今回

一連のコードと様々なアウトプットの表示

今回は、「WordCloudで可視化」に関して説明していきます。

対象者

  • WordCloudでコードを書いてみたい人
  • WordCloudで可愛く可視化したい人

ざっくりとした要件定義

Input ... 形態素単位に分割したツイート(単語の間をスペースで分割)
Output ... WordCloudの画像

Inputは、テキスト内容を形態素単位に分割し、以下のようになります。

2021-07-13_08h57_49.png

また、outputはこんな感じです。
文字の出現頻度が多いほど、文字が大きく表示されます。

corgi_komugi

コード

コード全体

import numpy as np
from wordcloud import WordCloud
from PIL import Image
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.family'] = "IPAexGothic"

def show_wordcloud(word_chain, msk, font_path='ipaexg.ttf', mx_words=100):
    #WordCloudの指定
    wc = WordCloud(background_color="white",
                   font_path=font_path, max_words=mx_words, mask=msk,
                    max_font_size=100, contour_width=1, contour_color='steelblue')
    wc.generate(word_chain)

    #wordcloudの描写
    plt.figure(figsize=(12,10))
    plt.imshow(wc, cmap=plt.cm.gray, interpolation="bilinear")
    plt.axis("off")
    plt.show()

msk = np.array(Image.open("Corgi.jpg"))
show_wordcloud(word_chain, msk)

コード解説

まず、WordCloudの細かい条件を指定します。

日本語での表示が文字化けする事象が発生しましたが、コードを実行するフォルダ内に"ipaexg.ttf"のファイルを置くことで解決しました。

なお"ipaexg.ttf"は、日本語を表示可能なIPAフォントのひとつで、こちらからダウンロードできます。

また、マスク画像で白黒のシルエット画像を指定すると、黒い部分にWordCloudの文字が表示されます。

def show_wordcloud(word_chain, msk, font_path='ipaexg.ttf', mx_words=100):
    #WordCloudの指定
    wc = WordCloud(background_color="white",
                   font_path=font_path, max_words=mx_words, mask=msk,
                    max_font_size=100, contour_width=1, contour_color='steelblue')
    wc.generate(word_chain)

    #wordcloudの描写
    plt.figure(figsize=(12,10))
    plt.imshow(wc, cmap=plt.cm.gray, interpolation="bilinear")
    plt.axis("off")
    plt.show()



次に、この関数を実行します。

今回は、マスク画像をコードを実行するフォルダ内に置いてます。

msk = np.array(Image.open("Corgi.jpg"))
show_wordcloud(word_chain, msk)



マスク画像(上)、WOrdCloudの画像(下) のように仕上がります。

corgi_komugi

corgi_komugi

まとめ

これで、ツイートの取得からWordCloudの可視化までの全ての工程を説明しました。

一連のコードと様々な切り口からのアウトプットは、こちらにまとめてますので、興味があればご覧ください!

参考文献

Pythonでwordcloudを作ってみた。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1