PythonのWordCloudで遊んでみた【題材 : 吾輩は猫である】
きっかけ
イベントに参加した際にの隣の席の方が使っていたのをみて将来的に役に立つ技術が学べそうだと思い、やり方を調べつつWordCloudを使ってみた。ドキュメントは →こちら
WordCloudとは
文章中で出現頻度が高い単語を選んで、その頻度に応じた大きさで図示する手法のことである。参照
やったこと
今回は吾輩は猫であるの小説を元にWordCloudを使い、簡単な画像の作成を行った。(以下参照)
小説については青空文庫のもの(前処理実施)を使用した。以下、コードと備忘録である。
- ライブラリのインストールとマスク画像(猫の画像)の準備
from wordcloud import WordCloud
import MeCab
import re
from PIL import Image
import numpy as np
mask = np.array(Image.open('イメージ画像のパスを入力'))
mask = np.where(mask == 0, 255, 0)
- 形態素解析で単語の抜き出しを行い、小説のデータを整形
with open("./前処理済/wagahaiwa_nekodearu.txt", mode='r', encoding='utf-8') as f:
text_list = [i.strip() for i in f]
text = "".join(text_list)
stop_words = ['する', 'せる', 'られる', 'あの', 'する', 'ある', 'とこ', 'なる', 'ない', 'ああ', 'れる', 'さん', 'やる', 'この', 'どう', 'そう']
font_path = "/Library/Fonts/BIZ-UDGothicR.ttc"
mecab = MeCab.Tagger("-Ochasen")
mecab_str = mecab.parse(text)
mecab_list = mecab_str.replace('\t', 't').split('\n')
lang_meta_list = [re.split('[t-]' ,lang_meta_str) for lang_meta_str in mecab_list]
for lang_meta in lang_meta_list :
if "助詞" in lang_meta :
continue
if "助動詞" in lang_meta :
continue
if "非自立" in lang_meta :
continue
if "サ変・スル" in lang_meta :
continue
if "サ変接続" in lang_meta :
continue
#if "一般" in lang_meta :
#continue
if "数" in lang_meta :
continue
if "記号" in lang_meta :
continue
else :
try:
lang = lang_meta[2]
print(lang_meta)
text_list.append("{}\t".format(lang))
except:
pass
text = ("").join(text_list)
- WordCloudの実装
wordcloud = WordCloud(font_path=font_path, font_step=1, mask=mask, background_color="white", contour_width=1, repeat=1, contour_color='purple', colormap='Praples', stopwords=set(stop_words)).generate(text)
wordcloud.to_file("./吾輩は猫である.png")
吾輩は猫である.png を開くと先ほどの
が出力される
完了
まとめ
- 少ないコードで作成可能。
- 見栄えが面白いのでプレゼンに使える。(※個人的意見)
- wordcloudのパラメータがもう少し欲しい。(別のwordcloudの埋め込み等...)
- Mecabのライブラリを楽しく学べるきっかけになる。
- ドキュメントが多く存在するので扱いやすい。
今回は小説の文書を使用し、猫の画像をマスク画像としてwordcloudを行ったが、童話のストーリーを使用してその童話に出てくるキャラクターをマスク画像として出現頻度が高い単語で埋め尽くすのもおもしろいなと思った。
以上
Author And Source
この問題について(PythonのWordCloudで遊んでみた【題材 : 吾輩は猫である】), 我々は、より多くの情報をここで見つけました https://qiita.com/xxx_boy/items/4e9a06499d8e0073ede9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .