そうだ、データの可視化をしてみよう -デレマス-

具体的な手順ではなく、「思いついたら、データの可視化って結構簡単に出来た」という内容です。


こんなキャンペーンしてた

アイマス公式アカウント(@imas_official)を

フォロー&ツイートをRTで等身大アイドルパネルを9名にプレゼント

応募締切はツイート内の日付ではなく、2/11(月祝)いっぱい!
希望がある場合は、RT後に「●●ちゃんがほしいです!」と元ツイートにコメントをつけてね

キャンペーン元ツイート


ふと思う


... 〇〇ちゃんをカウントしたら、誰が倍率高いのか、わかっちゃうかしら。



やってみた

answer

2月5日 11時〜17時 くらいの範囲


動機


  • データの可視化って難しいイメージだけれど、このテーマなら途中で、めげないはず!


  • グラフをお気軽に作るツールを最近知った (infomotion)


  • watson をつかってみたい


  • Twitter API あんまり使ったことがないから試してみたい


(やったことあるAPI:statuses/user_timeline.jsonstatuses/show.json )


実践


知識材料


利用サービス


プログラム実行環境


構成

info


各セクションの概要


Twitter から対象データ取得

search/tweets.json で、特定のアカウントに対するコメントのみを検索("@imas_official")

その中から、キャンペーン対象のツイートに対するリプライだけを抽出

function search(lastId)

{
var postOption =
{
'hostname' : "api.twitter.com",
'port' : 443,
'path' : "/1.1/search/tweets.json"
+ "?q=" + "to%3Aimas_official"
+ "&result_type=recent" // 最近の
+ "&count=100" ,
'method' : "GET",
'headers' :
{
'Authorization' : "Bearer " + token, // APIトークンは別枠で取得
}
};
// RT コメントを途中まで読んでいたら、続きから読み込む
if( lastId )
postOption.path += "&max_id=" + lastId;

// API コール
var req = https.request(postOption, function(res)
{
var ret = '';
res.on('data', function(buf)
{
ret += buf;
});
res.on('end', function()
{
var currentTweet = JSON.parse(ret);
var id = "0";
var found = false;
// 取得出来たコメントの分、ループ
currentTweet.statuses.forEach((x) =>
{
if( ! /RT/.test(x.text) && repId !== x.id_str ) {
// 対象ツイートへのリプライだったら、CSV に吐き出す
if( x.in_reply_to_status_id_str === "1092605512250585088" ) {
// コメント中の改行コードを削除
var tx = x.text.replace(/\n/g, "");
fs.writeFileSync("a.csv",
(new Date(x.created_at)).getTime()
+ "," + x.id_str
+ "," + tx + "\r\n"
, { flag : "a" });
found = true;
}
}
id = x.id_str;});
if( ! found )
return ;
else
search(id); // 対象コメントが取得出来ているうちは、再起コール
});
});
});
}


アイドル名抽出 (watson assistant)

「このアイドルは、こういう呼ばれ方 してるよー」というのを、watson に教えてみる

watson

ユニット名をコメントされた場合は、そのユニットのアイドル全員をカウントするようにしてます。


抽出結果をデータストアに保存 (Firebase RealtimeDatabase)

こんなコメントメッセージを、1行ずつ watson に解析してもらう

@imas_official 五十嵐をよろしくお願いします。

@imas_official 小日向美穂をお願いします!
@imas_official 島村卯月お願いします
@imas_official 五十嵐響子ちゃんをお願いしますー
@imas_official 北条加蓮で
@imas_official しぶりんをお願いしまs
@imas_official 神谷奈緒!
@imas_official 北条加蓮ちゃんで!
@imas_official うじゅき・・・
  .
  .
  .

watson の回答を元に、「何時何分に、誰担当のPがコメントしたのか」データをDBに登録していく。

firebase


データの可視化 (enebular infomotion)

どんなタイプのグラフどんな値を使って 表示しますか?を指定するだけで、グラフが表示できる。



データソースとして、Firebase Realtime Database を選択できる

動画 ー 登録中の様子