PythonでWordCloud(ワードクラウド)を作成する方法
このチュートリアルでは、テキストファイルとマスク画像を用意し、そこからワードクラウド(Word Cloud)を生成して png 形式の画像として保存するプログラムをPythonで作成します。
この処理を実装するには、以下のPythonライブラリが必要です。
・matplotlib
・wordcloud
・numpy
・tkinter
・PIL
ライブラリのセットアップ
まず、必要なライブラリを次のコマンドでインストールします。
$ sudo pip3 install matplotlib $ sudo pip3 install wordcloud $ sudo apt-get install python3-tk
これらのライブラリをインストールしたら、実際にタスクを実行するPythonコードを書いていきましょう。
アルゴリズム
全体の流れは以下の4ステップです。
Step 1: ファイルからテキストデータを読み込み、「dataset」に格納する。 Step 2: マスク画像からピクセル配列を作成する。 Step 3: データセットをもとにワードクラウドを生成する。背景色・マスク・ストップワードを設定する。 Step 4: 最終的な画像をディスクに保存する。
入力:sampleWords.txt ファイル
今回使用するサンプルテキストは以下の通りです。Pythonについて記述された英文です。
Python is a high-level, interpreted, interactive and object-oriented scripting language. Python is designed to be highly readable. It uses English keywords frequently where as other languages use punctuation, and it has fewer syntactical constructions than other languages.
Python was developed by Guido van Rossum in the late eighties and early nineties at the National Research Institute for Mathematics and Computer Science in the Netherlands.
Python is derived from many other languages, including ABC, Modula-3, C, C++, Algol-68, SmallTalk, and Unix shell and other scripting languages.
Python is copyrighted. Like Perl, Python source code is now available under the GNU General Public License (GPL).
Python is now maintained by a core development team at the institute, although Guido van Rossum still holds a vital role in directing its progress.
もう一つの入力として、マスク画像(cloud.png)を用意します。最終的な結果は右側の画像のようになります。
サンプルコード
以下が実際のコード例です。ファイルを読み込み、マスク画像を適用したワードクラウドを生成して保存します。
import matplotlib.pyplot as pPlot
from wordcloud import WordCloud, STOPWORDS
import numpy as npy
from PIL import Image
dataset = open("sampleWords.txt", "r").read()
def create_word_cloud(string):
maskArray = npy.array(Image.open("cloud.png"))
cloud = WordCloud(background_color = "white", max_words = 200, mask = maskArray, stopwords = set(STOPWORDS))
cloud.generate(string)
cloud.to_file("wordCloud.png")
dataset = dataset.lower()
create_word_cloud(dataset)
コードのポイント
- dataset.lower() でテキストをすべて小文字に変換することで、「Python」と「python」のような大文字・小文字の違いによる重複カウントを防いでいます。
- STOPWORDS を設定することで、「the」「is」「and」など意味を持たない頻出語を自動的に除外できます。日本語のテキストを扱う場合は、独自のストップワードリストを追加するとより良い結果が得られます。
- mask 引数にマスク画像のピクセル配列を渡すことで、雲の形など任意の形状に沿ったワードクラウドを作成できます。
- max_words = 200 により、表示される単語数の上限を制御しています。
出力結果
スクリプトを実行すると、マスク画像の形状に従ったワードクラウドが「wordCloud.png」というファイル名で保存されます。
-
PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法
はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c
-
Pythonで作るWebサイトアラーム!指定時刻に自動でページを開く方法
はじめに この記事では、Pythonを使って「Webサイトアラーム」を作成する方法を解説します。あらかじめURLと時刻を指定しておくと、システムの時刻がその瞬間に達したとき、自動的にブラウザで目的のWebページを開いてくれるシンプルな仕組みです。 課題の概要 WebサイトのURLと時刻を入力として受け取り、システム時刻が指定時刻に達したタイミングで、ブラウザ上に該当するWebページを表示します。 ブックマークには日々利用するさまざまなWebページを保存できますが、「毎日決まった時刻に特定のページを開いて作業したい」という場面は少なくありません。たとえば、朝会の資料ページや業務システムへのログ