Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
【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 によって、認知対象の設計と実装におけるベストプラクティスを見つけるための実験として作成されました。
【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
【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 の色を変えます。
【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の順番に接続する
【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING
WATSON 2017年 7月 18日
5
【4】Watson「Tone Analyzer」サービスの作成
Bluemix にログイン
https://console.bluemix.net/
【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING
WATSON 2017年 7月 18日
6
カタログより「Tone Analyzer」を選択
「作成」をクリック
【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING
WATSON 2017年 7月 18日
7
「サービス資格情報」をクリック
「資格情報の表示」をクリック
【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"
}
【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」ボタンを押す。
【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING
WATSON 2017年 7月 18日
10
Name:アプリケーションの名前を入力
Description:アプリケーションの説明を入力
Website:アプリケーションの URL を入力
Developer Agreement:チェックする
「Create your Twitter application」ボタンを押す
【2】TJBOT - MAKE YOUR ROBOT RESPOND TO EMOTIONS USING
WATSON 2017年 7月 18日
11
名前の箇所をクリック。
「Keys and Access Tokens」タブを選択。
【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
【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
【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
インストールしたプログラムなど
【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 ⇒⏎で保存します。
【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
【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の色と感情について
<赤>---------- 怒り
<黄>---------- 喜び
<マゼンタ>----- 恐怖
<緑>---------- 嫌悪
<青>---------- 悲しみ
【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
を修正します。
【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 の色が変わらない場合は、キーワードを変更して、試してください。