PythonでWord Cloudを作ってみた
PythonでWord Cloudを作ってみました。
目次
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()
公開日
広告