Mecab と WordCloud の使い方
Ubuntu 18.10 で Mecab と WordCloud を使うサンプルです。
Mecab のインストールはこちら
ubuntu 18.10 に mecab をインストール
次の記事を参考にしました。
Python3.5でワードクラウドを描く
私が使った Python のバージョン
$ python3 --version
Python 3.6.7
Ubuntu 18.10 にTakao フォントをインストールしました。
sudo apt install 'fonts-takao-*'
プログラム
mecab_wordcloud.py
#! /usr/bin/python3
#
# mecab_wordcloud.py
#
# Apr/16/2019
# ------------------------------------------------------------------
import sys
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import requests
import MeCab as mc
# ------------------------------------------------------------------
def file_to_str_proc(file_in):
str_out = ""
try:
fp_in = open(file_in,encoding='utf-8')
str_out = fp_in.read()
fp_in.close()
except Exception as ee:
sys.stderr.write("*** error *** file_to_str_proc ***\n")
sys.stderr.write(str (ee))
#
return str_out
# ------------------------------------------------------------------
def mecab_analysis(text):
tt = mc.Tagger("-Ochasen -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/")
tt.parse('')
node = tt.parseToNode(text)
output = []
while node:
if node.surface != "": # ヘッダとフッタを除外
word_type = node.feature.split(",")[0]
if word_type in ["形容詞", "動詞","名詞", "副詞"]:
output.append(node.surface)
node = node.next
if node is None:
break
return output
#
# ------------------------------------------------------------------
def get_wordlist_from_file(file_in):
#
text_aa = file_to_str_proc(file_in)
text_bb = text_aa.replace('\n','').replace('\t','')
rvalue = mecab_analysis(text_bb)
#
return rvalue
#
# ------------------------------------------------------------------
def create_wordcloud(text,file_png):
fpath = "/usr/share/fonts/truetype/takao-mincho/TakaoMincho.ttf"
# ストップワードの設定
stop_words = [ 'てる', 'いる', 'なる', 'れる', 'する', 'ある', \
'こと', 'これ', 'さん', 'して', \
'くれる', 'やる', 'くださる', 'そう', 'せる', \
'した', '思う', \
'それ', 'ここ', 'ちゃん', 'くん', '', \
'て','に','を','は','の', 'が', 'と', 'た', 'し', 'で', \
'ない', 'も', 'な', 'い', 'か', 'ので', \
'よう', '', 'れ','さ','なっ']
wordcloud = WordCloud(background_color="black",font_path=fpath, \
width=1024, height=1024, \
stopwords=set(stop_words)).generate(text)
plt.figure(figsize=(6,6))
plt.imshow(wordcloud)
plt.axis("off")
# plt.show()
plt.savefig(file_png)
#
# ------------------------------------------------------------------
sys.stderr.write("*** 開始 ***\n")
file_in = sys.argv[1]
file_png = sys.argv[2]
wordlist = []
try:
wordlist = get_wordlist_from_file(file_in)
except Exception as ee:
sys.stderr.write("*** error *** in get_wordlist_from_file ***\n")
sys.stderr.write(str(ee) + "\n")
#
sys.stderr.write("*** check ccc ***\n")
sys.stderr.write("len(wordlist) = %d \n" % len(wordlist))
try:
create_wordcloud(" ".join(wordlist),file_png)
except Exception as ee:
sys.stderr.write("*** error *** in create_wordcloud ***\n")
sys.stderr.write(str(ee) + "\n")
#
sys.stderr.write("*** 終了 ***\n")
# ------------------------------------------------------------------
実行方法
./mecab_wordcloud.py kozou.txt kozou.png
入力データ
こぞうさんの おきょう (新美南吉)
kozou.txt
やまでらの おしょうさんが びょうきに なりましたので、かわりに こぞうさんが だんかへ おきょうを よみに いきました。
おきょうを わすれないように、こぞうさんは みちみち よんで いきました。
キミョ
ムリョ
ジュノ
ライ
すると なたねばたけの なかに うさぎが いて、
「こぼうず あおぼうず。」
と よびました。
「なんだい。」
「あそんで おいきよ。」
そこで、こぞうさんは うさぎと あそびました。しばらく すると、
「やっ しまった。おきょうを わすれちゃった。」
と こぞうさんが さけびました。
すると うさぎは、
「そんなら おきょうの かわりに、
むこうの ほそみち
ぼたんが さいた
と おうたいよ。」
と おしえました。
こぞうさんは だんかへ いきました。そして、うさぎの おしえて くれたように、ほとけさまの まえで、
むこうの ほそみち
ぼたんが さいた
さいた さいた
ぼたんが さいた
と かわいい こえで うたいました。
きいて いた ひとびとは びっくり して 目を ぱちくり させました。それから くすくす わらいだしました。こんな かわいい おきょうは きいた ことが ありません。
そこで、ごほうじが すむと、だんかの ごしゅじんは すました かおで、
「はい、ごくろうさま。」
と、おまんじゅうを こぞうさんに あげました。
「ごちそうさま。」
と こぞうさんは おまんじゅうを いただいて たもとに いれました。
こぞうさんは、かえりに その おまんじゅうを、さっきの うさぎに わけて やる ことを わすれませんでした
Author And Source
この問題について(Mecab と WordCloud の使い方), 我々は、より多くの情報をここで見つけました https://qiita.com/ekzemplaro/items/57450654cb23fb481f23著者帰属:元の著者の情報は、元の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 .