インテント

インテントによっては、1 回の会話ターンにおけるエンドユーザーの意図(含意)を分類します。

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

用語 定義
表示名 コンソールに表示されるインテントの名前。
ラベル インテントを分類するためのラベル。例: 主なインテント
トレーニング フレーズ トレーニング フレーズは、エンドユーザーの発話に含まれる可能性があるフレーズのサンプルであり、エンドユーザー入力と呼ばれます。エンドユーザー入力がこれらのフレーズのいずれかと似ている場合、会話エージェント(Dialogflow CX)はこれをインテントにマッチングします。会話エージェント(Dialogflow CX)に組み込まれている機械学習は他の類似のフレーズまで拡大して解釈するため、すべての例を定義する必要はありません。
パラメータ トレーニング フレーズを定義してパラメータを使用し、エンドユーザー入力の特定部分から値を抽出する。
DTMF パターン テレフォニー統合用の DTMF をご覧ください。

インテント マッチング

エンドユーザーが入力(テキスト、音声、電話キーの押下)を行うと、会話エージェント(Dialogflow CX)はその入力をインテントのトレーニング フレーズと比較して、最も一致するものを見つけます。 このプロセスはインテント マッチングと呼ばれます。インテント マッチングは、スコープ内のインテント ルート(インテント要件のある状態ハンドラ)に関連付けられたインテントに対してのみ行われます。

キーの押下入力は、DTMF パターンに従って照合されます。ただし、テキストに一致するインテントを検索する場合、会話エージェント(Dialogflow CX)はインテント検出信頼度(信頼スコアとも呼ばれます)を使用して一致候補をスコア付けします。この値の範囲は、0.0(完全に不確実)~1.0(完全に確実)です。インテントがスコア付けされると、次の 2 つの結果が考えられます。

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

トレーニング フレーズ

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

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

会話エージェント(Dialogflow CX)に組み込まれている機械学習は他の類似のフレーズまで拡大して解釈するため、すべての例を定義する必要はありません。エージェントがさまざまなエンドユーザー入力を認識できるように、少なくとも 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 CX)は、実行時にエンドユーザーが提供する実際の値の例であることを認識します。「What is the forecast on Friday for Sydney?」(金曜日のシドニーでの予報は?)などのエンドユーザー入力では、会話エージェント(Dialogflow CX)は「Friday」(金曜日)から date パラメータ、「Sydney」から location パラメータをそれぞれ抽出します。

パラメータとして抽出するすべてのトレーニング フレーズの部分に、アノテーションを付ける必要があります。そうしないと、Dialogflow は値を抽出しません。

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

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

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

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

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

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

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

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

Default Welcome Intent

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

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

00000000-0000-0000-0000-000000000000

エージェントが会話を開始する場合は、API を使用してこのインテントをトリガーできます。 detectIntent メソッドまたは streamingDetectIntent メソッドを呼び出す場合は、QueryInput.intent.intent フィールドの値 projects/<PROJECT_ID>/locations/<LOCATION_ID>/agents/<AGENT_ID>/intents/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. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Intents] をクリックします。
  6. [+作成] をクリックします。
  7. インテント データを入力します。
  8. [保存] をクリックします。

API

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

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

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

インテントを削除する

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

コンソール

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

API

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

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

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

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

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

コンソール

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

API

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

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

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

インテントの提案

Dialogflow は、会話中の不一致のオカレンスを自動的に分析し、新しいインテントを提案することも、既存のインテントに対して追加のトレーニング フレーズを推奨することもできます。これらの提案を受け入れると、その後、不一致が発生することを回避できます。

提案を使用する場合は、クラスタサイズを調整できます。クラスタサイズの値が小さいほど、インテントあたりのトレーニング フレーズが少なく、より多くのインテントが提案されます。クラスタサイズの値が大きいほど、インテントあたりのトレーニング フレーズが多く、より少ないインテントが提案されます。

インテントの提案を受け入れるには:

コンソール

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Intents] をクリックします。
  6. [提案] タブをクリックします。
  7. 必要に応じて [クラスタサイズ] を調整します。
  8. 提案を選択します。
  9. 目的のトレーニング フレーズを選択します。
  10. ターゲット インテントに対して、既存のインテントまたは新しいインテントにトレーニング フレーズを追加します。
  11. [保存] または [新規作成] をクリックして、変更を保存します。 インテントの提案を受け入れた場合、そのインテントは提案リストに残ります。

インテントを分割する

コンソールを使用して、1 つのインテントを 2 つのインテントに分割できます。 このインターフェースでは、ソース インテントからトレーニング フレーズを選択して、新しいインテントに移動できます。

コンソール

  1. Dialogflow CX Console を開きます。
  2. プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Intents] をクリックします。
  6. 分割するインテントを選択します。
  7. [スプリット] をクリックします。
  8. ソース インテントからインテントを 1 つ選択します。
  9. [右に移動] をクリックします。
  10. ターゲット インテントの他の詳細を指定します。
  11. [スプリット] をクリックします。

インテントを比較して統合する

コンソールを使用して、2 つのインテントを比較したり、1 つのインテントに統合したりできます。

コンソール

  1. Dialogflow CX Console を開きます。
  2. プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Intents] をクリックします。
  6. 比較または統合する 2 つのインテントを選択します。
  7. [比較] をクリックします。
  8. トレーニング フレーズは、比較のために並べて表示されます。
  9. [統合] をクリックして 2 つのインテントを統合します。

インテントのエクスポートとインポート

インテントをエクスポートおよびインポートして、エージェント間で共有できます。

エクスポート形式のオプションの 1 つは CSV で、次の列があります。

  • インテントの表示名
  • 言語
  • フレーズ

各エントリには、表示名、言語、最初のトレーニング フレーズ、または、以前に宣言されたインテントのトレーニング フレーズのみのいずれかが含まれます。 Dialogflow は、エクスポートされたトレーニング フレーズにアノテーションをエンコードします。これにより、インポート時にアノテーションが復元されます。 このエンコードの形式は次のとおりです。

(annotated part)[entity, parameter]

次に例を示します。

Intent Display Name,Language,Phrase
Shirt Selection,en,I want a (green)[@sys.color, color] shirt
,,I would like a (yellow)[@sys.color, color] shirt
Store Hours,en,When are you open?
,,What are your hours?

インテントをインポートする際に、既存のエージェントのインテントの表示名がインポートされたインテントの表示名と一致すると、マージの競合が発生する可能性があります。 次のいずれかを選択して、インテントの表示名が一致した場合の統合の動作を制御できます。

  • Replace existing intents: インポートされたインテントは、既存のエージェントにある同じ名前のインテントを上書きします。
  • 新しいインテントとして名前を変更しインポートする: インポートされたインテントは名前が変更され、表示名に「_1」が追加されます。
  • Merge with existing intents: インポートされたインテントのトレーニング フレーズが、既存のインテントに追加されます。同じトレーニング フレーズが存在する場合、重複しません。
  • Keep original intents: 既存のインテントは変更されず、競合するインテントは無視されます。 競合しないインテントがインポートされます。

インテントをエクスポートするには、次の手順に従います。

コンソール

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Intents] をクリックします。
  6. エクスポートする各インテントを選択します。
  7. [選択したインテントをエクスポート] をクリックします。
  8. 目的の形式と宛先を選択します。
  9. [送信] をクリックします。

インテントをインポートするには、次の手順に従います。

コンソール

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Intents] をクリックします。
  6. [インポート] をクリックします。
  7. ソースを選択します。
  8. 競合がある場合は、マージ動作を選択できるダイアログ ウィンドウが表示されます。
  9. [送信] をクリックします。

トレーニング フレーズのエクスポートとインポート

既存のインテントのトレーニング フレーズをエクスポートまたはインポートできます。

インポートのファイル形式は、列見出しのない単一列の CSV です。次に例を示します。

"I want a pony"
"I need a pony"
"I must have a pony"

トレーニング フレーズをインポートするときに、次のいずれかのインポートモードを選択できます。

  • Import as new training phrases: ファイル内のフレーズは、既存のフレーズのリストに追加されます。
  • Replace existing training phrases: 既存のトレーニング フレーズが削除され、ファイルのトレーニング フレーズが追加されます。

デフォルトでは、インポートされたトレーニング フレーズに自動的にアノテーションが付けられます。 この動作を無効にするには、[Skip auto annotation] を選択します。

インテントのトレーニング フレーズをインポートするには、次の手順に従います。

コンソール

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Intents] をクリックします。
  6. インテントを選択します。
  7. [Training phrase] セクションまでスクロールします。
  8. エクスポートするトレーニング フレーズを選択します。
  9. [エクスポート] をクリックします。

インテントのトレーニング フレーズをインポートするには、次の手順に従います。

コンソール

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Intents] をクリックします。
  6. インテントを選択します。
  7. [Training phrase] セクションまでスクロールします。
  8. 必要に応じて、[自動アノテーションをスキップ] を選択します。
  9. トレーニング フレーズリストのすぐ上にあるインポート ボタンをクリックします。
  10. ファイルとインポート モードを選択します。
  11. [送信] をクリックします。

エージェントを設計する際には、インテントを主インテントまたは補助インテントとして考えると便利な場合があります。

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

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

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