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

「コーギー関連のツイートをWordCloudで可視化したい!」と思い立ち、以下の4項目を実施しました。
- TwitterAPIでツイートを取得
- 正規表現を用いてツイートを整形
- SudachiPyで形態素単位に分割
- WordCloudで可視化 ← 今回
今回は、「WordCloudで可視化」に関して説明していきます。
対象者
- WordCloudでコードを書いてみたい人
- WordCloudで可愛く可視化したい人
ざっくりとした要件定義
Input ... 形態素単位に分割したツイート(単語の間をスペースで分割)
Output ... WordCloudの画像
Inputは、テキスト内容を形態素単位に分割し、以下のようになります。
また、outputはこんな感じです。
文字の出現頻度が多いほど、文字が大きく表示されます。

コード
コード全体
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の画像(下) のように仕上がります。


まとめ
これで、ツイートの取得からWordCloudの可視化までの全ての工程を説明しました。
一連のコードと様々な切り口からのアウトプットは、こちらにまとめてますので、興味があればご覧ください!