Amazon Web Services ブログ

Amazon Lex が日本語に対応。東京リージョンでお使いいただけます

みなさん、こんにちは。アマゾン ウェブ サービス ジャパン、シニアエバンジェリストの亀田です。

Amazon Lex が日本語に対応し、東京リージョンでお使いいただけますのでお知らせいたします。

Amazon Lex

Amazon Lex はチャットボット向けの会話型 AIを提供するサービスで、Alexaと同じテクノロジーを利用した会話インターフェースの構築が可能となります。 音声をテキストに変換するためのディープラーニングを利用した自動音声認識(ASR)と、テキストの意図を認識する自然言語理解(NLU)機能が提供されているため、文字チャットだけではなく、音声入力により、リアルな会話の相互作用を備えたアプリケーションの構築が簡単に行えます。音声には、Amazon Pollyが用いられ、自然な日本語でユーザーに応答し、また発音のカスタマイズ等も可能です。

2021年4月2日現在、日本語の他に、英語、フランス語、ドイツ語、イタリア語、スペイン語に対応しています。

Lex には皆さんの開発をより簡便化させるために、いくつかのテンプレートがあらかじめ備わっています。ここでは、旅行予約を行うテンプレートをみてみます。

Intents, Utterances, Slots, Prompts, Fulfillment という用語がでています。これらはそれぞれ以下の目的で用いられます。

  • Intents : 花の注文やホテルの予約など、ユーザーが達成したい目標です。ボットには少なくとも1つのインテントが必要となります。デフォルトでは、すべてのボットに単一の組み込みインテントであるフォールバックインテントが含まれています。このインテントは、Lexが他のインテントを認識しない場合に使用されます。たとえば、ユーザーがホテルの予約インテントに「花を注文したい」と言うと、フォールバックインテントがトリガーされます。ここに新規のインテントを追加し会話インターフェースを作りこんでいくことになります。
  • Utterances: ユーザーがインテントをトリガーするために使用すると予想される10個以上のフレーズを提供する必要があります。例えば、ホテルを予約したい場合、「旅行」から会話を始めるユーザーもいれば、「ホテル予約」と指示を出すユーザーもいます。なるべく多くのフレーズを設定することで、ユーザーの意図を取り組みやすいインターフェースを作ることができます。Lexは、これらのフレーズから一般化して、ユーザーがインテントをトリガーしたいことを認識します。
  • Slots: 上記utterancesの中にも含まれるケースがある、Lexの会話ボットが実現したい具体的な内容です。例えば、ホテルの予約ボットであれば、「場所」、「日付」、「宿泊日数」、「部屋の種類」などです。Lexはこれらの情報を取得するために、ユーザーとの会話を行う、と言い換えることができます。

  • Prompts: Prompts は上記Slotsと連携して、Lexが発話してユーザーに質問を行う会話です。上記の例でいうと「Location」というSlotsに対して、Lexは「どちらの都市に滞在しますか?」とユーザーに話しかけます。
  • Fulfillment:Slotsで設定された必要な情報が集まった時点で、Lexか行う処理を定義します。以下の例であれば、ホテルの予約を行うために、空き部屋や価格照会、予約行為を行うAWS Lambda関数を起動します。

Lexにはその他より良い音声ないしはチャットインターフェースを実現させるための機能が備わっています。

例えば、「Sentiment analysis」の機能は、ユーザーの会話やチャットに入力された文字列に対して、感情分析を行います。ユーザーがNegativeな入力を多くしている場合、会話インターフェースをより洗練させるヒントがそこから得られるかもしれません。現在日本語音声は女性であれば「Mizuki」、男性であれば「Takumi」という2つのエンジンが備わっています。ユーザーが途中で気が変わり会話をやめた場合、処理を終了させるタイムアウトのコントロールなども可能です。

以下のようにマネージメントコンソールで現在開発中の会話インターフェース試すこともできます。チャットだけではなく、ブラウザ経由で音声をマイクから拾い、音声によるテストも可能です。

作成されたBotはマネージメントコンソール右上から、「Publish」ボタンをおすと、公開されます。

フロントエンドへの実行は以下のドキュメントに詳細が記載されています。

https://docs.aws.amazon.com/lex/latest/dg/examples.html

例えば、AWS Amplifyへ組み込む場合、以下のような内容を記載し設定します。以下の例では、Amazon Cognitoを用いて認証を行い、その後LexのBotを呼び出しています。LexのBotはARNではなく、aliasで呼び出しています。

import Amplify from 'aws-amplify';

Amplify.configure({
  Auth: {
    identityPoolId: 'ap-northeast-1:xxx-xxx-xxx-xxx-xxx',
    region: 'ap-northeast-1'
  },
  Interactions: {
    bots: {
      "BookTrip": {
        "name": "BookTrip",
        "alias": "$LATEST",
        "region": "ap-northeast-1",
      },
    }
  }
});

くわしくはこちらをご覧ください。

– シニアエバンジェリスト 亀田