ゼファーネットのロゴ

Amazon Lex インタラクション モデルを作成するためのベスト プラクティス

日付:

Amazon Lex は、音声とテキストを使用して任意のアプリケーションに会話型インターフェイスを構築するための AWS のサービスであり、企業がさまざまなチャネルにわたって洗練された自然言語のチャットボットを追加できるようにします。 Amazon Lex は、機械学習 (ML) を使用して自然言語 (通常の会話テキストと音声) を理解します。 この投稿では、ML を使用して顧客を正確に理解することで顧客を喜ばせるボットを作成するための一連のベスト プラクティスについて説明します。 これにより、ボットは、ユーザーが一連の厳密な指示に従う必要のない、より自然な会話を行うことができます。 インテリジェントな会話型インターフェイスを設計して構築することは、従来のアプリケーションや Web サイトを構築することとは大きく異なります。この投稿は、必要な新しいスキルのいくつかを開発するのに役立ちます。

この投稿で頻繁に使用する用語のいくつかを見てみましょう。

  • 発話 – ユーザーがライブ ボットに発するフレーズ。
  • サンプル発話 – ユーザーが言うかもしれないことのいくつかの例。 これらはインテントに添付され、ボットのトレーニングに使用されます。
  • 意図 – これは、ユーザーが意図したことを表し、ボットからの応答またはアクションに明確に関連付けられる必要があります。 たとえば、ユーザーの挨拶に応答するインテントや、ユーザーがコーヒーを注文したい場合に応答してアクションを実行できるインテントなどです。 ボットには、発話をマップできる XNUMX つ以上のインテントがあります。
  • スロット – 発話から特定のタイプの情報を取得できるパラメーター (例えば、約束の時間や顧客の名前)。 スロットはインテントに添付されます。
  • スロット値 – スロットがキャプチャする必要があるものの例、またはスロットの特定の値のリスト (たとえば、 , ミディアム, 小さい コーヒーサイズのスロットの値として)。

以下の画像は、これらすべての部品がどのように組み合わされてボットを構成するかを示しています。

Amazon Lex ボットとの対話が、自動音声認識、自然言語理解、フルフィルメント (会話型ユーザー エクスペリエンスを含む)、およびテキスト読み上げに戻るまでの流れを示す図

適切に設計されたボットを構築するには、いくつかの異なる考慮事項が必要です。 これには、要件の収集と検出、会話型設計、自動化およびユーザーによるテスト、ボットの監視と最適化が含まれます。 会話型デザインの側面には、インタラクション モデルと会話型または音声ユーザー エクスペリエンス (CUX/VUX) という XNUMX つの主要な要素があります。 CUX と VUX には、ボットの性格、応答の種類、会話の流れ、モダリティのバリエーション、ボットが予期しない入力や失敗を処理する方法が含まれます。 インタラクション モデルは、ユーザーが言ったこと (発話) を取り、それをユーザーの意図 (インテント) にマッピングできる部分です。 この記事では、インタラクション モデルを設計して最適化する方法だけを見ていきます。

Amazon Lex は機械学習を使用するため、ボットの作成者は機械教師の役割を果たします。 ボットを構築するときは、ボットがサポートする会話の種類について必要なすべての知識をボットに提供する必要があります。 これは、ボットの構成方法 (インテントとスロット) とボットに提供するトレーニング データ (サンプル発話とスロット値) の両方によって行われます。 次に、基礎となるサービスは、言語全般に関する知識でサービスを充実させ、与えられた正確なデータを超えてフレーズを理解できるようにします。

次のセクションに記載されているベスト プラクティスは、顧客に優れたユーザー エクスペリエンスを提供し、ユース ケースに適したボットを構築するのに役立ちます。

インテントの作成

各インテントは、ボットに理解を教える概念です。 たとえば、誰かがコーヒーを注文したり、誰かがあなたのボットに挨拶したりすることを表すインテントである可能性があります。 特定の発話がその意図に一致する必要があることをボットが認識できるように、本当に明確かつ簡単にする必要があります。

誰かがあなたに一連のフレーズを与えたインデックス カードを想像してみてください。それぞれが山に分類されていますが、他のコンテキストや詳細はありません。 次に、フレーズを含む追加のインデックスカードを提供し始め、各パイルのカードのフレーズに基づいて、それらを正しいパイルに追加するように求めました。 各山が同様の言い回しで明確な概念を表している場合、これは簡単です。 しかし、それぞれに明確なトピックがないと、それらを山に合わせる方法を見つけるのに苦労します. 「これらはすべて短い文です」または「これらだけに句読点があります」など、他の手がかりを使用し始めることさえあります。

ボットは同様の手法を使用しますが、ML はスマートですが、人間ほどスマートではなく、人間が持つすべての外部知識とコンテキストを持っているわけではないことに注意してください。 ボットが何をするかのコンテキストを持たない人間が意味を理解するのに苦労する可能性がある場合、ボットもおそらくそうするでしょう。 このセクションのベスト プラクティスは、認識可能で、目的の発話と一致する可能性が高いインテントを作成するのに役立ちます。

1. 各インテントは単一のコンセプトを表す必要があります

各インテントは、単なるトピックではなく、XNUMX つの概念またはアイデアを表す必要があります。 インテントを分離することで、それぞれの概念がより明確でまとまりのあるものになる場合は、同じアクションまたは応答にマッピングされる複数のインテントを使用してもかまいません。 いくつかのすべきこととすべきでないことを見てみましょう。

  • しないでください 複数の概念をグループ化する一般的な意図を作成します。

たとえば、次のインテントは、破損した製品に関するフレーズと、より一般的な苦情のフレーズを組み合わせています。

DamageComplaint
I've received a damaged product
i received a damaged product
I'm really frustrated
Your company is terrible at deliveries
My product is broken
I got a damaged package
I'm going to return this order
I'll never buy from you again

次のインテントは、個人情報の更新とモバイル アプリケーションの更新を組み合わせた別の例です。

UpdateNeeded
I need to update my address
Can I update the address you have for me
How do I update my telephone number
I can't get the update for the mobile app to work
Help me update my iphone app
How do I get the latest version of the mobile app

  • Do 意味が大きく異なる場合は、意図を分割します。 たとえば、 UpdateNeeded 前の例のインテントを XNUMX つのインテントに:

UpdatePersonalDetails
I need to update my address
Can I update the address you have for me
How do I update my telephone number

UpdateMobileApp
I can't get the update for the mobile app to work
Help me update my iphone app
How do I get the latest version of the mobile app

  • Do 同じアクションまたは応答が必要な場合にインテントを分割しますが、非常に異なる言い回しを使用します。 たとえば、次の XNUMX つのインテントは同じ結果になる可能性がありますが、最初のインテントは車を牽引する必要があることを直接的に伝えていますが、XNUMX つ目は車を牽引する必要があるかもしれないことを間接的にほのめかしているだけです。

RoadsideAssistanceRequested
I need to tow my car

Can I get a tow truck
Can you send someone out to get my car

RoadsideAssistanceNeeded
I've had an accident

I hit an animal
My car broke down

2. インテント間の重複を減らす

インデックス カードのスタックについてもう一度考えてみましょう。 同じ(または非常に似た)フレーズを持つカードがある場合、そのフレーズを持つ新しいカードをどのスタックに追加するかを判断するのは困難です。 この場合も同じです。 私たちは、各インテントで非常に明確なサンプル発話のセットを求めています。 以下にいくつかの戦略を示します。

  • しないでください 類似した意味を持つ非常に類似した言い回しでインテントを作成します。 たとえば、Amazon Lex はサンプル発話の範囲外で一般化するため、XNUMX つの特定の意図が明確ではないフレーズが一致しない可能性があります。以下:

BookDoctorsAppointment
I’d like to book a doctors appointment

BookBloodLabAppointment
I’d like to book a lab appointment

  • Do スロットを使用して、同じトピックにあり、類似した言い回しを持つインテントを組み合わせます。 たとえば、前の例の XNUMX つのインテントを組み合わせることで、予約のリクエストをより正確にキャプチャし、スロットを使用して正しいタイプの予約を決定できます。

BookAppointment
I’d like to book a {appointmentType} appointment

  • しないでください あるインテントが別のインテントのサブセットであるインテントを作成します。 たとえば、ボットが成長するにつれて、より詳細な情報を取得するためのインテントの作成を簡単に開始できます。

BookFlight
I'd like to book a flight
book me a round trip flight
i need to book flight one way

BookOneWayFlight
book me a one-way flight
I’d like to book a one way flight
i need to book flight one way please

  • Do スロットを使用して、インテント内のさまざまな情報のサブセットをキャプチャします。 たとえば、さまざまなインテントを使用してフライトの種類に関する情報を取得する代わりに、スロットを使用してこれを取得できます。

BookFlight
I'd like to book a flight
book me a {itineraryType} flight
i need to book flight {itineraryType}
I’d like to book a {itineraryType} flight

3. 適切な量のデータを用意する

ML では、トレーニング データが重要です。 良い結果を得るには、多くの場合、数百または数千のサンプルが必要です。 Amazon Lex は大量のデータを必要としないことを知ってうれしく思います。実際、各インテントにサンプルの発話が多すぎるのは望ましくありません。発散や混乱が生じる可能性があるからです。 ただし、ボットが学習するための明確なパターンを作成するのに十分なサンプル発話を提供することが重要です。

次の点を考慮してください

  • インテントごとに少なくとも 15 個の発話が必要です。
  • 段階的にパフォーマンスをテストできるように、発話を段階的に (10 ~ 15 のバッチで) 追加します。 発話数が多ければ多いほどよいというわけではありません。
  • 多数の発話 (100 を超える) を含むインテントを確認して、非常に類似した発話を削除できるかどうか、またはインテントを複数のインテントに分割する必要があるかどうかを評価します。
  • インテント全体で同じ発話数を維持します。 これにより、各インテントの認識のバランスが取れ、ボットが誤って特定のインテントに偏ることがなくなります。
  • 運用ボットからの学習に基づいてインテントを定期的に確認し、発言の追加と調整を続けます。 ボットの設計と開発は、終わりのない反復プロセスです。

4. データに多様性を持たせる

Amazon Lex は会話型 AI です。その主な目的は、人間とチャットすることです。 人間は物事を表現する方法に非常に多くの多様性を持っている傾向があります。 ボットを設計するときは、インテント構成でその範囲をキャプチャしていることを確認したいと考えています。 特に時間の経過とともにユーザー ベースを拡大または変更している場合は、構成とサンプル データを定期的に再評価して更新することが重要です。 次の推奨事項を検討してください。

  • Do それぞれの意図には多様な発話があります。 以下は、考慮すべき多様性の種類の例です。
    • 発話の長さ – 以下は可変長の例です。

BookFlight
book flight
I need to book a flight
I want to book a flight for my upcoming trip

    • 語彙 – これをお客様の話し方に合わせる必要があります。 これは、ユーザー テストを通じて、またはボットからの会話ログを使用して取得できます。 例えば:

OrderFlowers
I want to buy flowers
Can I order flowers
I need to get flowers

    • フレージング – 顧客が物事を表現するさまざまな方法を表す発話の組み合わせが必要です。 次の例は、「」を使用した発話を示しています。「動詞として」予約「名詞として」航空券の予約」を主語とし、公式および非公式の言葉:

BookFlight
I need to book a flight
can you help with a flight booking
Flight booking is what I am looking for
please book me a flight
I'm gonna need a flight

    • 句読点 – 一般的な用法の範囲を含める必要があります。 これが顧客が使用するものである場合は、非文法的な用法も含める必要があります (特に入力時)。 次の例を参照してください。

OrderFlowers
I want to order flowers.
i wanted to get flowers!
Get me some flowers... please!!

    • スロットの使用 – スロットを使用している場合と使用していない場合の両方を示すサンプル発話を提供します。 それらを含むスロット全体で、スロットのさまざまな組み合わせを使用します。 スロットには、発話のさまざまな場所に表示される例があることを確認してください。 例えば:

CancelAppointment
Cancel appointment
Cancel my appointment with Dr. {DoctorLastName}
Cancel appointment on {AppointmentDate} with Dr. {DoctorLastName}
Cancel my appointment on {AppointmentDate}
Can you tell Dr. {DoctorLastName} to cancel my appointment
Please cancel my doctors appointment

  • しないでください 言い回しがわずかに異なる発話を追加し続けます。 Amazon Lex は、これらの一般化を処理できます。 たとえば、次の XNUMX つのバリエーションのそれぞれは、違いが小さいため必要ありません。

DamagedProductComplaint
I've received a damaged product
I received a damaged product
Received damaged product

  • しないでください いくつかのインテントに多様性を追加しますが、他のインテントには追加しません。 私たちは、追加する多様性の形態に一貫性を持たせる必要があります。 最初からインデックス カードを覚えておいてください。発話が明確でない場合、ボットは文の長さや句読点などの他の手がかりを使用して一致を試みます。 これを有利に利用したい場合もありますが (たとえば、すべての XNUMX 単語のフレーズを特定の意図に合わせたい場合など)、誤ってこれを行うことを避けることが重要です。

スロットの作成

前のセクションで、スロットに関連するいくつかの優れたプラクティスに触れましたが、スロットのより具体的なベスト プラクティスを見てみましょう。

5. スロットには短い名詞または形容詞句を使用する

スロットは、注文するコーヒーのサイズや目的地の空港など、パラメータとして確実に取得できるものを表します。 次の点を考慮してください。

  • スロット値には名詞または短い形容詞を使用します。 キャリア フレーズなどにスロットを使用しないでください (“どうすればいいですか?」または「私は何ができますか」) これにより、発話を一般化する Amazon Lex の機能が低下するためです。 意図を満たすためにキャプチャする必要がある値のスロットを保持するようにしてください。
  • 一般的に、スロットは XNUMX つまたは XNUMX つの単語に保ちます。

6.明示的な値よりもスロットを優先する

スロットを使用して、使用しているフレーズを一般化できますが、先ほど確認した推奨事項にも固執する必要があります. スロット値をできるだけ簡単に識別できるようにするために、スロットに含まれる値をサンプル発話で直接使用することはありません。 次のヒントに注意してください。

  • しないでください サンプル発話のスロットになる可能性のある値を明示的に含めます。 例えば:

OrderFlowers
I want to buy roses
I want to buy lilies
I would love to order some orchids
I would love to order some roses

  • Do スロットを使用して繰り返しを減らします。 例えば:

OrderFlowers
I want to buy {flowers}
I would love to order some {flowers}

flowers
roses
lilies
orchids

  • しないでください サンプル発話にスロットと実際の値を混在させます。 例えば:

OrderFlowers
I want to buy {flowers}
I want to buy lilies
I would love to order some {flowers}

flowers
roses
lilies
orchids

  • しないでください スロット タイプが AlphaNumeric, Number, Date, GRXML、非常に広範なカスタム スロットであるか、略語が含まれています。 代わりに、スロットを含む会話フレーズをサンプル発話に追加して、サンプル発話を拡張します。

7. スロット値の一貫性を保つ

ボットは、入力した値から学習できることのみに基づいて、スロットに一致するかどうかを決定する必要があります。 同じ意図のスロット内に多くの類似性または重複がある場合、正しいスロットが一致するという問題が発生する可能性があります。

  • しないでください 同じインテントで重複する値を持つスロットがあります。 代わりにそれらを組み合わせてみてください。 例えば:

pets
cat
dog
goldfish

animals
horse
cat
dog

8. 単語がどのように書き起こされるかを検討する

Amazon Lex は、自動音声認識 (ASR) を使用して音声を書き起こします。 これは、音声ボットを使用している場合でも、Amazon Lex インタラクション モデルへのすべての入力がテキストとして処理されることを意味します。 文字起こしは、ユーザーが同じことを入力する方法とは異なる場合があることを覚えておく必要があります。 次の点を考慮してください。

  • 頭字語、または文字を個別に発音する必要があるその他の単語は、ピリオドとスペースで区切られた XNUMX 文字として入力します。 これにより、転写される方法により厳密に一致します。 例えば:

A. T. M.
A. W. S.
P. A.

  • 音声と文字起こしを定期的に確認して、サンプルの発話やスロットの種類を調整できるようにします。 これを行うには、会話ログをオンにし、可能な限りテキスト ログと音声ログの両方を有効にします。

9.スロットで利用できる適切なオプションを使用する

多くの異なるタイプのスロットとオプションが利用可能であり、各スロットに最適なオプションを使用すると、それらのスロット値の認識に役立ちます。 スロットの設計方法を決定する前に、時間をかけてオプションを理解する必要があります。

  • スロットを閉じた値のセットに制限するには、restrict オプションを使用します。 各値の同義語を定義できます。 これは、たとえば、レストランのメニュー項目である可能性があります。
  • 指定したサンプル値以外の値 (名前など) を識別できるようにする場合は、展開オプションを使用します。
  • 機密データを収集しているスロットの難読化をオンにして、データがログに記録されないようにします。
  •   実行時のヒント 実行時に潜在的なオプションを絞り込むことができる場合、スロット認識を改善します。 XNUMX つのスロットを選択すると、別のスロットのオプションが絞り込まれる場合があります。 たとえば、特定の種類の家具には、すべての色のオプションがない場合があります。
  •   スペルスタイル 珍しい単語や、名前などのスペルにバリエーションがある単語をキャプチャします。

10. 専門分野のカスタム語彙を使用する

ほとんどの場合、 カスタム語彙 は必須ではありませんが、ユーザーが日常言語では一般的ではない専門用語を使用する場合に役立ちます。 この場合、XNUMX つ追加すると、文字起こしが正確であることを確認するのに役立ちます。 次の点に注意してください。

  • Do カスタム語彙を使用して、音声ベースの会話で Amazon Lex によって容易に認識されない単語を追加します。 これにより、音声からテキストへの文字起こしと全体的なカスタマー エクスペリエンスが向上します。
  • しないでください カスタム語彙で「on」、「it」、「to」、「yes」、「no」などの短い単語または一般的な単語を使用します。
  • Do 単語が文字起こしで認識されない頻度と、単語が入力でどれだけまれであるかに基づいて、単語にどの程度の重みを付けるかを決定します。 発音しにくい単語には、より高い重みが必要です。 代表的なテスト セットを使用して、重みが適切かどうかを判断します。 会話ログでオーディオ ログをオンにすることで、オーディオ テスト セットを収集できます。
  • Do カタログ値のリストや、製品名や投資信託などのエンティティには、カスタム スロット タイプを使用します。

11. GRXML スロットには厳密な文法が必要

すでに文法が導入されている可能性のあるサービス (従来の自動音声認識エンジンなど) から Amazon Lex に移行する場合、再利用が可能です。 GRXML 文法 新しいボットの設計プロセス中。 ただし、まったく新しい Amazon Lex ボットを作成する場合は、GRXML を使用する前に、まず他のスロット タイプがニーズを満たすかどうかを確認することをお勧めします。 次の点を考慮してください。

  • Do テキストベースの対話ではなく、音声入力にのみ GRXML スロットを使用します。
  • しないでください GRXML ファイル (文法) 自体に GRXML スロットのキャリア フレーズを追加します。
  • Do I live in {zipCode} や {zipCode} is my zip code などのキャリア フレーズをスロットのサンプル発話に入れます。
  • Do 文法を作成して、正しいスロット値のみをキャプチャします。 たとえば、米国の XNUMX 桁の郵便番号を取得するには、正確に XNUMX 桁の値のみを受け入れる必要があります。

まとめ

この投稿では、次のボットを設計および構築する際に役立つ一連のベスト プラクティスについて説明しました。 この情報を取得するときは、ベスト プラクティスは常にコンテキストに依存することを覚えておくことが重要です。 これらはルールではなく、高性能のチャットボットを構築するためのガイドラインです。 独自のボットの構築と最適化を続けると、これらのいくつかが他のものよりもユース ケースにとって重要であることがわかり、独自のベスト プラクティスを追加する場合があります。 ボット作成者は、Amazon Lex ボットをどのように構成してユースケースに最適な結果を得るかを細かく制御できます。これらのベスト プラクティスは、開始するのに最適な場所です。

この投稿のベスト プラクティスは次のように要約できます。

  • 一貫性のある発話セットを使用して、各意図を XNUMX つの明確な概念に保つ
  • 代表的でバランスの取れた多様なサンプル発話データを使用する
  • スロットを使用してインテントをより明確にし、データをキャプチャする
  • 各スロットを明確な値のセットを持つ単一のトピックに保つ
  • ユースケースに適したタイプのスロットを知って使用する

Amazon Lex の詳細については、こちらをご覧ください。 AmazonLexを使い始める ドキュメント、チュートリアル、ハウツー ビデオ、コード サンプル、および SDK については、


著者について

ジリアン・アームストロングの写真ジリアン·アームストロング ビルダー ソリューション アーキテクトです。 彼女は、クラウドによって、より多くの人々がテクノロジーを使用して問題を解決する機会がどのように開かれているかに興奮しています。特に、会話型 AI などのコグニティブ テクノロジーによって、より人間的な方法でコンピューターとやり取りできるようになっていることに興奮しています。

スポット画像

最新のインテリジェンス

スポット画像