
WordCloudが簡単にできるらしい
WordCloudがPythonで簡単にできるらしいのでやってみました.
WordCloudとは最近流行り?の可視化方法で,単語の頻度の高いものが大きく表示される例のやつです.
今回は日本語でwordcloudしてみましょう.
早速,使ってみます.
モジュールのインスコ方法は簡単.pipでインスコできます.
pip install wordcloud
ついでにMeCab(形態素解析器)操作モジュールもインスコ.同じくpipでインスコできます.(MeCab本体をインスコしていない人は使えないので,本体をインスコしましょう.)
pip install mecab
まずは,MeCabで分かち書き(単語のスペース区切り)をしてみましょう.
import MeCab
TEXT = "すもももももももものうち"
tagger = MeCab.Tagger("-Owakati") # MeCab
wakati = tagger.parse(TEXT) # 分かち書き
print(wakati)
次に,wordcloudインスタンスの設定をします.
wc = wordcloud.WordCloud(font_path=FONT_FILE,
background_color="white",
width=WIDTH,
height=HEIGHT,
collocations=False,
stopwords=STOP_WORDS,
max_words=MAX_WORDS,
regexp=r"[\w']+") # WordCloud初期化
wc.generate(parse) # WordCloud作成
wc.to_file("output.png") # 画像ファイル出力
パラメータは色々設定できます.
widthやheightは出力画像のサイズ(px),stopwordsをlist型やset型で指定できます.詳細はリファレンスを参照してください.
こんな感じで日本語のフォントを設定する必要があります.
FONT_FILE = "C:\Windows\Fonts\MSGOTHIC.TTC" # フォントファイル指定
特にフォントのパスを弄ってなかったら,これでMSゴシック体になるはずです.
wordcloudを実行して,画像を出力してみましょう.
wc.generate(wakati) # WordCloud作成
wc.to_file("output.png") # 画像ファイル出力
generateメソッドに分かち書きした文章を入れる.to_fileメソッドに出力画像のファイルパスを入れるとOKです.
実行例
夏目漱石の『吾輩は猫である』の冒頭部分をwordcloudで可視化してみましょう.(サンプルプログラムではneko.txtから読み込むようにしています)
Pythonimport wordcloud
import MeCab
with open("neko.txt", "r", encoding="utf-8") as f:
CONTENTS = f.read().splitlines()
TEXT = "".join([content for content in CONTENTS if not content == ""])
STOP_WORDS = [] # ストップワードを設定(今回は設定しない)
MAX_WORDS = 2000 # 出力個数の上限
WIDTH = 1000 # 出力画像の幅
HEIGHT = 1000 # 出力画像の高さ
FONT_FILE = "C:\Windows\Fonts\MSGOTHIC.TTC" # フォントファイル指定
tagger = MeCab.Tagger("-Owakati") # MeCab
wakati = tagger.parse(TEXT) # 分かち書き
wc = wordcloud.WordCloud(font_path=FONT_FILE,
background_color="white",
width=WIDTH,
height=HEIGHT,
collocations=False,
stopwords=STOP_WORDS,
max_words=MAX_WORDS,
regexp=r"[\w']+") # WordCloud初期化
wc.generate(wakati) # WordCloud作成
wc.to_file("output.png") # 画像ファイル出力
出力結果はこんな感じです.
『て』や『が』等の助詞が多く出力されてしまっていることがわかります.
いちいちストップワードに指定するのは面倒なので,形態素解析時点で不要な品詞を外す必要があります.まだまだ改良の余地がありますね.
気が向いたら,改良するかも!
参考
めちゃくちゃ参考にさせていただきました!!