LoginSignup
14
15

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-02-07

やりたいこと

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

ポイント

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

環境

  • Windows 10
  • python 3.7

Library setup

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

pip install janome
pip install wordcloud

環境設定

import pandas as pd

from janome.tokenizer import Tokenizer

import matplotlib.pyplot as plt
from wordcloud import WordCloud

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

  • こんなデータ(sample.csv)を用意します。csvと言っておきつつ、カンマは使っていませんが、、、
sample.csv
ライオンはパンダかもしれない
いや、そんなことはない 
 :
## データ読み込み
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()

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

## 形態素解析の準備
t = Tokenizer()

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

depict_word_cloud(noun_list)

結果

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

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15