Bluemix&Azureで機械学習する自動応答チャットで旅行提案するアプリを...

21
BluemixAzureで機械学習する自動応 答チャットで旅行提案するアプリを APIフル活用で実装してみた

Transcript of Bluemix&Azureで機械学習する自動応答チャットで旅行提案するアプリを...

Page 2: Bluemix&Azureで機械学習する自動応答チャットで旅行提案するアプリを APIフル活用で実装してみた

自己紹介

• 名前:原田 一樹

• Bluemix UserGroup(BMXUG)のCommunity Manager• 某商社系SIer所属

• 仕事:サービス企画/クラウド技術実証/アジャイル開発

• 保有スキルo AWS: Solutions Architect - Professionalo AWS: SysOps / Developer - Associateo Azure: Implementing Microsoft Azure Infrastructure Solutionso Bluemix: 資格準備中(?)

Page 6: Bluemix&Azureで機械学習する自動応答チャットで旅行提案するアプリを APIフル活用で実装してみた

「またたび」 とは?

• 「またたびがしたい」と思ってもらえることを目指した   対話型旅行プラン提案bot • 旅行に行きたい日時と予算、人数を伝えるだけで   旅行全体のプランを一括提案! • あなたを理解する機械学習エンジンにより、あなたに似た特性を持った人に好評だった観光地が提案されます!

• 色んな雑談ができるように勉強中

Page 7: Bluemix&Azureで機械学習する自動応答チャットで旅行提案するアプリを APIフル活用で実装してみた

アプリケーション構成

Question and Answer

Auto-Scaling

Monitoring andAnalytics

SendGrid

Virtual machine

負荷テスト

Azure Blob Storage

Azure Machine Learning

観光データ

ユーザーデータ

ヒアリングデータ

評価データ

 観光地の画像データを

Public化

ObjectStorage

メール配信

Watson QA

性能監視

スケーリング

ユーザ管理/チャット管理/観光データ管理

チャット履歴データ

MongoLab

予測評価値を付与

CSVファイルの転送

ユーザ評価データCSVエクスポート/

インポート

TravelCorpus

SDKNode.js

乗り換えAPI Git/Build&Deploy/

Track & Plan

Page 8: Bluemix&Azureで機械学習する自動応答チャットで旅行提案するアプリを APIフル活用で実装してみた

アプリケーション構成

Virtual machineAuto-Scaling

Monitoring andAnalytics

Azure Blob Storage

Azure Machine Learning

予測評価値を付与

負荷テスト

ユーザーデータ

ヒアリングデータ

評価データ

メール配信

Watson QA

性能監視

スケーリング

ユーザ管理/チャット管理/観光データ管理

チャット履歴データ

CSVファイルの転送

ユーザ評価データCSVエクスポート/

インポート

SDKNode.js

乗り換えAPI Git/Build&Deploy/

Track & Plan

SendGridを利用したメール配信

MongoLabを使った各種データ管理

ObjectStorage

OpenStack Swiftを使った画像表示

SendGrid

MongoLab

Question and Answer

TravelCorpus

Watson QAを利用した旅行情報QA

乗り換えAPIを利用した旅行ルート案内

観光データ

 観光地の画像データを

Public化

Page 9: Bluemix&Azureで機械学習する自動応答チャットで旅行提案するアプリを APIフル活用で実装してみた

アプリケーション構成

Auto-Scaling

Monitoring andAnalytics

観光データ

 観光地の画像データを

Public化

メール配信

Watson QA

性能監視

スケーリング

ユーザ管理/チャット管理/観光データ管理

SDKNode.js

乗り換えAPI

ObjectStorage

SendGrid

MongoLab

Question and Answer

TravelCorpus

負荷テスト

ユーザーデータ

ヒアリングデータ

チャット履歴データ

CSVファイルの転送

ユーザ評価データCSVエクスポート/

インポート

Git/Build&Deploy/Track & Plan

Virtual machine

Azure API 実行用の 仮想マシン

Azure Blob Storage

Azure Machine Learning

予測評価値を付与

Blobに評価データと予測評価データを保管

Azure MLでユーザ別観光評価値を  予測

評価データ

ユーザからの観光地評価を保管

Page 11: Bluemix&Azureで機械学習する自動応答チャットで旅行提案するアプリを APIフル活用で実装してみた

観光地データとSwiftによる画像表示連携

• OpenStack Swiftのパブリックアクセス機能を利用して、画像データの保管及びWeb公開を実装。

(https://swift2.open.ibmcloud.com/v1/AUTH_xxxxx/画像ファイル名)

• MongoLabに作成した観光地コレクションから観光地に紐づく画像ファイル名を取得し、上記URLと連結

• チャット応答メッセージに<img>タグを付与して画像表示

ObjectStorage

Page 12: Bluemix&Azureで機械学習する自動応答チャットで旅行提案するアプリを APIフル活用で実装してみた

乗り換えルート案内

• ユーザー情報の最寄駅を出発駅/帰着駅に設定 • ヒアリング時の出発日時を出発時間に設定• ヒアリング時の帰着日時を到着時間に設定• ユーザーに提案するプラン毎のエリアの主要駅を目的駅に設定• 各観光地の最寄駅を到着駅及び次の出発駅に設定• 上記の設定情報を元に複数回乗り換えAPIを実行し、各出力結果を

整形/統合

UserID 最寄駅

00001 東京駅

00002 東京駅

00003 東京駅

【ユーザーデータ】

UserID 出発日時 帰着日時 提案プラン 観光地

00001 9/1 10:00

9/5 20:00 京都 ××温泉○○水族館 …

00002 10/10 15:00

10/18 13:00

沖縄 ××テーマパーク○○体験 …

00003 8/15 7:00

8/15 22:00

横浜 ××川下り○○の滝 …

【ヒアリングデータ】

観光地ID 最寄駅

A00013 ××駅

B12003 ○○駅

C01206 △△駅

【観光地データ】

Page 13: Bluemix&Azureで機械学習する自動応答チャットで旅行提案するアプリを APIフル活用で実装してみた

メール配信SendGrid

• ユーザーが採用したプランを登録メールアドレスに送信する

• 採用時の情報を収集・整形しメール内容に含ませる

o ユーザーネーム

o ヒアリング情報(日程、人数、予算)

o プラン情報(日程、観光地)

email.setTos(tos); // 送信先アドレスは登録メールアドレスから取得し、宛先に設定

email.setFrom(from); // SendGrid経由で送信

email.fromname = 'またたび';email.setSubject('【またたび】採用プランのご案内');email.setHtml(‘name さん<br><br> 採用したプランは下記の通りです。<br><br><br> // ユーザーネームを取得し本文に盛り込む

日程:schedule <br> 人数:number 人 <br> 予算:budget 円 <br> <br><br> // 本文に日程、人数、予算を値を盛り込む

【「place」への旅行プラン】<br> plan <br><br> 旅行を楽しんで来てね!

email.addSubstitution(‘name’, name); email.addSubstitution('plan', plan); email.addSubstitution('schedule', schedule);email.addSubstitution('number', params.hearing_info.number_of_people);email.addSubstitution('budget', budget);email.addSubstitution('place', place);email.addCategory('category1');email.addHeader('X-Sent-Using', 'SendGrid-API');

【Node.js – ソースコード(抜粋)】

Page 14: Bluemix&Azureで機械学習する自動応答チャットで旅行提案するアプリを APIフル活用で実装してみた

Watson Question & Answer

• チャットからWatsonへ質問することが可能

o Travel Corpusへ質問を投げるように設定

• Watsonは質問内容に応じて回答をチャットに送信

• Watsonの回答から最も自信のある回答を1つピックアップ

• 自信度を表すConfidenceの値と回答本文のみをチャット画面に表示

• Watsonが日本語未対応のため英語にて入力する必要がある。

  (日本語を入力するとエラーメッセージを返す仕様)

Question and

Answer