日本語のワードクラウドを作るにはフォントのインストールが必要で少し手間がかかったのでメモ。
実行環境
Ubuntu 16.04
Python 3.6.2
ワードクラウドのライブラリ
amuellerさんが公開しているword_cloud ライブラリを使用
READMEに書いてあるとおりpip でインストール。
$ pip install wordcloud
日本語フォントのインストール
デフォルトのフォントでは日本語の表示ができないのでフォントを入れる。
こちらの記事 を参考にさせていただきました。
フォントの入手
特にこだわりはないので
Noto Sans CJK JP をリンク先のサイトで探してダウンロードしてくる。
フォントのインストール
公式サイトの通りインストールする。
シングルユーザとシステムワイドにインストールする方法があるけど、とりあえずシングルユーザにインストールする。
$ unzip NotoSansCJKjp-hinted.zip
$ mkdir -p ~/.fonts
$ cp *otf ~/.fonts
$ fc-cache -f -v # optional
ワードクラウドを作る
入力データの準備
スペース区切りのテキストを与える方法や単語と出現頻度の辞書から作る方法などがある。
今回はMeCabを使って日本語をスペース区切りのテキストにする。
from MeCab import Tagger
t = Tagger()
text = """
任意のテキストを入れる。
"""
splitted = " ".join([x.split("\t")[0] for x in t.parse(text).splitlines()[:-1]])
WordCloudの作成
引数 font_path
に先程インストールしたフォントを指定する。
また、デフォルトだと2文字以上の単語しか抽出してこないため、regexp
を少し変えて1文字以上の語をすべて抽出するようにした。ただし、長い文になると助詞が大量に拾えてしまうため、品詞のフィルタリングと合わせて使った方が良い。
import matplotlib.pyplot as plt
from wordcloud import WordCloud
wc = WordCloud(font_path="/home/TkrUdagawa/.fonts/NotoSansCJKjp-Regular.otf", regexp="[\w']+")
wc.generate(splitted)
plt.imshow(wc)
plt.show()
以上でワードクラウドが作れた。
ちなみにYahooニュースのトップにあったノーベル賞受賞の記事から作ったワードクラウドが下記(助詞, 助動詞は除いた)。
splitted = " ".join([x.split("\t")[0] for x in t.parse(text).splitlines()[:-1] if x.split("\t")[1].split(",")[0] not in ["助詞", "助動詞"]])
京都大の教授ががん治療に関するなにかをしたっぽいことがわかる。