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()
色違いのワードクラウド

公開日

広告