日本銀行様 第６回FinTechフォーラム

IBM Watsonを活用したチャットボット構築のアプローチ

日本アイ・ビー・エム株式会社
ワトソンソリューションアーキテクト

田中 孝

IBM Watsonの概要

IBM Watsonが提供するサービス
お客様固有の知識を活用してビジネス課題を解決するお客様固有のAI

IBM Cloud

会話系

API

会話Assistant

照会応答

探索・発見

知識探索系
知識探索
Discovery

テキスト分析Natural Language
Understanding

ニュース分析
Discovery News

意思決定支援

画像系

音声系

画像認識

音声認識

Visual Recognition

言語系

発話分類

Speech to Text

音声合成

Text to Speech

性格分析

Natural Language
Classifier

言語翻訳

Personality insights

Language Translator

語調分析

Tone Analyzer

ｶｽﾀﾑｱﾉﾃｰｼｮﾝ
Knowledge
Studio青色: 日本語対応済

テクノロジー：自然言語処理・知識表現・機械学習・Deep Learning
企業内固有の知識

外部の知識
文献・知見

IBM Watsonの代表的な適用パターンIoT/BigData活用
最適化判断

ロボットや機械の制御・自動化

人との自然な対話
質問応答

専門的知識に基づく
高度な意思決定

新たな発見や創造的活動

生産・物流最適化
在庫・発注判断

車の自動運転産業用ロボット制御

チャット・ボット
自然言語検索

医療診断・保険審査
法務・法規制対応

新素材研究、創薬
新レシピ作成・作曲

中核的な要素技術
画像認識
機械学習

数値

文字列
コード
構造化データ

言語理解・知識表現

感情分析・理解

音声認識
深層学習

自然言語処理様々なデータ・タイプ
画像

映像
非構造化データ

音声文書

Watson AssistantとはIBM Watsonの製品・サービス一覧
照会応答系

Watson Assistant
アプリケーションに自然言語インターフェースを追加してエンドユーザとのやり取りを自動化

データ分析系

Watson Studio
機械学習モデル向けの作成と学習、データの準備と分析のための統合環境
Watson Knowledge Catalog
分析に必要なデータを加工・カタログ化できる分析デー
タ準備環境

Watson Machine Learning
機械学習モデル・深層学習モデルの作成、学習、実行環
境Discovery
先進的な洞察エンジンを利用して、データの隠れた価値を解明し、回答やトレンドを発見する

Natural Language Understanding
自然言語処理を通じてキーワード抽出、エンティティー抽出、概念タグ付け、関係抽出などを行う

Discovery News(日本語未対応)
Discovery上に実装され、エンリッチ情報も付加されたニュースに関する公開データセット

Knowledge Studio
コーディングなしに、業務知識から生成した機械学習モ
デルで、非構造テキストデータから洞察を取得

知識探索系

画像系

Visual Recognition
画像コンテンツに含まれる意味を検出する

音声系

Speech to Text
音声をテキスト文章に変換する

Text to Speech
テキスト文章を音声に変換する

言語系

Language Translator
自然言語テキストについて他言語へ翻訳を行う

Natural Language Classifier
テキスト文章の分類を行う(質問の意図推定など)

心理系

Personality Insights
テキストから筆者の性格を推定する

Tone Analyzer(日本語未対応)
テキストから筆者の感情、社交性、文体を解析する

Watson Assistantを活用したアプリケーションアーキテクチャTwilio

Watson Assistantの適用領域

Watson AssistantWatson Assistantは、この領域において質問の表現とコンテキストを元に推論を行いユーザーと対話することに長けています。

質問頻度

Short TailLong Tail
数千〜数百
質問種類

チャットボット構築のポイント

Four capabilities differentiate
Watson from traditional
programmed computing systems

UnderstandReasonWatson understands like humans do. Watson reasons. It understands
underlying ideas and concepts. It
forms hypotheses. It infers andextracts concepts.

Learn

Interact

Watson never stops learning,getting more valuable with time.
Advancing with each new pieceof information, interaction andoutcome, it develops “expertise.”With abilities to see, talk and hear,Watson interacts with humans in anatural way.

継続的な学習
下図は質問応答ソリューションにおける一般的な回答精度推移をグラフにしたものです。
回答精度

リリース後トレーニング

初期トレーニング

初期Ground Truth
登録

Go live

クライアントトレーニング

タイムライン継続的な学習
この回答精度推移を実現するためには継続的な学習が必要ですが、“継続的な学習”を実現するために幾つかの観点を正しく理解する必要があります。
回答精度

リリース後学習a. “回答精度”とは何か
初期トレーニング

初期Ground Truth
登録

Go live

クライアントトレーニング

本番前

b. 本番前/本番後の違い

本番後
タイムライン継続的な学習a. “回答精度”とは何か
Topic

精度改善の取り組み

分布例• 正しく回答できること• 誤認識を改善• 回答文を改善

50%

OUT

ソリューションが扱うビジネスの商品やサービスに関する質問だが、現時点では回答しない（サービススコープ外）と判断しているもの。
また、意図があいまいで回答できないもの。

• 正しく棄却できること• 正しく棄却するよう改善• ON/INへ移行させる

30%

IN

ソリューションが扱うビジネスの商品やサービスに関係ない質問だが、基本サービスレベルを向上させるために回答しようとしている質問。

• 正しく回答できること• 誤認識を改善

10%

OUT

ソリューションが扱うビジネスの商品やサービスに関係ない質問、かつ現時点では回答しない（サービススコープ外）と判断しているもの。

• 正しく棄却できること• 正しく棄却するよう改善• OFF/INへ移行

10%

Scope

質問の位置付け正答の意味

IN

ソリューションが扱うビジネスの商品やサービスに関する質問、かつ正しく回答したい質問。

ONOFF継続的な学習b. 本番前/本番後の違い

本番前

本番後

段階的な拡張
下図はWatson Assistantを活用して高度なチャットボットを実現する際のアーキテクチャを概念図化したものです。
社内環境(クラウド/オンプレミス)

カスタムコンポーネント
 UI制御 API制御 連携制御オーケストレーション
コンポーネント 計算処理等

認証連携
コンポーネント

認証システム 認証・認可 ユーザー情報取得

基幹システム連携
コンポーネント

業務システム 業務情報取得
 業務情報登録/更新

 Chat Interface
 Graphic Interface

コンテンツストア

Watson Developer Cloud
Assistant API
 ユーザー発言の理解 会話フロー制御

DiscoveryAPI データ検索 データ分析

音声API、画像API、等

・・・

段階的な拡張
複雑なソリューションを実装する場合、段階的に拡張することが一般的ですが、予め拡張に伴うインパクトを想定し柔軟性の高いソリューションとしておくことが重要です。
a. チャネルの違いによる提供サービス仕様への影響

社内環境(クラウド/オンプレミス)

カスタムコンポーネント

 計算処理等 UI制御 API制御 連携制御認証連携
コンポーネント 認証・認可 ユーザー情報取得

オーケストレーション
コンポーネント Chat Interface
 Graphic Interface

認証システム基幹システム連携
コンポーネント

業務システムb. 外部連携を想定した
 業務情報取得
 業務情報登録/更新オーケストレーション層のデザイン

コンテンツストア

Watson Developer Cloud
Assistant API
 ユーザー発言の理解 会話フロー制御

DiscoveryAPI
 データ検索 データ分析

音声API、画像API、等

・・・

段階的な拡張a.チャネルの違いによる提供サービス仕様への影響
チャネル

ユーザー入力に関する特徴

出力（表示）に関する特徴

PCブラウザ• キーボードで入力するしっかりした書き言葉• 画面の広さを活かしたリッチな表現（フォント、画像、• テキスト以外の入力も可能（ボタン押下、等）等）や使い勝手のよい機能（リンク、ボタン、等）を独自に実装可能

モバイルブラウザ • モバイルデバイスからの入力に起因する比較的 • PCブラウザに機能的な特徴は類似するが、画面の狭さ短い、ラフな表現により表示上の制約が生じる• テキスト以外の入力も可能（ボタン押下、等）• モバイルデバイスからの入力に起因する比較的 • プラットフォームの提供する仕様の範囲内でのリッチメッセンジャー
短い、ラフな表現な表現（フォント、画像、等）や使い勝手のよい機能
プラットフォーム
• テキスト以外の入力も可能（ボタン押下、等）（リンク、ボタン、等）• スタンプ、絵文字などを入力可能• プラットフォームごとに差異• ブラウザ的なセッションタイムアウトの観念がない
音声対話

• 口語
• 文章として不完全な発言• 文字のみ（リンク不可、等）• ユーザーが音声合成の発言を聞いていられる時間的長さは短い

段階的な拡張b. 外部連携を想定したオーケストレーション層のデザイン
図表. Watson Conversationの拡張俯瞰

インプット

凡例

発話

顧客情報システム

他システム

分析システムWatsonAPIs

外部情報サイト

WeatherCompany(気象情報)

有人
チャット

応答

無人チャットボット・ユーザーI/F
リコメンド等

アウトプット

インプット
システムとの連携

エスカレーション

アウトプットシステムとの連携

コンタクト・センター
アシスタンス・センター

Watson API 利用・制御ロジック
感情分析

Personality
Insights(性格分析)

WatsonDiscovery

WatsonAssistantTone
Analyzer(感情分析)

契約システムその他
Speech to Text
Text to Speech(音声利用)
音声のやり取りWatson Assistantによるユーザー対話の実装方法

Assistantによるユーザー対話処理• Assistantはチャットボットを実装するためのAPIです。
• 対話ユーザーの発言の言い回しなどの多様なバリエーションの解釈含めて単独のサービスとして提供します。
• ユーザーの意図理解のため、意図分類器を使っています。
会話のやりとりを通じてコンテキストを決めていく仕組み→ ボットの実現に向いた仕組み
チャットボット
ログイン出来ません① 入力メッセージの受信
色々な言い回し“ログインができない”“ログインが失敗するけど”② Assistantの呼び出し入力メッセージを渡して対応する返答メッセージを受け取る

XXお客様サポートへのログインでよろしいでしょうか？

③ 出力メッセージの送信

Assistant
ログイン出来ません

入力された自然言語に対する学習された意図を内部的に返す

ログインの意図入力された内部的な意図に対する応答メッセージを返す

XXお客様サポートへのログインでよろしいでしょうか？

Assistantを構成する3つの要素• インテント（Intents）～ 「動詞」に該当– Assistant インスタンスが処理すべき、ユーザーが入力したテキストに含まれる「目的」が Intents(意図)です。Assistant サービスは、意図分類器により入力テキストを分類し、ユーザーが求めている意図を理解します。
• エンティティ（Entities）～「目的語」に該当– Assistantインスタンスがユーザーの入力テキストから抽出すべきキーワードのリストがEntities(エンティティ)です。入力テキストから抽出されたエンティティは、ユーザーの「目的」の対象物を示したりします。このエンティティ情報を合わせることで、Assistantサービスはユーザーの要求を完全に理解します。
• ダイアログ・ノード（Dialog）～「処理フロー」に該当– Dialog(ダイアログ)はユーザー要求(意図とエンティティ)とそれに対する回答の組み合わせです。１回のやり取りのためのひとつのダイアログ･ノードのであることも、複数の会話のやり取りのための木構造となったダイアログ･ノードもあります。
– 曖昧なリクエストで不明な情報を補完するために複数の会話のやり取りを使用することがあります。

Assistant ツール• Assistant ツール は、Assistant サービスでの会話シナリオを管理するワークスペースと、ワークスペースに含まれる「インテント」「エンティティ」「ダイアログ・ノード」を管理するための GUI ツールです。
• すべての Assistant サービスのユーザーはこの Toolkit を使用することができ、詳細なAssistant API の呼び出しやコンテンツの構造にとらわれることなく、簡単に会話シナリオの作成をすることができます。

インテント編集画面• GUIの画面で、インテントとそのインテントに該当するサンプル質問文を登録します。
• 保存すると自動的に学習が始まります。

※サンプルの質問文は、以下のようにエンティティー名を参照するような記載も可能です。

エンティティ編集画面• GUIの画面で、エンティティ、エンティティの値、各値のシノニムを定義します。

ダイアログ編集画面• ダイアログ・エディターでダイアログの流れを視覚的に開発することができます。
• 簡易テスト機能で、その場で会話の流れを確認できます。
ダイアログ・エディター

簡易テスト機能コンテキスト変数• コンテキスト変数は、複雑な会話フローを実装するに当たり、会話の状態に関連する様々な情報を保持するための仕組みです。
– 一連の会話フロー（API の呼び出し）でデータを保持して、API 呼び出し側（アプリケーション）での再利用– データの内容に応じたダイアログ･ノードを実装することでの会話フローの制御• 操作方法– API 呼び出し側（アプリケーション）– API 呼出し時に、context 変数を JSON オブジェクトとして操作– 会話フローでの設定– Assistant ツールでのJSON editor, context editorで設定(下図)– 会話フローでの参照– コンテキスト変数として参照

追加学習機能• 収集した会話履歴データによる改善機能(追加学習機能)を提供します。

分析用ダッシュボード• チャットボットの挙動を多くの視点で分析するためのダッシュボードを提供します。
• 以下の指標が取得可能です。
会話総数(Total conversations)
会話毎の平均メッセージ数(Avg. msg. per conversation)
最大会話数(Max. conversations)
理解不十分(Weak understanding)
メッセージ総数(Total messages)
アクティブユーザー数(Active users)
ユーザー毎の平均会話数(Avg. conversations per user)
上位インテント(Top intents)
上位エンティティ(Top entities)ありがとうございました