Amazon Web Services ブログ

Amazon Lex ボット用のビジネスインテリジェンスダッシュボードの構築



お客様のユーザーエクスペリエンスを向上させることを目的に、Amazon Lex を使用した会話型インターフェースを公開したとします。どれだけうまく機能しているかを追跡しようと考えています。お客様は、有益であると感じるでしょうか? お客様は、どのように使用しているでしょうか? お客様は、気に入って戻ってくれるでしょうか? やり取りを分析して機能を追加するにはどうすればよいでしょうか? ボットとユーザーのやり取りを明確に把握していないと、こうした質問に答えるのは困難です。Amazon Lex の会話ログが最近リリースされたことで、実際のボットのやり取りに基づいて、Lex ボットのパフォーマンスをほぼリアルタイムで簡単に確認できるようになりました。会話ログを使用すると、すべてのボットのやり取りを Amazon CloudWatch Logs ロググループに保存することができます。この会話データを使用してボットを監視し、対処可能な洞察を得てボットを強化することで、お客様のユーザーエクスペリエンスを向上させることができます。

以前のブログ記事で、会話ログを有効にし、CloudWatch Logs Insights を使用してボットのやり取りを分析する方法を示しました。この記事では、Amazon QuickSight ダッシュボードと統合してビジネスに関する洞察を得る方法を示して、さらに一歩先へ進みます。Amazon QuickSight を使用すると、インタラクティブなダッシュボードを簡単に作成して公開できます。視覚化、図表、テーブルなどの広範なライブラリから選択し、ドリルダウンやフィルターなどのインタラクティブな機能を追加できます。

ソリューションのアーキテクチャ

このビジネスインテリジェンスダッシュボードソリューションでは、Amazon Kinesis Data Firehose を使用して、会話ログデータを Amazon CloudWatch Logs から Amazon S3 バケットへ継続的にストリーミングします。Firehose 配信ストリームは、サーバーレス AWS Lambda 関数を使用して、未加工データを JSON データレコードに変換します。次に、AWS Glue クローラを使用して、このデータのメタデータを自動的に検出およびカタログ化し、Amazon Athena で照会できるようにします。以下には、これらのすべての AWS リソースと、必要な AWS Identity and Access Management (IAM) ロールを含む AWS CloudFormation スタックを作成するテンプレートが含まれています。これらのリソースを配置すると、Amazon QuickSight でダッシュボードを作成し、データソースとして Athena に接続することができます。

このソリューションにより、Amazon Lex の会話ログデータを使用して、Amazon QuickSight でライブの視覚化を行うことが可能になります。たとえば、前述したブログ記事に記載されている AutoLoanBot を使用すると、ユーザーの要求をインテントごと、またはインテントとユーザーごとに視覚化して、ボットの使用状況とユーザープロファイルを把握できます。  次のダッシュボードは、こうした視覚化を示しています。

このダッシュボードは、支払いアクティビティとローン申請は最も頻繁に使用されているのに対して、ローン残高の確認はあまり頻繁には使用されていないことを示しています。

ソリューションのデプロイ

開始するために、米国東部 (バージニア北部) リージョンで Amazon Lex ボットを設定し、会話ログを有効にします。

この例では AutoLoanBot を使用していますが、このソリューションを使用して、Amazon Lex ボット用の Amazon QuickSight ダッシュボードを構築することもできます。

AutoLoanBot は、ユーザーがローン申請を開始したり、ローンの未払い残高を確認したり、ローンの支払いをしたりできるようにする会話型インターフェースを実装しています。含まれるインテントは以下のとおりです。

  • Welcome – ユーザーからの最初の挨拶に応答します。
  • ApplyLoan – ユーザーの名前、住所、社会保障番号などの情報を引き出し、新しい融資リクエストを作成します。
  • PayInstallment – ユーザーの口座番号、社会保障番号の最後の 4 桁、支払いに関する情報などをキャプチャーし、毎月の支払額を計算します。
  • CheckBalance – ユーザーの口座番号と社会保障番号の最後の 4 桁を使って、未払い残高を伝えます。
  • Fallback – ボットが他のインテントで処理できない要求に応答します。

このソリューションをデプロイするには、次の手順を実行します。

  1. ボットと会話ログを設定したら、次のボタンを使用して us-east-1 で AWS CloudFormation スタックを起動します。
  2. [Stack name] に、スタックの名前を入力します。この記事では、lex-logs-analysis という名前を使用します。
  3. [Lex Bot] の下の [Bot] に、ボットの名前を入力します。
  4. [CloudWatch Log Group for Lex Conversation Logs] には、会話ログを設定した CloudWatch Logs ロググループの名前を入力します。

この記事では、ボット AutoLoanBot とロググループ car-loan-bot-text-logs を使用します。

  1. [Next] を選択します。
  2. CloudFormation スタックに必要なタグを追加します。
  3. [Next] を選択します。
  4. IAM ロールが作成されることを確認します。
  5. [Create stack] を選択します。

数分後、スタックが完成し、以下のリソースが含まれるようになります。

  • Firehose 配信ストリーム
  • AWS Lambda 変換関数
  • Lambda 関数の CloudWatch Logs ロググループ
  • S3 バケット
  • AWS Glue クローラとデータベース
  • 4 つの IAM ロール

このソリューションは、Lambda ブループリント関数 kinesis-firehose-cloudwatch-logs-processor-python を使用します。この関数は、Firehose 配信ストリームからの未加工データを、バッチにグループ化された個々の JSON データレコードに変換します。詳細については、Amazon Kinesis Data Firehose データ変換を参照してください。

また、AWS CloudFormation は、Firehose 配信ストリームを CloudWatch Logs ロググループにも正常にサブスクライブしているはずです。たとえば、次の図のように AWS CloudWatch Logs コンソールでサブスクリプションを確認することができます。

この時点で、ボットをテストし、Firehose 配信ストリームを介して CloudWatch Logs から S3 に流れるログデータを確認し、Athena を使用して会話ログデータを照会できるはずです。AutoLoanBot を使用している場合は、テストスクリプトを使用してログデータを生成できます (会話ログには、AWS マネジメントコンソールを通じたやり取りは記録されません)。テストスクリプトをダウンロードするには、test-bot.zip を選択してください。

Firehose 配信ストリームは毎分実行され、データを S3 バケットにストリーミングします。クローラは 10 分ごとに実行されるように設定されています (コンソールからいつでも手動で実行することも可能です)。クローラを実行すると、Athena でデータを照会できます。  次のスクリーンショットは、Athena クエリエディタで試すことができるテストクエリを示しています。

このクエリは、一部のユーザーがローン残高を確認しようとして問題に直面していることを示しています。そこで、Amazon QuickSight を設定して、このデータのより詳細な分析と視覚化を行うことができます。  これを行うには、以下の手順を実行してください。

  1. コンソールから、Amazon QuickSight を起動します。

まだ QuickSight を使用していない場合は、Amazon QuickSight の Standard エディションを使用して無料トライアルを開始できます。その場合、アカウント名と通知用 E メールアドレスを指定する必要があります。データソースとして Amazon Athena を選択することに加えて、会話ログデータを保存する S3 バケットを必ず含めてください (バケット名は、CloudFormation スタックで見つけることができます)。

アカウントの設定には数分かかる場合があります。

  1. アカウントの準備ができたら、[New analysis] を選択します。
  2. [New data set] を選択します。
  3. [Anthena] を選択します。
  4. データソース auto-loan-bot-logs を指定します。
  5. [Validate connection] を選択し、 Athena への接続を確認します。
  6. [Create data source] を選択します。
  7. AWS Glue が作成したデータベースを選択します (名前に lexlogsdatabase が含まれます)。

視覚化の追加

これで、Amazon QuickSight に視覚化を追加できます。上記の 2 つの視覚化を作成するには、以下の手順を実行します。

  1. ダッシュボードの上部にある [+ Add] アイコンから、[Add visual] を選択します。
  2. [intent] フィールドをビジュアルの Y 軸までドラッグします。
  3. 最初の 2 つの手順を繰り返して、さらにビジュアルを追加します。
  4. 2 番目のビジュアルでは、userid を [Group/Color] フィールドまでドラッグします。
  5. ビジュアルを並べ替えるには、requestid をそれぞれの [Value] フィールドまでドラッグします。

追加の視覚化をいくつか作成して、ボットのパフォーマンスに関する洞察を得ることができます。たとえば、fallback インテントに分類されたリクエストを掘り下げることにより、ボットがユーザーに対してどれだけ効果的に応答しているかを評価できます。これを行うには、前述の視覚化を複製しますが、intent のディメンジョンを inputTranscript に置き換え、missedUtterance = 1 というフィルターを追加します。  次のグラフは、見逃された発話の要約、ユーザーごとの見逃された発話を示しています。

また、見逃された単語の単語クラウド視覚化を作成することもできます。これを行うには、以下の手順を実行してください。

  1. ダッシュボードの上部にある [+ Add] アイコンから、[Add visual] を選択します。
  2. ビジュアルのタイプを Word Cloud に変更します。
  3. [inputTranscript] を [Group By] までドラッグします。
  4. missedUtterance = 1 というフィルターを追加します。
  5. [Apply] を選択します。
  6. 単語クラウドのフォーマットを調整するには、右上隅のドロップダウンメニューから [Format visual] を選択します。
  7. 左側のツールバーで、必要なフォーマットオプションを選択します。

次のスクリーンショットは、見逃された発話の単語クラウド視覚化を示しています。

このタイプの視覚化は、ユーザーがボットとどのようにやり取りしているかを分かりやすく表示します。この例では、この洞察を使用して、既存の CheckBalance インテントを改善し、ユーザーが自動支払いを設定するのを助けるインテントを実装し、オートローンサービスに関する一般的な質問を行い、さらに住宅ローン申請を処理する関連ボットにユーザーをリダイレクトできます。

まとめ

ボットのやり取りを監視することは、効果的な会話インターフェースを構築する上で重要です。ユーザーが何をしようとしているか、ユーザーエクスペリエンスを合理化する方法を理解できます。  Amazon QuickSight と Amazon Lex の会話ログを組み合わせると、Kinesis Data Firehose を介して会話データをストリーミングすることで、ダッシュボードを簡単に作成できます。この分析ソリューションは、Amazon Lex ボットの上に重ねることができます。ぜひ、お試しください。


著者について

Brian Yost は、AWS プロフェッショナルサービスのシニアコンサルタントです。彼は、マウンテンバイク、自家製ビール醸造、テクノロジーのティンカリングが趣味です。

 

 

 

Michal Marshall は、Amazon AI のシニアソフトウェア開発エンジニアです。彼は、Amazon AI 向けの分散型スケーラブルシステムの構築と保守のために働いています。余暇には、スポーツ、スノーボード、山でのバックパッキングを楽しんでいます。