1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have 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を作ってみた。

1
1
0

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
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?