PythonでWord Cloudを作ってみた

PythonでWord Cloudを作ってみました。

目次

  1. wordcloudモジュールをインストールする
  2. WrodCloudクラス
  3. WordCloud作成例

wordcloudモジュールをインストールする

Word Cloudというのは、単語が使用頻度に応じた大きさでゴチャゴチャっと表示されるアレです。

Pythonにはwordcloudというライブラリーがあり、pipでインストールできます。

> pip install wordcloud

描画にmatplotlibを使用しますので、matplotlibもインストールしておいてください。

WrodCloudクラス

wordcloudライブラリー にはクラスが3つ定義されていますが、ここではWordCloudクラスを使用します。

使い方としてはWordCloudオブジェクトを作って、メソッドでそのオブジェクトにWord Cloudを作って、そのオブジェクトをmatplotlibで描画するという流れです。

WordCloudオブジェクトを作るときのコンストラクターのパラメータとして、書式などを設定できます。

W = wordcloud.WordCloud([下表参照])

パラメータ表

変数 内容
width int 既定値は400。作成するイメージの幅。
height int 既定値は200。作成するイメージの高さ。
prefer_horizontal float 既定値は0.9。水平に描く単語の割合。
background_color color value 既定値はblack。背景色。
colormap str 既定値はviridis。文字色の指定。matplotlibのカラーマップで指定する。
color_func Callable 既定値はNone。
mode str 既定値はRGB。背景を透過させるかどうかの指定。modeをRGBAにしてbackground_colorをNoneにすると、背景が透過する。
scale float 既定値は1。描画するイメージの拡大率の指定。
font_path str 既定値はOSに依存。フォントの指定。
min_font_size int 既定値は4。一番小さい文字のサイズの指定。
max_font_size int 既定値は作成するイメージの高さ。使用するフォントのサイズの最大値の指定。
font_step int 既定値は1。フォントの大きさの間隔の指定。
relative_scaling float 既定値はauto。単語の使用割合と、描画するフォントサイズの比率の指定。
max_words int 既定値は200。使用する単語の最大数。
stopwords set 既定値はNone。Noneの場合は、既定のSTOPWORDSというsetが適用される。
regexp str 既定値はNone。テキストの分割方法の指定。Noneの場合は r"w[w']+" が適用される。リストからWord Cloudを作る場合は無効。
collocations bool 既定値はTrue。
normalize_plurals bool 既定値はTrue。単語の接尾辞のsを取るかどうか。
repeat bool 既定値はFalse。
include_numbers bool 既定値はFalse。Word Cloudに数字を含めるかどうか。
min_word_length int 既定値は0。単語の最小の長さの指定。
mask ndarray 既定値はNone。四角形以外の形状に描く場合のマスクの指定。
contour_width float 既定値は0。マスクが規定されたときの、マスクの境界線の太さ。
contour_color color value 既定値はblack。マスクが規定されたときの、マスクの境界線の色。

指定できる項目がたくさんありますね。

WordCloud作成例

実際にテキストファイルからWord Cloudを描画するには、WordCloudクラスのgenerateメソッドを使用します。

W = wordcloud.WordCloud().generate(text)
変数 内容
text str Word Cloudの元になる文章。
W wordcloud wordcloudオブジェクト。

このメソッドを実行するときのコンストラクターのパラメーターに、上述のパラメーターを指定します。

試しにWord Cloudを作ってみましょう。GitHubにアップされているwordcloudライブラリーのreadme.mdをWord Cloudにしてみます。

from wordcloud import WordCloud
from matplotlib import pyplot as plt

with open('readme.md', mode='rt', encoding='utf-8') as fo:
    cloud_text = fo.read()

word_cloud = WordCloud().generate(cloud_text)

plt.imshow(word_cloud)
plt.axis('off')
plt.show()
最初のワードクラウド

では、ちょっと色を変えてみましょう。

from wordcloud import WordCloud
from matplotlib import pyplot as plt

with open('readme.md', mode='rt', encoding='utf-8') as fo:
    cloud_text = fo.read()

word_cloud = WordCloud(background_color='white', colormap='bone').generate(cloud_text)

plt.imshow(word_cloud)
plt.axis('off')
plt.show()
色違いのワードクラウド

広告

Pythonでワードクラウドカテゴリの投稿