発話をテストして対話モデルを改善する
対話モデルを作成したら、発話プロファイラーを使って発話をテストします。発話を入力し、インテントやスロットがどのように解決されるかを確認できます。発話が正しいインテントを呼び出さない場合、サンプル発話を更新して再テストできます。これらのテストはすべて、スキルのコードを書く前に実施できます。
前提条件
対話モデルの定義と作成を行ったら、発話プロファイラーを使用できます。
発話プロファイラーはエンドポイントを呼び出しません。そのため、スキルモデルのテスト用にサービスを作成する必要はありません。
発話をテストする
- 開発者コンソールのビルドページにある任意のセクションから、右上隅のモデルの評価ボタンをクリックします。
- 発話プロファイラータブを選択します。
- テストする発話を入力して、送信をクリックします。
発話プロファイラーの結果を確認する
発話を送信すると、選択したインテントとその他のインテント候補がプロファイラーの下部に表示されます。選択したインテントにダイアログモデルがある場合、発話プロファイラーにはダイアログモデルの関連プロンプトが表示され、ダイアログを続行できます。選択したインテントにダイアログモデルがない場合、「セッション」が終了し、プロンプトは表示されません。
- 選択したインテント
- この発話に対してスキルに送信されるインテントが表示されます。インテントが選択されない場合、「
なし
」と表示されます。このインテントが想定どおりではない場合、モデルのサンプル発話を更新します。 - 他のインテント候補
- Alexaがテスト発話の候補に選択したが、実際には使用しなかった他のインテントが表示されます。想定したインテントがここに表示された場合、サンプル発話を更新してあいまいさを解消する必要があります。
結果に表示される各インテントには、以下の情報が含まれます。
- インテント
- 選択されたか、候補に挙がったインテントです。対話モデルで定義したとおりに表示されます。Alexaが発話をどのインテントとも一致させられなかった場合、「なし」と表示されます。インテント名の横にあるチェックボックスは、マルチターンダイアログがインテント全体を確認したか、拒否したかのいずれかを表します。これが該当するのは、選択したインテントにダイアログモデルがあり、インテント全体の確認が必要と設定されている場合です。
- スロット
- インテントの各スロットを一覧表示し、発話から識別した該当するスロット値を表示します。スロット名の横にあるチェックボックスは、マルチターンダイアログがスロットを確認したか、拒否したかのいずれかを表します。これが該当するのは、スロットにダイアログモデルがあり、スロットの確認が必要と設定されている場合です。
- スロットが複数の値を収集するように設定されている場合、値はカンマで区切られます。複数値スロットの詳細については、Collect Multiple Values in a Slotを参照してください。
- 次のダイアログ
- ユーザーからの次の応答に対するダイアログのアクションが表示されます。インテントにダイアログモデルがある場合にのみ適用されます。ダイアログのアクションとは、ダイアログモデルで定義したプロンプトを使用して、Alexaが完了しようとするダイアログステップのことです。考えられるアクション:
ElicitSlot
– スロットの要求プロンプトをトリガーする発話です。スロットに対する有効な値で応答できます。ConfirmSlot
– スロットの確認プロンプトをトリガーする発話です。「はい」か「いいえ」で応答できます。ConfirmIntent
– インテントの確認プロンプトをトリガーする発話です。「はい」か「いいえ」で応答できます。
テスト発話の形式
テスト発話を入力する場合、書き言葉と話し言葉のいずれでも入力できます。また、数値は漢数字(「五」)で表記します。その他の例については、カスタムスロットタイプの値のルールを参照してください。
マルチターンのダイアログをテストする
スキルにダイアログモデルがある場合、発話プロファイラーを使ってマルチターンの会話フローをテストできます。ダイアログモデルのあるインテントを呼び出す発話を入力します。スキルは、ダイアログを自動でAlexaにデリゲートします。これにより、Alexaはダイアログの次の手順を判断します。プロファイラーにAlexaがユーザーから詳細情報を取得するためのプロンプトが表示されるので、それに対する応答を入力します。会話のやり取りは、ダイアログが完了になるまで続けることができます。
前述のとおり、次のダイアログ列はユーザーが行う次のダイアログのアクションを表します。たとえば、スキルに3つの必須スロット(fromCity
、toCity
、travelDate
)を持つPlanMyTrip
インテントがあるとします。次のダイアログをテストできます:
ユーザー: アレクサ、トリッププランに私が金曜日に出発すると伝えて
Alexaのプロンプト: 出発地はどこですか? (ダイアログのアクション: ElicitSlot
)
ユーザー: 神戸
Alexaのプロンプト: 旅行先はどちらですか? (ダイアログのアクション: ElicitSlot
)
ユーザー: 札幌
Alexaのプロンプト: では、2019年1月18日に神戸を出発して札幌に向かう旅程を作成します。よろしいですか? (ダイアログのアクション: ConfirmIntent
)
ユーザー: はい。
ダイアログが完了したので、発話のテストは終了します。選択したインテントにはPlanMyTrip
が表示され、3つのスロットにも値が入っています。
ダイアログをテストする際の制限事項
マルチターンのダイアログをテストする際のフローは、単純なダイアログのシナリオと同じです。つまり、コードでダイアログを処理するのではなく、ダイアログのターンを毎回デリゲートします。発話プロファイラーはエンドポイントを呼び出さないため、より複雑なダイアログはテストできません。複雑なダイアログでは、スキルのコードで実行時に判断を行ったり、他のDialogディレクティブ(Dialog.ElicitSlot
、Dialog.ConfirmSlot
、Dialog.ConfirmIntent
)を使ったりするためです。
また、発話プロファイラーはスロットの検証をサポートしません。プロンプトは、スロットの要求、スロットの確認、インテントの確認のためにのみ表示されます。
関連トピック
- スキルの対話モデルの作成
- インテント、発話、スロットの作成
- カスタムスロットタイプの作成と編集
- 必要な情報を収集、確認するためにダイアログを定義する
- 自然言語理解(NLU)モデルのバッチテスト
- スロット値の検証
- Alexaデザインガイド
- 開発者コンソールを使用したスキルの作成と管理
- スキルのビルド
最終更新日: 2022 年 06 月 30 日