Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

IBMワトソン 勉強会 20161121a

7,366 views

Published on

IBM Watson Conversation を使ったLINE Chatbot 開発法解説

Published in: Engineering
  • Be the first to comment

IBMワトソン 勉強会 20161121a

  1. 1. © IBM Corporation 1 © 2016 IBM Corporation 日本アイ・ビー・エム株式会社 高良 真穂 IBM Watson Conversationを 利用した LINE Chatbot 開発法解説 2016年11月21日 LINE BOT AWARDS 1000万円獲得にチャレンジしよう!
  2. 2. © IBM Corporation 2 2 お話する人 名前: 高良 真穂 (Takara Maho) 2002年 IBM入社 プロフェッション: エキスパート・テクノロジ・アーキテクト 所属: 日本アイ・ビー・エム株式会社 クラウド事業統括 テクニカル・サービス 連絡先: takara@jp.ibm.com Facebook https://www.facebook.com/maho.takara 最近のおもちゃ(^o^;)
  3. 3. © IBM Corporation 3 text Watson Conversation を使って LINE BOT AWARDSで 1 000万円獲得にチャレンジしよう! このセッションでは、LINE Message API と Watson Conversation を繋げる方法が満載 https://codeiq.jp/magazine/2016/11/47013/?rfop=f70687m5
  4. 4. © IBM Corporation 4 text Watson Conversation の話に入る前に – 東大ロボ君、東大合格を断念 • なかなか力が伸びなかったのは、会話文を完成させる問題や文章を要約する問題など、 「複数の文」を組み合わせた問題でした • 人工知能が自動的に学習することで能力を飛躍的に向上させたディープラーニングと呼 ばれる技術も試しましたが、効果はありませんでした。 • 人工知能に言葉を理解させる技術は、自然言語処理と呼ばれていますが、2つ以上の文 を理解させることは極めて難しく、世界中の研究者が挑戦しているのが現状です。 – ワトソンなら会話できるの? • 限られた範囲の会話が可能 • 考えている訳でなくルールベース http://www3.nhk.or.jp/news/html/20161114/k10010768531000.html
  5. 5. 5Page© 2016 IBM Corporation Watson Dialog から Conversation へ進化
  6. 6. © 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/
  7. 7. © IBM Corporation 7 text Watson Dialog / Conversation の機能とは – ユーザーと対話しながら、取得した情報をJSON形式の情報を取得する – 話し言葉には、揺らぎがあるので、言い方、癖、短縮など曖昧な話し言葉を許容 して、適切に情報を取得で – 受けたフレーズの類似度を判別して処理するので、典型的なパターンを学習さ せるだけ 音楽をかけて 実行環境 (サーバー) ジャンルは? Text data Text data BOT API BOT UX ロック Text data ロックをプレイ します Text data 会話で取得した情報 をJSON形式で提供 Watson Conversation
  8. 8. © 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相当機能のコストが含まれるので、たいへんお得なサービス
  9. 9. 9Page© 2016 IBM Corporation IBM Bluemix Watson Conversation オーダー方法
  10. 10. © IBM Corporation 10 text Bluemix Watson Conversation オーダーの方法 – カタログ → サービス → Watson
  11. 11. © IBM Corporation 11 text Bluemix Watson Conversation のオーダー方法 – 価格プランを選択して、作成をクリック
  12. 12. © IBM Corporation 12 text Bluemix の Conversation API 利用 – オーダー完了後の画面
  13. 13. © IBM Corporation 13 text Bluemix Watson Conversation API 利用 – JSON形式のサービス資格情報が提供されるので、コピペして利用 – このURLを使ってサーバーからRESTでアクセスできる
  14. 14. © 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/
  15. 15. 15Page© 2016 IBM Corporation Watson Conversation 会話設計と機械学習
  16. 16. © IBM Corporation 16 text IBM Watson Conversation の設計の基本 –Intents 対話相手の要求を受け取る Intents を明確にする – 「ライトをつけて」 → スイッチ入 – 「音楽をかけて」 → スイッチ入 – 「音楽をもっと大きく」 → 音量を上げる –Entities 要求の対象となる Entity を 明確にする – 「ライトをつけて」 → ライト – 「音楽をかけて」 → 音楽 – 「音楽をもっと大きく」 → 音量 –Dialogs 対話の流れを設計する – 「音楽をかけて」 → 「音楽のジャンル取得」 → 指定ジャンルの音楽を開始
  17. 17. © IBM Corporation 17 text 会話設計ツールの概要 ウェブGUIツールを起動して、ワークスペースを作成 「ワークスペース」とは 一連の会話のパッケージ 例として ・ ドライブ・アシスタント ・ デリバリ注文受付 ・ 質問応対 ・ 接客応対
  18. 18. © IBM Corporation 18 text 会話設計ツールの概要 – Intents を作成するために、 Get started をクリック – Workspace ID は、APIから利用するとき必要 このアイコンは、 以前作成した workspaceを インポートする為
  19. 19. © IBM Corporation 19 text Intents(意図) の登録 受け取る意図の幅を登録 • 同じ行為を要求するにも、いろいろな言い方がある。 言い方の違いを許容して意図を理 解する 例: つけて、オン、いれて、点灯して、かけて、 • 機械学習を利用して、言葉の揺らぎを吸収して、意図を正しく理解する 初期状態 インプットが終わったら Create をクリック 類似の言葉を 「スイッチを入」れる と理解する様になる
  20. 20. © IBM Corporation 20 text Intents(意図) の登録後のテスト Watson conversationになってから、意図とおりに認識できるか、ウェブ画面から 確認できる様になった。 このアイコンをクリックで 会話のテストツールが起動
  21. 21. © IBM Corporation 21 text Intents(意図) の登録後のテスト Intents を Create すると、自動的にトレーニングが開始され、完了するまでは利用 できない。 トレーニングには、およそ数分程度要する。 トレーニング 進行中 トレーニング 完了 数分後
  22. 22. © IBM Corporation 22 text Intents(意図) の登録後のテスト 1つのIntentsだけでは、正しく動作しない。 Intents が一個しかない Workspace はこんな状態 どんなテキストを インプットしても 全部同じ判定
  23. 23. © IBM Corporation 23 text Intents(意図)の登録後のテスト 「無関係」というIntents を登録すると、無関係な言葉は処理できる様になる
  24. 24. © IBM Corporation 24 text Intents(意図) の登録 無関係な言葉は、適当に色々な単語やフレーズを入れておく
  25. 25. © IBM Corporation 25 text Entities (取得対象の情報) の登録 Intents の目的となる対象のEntitiesを登録 • 要求の対象物にも、いろいろな言い方がある。 「音楽をかけて」の表現も – ミュージック、BGM、ロック、ジャズ… などなど、同じ行為を指すものが複数 • 機械学習を利用して、色々な言い方でも、正しく理解できる様にする
  26. 26. © IBM Corporation 26 text Entities (取得対象の情報) の登録 曖昧さを含む話し言葉を、正しく受け取れる様登録 登録完了後に、Intents と同じ様に、数分間のトレーニングが始まるので注意 同意語 (慣用的に使う言葉を含む) 対象とするグループを表す言葉 機器の具体的な名前
  27. 27. © IBM Corporation 27 text 会話(Dialog)の順番を登録 – 要求の意図(Intents)と対象情報(Entities)を統合して、対話の流れをつくる – Dialog を Click して Create で作成開始
  28. 28. © IBM Corporation 28 text 会話(Dialog)の順番を登録 – 会話の流れ、意思や対象を判別するためのスキーマーを登録する – どの意図にも合致しない時のため、”Anything else” を設定する 初期状態 スイッチの入と切を設定 意図に対応 する応答文 対話相手 の意図 意図が一致し なかった場合 の対応
  29. 29. © IBM Corporation 29 text 会話(Dialog)のテスト 言い方を変えても、意図を正しく受け取る様になった でも、何のスイッチを操作するか、情報が足りない テスト結果
  30. 30. © IBM Corporation 30 text 対象となるモノの情報を受け取る様に追加する – 「行為の要求を受け取る」、「対象となるモノの情報を受け取る」ことができました。 エアコン ライト #で始まるIntents や @で始まるEntity に 登録されていないものがくると 「解りませんでした」と答える 会話アイコンのタイミングで、 機器の種類を受け取る 追加
  31. 31. © IBM Corporation 31 text 自然な会話になる様にDialog Node を追加する – 「エアコンをつけて」や「照明をつけて」と言った自然な表現をDialogで表現すると @機器の名前が該当して、 #意図が該当すれば、対応の応答 @機器の名前が該当しない場合の応答 Intent と Entity を 同時に評価できる 様になる 追加
  32. 32. © IBM Corporation 32 text 自然な会話になる様にDialog Node 追加の方法 – 要求される行為と、対象の機器を、「エアコンつけて」の様な一言で対応するには メニューを表示して Continue from… を選択 @機器のGo to condition を選択 @機器の名前が該当して、#意図が該当すれば、対応の応答 一致した Entityに置換 される
  33. 33. © IBM Corporation 33 text 自然な会話のエラー処理 – エラー処理を含んだ全体 該当の要求が無い場合の応答 該当の機器Entity が 無い場合の応答 初めからやり直し
  34. 34. 34Page© 2016 IBM Corporation Watson Conversation のAPIプログラミング
  35. 35. © IBM Corporation 35 text 最小プログラムと実行結果 最小のConversationプログラム JSON形式のレスポンス
  36. 36. © IBM Corporation 36 text 最小のConversation API プログラムの解説 最小のConversationプログラム Watson Conversation API ユーザー認証 会話のIDを指定して 対話開始 JSON形式の アウトプットを表示 workspace
  37. 37. © IBM Corporation 37 text Watson Conversation パラメータの入手先 最小のConversationプログラム 認証情報
  38. 38. © IBM Corporation 38 text Dialog と JSON出力の関係 – Intents と entities を判別して応答 重要
  39. 39. © IBM Corporation 39 text Chatbot に重要な2つのセッション • セッション1 (会話の前後関係) • 一問一答ではなく、複数の質問から答えを導く • 会話の続きを把握して、話の続きを継続する • セッション2 (マルチユーザー対応) • たくさんの人と同時に会話する – 人間だと、1度に一人の相手としか会話できない – チャットボットは、数十人〜と同時に会話 – Watson Conversation は、前者のみをサポート、後者は別途開発する必 要がある。
  40. 40. © IBM Corporation 40 text セッション1 (会話の前後関係) の例 三回連続正解すれば、勝ちの会話ゲームのDialog 1回目の解答受付 2回目の解答受付 3回目の解答受付 create new conditionの意味で 会話の終了、すなわち 最初からやりなおしを意味す る。
  41. 41. © IBM Corporation 41 text セッション1 (会話の前後関係) の例 2番目の答えが、間違ったので、負け
  42. 42. © IBM Corporation 42 text セッション1 (会話の前後関係) の例 再挑戦! 3つ正解で勝ち
  43. 43. © IBM Corporation 43 text セッション1 (会話の前後関係) の例 会話の続きかを conversation_id で判別する 会話の開始時に conversation_id を生成する 応答時に conversation_id を付与する 応答時に conversation_id を付与続ける
  44. 44. © IBM Corporation 44 text セッション1 (会話の前後関係) の例 Nodeのプログラムで書くとこんな感じ 前の応答 conversation_idを セットして続きを示す。 空の場合は、新規の会話開始 と判断して最初からスタート 次の応答のパラメータに付与 できる様に、保存しておく LINE に応答
  45. 45. © IBM Corporation 45 text セッション2 (マルチユーザー対応) 複数のLINEクライアントから、自分だけが会話している様に見せる 同時進行で、二つのセッションが独立に進行する様にプログラミングする スマホ#1 スマホ#2 10:54 10:55 10:56
  46. 46. © IBM Corporation 46 text セッション2 (マルチユーザー対応) – ユーザー・セッション管理は、LINEユーザー単位で、対話の状態を管理する – 配列users[id] に、LINE User Id 単位にconversation_id も保存して、同時に複数ユー ザーに対応させる。 新規 セッショ ン 既存 セッショ ン メッセージ送信者の LINE ID メッセージ送信者の LINE ID 単位に状態を管理 conversation_id もこの中で LINE ID単位で保持 ユーザーIDごとに応対する部 分
  47. 47. © IBM Corporation 47 text Conversation 要求の確定の判別方法 – 会話のどの時点で要求が確定したのか、プログラムで判別する方法 – 判別結果をもって、バックエンドシステムの問い合わせ • R&Rに検索させる • IoT機器へコマンドを送信する • Conversation の戻り値だけでは、確定できたか判定が難しい 確定成功のケース 確定失敗のケース
  48. 48. © IBM Corporation 48 text Conversation 要求の確定の判別方法 • 要求が確定したという情報は、これまでの設定ではJSONに出力されない! 確定成功のケース 確定失敗のケース Entities に値がセットされたら 注文確定にするには???
  49. 49. © IBM Corporation 49 text Conversation 要求の確定の判別方法 • Dialogのcontext 変数を指定することで、Chatbotプログラムへ通知できる JSONレスポンスの例 If (order == true) { で判定して Entities を取得して、IoT機器へ リクエストを送信など…
  50. 50. © IBM Corporation 50 text Conversation 要求の確定の判別方法 • context 変数は、R&Rや外部の機能を利用する際にも利用できる watson_rr : true で、判定して インプットテキストを R&R へ与えて、結果を返す R&Rの利用 R&Rへのテキスト
  51. 51. 51Page© 2016 IBM Corporation Watson Conversation + LINE Message API チャットボット開発
  52. 52. © 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
  53. 53. © IBM Corporation 53 text LINE Message API のループバック試験用コード Watson と繋がずに折り返し試験、成功したら、Watson Conversation と接続 https://www.npmjs.com/package/line-msg-api インストー ル ループバック試 験 のサンプルコー ド
  54. 54. © IBM Corporation 54 text Watson Conversation を利用したチャットボット Watson Conversation で、最高賞金1000万円の LINE BOT AWARDS にチャレ ンジしよう! https://github.com/takara9/line_chatbot
  55. 55. 55Page© 2016 IBM Corporation Watson Conversation 料金
  56. 56. © IBM Corporation 56 text Bluemix は、無料プランもあり、使えれば本格利用が可能 Bluemix のサービスを注文する際に、料金が表示されています この料金は2016年11月現在の料金です。 最新 の料金は、Bluemixの各サービス・オーダー画 面で、お確かめください。
  57. 57. 57Page© 2016 IBM Corporation Watson Conversation まとめ
  58. 58. © 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 の 無関係とか的外れといった無駄と思える内容が必須
  59. 59. © 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
  60. 60. © IBM Corporation 60 text Bluemix 一ヶ月間無料 無制限お試し利用 – クレジットカードの登録は不要です https://www.ibm.com/cloud-computing/jp/ja/bluemix/
  61. 61. © IBM Corporation 61 + Bluemix Infrastructure

×