【初心者向け】Pythonで文章を可視化させる方法【WordCloud】

Python

こんにちは! 【文系・非エンジニア・初心者】マーケターのNockyです!

今回の記事ではPythonのライブラリである「WordCloud」を使って文章の可視化に挑戦していきます! また、「WordCloud」の基本的な使い方についてもご紹介します。

B男さん
B男さん

可視化て難しそうなイメージがある。。初心者でもできるの?

可視化=難しそうなイメージがありますよね! 

「WordCloud」というPythonのライブラリを使えば、シンプルなコードで簡単にできます!

本当にPythonはライブラリが豊富で助かります。

ライブラリのインストール

WordCloud」と「Matplotlib 」というライブラリを使うことで文章を可視化することができます!

こんな感じです!

WordCloud」はテキストデータの中で出現頻度が高い単語を選んで、その頻度に応じた大きさで図示することを可能にするライブラリです。

Matplotlib 」はグラフは文字情報を描画するライブラリです。

まずはWordCloud」とMatplotlib 」をインストールしましょう!

下記のコードを入力してターミナルでインストールしましょう。

pip install WordCloud
pip install matplotlib

Google ColaboratoryはWordCloud」をインストールせずに使用できました!
インストールされてない場合は文頭に「!」を入れる下記のコードでインストールしましょう。

!pip install WordCloud
!pip install matplotlib

基本的コード

文章の可視化の手順は3つです。

可視化までの流れ
  • 必要なライブラリをインポートする
  • テキストデータを用意する
  • WordCloudとMatplotlibを実行する

全体コードはこんな感じです!(コピペして動かしてみてください!)

from wordcloud import WordCloud
from matplotlib import pyplot as plt

text = 'apple orange banana grape cherry pineapple watermelon '

wordcloud = WordCloud().generate(text)
plt.imshow(wordcloud)

必要なライブラリをインポートする

インストールしたWordCloud」とMatplotlib 」をPythonで活用できるようにインポートします。

from wordcloud import WordCloud
from matplotlib import pyplot as plt

テキストデータを用意する

今回はWordCloud」を使ってみることが目的なので、ありきたりのテキストデータで行います!


※スクレイピングして取得したブログやTwitterのツイート、口コミ情報などを可視化することが可能です。

text = 'apple orange banana grape cherry pineapple watermelon'

テキストは単語ごとにスペースで区切られている必要があります!

WordCloudとMatplotlibを実行する

wordcloud = WordCloud().generate(text)
plt.imshow(wordcloud)

一般的な文章の場合は単語ごとに分ける作業が必要です!

B男さん
B男さん

え。。それってめっちゃ面倒臭くない??

確かに、手作業で文章を単語ごとに分けたらそれはそれは面倒臭いです!

安心してください!文章を単語に分ける形態素分析もPythonのライブラリで可能です。

形態素分析する際は「Mecab」、「Janome」などを使います。

私は「Janome」を使っているので、「Janome」については今後紹介していきます!!

WordCloudでは発生頻度の多い単語ほど大きく表示されます。
試しに、watermelonを多くして、大きく表示させてみます!

from wordcloud import WordCloud
from matplotlib import pyplot as plt

text = 'apple orange banana grape cherry pineapple watermelon watermelon watermelon watermelon watermelon watermelon'

wordcloud = WordCloud().generate(text)
plt.imshow(wordcloud)

これで完成!でも良いのですが、
実はこのままの設定だとtextが日本語だと文字化けしてしまいます。こんな感じにw

B男さん
B男さん

Twitterのツイート、口コミ情報などを可視化なんてできないじゃん!!

このままではできないですが、ちゃんと設定すれば日本語も問題なくできます!

それでは、細い設定について説明していきます!

WordCloudの詳細設定

日本語に対応する設定だけでなく、デザインを整える設定も行いました。

追加した箇所

・画像を大きく表示させた
・背景を白に変更
・表示させる単語の上限を設定
・最大、最小文字のフォントサイズを設定
・日本語への対応可

完成版のコードは下記です!(コピペして実行してみてください!)

from wordcloud import WordCloud
from matplotlib import pyplot as plt

text = 'りんご オレンジ バナナ ぶどう さくらんぼ パイナップル スイカ スイカ スイカ '

fpath = '/Library/Fonts/Arial Unicode.ttf'  # 日本語フォント指定

wordcloud = WordCloud(
    width=900,           #横幅の設定
    height=600,           #縦幅の設定 
    background_color="white",   #背景のcolor設定
    max_words=5,           #表示文字数の設定
    min_font_size=40,       #最小文字のフォントサイズ設定
    max_font_size=200,       #最大文字のフォントサイズ設定
    collocations = False,     #重複文字を表示させない設定
    font_path=fpath,         #日本語フォント設定
    ).generate(text)
 
plt.figure(figsize=(15,12))
plt.imshow(wordcloud)
plt.axis("off")          #matplotlibの機能 縦軸横軸の数値をoffにする
plt.savefig("text.png")     #matplotlibの機能 図を画像として出力する
plt.show()

出力すると上記のような画像になりました!表示文字の設定を5文字にしたので、「さくらんぼ」と「パイナップルが表示されていません。

「max_words」を使えば頻出語句の上位何語のみ可視化するなど条件をつけることができます。

日本語設定

私はPCがMacなので下記の設定で日本語対応が可能でした。

fpath = '/Library/Fonts/Arial Unicode.ttf'  # 日本語フォント指定

Windowsの場合は下記でできると思います。検証環境がないの実行でできなかったら、ごめんなさい。

fpath = "C:/Windows/Fonts/HGRPP1.TTC" # 日本語フォント指定

終わり

今回の記事では「WordCloud」を使って文章の可視化と「WordCloud」の基本的な使い方についてもご紹介してきました。

想像よりシンプルなコードで可視化ができたのではないでしょうか!?

プログラミングはやっぱり、手を動かして何か成果が出るとモチベーションが上がりますよね!

【文系・非エンジニア・初心者】のPython学習記事にお付き合いいただき、ありがとうございました!!

次回は形態素分析のライブラリを使って一般的な文章を単語ごとに分けて可視化してみたいと思います。

おすすめ記事

Pythonについてもっと学んでみたい!と思った方は私がPythonを学んだ学習方法を紹介している記事を参考にしてみてください!! 

人気記事

タイトルとURLをコピーしました