ibmワトソン 勉強会 20161121a

61
© IBM Corporation 1 © 2016 IBM Corporation 日本アイ・ビー・エム株式会社 高良 真穂 IBM Watson Conversation利用した LINE Chatbot 開発法解説 20161121LINE BOT AWARDS 1000万円獲得にチャレンジしよう!

Upload: maho-takara

Post on 16-Apr-2017

2.559 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: IBMワトソン 勉強会 20161121a

© IBM

Corporation 1

© 2016 IBM Corporation

日本アイ・ビー・エム株式会社高良真穂

IBM Watson Conversationを利用した LINE Chatbot 開発法解説

2016年11月21日

LINE BOT AWARDS

1000万円獲得にチャレンジしよう!

Page 2: IBMワトソン 勉強会 20161121a

© IBM

Corporation 2

2

お話する人

名前: 高良 真穂 (Takara Maho) 2002年 IBM入社

プロフェッション: エキスパート・テクノロジ・アーキテクト

所属: 日本アイ・ビー・エム株式会社

クラウド事業統括 テクニカル・サービス

連絡先: [email protected]

Facebook https://www.facebook.com/maho.takara

最近のおもちゃ(^o^;)

Page 3: IBMワトソン 勉強会 20161121a

© IBM

Corporation 3

text

Watson Conversation を使って LINE BOT AWARDSで 1000万円獲得にチャレンジしよう!

このセッションでは、LINE Message API とWatson Conversation を繋げる方法が満載

https://codeiq.jp/magazine/2016/11/47013/?rfop=f70687m5

Page 4: IBMワトソン 勉強会 20161121a

© IBM

Corporation 4

text

Watson Conversation の話に入る前に

– 東大ロボ君、東大合格を断念

• なかなか力が伸びなかったのは、会話文を完成させる問題や文章を要約する問題など、「複数の文」を組み合わせた問題でした

• 人工知能が自動的に学習することで能力を飛躍的に向上させたディープラーニングと呼ばれる技術も試しましたが、効果はありませんでした。

• 人工知能に言葉を理解させる技術は、自然言語処理と呼ばれていますが、2つ以上の文を理解させることは極めて難しく、世界中の研究者が挑戦しているのが現状です。

– ワトソンなら会話できるの?

• 限られた範囲の会話が可能

• 考えている訳でなくルールベース

http://www3.nhk.or.jp/news/html/20161114/k10010768531000.html

Page 5: IBMワトソン 勉強会 20161121a

5Page© 2016 IBM Corporation

Watson Dialog からConversation へ進化

Page 6: IBMワトソン 勉強会 20161121a

© IBM

Corporation 6

text

Conversation とは Dialogの後継として今年夏に登場

– Watson Dialog がWatson Conversation に交代が発表

– 2月に日本語化が、発表されたばかりなのに… それだけ良いこと一杯!

– Watson Conversation は日本語化対応済み

https://www.ibm.com/blogs/bluemix/2016/08/retirement-watson-dialog-service/

Page 7: IBMワトソン 勉強会 20161121a

© IBM

Corporation 7

text

Watson Dialog / Conversation の機能とは

– ユーザーと対話しながら、取得した情報をJSON形式の情報を取得する

– 話し言葉には、揺らぎがあるので、言い方、癖、短縮など曖昧な話し言葉を許容して、適切に情報を取得で

– 受けたフレーズの類似度を判別して処理するので、典型的なパターンを学習させるだけ

音楽をかけて

実行環境(サーバー)

ジャンルは?

Text data

Text data

BOT

API

BOTUX

ロック

Text data

ロックをプレイします

Text data

会話で取得した情報をJSON形式で提供

Watson

Conversation

Page 8: IBMワトソン 勉強会 20161121a

© IBM

Corporation 8

text

Watson Conversation のメリット

– Watson Dialog

• 会話のスキームをXMLのファイルを エディタで編集

• 高かった 1コールあたり ¥2.0円/API call

• 文字列の正規表現的なマッチングレベル

– Watson Conversation で改善された点

• ウェブのGUIツールを使って会話のJSONスキームを設計、デバックが可能

• お手頃になった コールあたり ¥0.2625円/API call

• NLCの機能を取り込み

– 典型的な文を与え、意図を掴み取り、対応を決める

– 同じ意味を指す単語(シノニム)を登録しておき、言葉の揺らぎや癖に対応できる

• APIが簡単になり、APIのアウトプットは、リッチに改善

• 上記費用にNLC相当機能のコストが含まれるので、たいへんお得なサービス

Page 9: IBMワトソン 勉強会 20161121a

9Page© 2016 IBM Corporation

IBM Bluemix

Watson Conversation

オーダー方法

Page 10: IBMワトソン 勉強会 20161121a

© IBM

Corporation 10

text

Bluemix Watson Conversation オーダーの方法

– カタログ→ サービス→ Watson

Page 11: IBMワトソン 勉強会 20161121a

© IBM

Corporation 11

text

Bluemix Watson Conversation のオーダー方法

– 価格プランを選択して、作成をクリック

Page 12: IBMワトソン 勉強会 20161121a

© IBM

Corporation 12

text

Bluemix の Conversation API 利用

– オーダー完了後の画面

Page 13: IBMワトソン 勉強会 20161121a

© IBM

Corporation 13

text

Bluemix Watson Conversation API 利用

– JSON形式のサービス資格情報が提供されるので、コピペして利用

– このURLを使ってサーバーからRESTでアクセスできる

Page 14: IBMワトソン 勉強会 20161121a

© IBM

Corporation 14

text

Bluemix Watson Conversation API

– Conversation のチュートリアル、APIの解説が提供

https://www.ibm.com/watson/developercloud/doc/conversation/index.html

https://www.ibm.com/watson/developercloud/conversation/api/v1/

Page 15: IBMワトソン 勉強会 20161121a

15Page© 2016 IBM Corporation

Watson Conversation

会話設計と機械学習

Page 16: IBMワトソン 勉強会 20161121a

© IBM

Corporation 16

text

IBM Watson Conversation の設計の基本

–Intents 対話相手の要求を受け取る Intents を明確にする

– 「ライトをつけて」 → スイッチ入

– 「音楽をかけて」 → スイッチ入

– 「音楽をもっと大きく」 → 音量を上げる

–Entities 要求の対象となる Entity を明確にする

– 「ライトをつけて」 → ライト

– 「音楽をかけて」 → 音楽

– 「音楽をもっと大きく」 → 音量

–Dialogs 対話の流れを設計する

– 「音楽をかけて」 → 「音楽のジャンル取得」 → 指定ジャンルの音楽を開始

Page 17: IBMワトソン 勉強会 20161121a

© IBM

Corporation 17

text

会話設計ツールの概要

ウェブGUIツールを起動して、ワークスペースを作成

「ワークスペース」とは一連の会話のパッケージ例として・ ドライブ・アシスタント・ デリバリ注文受付・質問応対・ 接客応対

Page 18: IBMワトソン 勉強会 20161121a

© IBM

Corporation 18

text

会話設計ツールの概要

– Intents を作成するために、 Get started をクリック

– Workspace IDは、APIから利用するとき必要

このアイコンは、以前作成したworkspaceをインポートする為

Page 19: IBMワトソン 勉強会 20161121a

© IBM

Corporation 19

text

Intents(意図) の登録受け取る意図の幅を登録

• 同じ行為を要求するにも、いろいろな言い方がある。 言い方の違いを許容して意図を理解する 例: つけて、オン、いれて、点灯して、かけて、

• 機械学習を利用して、言葉の揺らぎを吸収して、意図を正しく理解する

初期状態

インプットが終わったらCreate をクリック

類似の言葉を「スイッチを入」れると理解する様になる

Page 20: IBMワトソン 勉強会 20161121a

© IBM

Corporation 20

text

Intents(意図) の登録後のテスト

Watson conversationになってから、意図とおりに認識できるか、ウェブ画面から確認できる様になった。

このアイコンをクリックで会話のテストツールが起動

Page 21: IBMワトソン 勉強会 20161121a

© IBM

Corporation 21

text

Intents(意図) の登録後のテスト

Intents を Create すると、自動的にトレーニングが開始され、完了するまでは利用できない。 トレーニングには、およそ数分程度要する。

トレーニング進行中

トレーニング完了

数分後

Page 22: IBMワトソン 勉強会 20161121a

© IBM

Corporation 22

text

Intents(意図) の登録後のテスト1つのIntentsだけでは、正しく動作しない。

Intents が一個しかないWorkspace はこんな状態

どんなテキストをインプットしても全部同じ判定

Page 23: IBMワトソン 勉強会 20161121a

© IBM

Corporation 23

text

Intents(意図)の登録後のテスト「無関係」というIntentsを登録すると、無関係な言葉は処理できる様になる

Page 24: IBMワトソン 勉強会 20161121a

© IBM

Corporation 24

text

Intents(意図) の登録無関係な言葉は、適当に色々な単語やフレーズを入れておく

Page 25: IBMワトソン 勉強会 20161121a

© IBM

Corporation 25

text

Entities (取得対象の情報) の登録

Intents の目的となる対象のEntitiesを登録

• 要求の対象物にも、いろいろな言い方がある。 「音楽をかけて」の表現も

– ミュージック、BGM、ロック、ジャズ… などなど、同じ行為を指すものが複数

• 機械学習を利用して、色々な言い方でも、正しく理解できる様にする

Page 26: IBMワトソン 勉強会 20161121a

© IBM

Corporation 26

text

Entities (取得対象の情報) の登録

曖昧さを含む話し言葉を、正しく受け取れる様登録

登録完了後に、Intents と同じ様に、数分間のトレーニングが始まるので注意

同意語(慣用的に使う言葉を含む)

対象とするグループを表す言葉

機器の具体的な名前

Page 27: IBMワトソン 勉強会 20161121a

© IBM

Corporation 27

text

会話(Dialog)の順番を登録

– 要求の意図(Intents)と対象情報(Entities)を統合して、対話の流れをつくる– Dialog を Click して Create で作成開始

Page 28: IBMワトソン 勉強会 20161121a

© IBM

Corporation 28

text

会話(Dialog)の順番を登録

– 会話の流れ、意思や対象を判別するためのスキーマーを登録する

– どの意図にも合致しない時のため、”Anything else”を設定する

初期状態 スイッチの入と切を設定

意図に対応する応答文

対話相手の意図

意図が一致しなかった場合の対応

Page 29: IBMワトソン 勉強会 20161121a

© IBM

Corporation 29

text

会話(Dialog)のテスト言い方を変えても、意図を正しく受け取る様になった

でも、何のスイッチを操作するか、情報が足りない

テスト結果

Page 30: IBMワトソン 勉強会 20161121a

© IBM

Corporation 30

text

対象となるモノの情報を受け取る様に追加する

– 「行為の要求を受け取る」、「対象となるモノの情報を受け取る」ことができました。

エアコン

ライト

#で始まるIntents や@で始まるEntity に登録されていないものがくると「解りませんでした」と答える

会話アイコンのタイミングで、機器の種類を受け取る

追加

Page 31: IBMワトソン 勉強会 20161121a

© IBM

Corporation 31

text

自然な会話になる様にDialog Nodeを追加する

– 「エアコンをつけて」や「照明をつけて」と言った自然な表現をDialogで表現すると

@機器の名前が該当して、#意図が該当すれば、対応の応答 @機器の名前が該当しない場合の応答

Intent と Entity を同時に評価できる様になる

追加

Page 32: IBMワトソン 勉強会 20161121a

© IBM

Corporation 32

text

自然な会話になる様にDialog Node追加の方法

– 要求される行為と、対象の機器を、「エアコンつけて」の様な一言で対応するには

メニューを表示して Continue from… を選択 @機器のGo to condition を選択

@機器の名前が該当して、#意図が該当すれば、対応の応答

一致したEntityに置換される

Page 33: IBMワトソン 勉強会 20161121a

© IBM

Corporation 33

text

自然な会話のエラー処理

– エラー処理を含んだ全体

該当の要求が無い場合の応答

該当の機器Entity が無い場合の応答

初めからやり直し

Page 34: IBMワトソン 勉強会 20161121a

34Page© 2016 IBM Corporation

Watson Conversation

のAPIプログラミング

Page 35: IBMワトソン 勉強会 20161121a

© IBM

Corporation 35

text

最小プログラムと実行結果

最小のConversationプログラム

JSON形式のレスポンス

Page 36: IBMワトソン 勉強会 20161121a

© IBM

Corporation 36

text

最小のConversation API プログラムの解説

最小のConversationプログラム

Watson Conversation

APIユーザー認証

会話のIDを指定して対話開始

JSON形式のアウトプットを表示

workspace

Page 37: IBMワトソン 勉強会 20161121a

© IBM

Corporation 37

text

Watson Conversation パラメータの入手先

最小のConversationプログラム

認証情報

Page 38: IBMワトソン 勉強会 20161121a

© IBM

Corporation 38

text

Dialog と JSON出力の関係

– Intents と entities を判別して応答

重要

Page 39: IBMワトソン 勉強会 20161121a

© IBM

Corporation 39

text

Chatbot に重要な2つのセッション

• セッション1 (会話の前後関係)

• 一問一答ではなく、複数の質問から答えを導く

• 会話の続きを把握して、話の続きを継続する

• セッション2 (マルチユーザー対応)

• たくさんの人と同時に会話する

–人間だと、1度に一人の相手としか会話できない

–チャットボットは、数十人〜と同時に会話

– Watson Conversation は、前者のみをサポート、後者は別途開発する必要がある。

Page 40: IBMワトソン 勉強会 20161121a

© IBM

Corporation 40

text

セッション1 (会話の前後関係) の例

三回連続正解すれば、勝ちの会話ゲームのDialog

1回目の解答受付 2回目の解答受付 3回目の解答受付

create new conditionの意味で会話の終了、すなわち

最初からやりなおしを意味する。

Page 41: IBMワトソン 勉強会 20161121a

© IBM

Corporation 41

text

セッション1 (会話の前後関係) の例

2番目の答えが、間違ったので、負け

Page 42: IBMワトソン 勉強会 20161121a

© IBM

Corporation 42

text

セッション1 (会話の前後関係) の例

再挑戦!

3つ正解で勝ち

Page 43: IBMワトソン 勉強会 20161121a

© IBM

Corporation 43

text

セッション1 (会話の前後関係)の例

会話の続きかを conversation_id で判別する

会話の開始時にconversation_id

を生成する

応答時にconversation_id

を付与する

応答時にconversation_id

を付与続ける

Page 44: IBMワトソン 勉強会 20161121a

© IBM

Corporation 44

text

セッション1 (会話の前後関係)の例

Nodeのプログラムで書くとこんな感じ

前の応答 conversation_idをセットして続きを示す。

空の場合は、新規の会話開始と判断して最初からスタート

次の応答のパラメータに付与できる様に、保存しておく

LINE に応答

Page 45: IBMワトソン 勉強会 20161121a

© IBM

Corporation 45

text

セッション2 (マルチユーザー対応)

複数のLINEクライアントから、自分だけが会話している様に見せる

同時進行で、二つのセッションが独立に進行する様にプログラミングする

スマホ#1 スマホ#2

10:54

10:55

10:56

Page 46: IBMワトソン 勉強会 20161121a

© IBM

Corporation 46

text

セッション2 (マルチユーザー対応)

– ユーザー・セッション管理は、LINEユーザー単位で、対話の状態を管理する

– 配列users[id] に、LINE User Id 単位にconversation_id も保存して、同時に複数ユーザーに対応させる。

新規

セッション

既存セッション

メッセージ送信者の LINE ID

メッセージ送信者の LINE ID

単位に状態を管理conversation_idもこの中で

LINE ID単位で保持

ユーザーIDごとに応対する部分

Page 47: IBMワトソン 勉強会 20161121a

© IBM

Corporation 47

text

Conversation 要求の確定の判別方法

– 会話のどの時点で要求が確定したのか、プログラムで判別する方法

– 判別結果をもって、バックエンドシステムの問い合わせ

• R&Rに検索させる

• IoT機器へコマンドを送信する

• Conversation の戻り値だけでは、確定できたか判定が難しい

確定成功のケース 確定失敗のケース

Page 48: IBMワトソン 勉強会 20161121a

© IBM

Corporation 48

text

Conversation 要求の確定の判別方法

• 要求が確定したという情報は、これまでの設定ではJSONに出力されない!

確定成功のケース 確定失敗のケース

Entities に値がセットされたら注文確定にするには???

Page 49: IBMワトソン 勉強会 20161121a

© IBM

Corporation 49

text

Conversation 要求の確定の判別方法

• Dialogのcontext 変数を指定することで、Chatbotプログラムへ通知できる

JSONレスポンスの例If (order == true) { で判定してEntities を取得して、IoT機器へリクエストを送信など…

Page 50: IBMワトソン 勉強会 20161121a

© IBM

Corporation 50

text

Conversation 要求の確定の判別方法

• context 変数は、R&Rや外部の機能を利用する際にも利用できる

watson_rr : true で、判定してインプットテキストを R&R へ与えて、結果を返す

R&Rの利用

R&Rへのテキスト

Page 51: IBMワトソン 勉強会 20161121a

51Page© 2016 IBM Corporation

Watson Conversation

+ LINE Message API

チャットボット開発

Page 52: IBMワトソン 勉強会 20161121a

© IBM

Corporation 52

text

LINE Message APIとはRESTサービス、API ライブラリとして Java, PHP, Go, Perl, Ruby, Python

Watson と接続するため便利な Node 版API は、GitHUBに公開

https://business.line.me/ja/companies/1098092/services/bot

Watsonに繋ぐのに便利なNode版が無いので作りました

https://github.com/takara9/line-msg-api

Page 53: IBMワトソン 勉強会 20161121a

© IBM

Corporation 53

text

LINE Message API のループバック試験用コードWatson と繋がずに折り返し試験、成功したら、Watson Conversation と接続

https://www.npmjs.com/package/line-msg-api

インストール

ループバック試験

のサンプルコード

Page 54: IBMワトソン 勉強会 20161121a

© IBM

Corporation 54

text

Watson Conversation を利用したチャットボット

Watson Conversation で、最高賞金1000万円の LINE BOT AWARDS にチャレンジしよう!

https://github.com/takara9/line_chatbot

Page 55: IBMワトソン 勉強会 20161121a

55Page© 2016 IBM Corporation

Watson Conversation

料金

Page 56: IBMワトソン 勉強会 20161121a

© IBM

Corporation 56

text

Bluemix は、無料プランもあり、使えれば本格利用が可能

Bluemix のサービスを注文する際に、料金が表示されています

この料金は2016年11月現在の料金です。 最新の料金は、Bluemixの各サービス・オーダー画面で、お確かめください。

Page 57: IBMワトソン 勉強会 20161121a

57Page© 2016 IBM Corporation

Watson Conversation

まとめ

Page 58: IBMワトソン 勉強会 20161121a

© IBM

Corporation 58

text

まとめ– Watson Conversationは、Dialog の後続として登場

– 日本語対応済み

– コストが下がる 1コールあたり ¥2円→ ¥0.2円台に

– NLC機能の機能を内包

– ウェブGUI ツールで会話を設計できる

– Dialog の会話(Workspace)は、JSON形式で Export / Import 可能

– Dialog の context 変数で、R&R連携など他APIへ飛ばして回答も可能

– LINE Message API の Node API ライブラリ(line-msg-api)は GitHuBに公開

使ってみて判ったこと

– Intents や Entities を変更するとトレーニングが始まり conversationが機能停止

– Workspace スキーマをAPIから変更できない。 →対話から自動学習が厳しい

– Intents の無関係とか的外れといった無駄と思える内容が必須

Page 59: IBMワトソン 勉強会 20161121a

© IBM

Corporation 59

text

さらに、日本語で学ぶためにオススメのリンク

– IBM developerWorksこみねのメモ– https://www.ibm.com/developerworks/community/wikis/home?lang=ja#!/wiki/%E3%81%93%E3%81%BF

%E3%81%AD%E3%81%AE%E6%8A%80%E8%A1%93%E3%83%A1%E3%83%A2/page/Conversatio

n%20%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9

Page 60: IBMワトソン 勉強会 20161121a

© IBM

Corporation 60

text

Bluemix 一ヶ月間無料 無制限お試し利用– クレジットカードの登録は不要です

https://www.ibm.com/cloud-computing/jp/ja/bluemix/

Page 61: IBMワトソン 勉強会 20161121a

© IBM

Corporation 61

+

Bluemix Infrastructure