2017年8月4日金曜日

Watson AnalyticsとMeCabで「老人と海」を軽く可視化してみた。

趣味とお仕事のお勉強を兼ねて、形態素解析エンジンの「MeCab」を触っているのですが、「集計結果の可視化にWatsonAnalytics使えば楽かも?」と思って試したらその通りだったので軽くご紹介します。

最終的には、こんな可視化をします。


実施環境については、以下の通りです。
・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Sierra ver10.12.3
・RStudio ver 1.0.136
・分析データ:「青空文庫」よりヘミングウェイの「老人と海」の全文を取得

※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。

まずは、MeCabで形態素解析。


まずは、形態素解析エンジンである「MeCab」を使って、頻度表を出力します。
環境構築がお済みではない方は下記をご参照ください。

RおよびRStudioのインストール方法(Mac/Windows)
http://qiita.com/daifuku_mochi2/items/ad0b398e6affd0688c97

RとLinuxと...
http://rmecab.jp/wiki/index.php?RMeCab



「形態素解析って難しそう・・・」と感じるかもしれませんが、以下のソースコードをRStudioコンソールにコピペするだけで出来ちゃいますのでご安心を。


# 読み込みファイルがあるディレクトリを指定します
# コード入力よりもRStudioメニューの「Session→Set Working Directory」の方が楽です。
setwd("~/blog/170722_roujin_MeCab/roujin")

# RMeCabパッケージを呼び出しておきます
library(RMeCab)

# 形態素解析を行い、タームと品詞別の頻度表を得ます。たったこれだけ!
roujin_count <- RMeCabFreq("roujintoumi.txt")

# RMeCabFreqで集計した結果を確認します。
View(roujin_count)


RStudio上に下記のようなビューワー形式で表示されます。
左から「Term(形態素)」「品詞分類1」「品詞分類2」「頻度数」となります。


一応、データ構造も確認してみますが、RStudio上でこのデータを可視化するには、ggplot2などを使ってゴニョゴニョするわけですが・・・うーん、ちょっと面倒臭いので楽したいですね。

今回は他のツールで可視化するために、一旦、RStudioから「roujin_count」データを出力します。

# str関数でデータ構造を確認します。
str(roujin_count)
'data.frame':    3214 obs. of  4 variables:
 $ Term : chr  "あの" "いかん" "いかんせん" "いくら" ...
 $ Info1: chr  "フィラー" "副詞" "副詞" "副詞" ...
 $ Info2: chr  "*" "一般" "一般" "一般" ...
 $ Freq : int  1 2 1 1 1 1 2 4 6 1 ...

# write.csv関数を使って集計データをCSV形式で出力します。
# 「quote=FALSE」は、データに引用符の「"」を付けないオプションです。
# 「row.names=FALSE」は、行番号を付けないオプションです。
# 「fileEncoding="CP932" 」は、「Shift-JIS」で出力するオプションとなります。

 write.csv(roujin_count,"roujin_count.csv",quote=FALSE,row.names=FALSE,fileEncoding = "CP932")



可視化は「Watson Analytics」にお任せ。


 ここからは、IBMが提供するクラウド上でビックデータ分析が可能な「Watson Analytics」を用います。

 なお、この時点では何となくはあるのですが、具体的に「こんな可視化をしよう」といったイメージ無しで作業を進めています。 事前にしっかりとしたアウトプットイメージを持ちながら作業を進めることは重要ですが、「とりあえずデータの概観を見たい」といった局面もあると思います。「Watson Analytics」には、データの特性を自動的に解析し、「もしかして、こんな風に見たいと思ってない?」といったオプションを先に提示してくれる機能が実装されています。

以下にその機能の一部と操作手順をご紹介します。
「Watson Analytics」の利用登録がお済みではない方は、下記URLからご登録ください(無料です)

IBM Watson Analytics
https://www.ibm.com/watson-analytics


1.まずは集計データのアップロード
「Watson Analytics」にログインしましたら、画面中央の「Add」ボタンから「Or add your data」→「Drop file or browse」を選択してください。


macOSだとFinder、Windowsだとexplorerが立ち上がりますので、読み込ませたい集計ファイル(この場合、「roujin_count」)を選択してください。


たったこれだけで「Watson Analytics」上に集計ファイルがアップロードされます。


2.可視化の実施
アップロードされた「DATA SET CSV」パネルをクリックすると、「Watson Analytics」が下記のようなオプションを自動提示します。

とりあえず、品詞分類1レベルで大まかなボリューム感を見たいので、一番右を選択します。


品詞別のボリューム感がわかるグラフが瞬時に表示されました。
同じ作家の異なる作品をこのグラフで出力して円の大きさを比較しても面白そうですね。


他の形式でも確認して見たいので、画面右側の「>」マークを押してください。
今後は「Watson Analytics」からオススメされた一番左のグラフを選択してみましょう。


先ほどと同じ「品詞分類1」のグラフが表示されました。X軸は「品詞分類1名称」、Y軸は「品詞分類1別の頻度」となります。
降順でソートしたいので、X軸ラベル「info」を右クリック→「Sort→Descending by value」を選択してください。


簡単に降順ソートができました。
せっかくなので、Term(形態素)別の頻度も見たいので、画面左下の「applied filter」 を選択してください。


「Add a filter」から「Freq」を選ぶと下限値と上限値を入力する欄が表示されるので、バーを動かすか値を直接入力してください。



 「Info1」の 部分をクリックし、「Term」を選択すると下記のように頻度数30以上の全Termが表示されます。


これでは分かりづらいので、もう一度「Add filter」を選択し、「Info1」で「名詞」をフィルターの追加条件として設定すると下記のような名詞頻度数のグラフが表示されます。
※Term数が多すぎたので、頻度の下限値を50に修正しています。


原作を読まれた方は「あー、なるほどね」な結果になったのではないでしょうか。
今回のご紹介は以上です。

このように「Watson Analytics」を用いると、通常の集計ファイルで必要な各変数の形式設定などせずに直ぐに可視化作業に移ることが可能です。
データサイズの大きいファイルでなければ、無料で使えますので、ご興味ありましたら是非お試しください。

Watson関連エントリー


Watson Explorerでディズニーの人気作品をテキストマイニング
http://sapporomkt.blogspot.jp/2017/04/watson-explorer.html

 Watson Explorer Content Analytics(WCA)の紹介動画を紹介したいんです。
http://sapporomkt.blogspot.jp/2017/03/watson-explorer-content-analyticswca.html

分析の常識が変わる?「Watson Analytics」すげー!!
http://sapporomkt.blogspot.jp/2016/01/watson-analytics.html 

「データ・ビジュアライゼーション」でも便利な「Watson Analytics」。
http://sapporomkt.blogspot.jp/2016/01/watson-analytics_13.html

 いま話題のIBM「Bluemix(ワトソンくん)」が「老人と海」をサマったら。
http://sapporomkt.blogspot.jp/2015/11/ibmbluemix.html

「Watson」先生に、AdSenseビンボーの理由を聞いてみた・・・
http://sapporomkt.blogspot.jp/2016/01/watsonadsense.html

0 件のコメント:

コメントを投稿