5分でできるテキスト解析【WordCloud】


Python3.x系を使って超簡単にテキストマイニングをしてみましょう。

今回はPythonを全く使ったことがない人でもわかるように極力LINUXターミナル上で処理を行うほか、入力するコマンド等も表記するのでご安心を!(かくいう私もPythonについては何もわからん……)

テキストマイニングとは?

テキストマイニング(英: text mining)は、文字列を対象としたデータマイニングのことである。 通常の文章からなるデータを単語や文節で区切り、それらの出現の頻度や共出現の相関、出現傾向、時系列などを解析することで有用な情報を取り出す、テキストデータの分析方法である。
出典 Wikipedia

今回はテキストマイニングの技術でワードクラウドを作ってみましょう!
ワードクラウドってのはこんなのです。↓

まずデータを用意する

初めに解析する対象のデータを用意します。
と言ってもなかなか直ぐには準備し難いので今回は10月31日に開催されたオンラインイベント「アイドルマスターシャイニーカラーズMUSIC DAWN DAY1」のツイートデータを使います。

ダウンロードはこちら
テキストデータ #シャニマスMUSICDAWNday2

GitHub Gist #シャニマスMUSICDAWNday2
※ここから右クリックで保存できます

Python3.x系のインストール

sudo apt install python3.7

データの形態素解析を行う

英語と違って日本語はスペースで分節を区切っていないため、最初っからテキストマイニングをするわけには行きません。
そこで今回は巷ではお馴染みのオープンソース形態素解析エンジンMeCabを使います。
※因みにmecabは京都大学情報学研究所が主導のプロジェクトです。

MeCab関係インストール

以下のコマンド順に打ってください。

udo apt install mecab
sudo apt install libmecab-dev
sudo apt install mecab-ipadic
sudo apt install mecab-ipadic-utf8
pip install mecab-python3

検索精度を高める場合はNEologd等の追加の辞書もインストールしたほうがいいですが、今回はめんどくさいのでしません。

実際に形態素解析を行う

多くのサイトではpython上で行ってますがこっちのほうが遥かに簡単だと思います。
先ず解析元のファイルを「test.txt」にします。
次にターミナルで次を入力します。

mecab -Owakati test.txt -o sample.txt

以上!
ファイルを確認するとちゃんと解析されています。

いよいよWordCloudで作業!

wordcloudのインストール

pip install wordcloud

これで終わりです。

ワードクラウドを作成してみる

以下のサンプルコードをコピペ。

sample.py
from wordcloud import WordCloud
with open('sample.txt') as f:
        text = f.read()
stop_words = [ u'https', u'co', u'ござい', u'RT', u'ああ', u'']
wc = WordCloud(background_color="white",width=1600, height=1200, font_path='GenEiLateGoP_v2.ttf', stopwords=set(stop_words))
wc.generate(text)
wc.to_file('wc1.png')

コードの解説

①wordcloudの読み込みとファイルインポート

from wordcloud import WordCloud
with open('sample.txt') as f:
        text = f.read()

②各種設定
stop_words・・・除外するキーワードを設定何回か試してキーワードを設定するのがお薦めです。
background_color・・・背景色
width,height・・・画像の大きさを設定(単位はピクセル)
fonf_path・・・フォントパスの指定(今回は英源ラテミンを使っています)
       ↑【超大事!日本語フォントを読み込まないと豆腐がわきます!!!】

stop_words = [ u'https', u'co', u'ござい', u'RT', u'ああ', u'']
wc = WordCloud(background_color="white",width=1600, height=1200, font_path='GenEiLateGoP_v2.ttf', stopwords=set(stop_words))

③実行処理

wc.generate(text)
wc.to_file('wc1.png')

実際に行ってみた

python3 sample.py

実行結果

すげぇぇ!!!津田さん存在感ヤバ!(笑)

青空文庫とかを題材にしてもいいかもしれません。
ぜひこれをキッカケに感情解析などにも興味を持っていただけたらなと思います。
最後までありがとうございました。

Twitterやってます

※検証環境
Ubuntu 18.04 LTS
Python 3.7