今回はクリエイティブ力を高めるために
シルエット画像でワードクラウドを
作ってみたいと思います
解説動画はこちら
ワードクラウドについては過去に
こちらの記事でも行っていますので
気になる方は見てみてください
ワードクラウドが面白い
さて
今回はGoogle Colab上で実行できるコードにしていますので
試したい方はうまくコピペして実行してみてください。
この二つが必要です
ワードクラウドのサンプルを通して
やり方を見ていきましょう。
ワードクラウドのサンプル
アリスのサンプルを実行してみたいと思います
マスク画像を入手するには次のコードを実行してください
次にテキストファイルの入手は次のコードを実行してください
これでテキストとマスク画像が
Colabのファイル置き場に配置されたと思います
ここからはワードクラウドを作る
サンプルコードを実行してみましょう
最初はライブラリの読み込みからです
次にファイルの読み込みです
読み込んだマスク画像をみてみましょう。

このような画像ですね
これを使ってワードクラウドにしていきます
ここからはワードクラウドの設定を行うコードです
除外ワードやマスク画像を引数で指定します
ワードクラウドの作成は次のコードで行う事ができます

不思議の国のアリスの画像に沿うように
単語が配置されます。
なかなか芸術的ですよね
次は日本語で行ってみましょう。
日本語で行うには少しコツが必要です
今回は日本語の文章として
青空文庫の「我輩は猫である」を
引用してみたいと思います
吾輩は猫であるを入手
文章ファイルが手に入ると思います
次にこの文章を分かち書きしないと
日本語のワードクラウドに出来ないので
分かち書き用のライブラリである
「janome」をインストールします
Janomeのインストール
GoogleColabは日本語に対応していないので
日本語で表示させるには日本語フォントは必要です
次のコードを実行してインストールしましょう
日本語フォントのインストール
「ランタイムを再起動」を 行ってから
以下を実行してみましょう
日本語でのワードクラウド作成
分かち書きをするコードです
これで分かち書きされた文章データになりました。
ワードクラウドを作ってみましょう。
引数には日本語フォントのパスの指定が追加になっています。

せっかくなので
サンプル画像ではなく猫の画像で試してみましょう。
何かしらのグレースケールの猫画像をご用意ください
それをColabのファイル置き場に置いて実行すると

こんな感じで猫の形にワードクラウドが作られます
なかなか面白いですよね!!!
こんな手順になります
画像をうまく活用すると
すごく芸術的な表現になるんじゃないかなーと
思ってみたり
気になる方は試してみてください
それでは
シルエット画像でワードクラウドを
作ってみたいと思います
解説動画はこちら
ワードクラウドについては過去に
こちらの記事でも行っていますので
気になる方は見てみてください
ワードクラウドが面白い
さて
今回はGoogle Colab上で実行できるコードにしていますので
試したい方はうまくコピペして実行してみてください。
最初に用意するものとして
・ワードクラウド用のテキスト
(単語 単語 ・・・ のように単語と単語の間を
スペースで分けた文章ファイル)
スペースで分けた文章ファイル)
・マスクに使用する画像
(グレースケール,アルファなしPNG)
この二つが必要です
ワードクラウドのサンプルを通して
やり方を見ていきましょう。
ワードクラウドのサンプル
アリスのサンプルを実行してみたいと思います
マスク画像を入手するには次のコードを実行してください
!wget https://raw.githubusercontent.com/amueller/word_cloud/master/examples/alice_mask.png
次にテキストファイルの入手は次のコードを実行してください
# アリスのテキストを入手
import requests
from bs4 import BeautifulSoup
url = 'https://github.com/amueller/word_cloud/blob/master/examples/alice.txt'
res = requests.get(url)
soup = BeautifulSoup(res.content,'lxml')
texts = soup.find('table').text
file_name = 'alice.txt'
with open(file_name,'w') as file:
file.write(texts)
これでテキストとマスク画像が
Colabのファイル置き場に配置されたと思います
ここからはワードクラウドを作る
サンプルコードを実行してみましょう
最初はライブラリの読み込みからです
# ライブラリの読み込み from os import path from PIL import Image import numpy as np import matplotlib.pyplot as plt import os from wordcloud import WordCloud, STOPWORDS
次にファイルの読み込みです
# テキストとマスク画像の読み込み
text = open('alice.txt').read()
mask = np.array(Image.open("alice_mask.png"))
読み込んだマスク画像をみてみましょう。
# マスク画像の表示
plt.imshow(mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()

このような画像ですね
これを使ってワードクラウドにしていきます
ここからはワードクラウドの設定を行うコードです
# 不要ワードの設定
stopwords = set(STOPWORDS)
stopwords.add("said")
# ワードクラウドの読み込み
wc = WordCloud(background_color="white", max_words=2000, mask=mask,
stopwords=stopwords, contour_width=3, contour_color='steelblue')除外ワードやマスク画像を引数で指定します
ワードクラウドの作成は次のコードで行う事ができます
# テキストをワードクラウド化
wc.generate(text)
# ファイル保存
wc.to_file("alice.png")これでワードクラウドが出来たので見てみましょう# show
plt.figure(figsize=(10,5))
plt.subplot(1,2,1)
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.subplot(1,2,2)
plt.imshow(mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()

不思議の国のアリスの画像に沿うように
単語が配置されます。
なかなか芸術的ですよね
次は日本語で行ってみましょう。
日本語で行うには少しコツが必要です
日本語に対応する場合は
・日本語のフォントのインストール
・Janomeライブラリのインストール
こちらが必要になります。今回は日本語の文章として
青空文庫の「我輩は猫である」を
引用してみたいと思います
吾輩は猫であるを入手
# 吾輩は猫であるを入手
import requests
from bs4 import BeautifulSoup
url = 'https://www.aozora.gr.jp/cards/000148/files/789_14547.html'
res = requests.get(url)
soup = BeautifulSoup(res.content,'lxml')
texts = soup.find('div',class_='main_text').text
file_name = 'wagahaihaneko.txt'
with open(file_name,'w') as file:
file.write(texts)このコードを実行してもらうと文章ファイルが手に入ると思います
次にこの文章を分かち書きしないと
日本語のワードクラウドに出来ないので
分かち書き用のライブラリである
「janome」をインストールします
Janomeのインストール
pip install janome
GoogleColabは日本語に対応していないので
日本語で表示させるには日本語フォントは必要です
次のコードを実行してインストールしましょう
日本語フォントのインストール
# 「IPA」フォントをインストール !apt-get -y install fonts-ipafont-gothic # matplotlibのキャッシュをクリア !rm /root/.cache/matplotlib/fontlist-v300.json日本語がうまく出ない場合はここで
「ランタイムを再起動」を 行ってから
以下を実行してみましょう
日本語でのワードクラウド作成
# ライブラリの読み込み from os import path from PIL import Image import numpy as np import matplotlib.pyplot as plt import os from wordcloud import WordCloud, STOPWORDS from janome.tokenizer import Tokenizer
分かち書きをするコードです
# Janomeの呼び出し
t = Tokenizer()
s = open('wagahaihaneko.txt').read()
# 文章を分かち書きして名詞だけ抜き出す
wakati_text = [token.surface for token in t.tokenize(s) if token.part_of_speech.startswith('名詞')]
# 名詞をひとまとめにする
wakati = " ".join(map(str, wakati_text))
# マスク画像の読み込み
mask = np.array(Image.open("alice_mask.png"))これで分かち書きされた文章データになりました。
ワードクラウドを作ってみましょう。
引数には日本語フォントのパスの指定が追加になっています。
# 日本語フォントの指定
font_path = '/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf'
# ワードクラウドの読み込み
wc = WordCloud(background_color="white", max_words=2000, mask=mask,
contour_width=3, contour_color='steelblue', font_path=font_path)
# テキストをワードクラウド化
wc.generate(wakati)
# ファイル保存
wc.to_file("waganeko.png")
# show
plt.figure(figsize=(10,5))
plt.subplot(1,2,1)
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.subplot(1,2,2)
plt.imshow(mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()

せっかくなので
サンプル画像ではなく猫の画像で試してみましょう。
何かしらのグレースケールの猫画像をご用意ください
それをColabのファイル置き場に置いて実行すると
# マスク画像の読み込み
mask = np.array(Image.open("neko.png"))
# 日本語フォントの指定
font_path = '/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf'
# ワードクラウドの読み込み
wc = WordCloud(background_color="white", max_words=200, mask=mask,
contour_width=3, contour_color='steelblue', font_path=font_path)
# テキストをワードクラウド化
wc.generate(wakati)
# ファイル保存
wc.to_file("neko_result.png")
# show
plt.figure(figsize=(10,5))
plt.subplot(1,2,1)
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.subplot(1,2,2)
plt.imshow(mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()

こんな感じで猫の形にワードクラウドが作られます
なかなか面白いですよね!!!
まとめですが
ワードクラウドの作り方は
ワードクラウドの作り方は
1.ワードクラウド用のテキストを用意する
2.マスク画像を用意する
3.日本語で行う場合は日本語フォントをインストールする
4.コードを実行する
こんな手順になります
画像をうまく活用すると
すごく芸術的な表現になるんじゃないかなーと
思ってみたり
気になる方は試してみてください
それでは

コメントする