R連携でTwitterをセンチメント分析

18:08 Nanae 1 Comments

Nanaeです。

Tableau×Rの連携で、文章の中身を分析するセンチメント分析を行います。データは、Web Data Connectorで抜いてきたTwitterデータを使います。

■やってみた分析
センチメント分析の中でも以下2つをやってみました。(※英語のテキストが対象です)
Emotion分析
テキストを6種類の感情+それ以外、の7つに分類する分析。6種類の感情とは、Anger, disgust, fear, joy, sadness, surprise。
Polarity分析
いわゆるネガポジ分析。テキストを、Positive, neutral, negativeの3つに分類する分析。

■Rで使うパッケージ
これらの分析を行うために必要なRのパッケージは3つあります。
1. tm
テキストマイニング用のパッケージで、テキストをみて、関連性をみつけたり、グルーピングしてまとめたり、分類したりする。
2. rstem
語幹が異なる同じ単語をマッチングさせる。例:swim, swims, swimming
3. sentiment
センチメント分析を行うパッケージで、これを動かすにはtmとrstemが必要。sentimentのパッケージそのものは現在削除されているらしく、install.packages("sentiment")は利用できない。代替手段としてGitHubから落とす方法を利用する。

■R:準備
これらのパッケージをRStudioからRにインストールして読み込ませます。
(Rで直接トライしてもうまくできず。。。RStudioから行いました。日本語化が原因!?)
以下、RStudioから行ってください。

TableauとRを連携させるとき、まずは必ずこれが必要。Rserveを読み込ませます。
library(Rserve); Rserve()

tmとrstemをインストールします。
install.packages("tm")
install.packages("Rstem")

sentimentを使うために、devtoolsというパッケージをインストールしてから、GitHubからsentimentをインストールして読み込ませます。
install.packages("devtools")
library(devtools) 
install_github("aloth/sentiment/sentiment")
library(sentiment)

これでR側の準備は完了。

★テストデータでTRY
■テストデータ
次に、今回使うデータです。最初はわかりやすいように、サンプルとして5レコードのデータを使ってみました。そのあとに同じことをTwitterデータで行います。


各レコードに対して、感情とネガポジを出していきます。

■Tableau:計算フィールドの作成
Tableauに移って、感情判定用の計算フィールド: get_emotionを作成します。計算フィールドの中身はこちら。
SCRIPT_STR('
library(sentiment)
get_emotion(.arg1,algorithm="bayes") '
,ATTR([Status Text]))


ネガポジ用の計算フィールド:get_polarityも作成します。
SCRIPT_STR('
library(sentiment)
get_polarity(.arg1,algorithm="bayes")'
,ATTR([Status Text]))


■Tableau:Vizの作成
各レコード=各テキストに対して、感情とネガポジを判定させます。
列に、元データにある"sentence"と、作成した計算フィールドの"get_emotion"と"get_polarity"を行に入れます。R連携した計算フィールドは表計算となるので、「次を使用して計算」は「セル」を指定しておきます。


判定されました!1行目"He is sad."を見てみると、これは"sad"を含んでおり、感情はsadness、ネガポジはnegativeとなっていて、きちんと判定されているようです!



★Twitterデータで実践!

■Twitterデータ
それでは次に本番、Twitterデータです。Twitterのデータを取るためにはWeb Data Connectorが必要です。コネクタは、ここのものを使わせてもらいました。
http://files.tableaujunkie.com/twittersearch/twitterwebconnect.html

検索は”@tableau"としました。


■Tableau:計算フィールドの作成とVizの作成
計算フィールドはサンプルデータのときと同じです。メジャー名を変えるだけです。サンプルデータのときと同様、作成した計算フィールドを使うときは、「次を使用して計算」から「セル」を指定するのを忘れないようにしてくださいね。

以上で、Twitterのデータを使ったセンチメント分析が実現します!

今回は、R連携、Web Data ConnectorというTableauの外とつなぐ機能を使いました。
いろいろ組み合わせると、どんどん可能性が広がっていきますね!

Nanae

1 件のコメント: