python3.doc_72
R e i - D r e a m
for Laravel
TOP > Python3 > Python(WordCloud)
Guest
login

最終投稿日:2022年6月18日

Python(WordCloud)
WordCloudをmeCabを利用して作成
【WordCloud】とは
 文章中で出現頻度が高い単語を複数選び出し、その頻度に応じた大きさで図示する手法です。

以下の2つのモジュールを利用します。
    ・Matplotlib
    ・MeCab
○ WordCloudのインストール pipコマンドを叩きます pip install wordcloud ⇒wordcloud==1.5.0
サンプル
import sys
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import requests
import MeCab as mc

print("*** 開始 ***\n")

sentence = '欅坂46が最近好きかもしれない。本当だよ~!!!'
save_img = 'can.png'
wordlist = []

anz = mc.Tagger('-Ochasen')
# メソッドチェーンにしない事
anz.parse('')
node = anz.parseToNode(sentence)

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

stop_words = ['']
fpath = ('C:\Windows\WinSxS\amd64_microsoft-windows-font-truetype-msgothic' 
		+ '_31bf3856ad364e35_10.0.18362.113_none_2ea2fb821038eb2b\msgothic.ttc')
wordcloud = WordCloud(background_color="black",font_path=fpath,
	 	width=600, height=400,stopwords=set(stop_words)).generate(" ".join(output))
plt.figure(figsize=(6,6))
# 描画範囲の余白をなくす
plt.subplots_adjust(left=0, right=1, bottom=0, top=1)
plt.imshow(wordcloud)
plt.axis("off")
plt.savefig(save_img)

print("\n*** 終了 ***\n")
            
wordcloud関数の各種引数
● background_color
    背景色
        background_color = 'black' または、background_color = 'white'
● font_path
    フォントパス
        フォントの絶対パスを設定
        font_path='/system/Library/Fonts/ヒラキ?ノ角コ?シック W4.ttc'
● collocations
    同じ単語が2つ表示されるのを防ぐ
        collocations = False
● stopwords
    非表示文字列
        stopwords = ['ほげ','ふ~']
● colormap
    文字色の指定
        参考:https://karupoimou.hatenablog.com/entry/2019/05/17/153207
            inferno          オレンジ、青系
            magma            紫系
            viridis          紫、青系
            Blues            青系
            BuGn             緑系
            Greys            グレー系
            OrRd             赤、オレンジ系
            PuRd             赤、紫系
            YlOrBr           オレンジ系
            spring           黄、オレンジ、紫系
            prism            ごちゃごちゃ系
● width、height
    サイズの指定
        width=600,height=400
● scale
    スケール
        (width * scale, height * scale) が最終的に出力される画像サイズとなる
● font_step
    文字の密集度合い。1以上の float で指定する。大きい値ほどレイアウトは疎になる
● max_words
    描画する単語数の最大値
● mode
    'RGB' または 'RGBA' を指定する
● relative_scaling
    単語の出現数とフォントサイズの関係。[0, 1] の float で指定する
● color_func
    色を返すコールバック関数
● regexp
    入力の文字列を分割する際の区切り文字
● colormap
    カラーマップ
● collocations
    連語を1語ずつ扱うかどうか
● normalize_plurals
    複数形はすべて単数形に直して扱う
● repeat
    同じ単語を複数回描画するかどうか
● prefer_horizontal
    文字を横方向に表示する割合。1に近いほど横方向、0に近いほど縦方向の文字の割合が増える
● mask
    マスク
        [255, 255, 255] でない画素にのみ文字を描画する
        これを指定した場合、width, height の値は無視される
        numpyを使うと便利
        例)
            from PIL import Image
            import numpy as np
            hoge = np.array(Image.open('cat.png'))
            hoge = np.where(mask == 0, 0, 255)
            ※mask = hoge で設定
● contour_width
    マスクの輪郭を描画する際の幅。0の場合、輪郭を描画しない
● contour_color
    輪郭を描画する際の色
            
ログインしてコメントを残そう!!


レンズモード 【新規購入限定用】
きっぷる