그렇다, 데이터의 시각화를 해보자 -데레마스-

구체적인 순서가 아니라, 「생각하면, 데이터의 가시화는 상당히 간단하게 할 수 있었다」라고 하는 내용입니다.

이런 캠페인


アイマス公式アカウント(@imas_official)を
フォロー&ツイートをRTで等身大アイドルパネルを9名にプレゼント

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

캠페인 전 트윗

문득 생각





해봤어




2월 5일 11시~17시 정도의 범위

동기


  • 데이터의 가시화는 어려운 이미지이지만, 이 테마라면 도중에, 굳이 없을 것!
  • 그래프를 부담없이 만드는 툴을 최근 알았다 ( infomotion )
  • watson을 사용하고 싶습니다
  • Twitter API 너무 많이 사용한 적이 없기 때문에 시도하고 싶습니다

  • (해본 적이 있는 API: statuses/user_timeline.json , statuses/show.json )

    실천



    지식 재료



    이용 서비스


  • Twitter API
  • Watson Assistants
  • Firebase
  • enebular

  • 프로그램 실행 환경


  • node.js
  • Node-RED

  • 구성





    각 섹션 개요



    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에게 가르쳐 본다

    유닛명을 코멘트 했을 경우는, 그 유닛의 아이돌 전원을 카운트하도록(듯이) 하고 있습니다.

    추출 결과를 데이터 저장소에 저장(Firebase RealtimeDatabase)



    이런 코멘트 메시지를, 1행씩 watson에 해석해 준다
    @imas_official 五十嵐をよろしくお願いします。
    @imas_official 小日向美穂をお願いします!
    @imas_official 島村卯月お願いします
    @imas_official 五十嵐響子ちゃんをお願いしますー
    @imas_official 北条加蓮で
    @imas_official しぶりんをお願いしまs
    @imas_official 神谷奈緒!
    @imas_official 北条加蓮ちゃんで!
    @imas_official うじゅき・・・
      .
      .
      .
    



    왓슨의 회답을 바탕으로, 「몇시 몇 분에, 누구 담당의 P가 코멘트했는지」데이터를 DB에 등록해 간다.


    데이터 시각화 (enebular infomotion)



    어떤 종류의 그래프를 어떤 값으로 표시합니까? 를 지정하는 것만으로 그래프를 표시할 수 있다.

    데이터 소스로 Firebase Realtime Database를 선택할 수 있습니다.

    동영상 - 등록중인 모습

    원래 동영상을 지워 버렸습니다 ... 그래서 메모를 위해 다시. · 트위터 API를 사용하여 IBM Watson Assistant로 리프리 덤프 유휴 이름을 추출 · Firebase RealtimeDB에 등록 · enebular infomotion에서 볼 수 있음

    좋은 웹페이지 즐겨찾기