こんにちは! 【文系・非エンジニア・初心者】マーケターのNockyです!
今回の記事ではPythonのライブラリである「WordCloud」を使って文章の可視化に挑戦していきます! また、「WordCloud」の基本的な使い方についてもご紹介します。
可視化て難しそうなイメージがある。。初心者でもできるの?
可視化=難しそうなイメージがありますよね!
「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つです。
全体コードはこんな感じです!(コピペして動かしてみてください!)
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)
一般的な文章の場合は単語ごとに分ける作業が必要です!
え。。それってめっちゃ面倒臭くない??
確かに、手作業で文章を単語ごとに分けたらそれはそれは面倒臭いです!
安心してください!文章を単語に分ける形態素分析も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
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を学んだ学習方法を紹介している記事を参考にしてみてください!!
人気記事