エンティティ オプション

エンティティ一致とデータ抽出の動作を変更するエンティティ オプションがいくつかあります。これらのオプションはシステム エンティティ向けに事前構成されているので、システム エンティティ向けには変更できません。ただし、独自のカスタム エンティティ向けに変更することは可能です。選択したオプションに応じて、さまざまな種類のエンティティを作成できます。

また、他のオプションは、エンティティの種類を決定しませんが、エンティティ一致の動作に影響します。

このドキュメントでは、上記の各オプションについて説明します。

このデータがある場所

エージェントを作成する際は、Dialogflow CX コンソール(ドキュメントに移動コンソールを開く)を使用するのが最も一般的です。コンソールの使用方法は次のとおりです。エンティティ オプションのデータにアクセスするには、次の手順を行います。

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [エンティティ タイプ] をクリックします。
  6. 既存のエンティティには、次のオプションがあります(一部は [詳細オプション] を展開した後にのみ表示できます)。
    • エンティティのみ(類義語なし)
    • 正規表現エンティティ
    • エンティティの自動追加
    • ファジー一致
    • ログ内での秘匿化
    • エンティティの除外

コンソールではなく API を使用してエージェントをビルドする場合は、EntityType タイプをご覧ください。API のフィールド名はコンソールのフィールド名と同様です。以下の手順では、コンソールと API の間の重要な相違点に重点を置いて説明します。

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

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

マップ エンティティ

マップ エンティティは、参照値からそれぞれの参照値の類義語へのマップを提供します。 マップ エンティティの各エントリには、1 つの参照値と複数の類義語のリストが含まれます。必要に応じて、エンティティごとに DTMF パターンを設定することもできます。

たとえば、以下の各行は size エンティティ タイプのエンティティ エントリです。

エンティティ 類義語 DTMF パターン
S S、small、tiny、little
M M、medium、average
L L、large、huge、big

上記の各エンティティ エントリの類義語リストに、参照値が含まれていることに注意してください。参照値を一致させるには、参照値自体を同義語として含める必要があります。最初にコンソールで参照値を入力すると、それが自動的に類義語として追加されます。

いずれかの類義語がエンドユーザー入力の一部に一致する場合、関連する参照値が一致として抽出され、それを使って関連するパラメータ値が解決されます。

参照値を類義語リストから省略してもかまいません。その場合、参照値そのものはエンドユーザー入力の一部に一致しませんが、類義語のいずれかが一致した場合に抽出値として使用されます。これは、エンドユーザーによって入力 / 発話されない参照値として特殊な文字列を使用する場合に適しています。

システム エンティティの多くはマップ エンティティです。たとえば、@sys.date システム エンティティは、「January 1, 2015」や「The first of January of 2015」といった一般的な日付参照に一致します。どちらの入力も ISO-8601 形式の参照値「2015-01-01T12:00:00-03:00」にマッピングされます。

マップ エンティティを作成するには、次の手順を行います。

  • コンソールを使用して [Regexp entities] オプションをオフにし、[Entities only] オプションをオンにします。
  • API を使用して、[EntityType.kind] フィールドを KIND_MAP に設定します。

リスト エンティティ

リスト エンティティは、単一値のエンティティ エントリからなるリストを提供します。参照値と類義語はありません。たとえば、以下の各行は material エンティティ タイプのエンティティ エントリです。

fabric
wood
金属

いずれかの値がエンドユーザー入力の一部に一致する場合、関連する値が一致として抽出され、それを使って関連するパラメータ値が解決されます。

多くのシステム エンティティはリスト エンティティです。たとえば、@sys.color システム エンティティは、「red」や「blue」などの一般的な色の入力をマッチングします。色が一致した場合、抽出された値は参照値にマッピングされません。たとえば、「scarlet」や「crimson」などの赤の色調は、「red」にマッピングされずに元の値「scarlet」、「crimson」のまま抽出されます。

リスト エンティティを作成するには、次の手順を行います。

  • コンソールを使用して [Regexp entities] オプションをオフにし、[Entities only] オプションをオンにします。
  • API を使用して、[EntityType.kind] フィールドを KIND_LIST に設定します。

複合エンティティ

複合エンティティは特別な種類のリスト エンティティです。通常、リスト エンティティのエンティティ エントリに含まれるのは簡単な単語やフレーズですが、他のエンティティ タイプが含まれることもあります。あるエンティティ タイプが他のエンティティ タイプで参照されている場合、その参照はエイリアスと呼ばれます。他のエンティティ タイプへのエイリアスを含むリスト エンティティは、複合エンティティと呼ばれます。

エイリアスを作成するときは、参照されるエンティティ タイプの名前と、選択したプロパティ名を指定します。実行時に複合エンティティが一致すると、抽出された値は JSON オブジェクトとして返され、エイリアス プロパティ名が JSON プロパティ名として使用されます。エイリアスの入力形式は次のとおりです。

@entity-name:property-name

たとえば、次のエンティティ エントリを含む、市または州に一致する place エンティティ タイプを作成できます。

@sys.geo-city:city
@sys.geo-state:state

エンドユーザー入力の一部に「Nashville」が含まれている場合、place エンティティ タイプが一致します。抽出された値は {"city": "Nashville"} のように返されます。

1 つのエンティティ エントリに複数のエンティティ エイリアスを使用することもできます。direction エンティティ タイプと @sys.number システム エンティティ タイプのエイリアスをそれぞれ含む以下の move カスタム エンティティ タイプを指定したとします。

方向カスタムマップ エンティティ タイプ:

参照値 類義語
forward forward、forwards
back back、backward、backwards

移動カスタムリスト エンティティ タイプ:

@sys.number:steps steps @direction:direction

move エンティティが「five steps backward」を含むエンドユーザー入力に一致する場合、move エンティティが一致します。抽出された値は {"steps": 5, "direction": "back"} のように返されます。

システム エンティティの多くは複合エンティティです。たとえば、@sys.unit-currency システム エンティティは、通貨の名前で示された金額のマッチングに使用されます。「50 euros」や「twenty dollars and five cents」などのエンドユーザー入力を照合します。抽出された値は、{"amount": 50, "currency": "EUR"} のような JSON オブジェクトとして返されます。

正規表現エンティティ

正規表現エンティティを使用すると、正規表現のマッチングを行うことができます。詳細については、正規表現エンティティをご覧ください。

正規表現エンティティを作成するには、次の手順を行います。

  • コンソールを使用して [Regexp entities] オプションにチェックを入れます。
  • API を使用して、[EntityType.kind] フィールドを KIND_REGEXP に設定します。

自動拡張(エンティティの自動追加)

カスタム エンティティ タイプ向けの自動拡張機能を有効にできます。有効にすると、エージェントは明示的に提供されていない値を認識できるようになります。たとえば、ショッピング リストのエンティティ タイプを次のように指定したとします。

パン
butter
milk
リンゴ
アイスクリーム

「ニンジンを買う必要がある」というエンドユーザー入力の場合、「ニンジン」が含まれていなくても、このエンティティ タイプに一致します。エージェントは、「ニンジン」が他の値と文脈上類似していることを認識します。

自動拡張を検討する際は、次のおすすめの方法に従ってください。

  • 自動拡張を有効にしても、エンティティの抽出は保証されません。有限なリストの場合、リストの一部を指定して自動拡張を有効にするのではなく、完全なリストを指定してください。
  • 複数のエンティティで自動拡張を有効にすると、競合や予期しない分類結果が生じる可能性があります。
  • パラメータの抽出品質を向上させるには、予想されるエージェントのトラフィックで特定のエンティティが見つかるすべてのユースケースを網羅する多様なトレーニング データを提供することが重要になります。サンプルが不十分な場合、エンティティの自動拡張が想定どおりに機能しない可能性があります。

自動拡張を有効にするには、次の手順を行います。

  • コンソールを使用して、[Automatically add entities] オプションをオンにします。
  • API を使用して、[EntityType.autoExpansionMode] フィールドを AUTO_EXPANSION_MODE_DEFAULT に設定します。

ファジー一致

カスタム エンティティのファジー一致を有効にできます。ファジー一致が有効な場合、値または類義語における単語の順序は関係ありません。詳細については、ファジー一致をご覧ください。

ファジー一致を有効にするには、次の手順を行います。

  • コンソールを使用して [Fuzzy matching] オプションをオンにします。
  • API を使用して、[EntityType.enableFuzzyExtraction] フィールドを true に設定します。

ログ内での秘匿化

エンティティ秘匿化を有効にすると、ロギング時に、エンティティ タイプのランタイム抽出パラメータ値がすべて秘匿化されます。

代わりに、個々のパラメータを秘匿化することもできます。

エンティティの除外

エンティティの除外を追加できます。これは、一致することを回避する必要があるフレーズです。たとえば、サイズ エンティティ タイプに巨大な(形容詞)のエンティティがある場合は、巨人(名詞)を除外することを検討してください。