インテント

インテントによっては、1 回の会話ターンにおけるエンドユーザーの意図(含意)を分類します。 ES インテントと比較すると、CX インテントは簡素化され、より再利用が可能なリソースになりました。

インテントには以下のデータが含まれます。

用語 定義
トレーニング フレーズ トレーニング フレーズは、エンドユーザーの発話に含まれる可能性があるフレーズのサンプルであり、エンドユーザー入力と呼ばれます。エンドユーザー入力がこれらのフレーズのいずれかと似ている場合、Dialogflow によりインテントと照合されます。考えられるすべてのサンプルを定義する必要はありません。Dialogflow の組み込み機械学習機能によって類似するフレーズが追加され、リストが拡張されます。
パラメータ トレーニング フレーズを定義してパラメータを使用し、エンドユーザー入力の特定部分から値を抽出する。

インテント マッチング

エンドユーザーが何かを書いたり読んだりすると(それをエンドユーザー入力と呼びます)、Dialogflow は入力をインテントのトレーニング フレーズと比較して、最も一致するものを見つけます。このプロセスはインテント マッチングと呼ばれます。インテント マッチングは、スコープ内のインテント ルート(インテント要件のある状態ハンドラ)に関連付けられたインテントに対してのみ行われます。

一致するインテントを検索する場合、Dialogflow はインテント検出信頼度(信頼スコアとも呼ばれます)を使用して一致候補をスコア付けします。この値の範囲は、0.0(完全に不確実)~1.0(完全に確実)です。インテントがスコア付けされると、次の 2 つの結果が考えられます。

  • 最高スコアのインテントの信頼スコアが分類しきい値設定以上の場合は、一致として返されます。
  • しきい値を満たすインテントがない場合、不一致イベントが呼び出されます。

トレーニング フレーズ

トレーニング フレーズは、エンドユーザー入力と呼ばれるエンドユーザーの発話に含まれる可能性のあるフレーズのサンプル フレーズです。目的ごとに、多くのトレーニング フレーズを作成します。エンドユーザー入力がこれらのフレーズのいずれかと似ている場合、Dialogflow によりインテントと照合されます。

たとえば、「ピザが欲しい」というトレーニング フレーズは、「ピザを入手する」や「ピザを注文する」など、そのフレーズに類似したエンドユーザーの入力を認識するようトレーニングします。

考えられるすべてのサンプルを定義する必要はありません。Dialogflow の組み込み機械学習機能によって類似するフレーズが追加され、ユーザーのリストが拡張されます。エージェントがさまざまなエンドユーザー入力を認識できるように、少なくとも 10~20 個(インテントの複雑さによって異なります)のトレーニング フレーズを作成する必要があります。たとえば、エンドユーザーの好きな色に関する入力をインテントに認識させるには、次のトレーニングフレーズを定義します。

  • 「I like red」
  • 「My favorite color is yellow」
  • 「black」
  • 「Blue is my favorite」

トレーニング フレーズにアノテーションを付ける

トレーニング フレーズの一部にアノテーションを付け、関連するパラメータを構成することによってデータの抽出方法を制御します。

たとえば、「What is the forecast tomorrow for Tokyo?」(東京の明日の予報は?)といったトレーニング フレーズを考えてみましょう。「tomorrow」には date パラメータ、「Tokyo」には location パラメータをそれぞれアノテーションとして付ける必要があります。トレーニング フレーズの一部にアノテーションを付けると、Dialogflow は、実行時にエンドユーザーが提供する実際の値の例であることを認識します。「What is the forecast on Friday for Sydney?」(金曜日のシドニーでの予報は?)などのエンドユーザー入力では、Dialogflow は「Friday」(金曜日)から date パラメータ、「Sydney」から location パラメータをそれぞれ抽出します。

コンソールを使用してエージェントを作成するときに、既存のエンティティ タイプと一致するテキストを含むトレーニング フレーズを追加すると、パラメータが自動的に作成されます。これらの部分はコンソールでハイライト表示されます。必要に応じて、これらのアノテーションやパラメータを編集できます。

トレーニング フレーズにコンソールで手動でアノテーションを追加するには、次の手順を行います。

  1. トレーニング フレーズのアノテーションを追加する部分を選択します。
  2. リストから目的のエンティティ タイプを選択します。
  3. 以下のパラメータ表にパラメータが作成されます。

API を使用してエージェントを作成する場合は、トレーニングフレーズ部分に手動でアノテーションを付ける必要があります。Intent 型で使用されている TrainingPhrase 型をご覧ください。

インテント リファレンスのプロトコルとバージョンを選択:

プロトコル V3 V3beta1
REST インテント リソース インテント リソース
RPC インテント インターフェース インテント インターフェース
C# 提供なし 利用できません
Go 提供なし 利用できません
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 提供なし 利用できません
Python IntentsClient IntentsClient
Ruby 提供なし 利用できません

トレーニング フレーズによって作成された暗黙的なエンティティ

ほとんどのカスタム エンティティは、エンティティ タイプの作成とエンティティ エントリの追加によって明示的に定義されます。ただし、カスタム エンティティには暗黙的な値が含まれる場合もあります。これは、トレーニング フレーズのテキストにアノテーションを付けるときに、アノテーション付きテキストが選択したエンティティ タイプで定義された値ではない場合に発生します。アノテーション付きテキストは、暗黙的に追加されたエンティティ エントリのエンティティ参照値になります。エンティティ タイプがマップ エンティティの場合、テキストもエンティティ エントリの類義語になります。

Default Welcome Intent

エージェントを作成すると、デフォルトのウェルカム インテントが作成されます。一部の言語では、インテントに、最初のエンドユーザー入力と照合させるための簡単なトレーニング フレーズ(「Hi」や「Hello」など)があります。このインテントを必要に応じて編集できます。

API を使用すると、次のインテント ID でこのインテントを参照できます。

00000000-0000-0000-0000-000000000000

デフォルトのネガティブ インテント

エージェントを作成すると、デフォルトのネガティブ インテントが作成されます。このインテントに、ネガティブ サンプルとして機能するトレーニング フレーズを追加できます。エンドユーザーの入力が通常のインテントのトレーニング フレーズとわずかに似ていても、それらの表現を通常のインテントにマッチングさせたくない場合があります。

たとえば、部屋予約エージェントに「I'd like to book a room.」などのトレーニング フレーズが含まれているとします。一方で、エンドユーザーが部屋に関する本を購入したい場合、「I'd like to buy a book about rooms.」と言うかもしれません。このエンドユーザーの入力がインテントにマッチングしないようにするには、そのフレーズをネガティブ サンプルとして追加します。

さらに、どのインテントにも一致しないように、エージェントのスコープ外である可能性のあるフレーズを追加する必要もあります。ただし、これらのフレーズを大量に追加することは避けてください。たとえば、10,000 個のデフォルトのネガティブ インテント フレーズを定義すると、通常のインテント マッチングに悪影響を与えます。

これらのフレーズは定期的に確認してください。これらのエージェントの中には、当初はエージェントの対象外であったものの、その後にインテントに追加されたものもあるためです。

デフォルトのネガティブ インテントは、すべてのインテント マッチングに影響します。フレーズを追加すると、あるインテントでは一致しますが、別のインテントでは一致しないことがあります。 たとえば、海外旅行のインテントに一致しないように、デフォルトのネガティブ インテントに「国際電話」を追加できます。ただし、そのフレーズによって国際電話のインテントとも一致しなくなります。

API を使用すると、次のインテント ID でこのインテントを参照できます。

00000000-0000-0000-0000-000000000001

キャンセル インテント

会話中、エンドユーザーが現在の会話トピックをキャンセルする場合があります。たとえば、現在アクティブなページは新しい予約の日付を要求していますが、エンドユーザーが新しい予約を作成しないことを決定した場合です。エンドユーザーが、「キャンセル」や「新しい予約を希望しません」などの発言を行うことがあります。この状況に対処するには、エージェントに 1 つ以上のキャンセル インテントを作成します。これらのキャンセル インテントには任意の名前を付けることができますが、名前に「cancel」を含めることが一般的です。これらのキャンセル インテントを、会話の関連ポイントの範囲内にあるインテント ルートに関連付ける必要があります。これらのインテント ルートは、キャンセルを処理するための適切なページに遷移する必要があります。

キャンセル インテントのトレーニング フレーズは、一般的なキャンセルの行とトピック固有のキャンセル試行の両方を処理する必要があります。次に例を示します。

  • キャンセル
  • 停止
  • キャンセル
  • キャンセル
  • 従来のコンソールに戻す
  • 戻る
  • 新しい予約を希望しない
  • 新しい予約をキャンセルする
  • 新しい予約を削除する

インテントを作成する

インテントを作成するには、次の手順を行います。

コンソール

  1. Dialogflow CX Console を開きます。
  2. GCP プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Intents] をクリックします。
  6. [+作成] をクリックします。
  7. インテント データを入力します。
  8. [保存] をクリックします。

API

Intent 型の create メソッドをご覧ください。

インテント リファレンスのプロトコルとバージョンを選択:

プロトコル V3 V3beta1
REST インテント リソース インテント リソース
RPC インテント インターフェース インテント インターフェース
C# 提供なし 利用できません
Go 提供なし 利用できません
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 提供なし 利用できません
Python IntentsClient IntentsClient
Ruby 提供なし 利用できません

インテントを削除する

インテントを削除するには、次の手順を行います。

コンソール

  1. Dialogflow CX Console を開きます。
  2. GCP プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Intents] をクリックします。
  6. 削除するインテントにカーソルを合わせます。
  7. [削除] ボタンをクリックします。

API

Intent 型の delete メソッドをご覧ください。

インテント リファレンスのプロトコルとバージョンを選択:

プロトコル V3 V3beta1
REST インテント リソース インテント リソース
RPC インテント インターフェース インテント インターフェース
C# 提供なし 利用できません
Go 提供なし 利用できません
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 提供なし 利用できません
Python IntentsClient IntentsClient
Ruby 提供なし 利用できません

インテント データにアクセスする

インテント データにアクセスするには、次の手順を行います。

コンソール

  1. Dialogflow CX Console を開きます。
  2. GCP プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Intents] をクリックします。
  6. アクセスするインテントをクリックします。
  7. インテント データを表示または更新します。
  8. [保存] をクリックして変更を保存します。

API

Intent 型の get メソッドと patch/update メソッドをご覧ください。

インテント リファレンスのプロトコルとバージョンを選択:

プロトコル V3 V3beta1
REST インテント リソース インテント リソース
RPC インテント インターフェース インテント インターフェース
C# 提供なし 利用できません
Go 提供なし 利用できません
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 提供なし 利用できません
Python IntentsClient IntentsClient
Ruby 提供なし 利用できません

エージェントを設計する際には、インテントを主インテントまたは補助インテントとして考えると便利な場合があります。これらの用語は概念上のみのものであり、Dialogflow はそれらをネイティブには区別していません。

主インテントは、エージェントとのやり取りに関するエンドユーザーの主要な目的を識別します。補助インテントは、主インテントに関連するエンドユーザーの後続の質問を識別します。これらの後続の質問により、エンドユーザーのニーズに関する追加の内容が提示される場合や、エンドユーザーが何かを明確にしたり、より深く理解したりするのに役立つフォローアップの質問である場合があります。

主インテントは通常、会話内で最初に一致するインテントの 1 つで、その後のエンドユーザーの質問は補助インテントと一致します。次に例を示します。

対話 説明
エンドユーザー: 新しいスマートフォンを有効にしてください
エージェント: 承知しました。お手伝いいたします。有効にする電話番号の末尾 4 桁は何ですか?
主インテントが一致します
エンドユーザー: 1234
エージェント: スマートフォンをすぐに有効にする準備はできていますか?
パラメータが設定されます
エンドユーザー: すべてのメッセージは新しいスマートフォンに引き継がれますか?
エージェント: ...
補助インテントが一致します