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