ボットはユーザーのインテントを満たすために、ユーザーの発言から関連情報を抽出する必要があります。
発言サンプルを見てみましょう:「日曜日発のLAからNYCまでのフライトを予約してください。」。航空券を予約するというユーザーのインテントに基づいて動作するためには、ボットは出発地 (LA) 、目的地 (NYC) 、出発日 (日曜日) などのエンティティを抽出する必要があります。
ダイアログタスクでは、ユーザーの発言から取得したい重要なデータごとに、対応するエンティティノードを作成する必要があります。これらのノードにプロンプトメッセージを追加して、ユーザーが必要な値を入力できるようにすることができます。
Kore.aiは住所、空港、数量、タイムゾーンなど、30種類以上のエンティティをサポートしています。またリストからの選択、自由形式の入力、ユーザーからのファイルや画像の添付、正規表現としてエンティティを定義することができます。
ステップ2:コンポーネントプロパティを設定する
エンティティのコンポーネントプロパティでは、一般設定およびユーザーとエラープロンプトを設定することができます。
- エンティティノードの名前と表示名を入力します。エンティティ名にスペースを含めることはできません。
- タイプのドロップダウンから、期待されるユーザー入力に応じてエンティティタイプを選択します。たとえば、ユーザーに出発日を入力させたい場合、ドロップダウンから 日付 を選択します。プラットフォームは、選択されたタイプに基づく基本的な検証を行います。
エンティティタイプは、認識とシステムパフォーマンスの向上のため、ユーザーの発言から期待されるデータのタイプをNLPインタプリタに提供します。詳細については、エンティティタイプを参照してください。 - 選択されたタイプにより、エンティティをマルチアイテムとして設定し、ユーザーが複数選択できるようにするオプションがある場合があります。
- ユーザープロンプトテキストボックスに、このエンティティに対してユーザーに表示するプロンプトメッセージを入力します。たとえば、「出発日を入力してください」のように入力してください。ユーザープロンプトには、チャンネル特定のメッセージを入力することができます。詳細については、プロンプトエディタの使用を参照してください。
- エラープロンプトボックスでデフォルトのエラーメッセージを確認し、必要に応じてエラーの編集をクリックして変更します。詳細については、プロンプトエディタの使用を参照してください。
ステップ3:インスタンスプロパティを設定する
インスタンスプロパティを使用して、エンティティの値を必須にするかどうかを決定し、エンティティをキャプチャするために以前のユーザーの発言からの値を考慮するかどうかを選択します。
- エンティティノードのインスタンスプロパティアイコンをクリックします。
- ユーザー入力のセクションで、オプションを選択します。 (エンティティフローの管理方法については以下を参照してください。)
- 必須:このエンティティは必須であり、ユーザーはダイアログフローを進める前に有効なエントリーを提供しなければなりません。ユーザーの発言でエンティティのあいまいな値が検出された場合、ユーザーに解決させるためのプロンプトが表示されます。
- 任意:ユーザーはこのエンティティに対しては一度だけプロンプトが表示され、システムはユーザーによって提供されたすべての入力を処理します。ユーザーの発言でこれらのオプションのエンティティのあいまいな値が検出された場合、ユーザーに正しい値を選択させて解決するためのプロンプトが表示されます。
- 非表示:有効にすると、ユーザーが明確にエンティティの値を提供しない限り、ボットはエンティティの値の入力を要求しません。
- ユーザー入力補正 セクション (このセクションはプラットフォームの ver7.3に導入済み) で、ユーザー入力を自動補正する必要があるかどうかを定義します。このオプションは文字列型エンティティでのみ利用可能です。2つのオプションは次のとおりです。
- デフォルト設定はユーザー入力を自動補正するになっています。プラットフォームは、標準の辞書の上に、すべての同義語、タスク名、パターン単語、および世間話の発言の単語を含めるために、各ボット用のカスタム辞書を構築します。この機能がサポートされていない言語があります。詳細については、こちらを参照してください。
- ユーザー入力を自動補正しない
後方互換性を確保するために、以下の設定が既存のボットに適用されます (ver7.3より古いボットをver7.3に移行する場合) :旧状態 (エンティティ抽出) 新状態 (ユーザー入力補正) 前回の発言の未使用テキストを評価する ユーザー入力を自動補正しない 過去の発言からエンティティの抽出に使われたテキストと未使用テキストを評価する ユーザー入力を自動補正しない 前の発言を評価せず、ユーザーに明確にプロンプトする-自動補正しない[有効] ユーザー入力を自動補正しない 前の発言を評価せず、ユーザーに明確にプロンプトする-自動補正しない[無効] ユーザー入力を自動補正する
- エンティティの抽出セクションには、以下のオプションのいずれかを選択します。
- 以前の発言で未使用のテキストを評価:このオプションを選択すると、エンティティはこれまでダイアログ内の他のエンティティによって使用されなかったテキストを使用します。
- 以前の発言から未使用のテキストとエンティティの抽出に使用したテキストを評価する:ダイアログ内で別のエンティティノードにより抽出されたエンティティ値を再利用したい場合は、このオプションを選択します。
- 以前の発言を評価せず、ユーザーに明確にプロンプトする:ボットが以前のユーザーの発言を無視し、ユーザーに明確にエンティティの値を提供するように促す場合は、このオプションを選択します。
- さらに、再利用しないのオプションを選択することで、このエンティティに提供された入力を再利用して他のエンティティを抽出することからプラットフォームを制限することができます。
- これらのオプションを設定するには、高度なコントロールをクリックします。
- ユーザープロンプト:クリックして無効にするボタンを使用して、エンティティノードのこの特定のインスタンスに対してカスタムユーザープロンプトを記述します。コンポーネントプロパティパネルのユーザープロンプトセクションは無効になります。また、これらのユーザープロンプトは、ノードの他のインスタンスには適用されません。
- エラープロンプト:クリックして無効にするボタンを使用して、エンティティノードのこの特定のインスタンスに対してカスタムエラープロンプトを記述します。コンポーネントプロパティパネルのエラープロンプトセクションは無効になります。また、これらのエラープロンプトは、ノードの他のインスタンスには適用されません。
- インテント検出 (文字列と説明エンティティにのみ適用されます) 。これらのオプションのうち1つを選択すると、ボットが文字列または説明エンティティのユーザーエントリーの一部としてのエンティティに遭遇した場合の動作を決定することができます。
- 入力をエンティティ値として受入れ、検出されたインテントを破棄する:ボットはユーザーの入力を文字列または説明としてキャプチャし、インテントを無視します。
- ユーザー入力をインテントとして優先し、保留と再開設定で処理する:ユーザー入力はインテント検出とみなされ、保留と再開設定に従って処理されます。
- 処理についてユーザーに確認する:インテントかエンティティかをユーザーが指定できるようにします。
- 保留と再開でこのノードでの割り込み処理を定義するには、以下から選択します。
- タスクレベルの「保留と再開」設定を使用する:ボットは、ダイアログタスクレベルで設定された保留と再開の設定を参照します。
- このノード用にカスタマイズするオプション:このオプションを選択して同じように構成することで、このノードの保留と再開設定をカスタマイズできます。 詳細については、割り込み処理とコンテキスト切り替えの記事を参照してください。
- 優先順位 (文字列と説明ノードを除くすべてのエンティティ型に適用) :あるエンティティに対するユーザーの入力が、そのエンティティに対する有効な値と別のインテントからなる場合、『エンティティよりインテントを優先』か『インテントよりエンティティを優先』のどちらかを選択することで、動作を制御することができます。たとえば、フライト予約ボットが目的地の入力を促し、ユーザーが『バンガロール、そこの天気はどうだ?』と入力した場合、ボットの反応を定義することができます。エンティティを選択し、インテントをフォローアップインテントのスタックに追加したり、または保留と再開設定に基づいて最初にインテントを実行するかです。
ユーザー入力フロー:
ユーザーが入力を促されると、プラットフォームが行う処理は以下のようになります。
- ユーザーが有効な値を返した場合、エンティティにはその値が入力され、ダイアログフローは続行されます。
- ユーザーの応答であいまいな値が識別された場合、あいまいさ解決のためのプロンプトが表示されます。
- ユーザーが無効な発言、つまりあいまいさ解決のための有効な入力が含まれていない発言で応答した場合:
- 与えられた値がエンティティに対して有効であれば (エンティティに対して使用可能な任意の値) 、その値がエンティティに使用され、会話は継続されます。
- 与えられた値がエンティティに対して有効でない場合、そして
- 値がタスクインテント、FAQや世間話を作動させた場合、
- インテントは保留と再開の設定に従って実行され、 (エンティティを含む) ダイアログが再開されたとき (再開された場合) 、ユーザーはエンティティの値の入力を再び促されます。
- この値が、タスクインテント、FAQ、世間話を作動させない場合は、エンティティは空白のままとなり、エンティティの遷移点から会話が継続されます。
- 値がタスクインテント、FAQや世間話を作動させた場合、
”
ステップ4:接続プロパティを設定する
ダイアログタスク内の任意のエンティティまたはコンテキストオブジェクトの値に基づいて条件文を記述したり、遷移にインテントを使用することができます。
コンポーネントの遷移を設定するには、次のステップを実行します。
- デフォルト接続の下にある利用可能なノードから選択できます。
- 条件付きフローを構成するには、IFを追加をクリックします。
- 次のいずれかの基準に基づいて条件式を設定します。
- エンティティ:これらの演算子のいずれかを使用して、ダイアログ内のエンティティノードを特定の値と比較します。存在する、等しい、より大きいか等しい、より小さいか等しい、等しくない、より大きい、より小さい。それぞれのドロップダウンリストを使用するエンティティ、演算子を選択し、値ボックスに数値を入力します。例:PassengerCount (エンティティ) が5 (指定された値) より大きい (演算子)
- コンテキスト:これらの演算子のいずれかを使用して、ダイアログ内のコンテキストオブジェクトを特定の値と比較します。b>存在する、等しい、より大きいか等しい、より小さいか等しい、等しくない、より大きい、より小さい。例: Context.entity.PassengerCount (コンテキストオブジェクト) が5 (指定された値) より大きい (演算子)
- インテント:次のユーザー発言と一致するインテントを選択します。
- Then go toのドロップダウンリストから、条件式が成功した場合にダイアログフローで実行する次のノードを選択します。たとえば、PassengerCount (エンティティ) が5 (指定された値) より大きい (演算子) 場合、次に (Then go to) Offers (サブダイアログ) に進みます。
- Elseのドロップダウンリストから、条件式が失敗した場合に実行するノードを選択します。
ステップ5:NLPプロパティを設定する
- < エンティティ名>の提案同義語ボックスに、エンティティ名の同義語を入力します。各入力のあとにEnterキーを押して保存します。詳細については、同義語の管理を参照してください。
- <エンティティ名>の提案パターンで、+パターンを追加をクリックして、エンティティ用の新しいパターンを追加します。パターンフィールドが表示されます。詳細については、パターンの管理を参照してください。
- コンテキストの管理
- このエンティティが、コンテキスト出力フィールドを使用して入力されたときにコンテキストに設定されるコンテキストタグを定義します。
- コンテキストオブジェクトの一部としてキャプチャしたエンティティ値を自動的に発行します。
(コンテキストの管理についてはこちらを参照してください。)
ステップ6:IVRプロパティの設定
このタブを使用して、IVRチャンネルで使用するこのノードの入力モード、文法、プロンプト、呼び出し動作のパラメータをノードレベルで定義することができます。詳細はこちらをご覧ください。