AI初心者がAmazon lexを使ってレンタカーの予約用チャットBOTを作ってみた

「Amazon lex」とは?

まだ自然言語処理も機械学習も習得してないけど、チャットボットアプリ作ってみたいなぁなんて呟いてたら
Amazonに実現できそうなサービス、ありました!

以下Amazon Lexの概要から引用

音声やテキストを使用して、アプリに対話型インターフェイスを構築するサービス
音声のテキスト変換には自動音声認識 (ASR)、テキストの認識には自然言語理解 (NLU) という
高度な深層学習機能が使用でき、リアルな会話を実現するアプリを開発できます。
Amazon Alexa に使われている深層学習技術と同じ技術を利用でき、自然言語での高度な対話ボット (チャットボット) を短時間で簡単に構築できます。

どちらかというと「音声対話アプリケーションをつくる」という点に強みがあるそう。

今回はAmazon lexがどういったサービスなのかを解説するとともに、Amazon lexを使ってレンタカーの予約用のサンプルチャットBOT作成までをゴールとしてみたいと思います。

■概要

  • 数分でオリジナルのチャットボットを作成
  • いくつかのフレーズのシナリオをインプットするだけで、 音声やテキストを使用して対話できるモデルを構築し、質問したり、答えたりする事が可能
  • 深層学習や機械学習の前提知識はなくてOK

■AWSと統合できる

  • AWS Lambda、AWS MobileHub、および Amazon CloudWatch との組み込み統合を提供
  • Amazon Cognito や Amazon DynamoDB など AWS プラットフォームの他の多くのサービスと簡単に統合できる
  • AWS プラットフォームのセキュリティ、モニタリング、ユーザー認証、ビジネスロジック、ストレージ、モバイルアプリケーション開発を活用できる

■一般的なユースケース

情報ボット – 質問に回答する、顧客サポート用の自動化されたボットを構築する
アプリケーション用ボット – ピザの注文ボットまたは旅行予約ボットを構築する
企業の生産性ボット – 企業のデータに接続するカスタムボットを構築する
デバイス制御ボット – 接続済みの機器に、Amazon Lex を使って制御コマンドを発行

チャットボットでレンタカーの予約をしてみよう

まずAmazon lexのトップページから「Book trip」を選択。Bot Nameは好きな名前で。
2019-12-06_10h52_32.png

ページ下部にテキスト、音声入力のセンチメント分析をする「Sentiment analysis」の選択がありますが、今回は使わないでシンプルに試します。
IAMロールは自動で作られるようです。

COPPAは、13歳未満の子供のプライバシーを守る法律のことなので一応成人の筆者はNoを選択して
右下の「Create」ボタンを押して進んで行きます。
2019-12-06_10h54_39.png

チャットボットの中身の編集画面が出てくるのでサンプルを試すだけであれば「Build」をクリックして
2019-12-06_14h28_20.png

2019-12-06_14h42_42.png

数秒待てばbotが作成されるのでこのまま使うことができます。

「Sample utterances」に予め用意されている、和訳すると「車を予約したい」を投げれば問題なくbotが答えてくれます。

2019-12-06_11h03_31.png

上にある入力項目に要望の言葉を+ボタンを押して追加することができるようです。
試しに日本語で追加してみました。
2019-12-06_14h41_18.png

では右にあるbotにレンタカーの予約をお願いしてみます。
2019-12-06_15h02_42.png

ちゃんと返ってきましたね。「どこで車をレンタルしますか?」と聞かれています。
サンプルの5つのスロットの中の「PickUpCity(都市の選択)」に当たります。

※スロット(Amazon概要から)

インテントを実現するためにはユーザーからの情報が必要。この情報は “スロット” に取得されます。例えば、予約のインテントに対しては名前と時間を定義します。

2019-12-06_15h57_25.png

質問に答えると「何日からレンタルを開始しますか?」「何歳の方が運転されますか?」とサクサク次のスロットの質問が返ってきます。
image.png

このようにして5つのスロットのやりとりを手軽に試すことができました!

日本語で返答させてみる

promptの応答もSlot typeに合わせて好きな言葉に編集できるみたいです。
image.png
2019-12-11_17h56_20.png

■料金

  • 最初の 1 年間は、1 か月あたり最大で 10,000 回のテキストリクエストと 5,000 回の音声リクエストが無料枠
  • 無料枠を超えると使用した分のみ料金が発生
  • ボットにより処理されたテキストリクエスト、または音声リクエストの数に基づいて課金される
  • 音声リクエストは 1 回あたりの料金は 0.004 USD、テキストリクエスト 1 回あたりの料金は 0.00075 USD
  • 使用量は「処理されたリクエスト」単位として測定され、その値を月末に合計してその月の請求額が計算される

終わりに

サンプルでは必要なかったのですがちゃんとbotを作るときにはLambda関数も書く必要があるようです。
以前までは日本語に対応していなかったAmazon lexですが、2021年の4月から日本語にも対応し、東京リージョンでも使えるようになりました。

SDK(Java、JavaScript、Python、CLI、NET、Ruby on Rails、PHP、Go、CPP) を使用すれば、iOS および Android などのモバイル向けの Amazon Lex ボットを開発できます。
AWS Mobile Hub を使用すれば、モバイルプラットフォーム用ボットの構築、テスト、およびモニタリングができ、Amazon Lex ボットをテンプレートから自動的に構築できます。
ぜひお試しください。

公式サイトリンクはこちら

Amazon Lex
Amazon Lex よくある質問

この記事を書いた人

aws-recipe-user