#はじめに
ニュースでこんなグラフをみたことはありませんか?
文章を形態素解析し、wordcloudで文字の出現頻度を可視化したものです。
形態素解析は文章を単語単位で区切りそれぞれの単語に情報を付与する手法です。
本ページでは最もシンプルにwordcloudで文字の出現頻度を可視化する方法を示します。
#環境設定
###①Mecabのインストール
形態素解析にはMecabを用いました。インストールの仕方が少し複雑でしたが、下記のページが一番シンプル化と思います。
###②wordcloudのインストール
pip install wordcloud などでwordcloudもインストールします。
###③日本語フォントのインストール
wordcloudはデフォルトでは日本語に対応していないので、適当な日本語フォントを読み込ませる必要があります。下記から"ipaexg.ttf"をダウンロードし、pythonファイルと同じ階層に格納しました。
#プログラム
Mecabで形態素解析した後、nodeに格納された結果をwhile文で順に取得しています。
助詞や助動詞なども抽出されてしまうので、「名詞」「動詞」「形容詞」に限定して単語を抽出しています。
下記プログラムを実行すると同じ階層に「wordcloud.png」が保存されます。
Mecabの扱い方は下記ページを参考にしました。
import MeCab
from wordcloud import WordCloud
# 解析したい文章
text = "みかんは好きだけどオレンジを食べたいときもある。だけどみかんは栄養もあるし、みかんは小さいころから食べていたから、オレンジよりもみかんが好きだ。"
#単語の分割
m = MeCab.Tagger ("-Ochasen")
# 形態素解析
node = m.parseToNode(text)
words=[]
word=""
while node:
# node.feature:CSVで表記された素性情報を取得
# print(node.feature)
hinshi = node.feature.split(",")[0]
print(hinshi)
if hinshi in ["名詞","動詞","形容詞"]:
origin = node.feature.split(",")[6]
word = word + " " + origin
node = node.next # 書き忘れると無限ループになるので注意
# wordcloudで可視化
fpath = "./ipaexg.ttf"
wordcloud = WordCloud(background_color="white",font_path=fpath, width=600,height=400,min_font_size=15)
wordcloud.generate(word)
wordcloud.to_file("./wordcloud.png")