Word Cloudでニュースのキーワードを可視化
業務でWord Cloudを使う機会があったため、使い方を確認しました。
Word Cloudとは
Word Cloudとは文章中で出現頻度が高い単語を複数選び出し、その頻度に応じた大きさでビジュアライゼーションしたものです、こんな感じで。
Pythonだとライブラリがあって、こちら使うとさくっと描画できます。pipでインストール可能です。
pip install wordcloud
ニュース記事で試してみる
今回は適当にYahooニュースで拾ってきたドワンゴN中等部の記事で試します。
WordCloudを使うには単語ベースのインプットにする必要があるため、MeCabという形態素解析ライブラリをつかってわかち書きします。
と同時に、”です”、”ます”などの不用語(ストップワード)をリストにして渡してあげると、WordCloudからそれらの単語を除外してくれます。
コードは以下。
# coding: utf-8 import pandas as pd from wordcloud import WordCloud import MeCab from sklearn.feature_extraction.text import TfidfVectorizer text = "角川ドワンゴ学園は9月13日、2019年4月に「N中等部」を開校すると発表した。 N中等部は、新しい教育コンセプト「プログレッシブスクール」を採用したキャンパス通学型のスクール。 週1回、週3回、週5回の3つの通学コースを設定。学校教育法第1条に定められた中学校ではないため、従来の中学校に在籍しながら通学することとなる。 キャンパスは、新宿代々木付近に開設。初年度となる2019年度の定員は、40人を予定する。" stop_words = [u'する', u'ある',u'なる',u'ながら',u'ない',u'こと',u'ため',u'られ'] # MeCabを使ってわかち書きをする # Initial settings vectorizer = TfidfVectorizer(use_idf=True, token_pattern=u'(?u)\\b\\w+\\b') # Global variables docs = [] # Vectors for Tfidf scores def wakati(target_text): t = MeCab.Tagger("-Owakati") result = t.parse(target_text) return result # WordCloudの描画 wordcloud = WordCloud(background_color="white", font_path="dlfont.otf", width=800,height=600,stopwords=stop_words).generate(wakati(text)) wordcloud.to_file("./wordcloud_sample.png")
その他気をつけることとして、フォントの問題があるかと思います。フォントをWordCloudで指定していますが、こちらがないと日本語の描画はできないかと思います。.otfか.ttf拡張子で日本語フォントファイルをダウンロード、指定してください。 フリーのフォントを探せばすぐに見つかるかと。
実行結果
pngで保存した結果です。
ニュースを端的にあらわしているかどうかは、形態素解析のデキによりそうですね。
参考
Word Cloudで文章の単語出現頻度を可視化する。[Python] - Qiita
Pythonでテキストマイニング ②Word Cloudで可視化 - Qiita
https://headlines.yahoo.co.jp/hl?a=20180913-35125573-cnetj-sci
python-mecab+sklearnを用いて、文章を分かち書きしてTF-IDFでベクトル化する - u++の備忘録