【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

16
またたび ~対話型旅行提案bot~ 【チーム】 CTC Cloud Club

Transcript of 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

Page 1: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

またたび ~対話型旅行提案bot~

【チーム】 CTC Cloud Club

Page 2: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

開発メンバー紹介

原田 一樹 (Bluemixアーキテクト/

スクラムマスター/開発者)

岡 桃葉 (プロダクトオーナー/開発者)

中村 哲雄 (アプリ開発リーダー)

「多機能なアプリケーションも手早く実装できる。そう、Bluemixならね。(今回はAzureも使っちゃいましたが。)」

「開発中はまたたびの画像に癒されながら作業していました。またたびが可愛く感じられる今日この頃…!」

「またたびには愛着が湧いてきましたが、バグに対しては一向にその気配がありません。いつかそのような日が来るのでしょうか。 」

Page 3: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

「またたび」 とは?

• 「またたびがしたい」と思ってもらえることを目指した

対話型旅行プラン提案bot

• 旅行に行きたい日時と予算、人数を伝えるだけで

旅行全体のプランを一括提案!

• あなたを理解する機械学習エンジンにより、あなたに似た

特性を持った人に好評だった観光地が提案されます!

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

Page 4: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

アプリケーション構成

Question and Answer

Auto-Scaling

Monitoring and Analytics

SendGrid

Virtual machine

負荷テスト

Azure Blob Storage

Azure Machine Learning

観光 データ

ユーザー データ

ヒアリング データ

評価 データ

観光地の 画像データを

Public化

Object Storage

メール配信

Watson QA

性能監視

スケー リング

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

チャット 履歴データ

MongoLab

予測評価値 を付与

CSVファイルの転送

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

インポート

Travel Corpus

SDK Node.js

乗り換え API Git/Build&Deploy/

Track & Plan

Page 5: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

アプリケーション構成

Virtual machine Auto-Scaling

Monitoring and Analytics

Azure Blob Storage

Azure Machine Learning

予測評価値 を付与

負荷テスト

ユーザー データ

ヒアリング データ

評価 データ

メール配信

Watson QA

性能監視

スケー リング

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

チャット 履歴データ

CSVファイルの転送

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

インポート

SDK Node.js

乗り換え API Git/Build&Deploy/

Track & Plan

SendGridを利用したメール配信

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

Object Storage

OpenStack Swiftを使った画像表示

SendGrid

MongoLab

Question and Answer

Travel Corpus

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

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

観光 データ

観光地の 画像データを

Public化

Page 6: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

アプリケーション構成

Auto-Scaling

Monitoring and Analytics

観光 データ

観光地の 画像データを

Public化

メール配信

Watson QA

性能監視

スケー リング

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

SDK Node.js

乗り換え API

Object Storage

SendGrid

MongoLab

Question and Answer

Travel Corpus

負荷テスト

ユーザー データ

ヒアリング データ

チャット 履歴データ

CSVファイルの転送

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

インポート

Git/Build&Deploy/ Track & Plan

Virtual machine

Azure API 実行用の 仮想マシン

Azure Blob Storage

Azure Machine Learning

予測評価値 を付与

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

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

評価 データ

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

Page 7: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

Bluemix アプリ概要ページ

Page 8: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

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

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

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

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

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

Object Storage

Page 9: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

乗り換えルート案内

• ユーザー情報の最寄駅を出発駅/帰着駅に設定 • ヒアリング時の出発日時を出発時間に設定 • ヒアリング時の帰着日時を到着時間に設定 • ユーザーに提案するプラン毎のエリアの主要駅を目的駅に設定 • 各観光地の最寄駅を到着駅及び次の出発駅に設定 • 上記の設定情報を元に複数回乗り換え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 10: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

メール配信 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 11: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

Watson Question & Answer

• チャットからWatsonへ質問することが可能 o Travel Corpusへ質問を投げるように設定

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

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

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

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

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

Question and Answer

Page 12: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

ユーザー評価/予測評価値

• 各ユーザーに提案した観光地に対する評価を調査する

• 評価値を受領すると[ユーザー評価コレクション]に下記を追加 o UserID、性別、年代、出身地、居住エリア、特性値、観光地ID、ユーザ評価

• 上記コレクションをCSVエクスポートし、機械学習エンジンで解析し、各観光地の予測評価値を算出。

UserID 性別 年代 出身地 居住エリア 特性値① 特性値② 特性値③ 特性値④ 観光地ID カテゴリ ユーザ評価

00001 Male 20-29 香川県 東京都 2.4 -1.8 0.9 -2.1 A00013 narure 4

00001 Male 20-29 香川県 東京都 2.4 -1.8 0.9 -2.1 B12003 museum 3

00003 Female 30-39 京都府 東京都 -0.8 1.6 2.3 -1.4 A00113 narure 2

・・・

・・・

・・・

・・・

・・・

・・・

・・・

・・・

・・・

・・・

・・・

・・・

99999 Male 40-49 東京都 大阪府 1.2 2.1 0.9 1.8 C01206 outdoor 5

【ユーザー評価コレクション-データモデル】

Page 13: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

Azure MachineLearning (初期実装時点)

Page 14: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

・ 残念ながら、「またたび」は一般公開することができません。

(観光データ、乗り換え案内APIが開発者ライセンスのため)

・ 我々はまたたびを共に完成させてくれる 「オーナー」 を

募集しています。

・ 「またたび」は学習させる内容を変えるだけで、様々な分野に

応用することが可能です。

オーナー募集中

Page 15: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

CTCブースでデモやってます

Page 16: 【Bluemix Challenge最優秀賞】またたび〜旅行提案bot_LT資料〜

午後には講演もあります

Track B 15:30~16:00

PaaSを使いこなす!! 「インフラSIer」の進化

【講演者】 小岩井

Track D 16:30~17:00

WatsonQA応用編 〜独自corpusを作成しBluemixと連携させる方法〜

【講演者】 原田