19
2TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017 7 18 1 Watson 「Watson Tone Analyzer」と「Twitter Streaming API」、Raspberry Pi を使って、指 定したキーワードで Twitter に流れている情報から、感情をリアルタイムで分析して LED の色を変えます。 <使用する Watson サービス> 「Tone Analyzer」 こんにちは、私の名前は TJBot です! 私は、楽しい方法で Watson サービスを理解するために、お手伝いをするオープンソースプロジェクトです。 TJBot は、IBM 最初の会長兼最高経営責任者(CEO)であるトーマス・J・ワトソンの名前を愛称としています。 TJBot は、IBM Research の Maryam Ashoori によって、認知対象の設計と実装におけるベストプラクティスを見つけるための実験として作成されました。

【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

1

Watson 「Watson Tone Analyzer」と「Twitter Streaming API」、Raspberry Pi を使って、指

定したキーワードでTwitterに流れている情報から、感情をリアルタイムで分析して LED の色を変えます。

<使用するWatson サービス>

「Tone Analyzer」

こんにちは、私の名前は TJBotです!

私は、楽しい方法でWatson サービスを理解するために、お手伝いをするオープンソースプロジェクトです。

TJBot は、IBM 最初の会長兼最高経営責任者(CEO)であるトーマス・J・ワトソンの名前を愛称としています。

TJBot は、IBM Research の Maryam Ashoori によって、認知対象の設計と実装におけるベストプラクティスを見つけるための実験として作成されました。

Page 2: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

2

もくじ

【1】Web Site 情報

【2】内容

【3】H/W セットアップ

【4】Watson「Tone Analyzer」サービスの作成

【5】Twitter API 利用登録

【6】Raspbian の最新化と Node.js、npm のインストール

【7】コードのダウンロードとインストール

【8】「Tone Analyzer」「Twitter API」構成情報の設定

【9】LED 色指定の問題

【10】プログラムの実行

【11】LED の色と感情について

【12】キーワードの変更方法

【13】日本語対応に変更

【14】日本語対応版プログラムの実行

材料 (価格は変わる可能性があります。消費税、郵送費は含まれません)

材料名 補足 価格(消費税、送料含まず) 購入先例

厚紙 2mm厚 ¥650 東急ハンズ

レーザーカット費用 1000円/10分 ¥500 coromoza

Raspberry Pi3 Model B Bluetooth、無線LAN含む。 ¥5,600 秋月電子通商

電源(Raspberry Pi3用)スイッチングACアダプター5V2.5A AD-B50P250 、USBケーブル

Aオス-マイクロBオス 0.15m A-microB¥1,210 秋月電子通商

microSD Card 8GB Class10 Transcend microSDHCカード 8GB Class10 (無期限保証) ¥1,200 アマゾン

LED NeoPixel スルーホールLED ¥691 スイッチサイエンス

ジャンパーワイヤ(メス-メス) 接続ケーブル。ブレッドボード・ジャンパー延長ワイヤ(メス-メス)15cm 10本入 ¥380 秋月電子通商

小計 ¥10,231

HDMIディスプレイ Raspberry Pi3初期設定時のみ使用。テレビで代用

HDMIケーブル Raspberry Pi3初期設定時のみ使用。HDMI1.4ケーブル ¥250 秋月電子通商

USBマウスRaspberry Pi3初期設定時のみ使用。Logicool ロジクール 有線光学式3ボタン マ

ウス M100r ブラック¥475 アマゾン

USBキーボードRaspberry Pi3初期設定時のみ使用。サンワサプライ USBキーボード(ブラック) SKB-

L1UBK¥664 アマゾン

小計 ¥1,389

合計 ¥11,620

Page 3: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

3

【1】Web Site情報

https://www.instructables.com/id/Make-Your-Robot-Respond-to-Emotions-Using-

Watson/

【2】内容

Watson 「Watson Tone Analyzer」と「Twitter Streaming API」、Raspberry Pi を使って、指

定したキーワードでTwitterに流れている情報から、感情をリアルタイムで分析して LED の色を変えます。

Page 4: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

4

【3】H/W セットアップ

(1)LED

スイッチサイエンス社 NeoPixel スルーホール LED

LED は平らにカットされている方から

1.--- 使用しない

2.--- GND ⇒ 6 番ピン

3.--- +3.3V ⇒ 1 番ピン

4.--- Data in ⇒ 12 番ピン

になっているが、

(注意!)RaspberryPi に接続する際は、2⇒4⇒3の順番に接続する

Page 5: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

5

【4】Watson「Tone Analyzer」サービスの作成

Bluemix にログイン

https://console.bluemix.net/

Page 6: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

6

カタログより「Tone Analyzer」を選択

「作成」をクリック

Page 7: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

7

「サービス資格情報」をクリック

「資格情報の表示」をクリック

Page 8: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

8

「username」「password」を後程使用しますので、メモ帳などにコピー保存してください。

{

"url": "https://gateway.watsonplatform.net/tone-analyzer/api",

"username": "7ca170e3-0e39-44b5-9f7b-101f9d5ea569",

"password": "kPYipRTpXE1u"

}

Page 9: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

9

【5】Twitter API 利用登録

Twitter を利用していない場合、事前にアカウント作成をしてください。

https://twitter.com/?lang=ja

次に API 利用登録を行います。

API 利用登録をして、下記4点を入手します。 https://apps.twitter.com/

・consumer_key

・consumer_secret

・access_token_key

・access_token_secret

「Create New App」ボタンを押す。

Page 10: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

10

Name:アプリケーションの名前を入力

Description:アプリケーションの説明を入力

Website:アプリケーションの URL を入力

Developer Agreement:チェックする

「Create your Twitter application」ボタンを押す

Page 11: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

11

名前の箇所をクリック。

「Keys and Access Tokens」タブを選択。

Page 12: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

12

Consumer Key (API Key) :URkJQPKvvkbJ94VB3hLtKCivm

Consumer Secret (API Secret) :

mtbGs7jGvRESlMdFAqt8oV5L7iSOJYTODZnbzpnXOIuzdsL8ez

Access Token :706783121782345728-F0J5DK6lcmojfuLznLLu7wnChDJ4NRr

Access Token Secret :Y5quqsVic2je5lTg3VWOHkeJZGpGk0mE11QAWaEaPxdIF

後程使用しますので、メモ帳などにコピー保存してください。

Twitter API キーの取得手順

下記サイトが参考になります

http://dotnsf.blog.jp/archives/1044796238.html

Page 13: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

13

【6】Raspbianの最新化と Node.js、npm、のインストール

Teraterm などで SSH 接続します。ID、パスワードの初期値は、

ID:pi

Password: raspberry です。

以下のコマンドを実行してください。

$ sudo apt-get update

$ sudo apt-get dist-upgrade

$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

$ sudo apt-get install -y nodejs

Page 14: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

14

【7】コードのダウンロードとインストール

$ git clone https://github.com/ibmtjbot/tjbot.git

$ cd ~/tjbot/recipes/sentiment_analysis

$ npm install

インストールしたプログラムなど

Page 15: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

15

【8】「Tone Analyzer」「Twitter API」構成情報の設定

ディレクトリを ~/tjbot/recipes/sentiment_analysis に移動します。

$ cd ~/tjbot/recipes/sentiment_analysis

インストールされたデフォルト構成ファイル「config.defaule.js」を「config.js」という名でコピーし、

「config.js」を編集します。

$ cp config.default.js config.js

■“【4】Watson「Tone Analyzer」サービスの作成”で取得した、「username」「password」

■“【5】Twitter API 利用登録” で取得した、

・consumer_key

・consumer_secret

・access_token_key

・access_token_secret

を登録します。

ここでは nano エディターを使用しました。

各項目を登録し、 Ctrl+x ⇒ y ⇒⏎で保存します。

Page 16: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

16

【9】LED 色指定の問題

LED が指定した色で光るかを確認します。

確認用プログラムをインストールし、実行します。

$ cd ~/tjbot/bootstrap/tests

$ npm install

$ sudo node test.led.js

おそらく意図したように光らなかったと思います。

これは、LEDの色設定(Data in)のPWMモジュールがピン番号12(GPIO 18)を使用していますが、

内臓のオーディオ出力も同じ GPIO18 を使用しているため、競合状態となる為です。

回避策として、内臓のオーディオジャック出力を止める方法があり、以下のコマンドでサウンドカーネルモジュ

ールを無効します。

ただこの場合、オーディオ出力は HDMI、USB、または Bluetooth 経由でスピーカーを接続する必要が

あります。

$ cd ~/tjbot/bootstrap

$ sudo cp tjbot-blacklist-snd.conf /etc/modprobe.d/

$ sudo update-initramfs -u

$ sudo reboot

raspberry が再起動したら、確認用プログラムを試して、意図した通り色が光ることを確認してください。

おそらく大丈夫と思います。

$ cd ~/tjbot/bootstrap/tests

$ sudo node test.led.js

Page 17: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

17

【10】プログラムの実行

$ cd ~/tjbot/recipes/sentiment_analysis/

$ sudo node sentiment.js

キーワードの初期値は「education」です。

Twitter 情報を収集し、分析後 LED の色が変わります。

(色が変わるまで、少々時間がかかります。)

【11】LEDの色と感情について

<赤>---------- 怒り

<黄>---------- 喜び

<マゼンタ>----- 恐怖

<緑>---------- 嫌悪

<青>---------- 悲しみ

Page 18: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

18

【12】キーワードの変更方法

config.js ファイルの exports.sentiment_keyword を変更します。

$ cd ~/tjbot/recipes/sentiment_analysis/

$ sudo nano config.js

10 行目の

exports.sentiment_keyword = "education"; // keyword to monitor in Twitter

を修正します。

Page 19: 【2】TJBot - Make Your Robot Respond to …seahorse-inc.com/QIITA/TJBot-2/Sentiment...2017/07/18  · 【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING WATSON 2017年7月18日

【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING

WATSON 2017年 7月 18日

19

【13】日本語対応に変更

(1)変更点1:

~/tjbot/recipes/sentiment_analysis/sentiment.js

sentiment.js の 73 行目

tweet = tweet.replace(/[^\x00-\x7F]/g, "");

をコメント行にする

// tweet = tweet.replace(/[^\x00-\x7F]/g, "");

【14】日本語対応版プログラムの実行

$ cd ~/tjbot/recipes/sentiment_analysis

$ sudo node sentiment.js

Twitter 情報が少なくて、LED の色が変わらない場合は、キーワードを変更して、試してください。