発話をテストして対話モデルを改善する



発話をテストして対話モデルを改善する

対話モデルを作成したら、発話プロファイラーを使って発話をテストします。発話を入力し、インテントやスロットがどのように解決されるかを確認できます。発話が正しいインテントを呼び出さない場合、サンプル発話を更新して再テストできます。これらのテストはすべて、スキルのコードを書く前に実施できます。

前提条件

対話モデルの定義と作成を行ったら、発話プロファイラーを使用できます。

発話プロファイラーはエンドポイントを呼び出しません。そのため、スキルモデルのテスト用にサービスを作成する必要はありません。

発話をテストする

  1. 開発者コンソールのビルドページにある任意のセクションから、右上隅のモデルの評価ボタンをクリックします。
  2. 発話プロファイラータブを選択します。
  3. テストする発話を入力して、送信をクリックします。

発話プロファイラーの結果を確認する

発話を送信すると、選択したインテントとその他のインテント候補がプロファイラーの下部に表示されます。選択したインテントにダイアログモデルがある場合、発話プロファイラーにはダイアログモデルの関連プロンプトが表示され、ダイアログを続行できます。選択したインテントにダイアログモデルがない場合、「セッション」が終了し、プロンプトは表示されません。

選択したインテント
この発話に対してスキルに送信されるインテントが表示されます。インテントが選択されない場合、「なし」と表示されます。このインテントが想定どおりではない場合、モデルのサンプル発話を更新します。
他のインテント候補
Alexaがテスト発話の候補に選択したが、実際には使用しなかった他のインテントが表示されます。想定したインテントがここに表示された場合、サンプル発話を更新してあいまいさを解消する必要があります。

結果に表示される各インテントには、以下の情報が含まれます。

インテント
選択されたか、候補に挙がったインテントです。対話モデルで定義したとおりに表示されます。Alexaが発話をどのインテントとも一致させられなかった場合、「なし」と表示されます。インテント名の横にあるチェックボックスは、マルチターンダイアログがインテント全体を確認したか、拒否したかのいずれかを表します。これが該当するのは、選択したインテントにダイアログモデルがあり、インテント全体の確認が必要と設定されている場合です。
スロット
インテントの各スロットを一覧表示し、発話から識別した該当するスロット値を表示します。スロット名の横にあるチェックボックスは、マルチターンダイアログがスロットを確認したか、拒否したかのいずれかを表します。これが該当するのは、スロットにダイアログモデルがあり、スロットの確認が必要と設定されている場合です。
次のダイアログ
ユーザーからの次の応答に対するダイアログのアクションが表示されます。インテントにダイアログモデルがある場合にのみ適用されます。ダイアログのアクションとは、ダイアログモデルで定義したプロンプトを使用して、Alexaが完了しようとするダイアログステップのことです。考えられるアクション:
インテントの確認とスロット(`menu`)の確認の両方が有効にされたインテントの発話プロファイラー
インテントの確認とスロット(`menu`)の確認の両方が有効にされたインテントの発話プロファイラー

テスト発話の形式

テスト発話を入力する場合、書き言葉と話し言葉のいずれでも入力できます。また、数値は漢数字(「五」)で表記します。その他の例については、カスタムスロットタイプの値のルールを参照してください。

マルチターンのダイアログをテストする

スキルにダイアログモデルがある場合、発話プロファイラーを使ってマルチターンの会話フローをテストできます。ダイアログモデルのあるインテントを呼び出す発話を入力します。スキルは、ダイアログを自動でAlexaにデリゲートします。これにより、Alexaはダイアログの次の手順を判断します。プロファイラーにAlexaがユーザーから詳細情報を取得するためのプロンプトが表示されるので、それに対する応答を入力します。会話のやり取りは、ダイアログが完了になるまで続けることができます。

前述のとおり、次のダイアログ列はユーザーが行う次のダイアログのアクションを表します。たとえば、スキルに3つの必須スロット(fromCitytoCitytravelDate)を持つPlanMyTripインテントがあるとします。次のダイアログをテストできます:

ユーザー: アレクサ、トリッププランに私が金曜日に出発すると伝えて
Alexaのプロンプト: 出発地はどこですか? (ダイアログのアクション: ElicitSlot
ユーザー: 神戸
Alexaのプロンプト: 旅行先はどちらですか? (ダイアログのアクション: ElicitSlot
ユーザー: 札幌
Alexaのプロンプト: では、2019年1月18日に神戸を出発して札幌に向かう旅程を作成します。よろしいですか? (ダイアログのアクション: ConfirmIntent
ユーザー: はい。
ダイアログが完了したので、発話のテストは終了します。選択したインテントにはPlanMyTripが表示され、3つのスロットにも値が入っています。

ダイアログをテストする際の制限事項

マルチターンのダイアログをテストする際のフローは、単純なダイアログのシナリオと同じです。つまり、コードでダイアログを処理するのではなく、ダイアログのターンを毎回デリゲートします。発話プロファイラーはエンドポイントを呼び出さないため、より複雑なダイアログはテストできません。複雑なダイアログでは、スキルのコードで実行時に判断を行ったり、他のDialogディレクティブDialog.ElicitSlotDialog.ConfirmSlotDialog.ConfirmIntent)を使ったりするためです。

また、発話プロファイラーはスロットの検証をサポートしません。プロンプトは、スロットの要求、スロットの確認、インテントの確認のためにのみ表示されます。