Mecab 및 WordCloud 사용법

Ubuntu 18.10에서 Mecab과 WordCloud를 사용하는 샘플입니다.

Mecab 설치는 여기
ubuntu 18.10에 mecab 설치

다음 기사를 참고했습니다.
파이썬 3.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
 やまでらの おしょうさんが びょうきに なりましたので、かわりに こぞうさんが だんかへ おきょうを よみに いきました。
 おきょうを わすれないように、こぞうさんは みちみち よんで いきました。

キミョ
ムリョ
ジュノ
ライ

 すると なたねばたけの なかに うさぎが いて、
「こぼうず あおぼうず。」
と よびました。
「なんだい。」
「あそんで おいきよ。」
 そこで、こぞうさんは うさぎと あそびました。しばらく すると、
「やっ しまった。おきょうを わすれちゃった。」
と こぞうさんが さけびました。
 すると うさぎは、
「そんなら おきょうの かわりに、

むこうの ほそみち
ぼたんが さいた

と おうたいよ。」
と おしえました。
 こぞうさんは だんかへ いきました。そして、うさぎの おしえて くれたように、ほとけさまの まえで、

むこうの ほそみち
ぼたんが さいた
さいた さいた
ぼたんが さいた

と かわいい こえで うたいました。
 きいて いた ひとびとは びっくり して 目を ぱちくり させました。それから くすくす わらいだしました。こんな かわいい おきょうは きいた ことが ありません。
 そこで、ごほうじが すむと、だんかの ごしゅじんは すました かおで、
「はい、ごくろうさま。」
と、おまんじゅうを こぞうさんに あげました。
「ごちそうさま。」
と こぞうさんは おまんじゅうを いただいて たもとに いれました。
 こぞうさんは、かえりに その おまんじゅうを、さっきの うさぎに わけて やる ことを わすれませんでした

실행 결과

좋은 웹페이지 즐겨찾기