Alexa Smart Properties in Senior Livingスキルに無指名対話を追加する


Alexa Smart Properties in Senior Livingスキルに無指名対話を追加する

Alexa Smart Properties in Senior Livingスキルを作成する際、無指名対話を追加できます。無指名対話では、スキル名を発話に含めなくても、施設やそのサービスに関する情報をAlexaにたずねることができます。たとえば、ユーザーは、「アレクサ、<スキル名>にゲストWi-Fiパスワードを聞いて」と言うのではなく、「アレクサ、ゲストWi-Fiパスワードを教えて」と言うことができます。 無指名対話を追加すると、スキルは以下の機能を実行できるようになります。

  • ユーザーに施設固有の情報を提供する – たとえば、次のような質問を処理できるようになります。
    • 「アレクサ、お客様に無料の駐車場はある?」
    • 「アレクサ、ペット規則を教えて」
    • 「アレクサ、一番近い喫茶店を教えて」
  • 施設固有のリクエストをルーティングおよび実行することでスタッフをサポートする – たとえば、次のようなリクエストに対応できるようになります。
    • 「アレクサ、ドアのメンテナンスが必要です」
    • 「アレクサ、お客様の車をお客様用駐車場に登録したいです」
    • 「アレクサ、メールキーを忘れました」

以下のセクションでは、Alexa Smart Properties in Senior Livingスキルに無指名対話を追加するための要件、ベストプラクティス、手順を説明します。

要件

無指名対話をサポートするには、Alexa Smart Properties in Senior Livingスキルが次の要件を満たしている必要があります。

  • 情報 – レストラン、ショップ、観光スポットなど、ユーザーが興味を持ちそうな施設または近隣サービスに関する情報のみが含まれているスキルである必要があります。

    このスキルでは、関連施設や近隣サービスと無関係な情報(天気など)を提供してはいけません

    たとえば、スキルは次のような質問に答えることができます。

    • 一般的なヘルプ情報(「ここでは何ができますか?」
    • 施設固有の情報(「この施設は禁煙ですか?」
    • 施設固有のリクエスト(「メンテナンスのヘルプが必要です」
    • 施設近隣情報(「最寄りの総菜屋はどこですか?」

    以下の分野に関連する質問には答えられません。

    • スマートホーム(「電気を消して」
    • 音楽(「ポップミュージックをかけて」
    • 天気(「今何度ですか?」
    • 時間(「今何時ですか?」
    • タイマー(「15分タイマーをセットして」
    • アラーム(「朝6時にアラームをセットして」
    • 電話(「フロントに電話して」
    • オーディオブック(「『ハリーポッター』を読んで」
    • ビデオ(「『ザ・ロストシティ』を見せて」
    • 関連施設に関係のない情報(「ニュースはありますか?」
    • アレクサの意見(「あなたのお気に入りソングを教えて」
    • 一般的なインテント(「停止して」「中断して」「終了して」
  • 対話モデル – 対話モデルは、明確かつ簡潔でなければなりません。詳細については、対話モデルをデザインする際のベストプラクティスを参照してください。

  • ロケール – スキルが満たす必要がある要件は次のとおりです。

    • 米国では、アメリカ英語(en_US)のみでスキルを開発できます。
    • 英国では、英国英語(en_GB)のみでスキルを開発できます。
    • フランスでは、アメリカ英語(en_US)、フランス語(fr_FR)、または動的言語切り替えを使用することで、その両方でスキルを開発することができます。

対話モデルをデザインする際のベストプラクティス

ここでは、対話モデルをデザインする際のベストプラクティスを紹介します。対話モデルの精度を最大限に高めるのに役立ちます。

  • スキルの説明を明確にします。
  • 説明的なインテント名を使用します。たとえば、BookingIntentよりCarBookingIntentの方が適しています。
  • インテントの意味を反映したサンプル発話を提供します。
  • 本当の同義語を使用します。たとえば、「レンタカー」という名詞は、「車を返す」という動作と同じではありません。 新しいワードは、同義語としてではなく、別に新しいスロットを作成してください。
  • 各サンプル発話に含めるスロットは2つ以下にします。たとえば、「Can you tell me about the {amenity}?」「Can you tell me the {info type} of {amenity}?」はOKですが、「{question_type} {verb} {quantifier} {info_type} {amenity}?」などのサンプル発話は避けてください。
  • スロット値が入っている場合も含め、自然な日本語に聞こえる答えをアレクサが返せるようにします。
  • (オプション)意味は異なるが読みは同じワード(「gray」と「grey」など)に対するサポートを含めます。

スキルに以下の特性がないことを確認してください。

  • サンプル発話としてのスロット値(「{Slot}」など)。
  • 概念が混同するインテント。たとえば、場所(「レストラン」など)とアクティビティ(「夕食を食べる」など)の両方を説明するために、1つのインテントを使用しないようにします。代わりに、場所を説明するインテントを1つ(「{location}はどこにありますか?」)を作成し、アクティビティを説明するインテントとして(「どこで{activity}をすることができますか?」)を作成します。
  • スロットとしてのサンプル発話。たとえば、サンプル発話として「{helpSlot}, where is the {location}?」を作成し、スロット値として「I need some help」をリストに含めるようなことは避けてください。

以下、ベストプラクティスの対話モデル例を紹介します。

スキルに無指名対話を追加する手順

スキルに無指名対話を追加するには、次の手順に従います。

  1. スキルが要件を満たしていることを確認する
  2. 発話競合を見つけて削除する
  3. 無指名対話のインテントを指定する
  4. ゴールデン発話と見直し発話を指定する
  5. (オプション)CanFulfillIntentRequestインターフェースを実装する
  6. スキルを認定および公開のために申請する
  7. テストを始めるためにAlexaソリューションアーキテクトに連絡する
  8. スキルをローカルでテストする
  9. スキルをモニタリングする

ステップ1: スキルが要件を満たしていることを確認する

スキルが要件に示されている要件を満たしていることを確認します。対話モデル、スキルが回答できる質問の種類、サポートできるロケールなどに関する要件があります。

ステップ2: 発話競合を見つけて削除する

サンプル発話を意図せず複数のインテントにマッピングしてしまうと、Alexaが目的のスキルを適切に選択して、指定された質問に答える可能性が低くなります。スキルを公開する前に、モデル内でこのような発話競合を探して、削除してください。

発話競合を見つける方法の詳細については、モデルの発話競合の検出を参照してください。対話モデルのベストプラクティスについては、対話モデルのデザインについて対話モデルを設計する際のベストプラクティスを参照してください。

ステップ3: 無指名対話のインテントを指定する

開発者コンソールで無指名対話ツールキットを使って、無指名対話で利用するインテントを指定できます。

以下の方法で、無指名対話ツールキットにアクセスできます。

  • インテント起動フレーズを追加する開発者コンソールで対話モデルを更新するで説明されている手順に従って、無指名対話でトリガーするスキル対話モデルの各インテントに対してインテント起動フレーズを追加します。
  • 無指名対話コンテナーを追加する – 無指名対話コンテナーと、対応するインテント起動フレーズは2つの方法で追加できます。スキルの対話モデルの変更は、開発者コンソールか、Alexa Skills Kitコマンドラインインターフェースから実行できます。追加する必要があるのはインテント名のみです。インテントのサンプル発話を追加する必要はありません。

Alexaは、モデルのトレーニング中に無指名対話コンテナーを使用して、指定された無指名対話の発話がカスタムスキルにルーティングされる動作を向上させます。

次のJSONは、スキル対話用の無指名対話コンテナーを使用した簡略化された対話モデルを示しています。

ステップ4: ゴールデン発話と見直し発話を指定する

ゴールデン発話は、カンマ区切り値(CSV)ファイルで指定して、そのCSVファイルをAlexaソリューションアーキテクトに提供する必要があります。オプションで、同じファイルに見直し発話を指定することもできます。これらの発話についての説明は以下のとおりです。

  • ゴールデン発話(golden utterance)とは、Alexaが無指名対話を通じてスキル内の正しいインテントにマッピングする発話のことです。対話モデルの精度を向上させるために、よく使われる発話をゴールデン発話として指定します。ゴールデン発話には、以下のルールがあります。
    • 各ゴールデン発話は、対話モデル内の発話と完全に一致する必要があります。
    • 各スキルの無指名対話では、1言語あたり最大1,000個のゴールデン発話を持つことができます。
    • ゴールデン発話はプレーンテキスト形式で、スロットを含みません。たとえば、「朝食は何時ですか?」は有効ですが、「{meal}は何時ですか?」は無効です。
    • 数字は漢数字である必要があります($10ではなくten dollarsとします)。
    • ゴールデン発話には、句読点(かっこなど)や特殊文字を含めることはできません。たとえば、*****ではなく五つ星を使用します。このルールの例外は、英語の所有格や短縮形(romeo's)、ハイフンが入った単語(top-rated)、アクロニムやその他の語句として、1文字ずつ読み上げられるアルファベットをピリオドとスペースで区切って記述する場合(iocではなくi. o. c.)です。
    • 誤字脱字をチェックし、紛らわしいケース(handoverhand overなど)がないかどうかも確認します。疑わしい場合は、両方のケースを指定します。
  • 見直し発話(regression utterance)とは、スキル用に新しくトレーニングされるモデルに対して、Alexaがテストする発話のことです。Alexaは、無指名対話に対して、各スキルの言語ごとに5,000の見直し発話をサポートします。

CSVファイルには、以下の3つのカラムが必要です。

  • カラム1 – 発話データ型。有効な値: GOLDEN_SETまたはREGRESSION_SET
  • カラム2 – 発話。カラム1がGOLDEN_SETである場合、このカラムにはスキルインテントにルーティングしたいゴールデン発話が含まれます。カラム1がREGRESSION_SETである場合、このカラムには、モデルトレーニング中にAlexaにテストさせたい見直しテスト発話が含まれます。
  • カラム3 – 対話モデルで呼び出すインテントの名前。

以下、CSVファイルに含めることができる発話例を紹介します。

(オプション)ステップ5: CanFulfillIntentRequestインターフェースを実装する

CanFulFillIntentRequestを使って、自分のスキルに実行させたくないリクエストには「No」と応答することができます。たとえば、Alexaが処理した方が適切だと考えられるリクエストをスキルが受信した場合にCanFulFillIntentRequestを使用できます。CanFulFillIntentRequest「No」と応答することで、スキルはインテントを拒否でき、それによってAlexaはそのリクエストを別の場所にルーティングできるようになります。サンプルコードについては、GitHubのCan Fulfill Intent Requestを参照してください。

CanFulFillIntentRequestをスキルに実装する場合、CanFulFillIntentRequestの時間は2秒未満にしてください。そうでない場合、スキルがユーザーのリクエストに応えられない可能性があります。Durationメトリクスの詳細については、AWSのLambda関数のメトリクスの使用を参照してください。持続時間が2秒を超える場合は、Operating Lambda: Performance optimization – Part 1(英語)とOperating Lambda: Performance optimization – Part 2(英語)のAWSドキュメント内のガイダンスを参照して、最適化してください。

ステップ6: スキルを認定および公開のために申請する

Alexaチームが無指名対話のトレーニングを開始するには、スキルを公開する必要があります。認定プロセスを開始するには、Alexaソリューションアーキテクトに連絡する必要があります。このプロセスは、認定に合格するためにスキルを更新する必要があるかどうかによって異なりますが、(前のステップで述べたモデルトレーニングの2週間に加えて)10~15日かかると予想されます。

ステップ7: テストを始めるためにAlexaソリューションアーキテクトに連絡する

AlexaソリューションアーキテクトにスキルID、組織ID、ルームのユニットIDを送信することで、Alexaソリューションアーキテクトはスキルに対してこの機能を有効にできます。

Alexaソリューションアーキテクトがスキルの機能を有効にした後、Alexa Smart Properties for HospitalityなどのAlexa Smart Properties製品に登録されているAlexa搭載デバイスでスキルのテストを開始できます。開発者コンソールを使ってこの機能をテストすることはできません。

ステップ8: スキルをローカルでテストする

スキルに含まれるすべてのインテントから、少なくとも1つのサンプル発話をテストしてください。十分なサンプル発話テストができるように、同じ質問をさまざまなバージョンでAlexaにたずねてみてください。たとえば、質問に「please」や「some」を追加してみましょう。Alexaが目的のスキルを選択しない場合は、サンプル発話を更新してください。問題が発生した場合は、トラブルシューティングを参照してください。

スキルに以下の特性があることを確認してください。

  • 質問した後は、常に回答を待ちます。
  • 提供された情報が予想外のものであっても、役立つ回答を提供します。たとえば、数字が来るはずなのに文字が聞こえた場合、「よくわかりませんでした。何名様のご予定ですか?」といった回答を返します。 それでもまだ数字が聞こえない場合、「よくわかりませんでした。『アレクサ、フロントに電話して』とたずねてスタッフと連絡を取ってください」と答えるなどします。
  • その施設や周辺地域に関係のない質問には答えません。
  • 「終了」などの基本コマンドを常に尊重します。

ステップ9: スキルをモニタリングする

Alexa開発者コンソールを使用して、スキルメトリクスレポートを生成します。

たとえば、開発者コンソールでインテント履歴を確認することができます。このレポートには、目的のスキルにルーティングされた、集計および匿名化された頻繁な発話(たとえば、10人以上のゲストが使用した発話)が表示されます。このデータにより、ユーザーがこのスキルとどのように対話しているかがわかるため、スキルの改善点を見つけることができます。

トラブルシューティング

無指名対話対応スキルのテスト中に問題が発生する場合は、以下のトラブル解決方法を試してみてください。それでも問題が解決しない場合は、Alexaソリューションアーキテクトに連絡してください。

問題: スキルが有効になっていない

現象

スキルが質問に適切に答えません。たとえば、「アレクサ、ゲスト用Wi-Fiパスワードを教えて」とたずねたときに、Alexaが「<スキル名>がお手伝いします。このデバイスでスキルを有効にできるのは所有者のみです」と答えます。 このような回答は、その施設向けにこのスキルが有効になっていないことを意味します。

解決方法

スキルのテストに使用するAlexa搭載デバイスでスキルを有効にします。

問題: 発話がスキル対話モデルに含まれていないか、インテントが無指名対話コンテナーに進入ポイントとして含まれていない

現象

Alexaが、目的のスキルを呼び出して無指名発話を処理しません。

解決方法

無指名対話が進入ポイントとして定義しているインテントのサンプル発話として、その発話が存在していることを確認してください。

問題: スキルが無指名対話に対応していない

現象

名前を指定してスキルを開いた場合にのみ、スキルが質問に応答します。たとえば、「アレクサ、チェックアウトして」には反応しませんが、「アレクサ、<スキル名>を開いて、チェックアウトして」には反応します。

解決方法

Alexaソリューションアーキテクトに連絡して、スキルの無指名対話を有効にするよう依頼してください。

問題: スキルがCanFulfillIntentRequest「No」と反応しない

現象

スキルが施設やローカルサービスとは無関係な質問に回答します。

解決方法

CanFulfillIntentRequestに対するスキルの応答を「No」に更新します。 カスタムスキルの無指名対話を理解するを参照してください。

問題: CanFulfillIntentResponse例外

現象

スキルがCanFulfillIntentResponse例外を受信します。

解決方法

スキルの統合テストを作成してください。

問題: 発話にスロット値が含まれていない

現象

スキルがサンプル発話用のトラフィックを受信していません。

解決方法

スロット値とスロットを含むようにサンプル発話を修正します。スロット値が明確だと、Alexaが目的のスキルに質問を送信する確率が高くなります。

問題: スキルのCanFulfillmentResponseの応答に2秒以上かかる

現象

スキルはCanFulfillmentResponse「Yes」と応答しましたが、Alexaは以降の無指名対話の発話を処理するためにそのスキルを呼び出しませんでした。

解決方法

目的のスキルでCanFulfillmentResponseリクエストにすばやく応答できるようにして、Alexaがそのスキルを応答用スキルであると認識できるようにします。Lambda関数を使用する場合は、プロビジョニングされた同時実行を利用して、Lambdaのコールドスタート問題を回避してください。詳細については、Operating Lambda: Performance optimization – Part 1(英語)とOperating Lambda: Performance optimization – Part 2(英語)のAWSドキュメント内のガイダンスを参照してください。


最終更新日: 2023 年 03 月 06 日