Word Cloudが作りたくなったら。

やりたいこと

  • 極力少ないステップでWord Cloudを作ること。(1度作ってしまえば充分という時にどうぞ)

ポイント

  • 形態素解析を janomeで実行
    • MeCabだとpythonから見えるようにするための設定が必要
  • Word Cloudに利用するフォントの設定

環境

  • Windows 10
  • python 3.7

Library setup

Anacondaを入れていれば、こんなところで大丈夫でしょうかね:

1
2
pip install janome
pip install wordcloud

環境設定

1
2
3
4
5
6
import pandas as pd

from janome.tokenizer import Tokenizer

import matplotlib.pyplot as plt
from wordcloud import WordCloud

データ読み込みから下準備

  • こんなデータ(sample.csv)を用意します。csvと言っておきつつ、カンマは使っていませんが、、、
1
2
3
ライオンはパンダかもしれない
いや、そんなことはない
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
## データ読み込み
df = pd.read_csv('sample.csv', header=None)
## タイトルを付与
df.colums = ['sentences']

## 関数群の定義
def get_nouns(sentence, noun_list):
for token in t.tokenize(sentence):
split_token = token.part_of_speech.split(',')
## 一般名詞を抽出
if split_token[0] == '名詞' and split_token[1] == '一般':
noun_list.append(token.surface)

def depict_word_cloud(noun_list):
## 名詞リストの要素を空白区切りにする(word_cloudの仕様)
noun_space = ' '.join(map(str, noun_list))
## word cloudの設定(フォントの設定)
wc = WordCloud(background_color="white", font_path=r"C:/WINDOWS/Fonts/msgothic.ttc", width=300,height=300)
wc.generate(noun_space)
## 出力画像の大きさの指定
plt.figure(figsize=(5,5))
## 目盛りの削除
plt.tick_params(labelbottom=False,
labelleft=False,
labelright=False,
labeltop=False,
length=0)
## word cloudの表示
plt.imshow(wc)
plt.show()

準備が整ったところで実行

1
2
3
4
5
6
7
8
## 形態素解析の準備
t = Tokenizer()

noun_list = []
for sentence in list(df['sentences']):
get_nouns(sentence, noun_list)

depict_word_cloud(noun_list)

結果

こんなのが出れば成功:
image.png