エンティティ コンポーネント
Conversational Language Understanding では、エンティティは、発話から抽出される関連情報です。 エンティティは、さまざまな方法によって抽出できます。 コンテキストから学習したり、一覧から一致させたり、事前構築済みの認識済みエンティティによって検出したりすることができます。 プロジェクト内のすべてのエンティティは、これらの方法の 1 つ以上で構成されており、これらはエンティティのコンポーネントとして定義されています。 エンティティが複数のコンポーネントによって定義されている場合、それらの予測は重複する可能性があります。 コンポーネントが重複したときのエンティティ予測の動作は、[Entity options] (エンティティのオプション) の固定オプション セットを使用して決定できます。
コンポーネントの種類
エンティティ コンポーネントは、エンティティを抽出する方法を決定します。 エンティティは、エンティティを抽出するための唯一の方法を決定する 1 つのコンポーネントを含む場合と、エンティティの定義と抽出の方法を拡張する複数のコンポーネントを含む場合があります。
Learned コンポーネント
learned コンポーネントは、発話へのラベル付けに使用されたエンティティ タグを使用して、機械学習モデルをトレーニングします。 このモデルは、発話内のコンテキストに基づいて、エンティティがどこにあるかを予測するように学習します。 ラベルは、周囲にある単語の意味に基づき、とラベル付けされた単語として、エンティティが発話内に存在すると予想される場所の例を提供します。 このコンポーネントは、エンティティに対して発話にタグを付けてラベルを追加した場合にのみ定義されます。 エンティティに発話をタグ付けしない場合、そのエンティティには Learned コンポーネントが与えられません。
List コンポーネント
list コンポーネントは、固定かつ限定された関連単語セットとその同義語を表します。 このコンポーネントは、同義語として指定された値のリストに対して完全なテキスト一致を実行します。 各同意語は "リスト キー" に属しており、リスト コンポーネントが一致した場合に出力で返される同意語の正規化された標準値として使用できます。 リスト キーは一致には使用されません。
多言語プロジェクトでは、言語ごとに異なる類義語のセットを指定できます。 Prediction API を使用するときに、入力要求で言語を指定すれば、その言語に関連した類義語のみがマッチングされます。
事前構築済みコンポーネント
事前構築済みコンポーネントを使用すると、数値、日時、名前などの一般的な型をライブラリから選択できます。 追加すると、事前構築済みのコンポーネントが自動的に検出されます。 1 つのエンティティにつき、最大 5 つの事前構築済みコンポーネントを使用できます。 詳細については、サポートされている構築済みコンポーネントの一覧を参照してください。
RegEx コンポーネント
RegEx コンポーネントは、一貫したパターンをキャプチャするための正規表現と一致します。 追加すると、正規表現と一致するすべてのテキストが抽出されます。 同じエンティティ内に、それぞれが異なるキー識別子を持つ複数の正規表現を含めることができます。 一致した式は、予測応答の一部としてキーを返します。
多言語プロジェクトでは、言語ごとに異なる式を指定できます。 Prediction API を使用するときに、入力要求で言語を指定でき、その言語に関連した正規表現のみが照合されます。
エンティティのオプション
1 つのエンティティに対して複数のコンポーネントが定義されている場合、それらの予測が重複する可能性があります。 重複が発生すると、各エンティティの最終的な予測は、次のいずれかのオプションによって決定されます。
コンポーネントを結合する
コンポーネントが重複する場合に、すべてのコンポーネントの和集合を取得して、コンポーネントを 1 つのエンティティとして結合します。
これを使用して重複するすべてのコンポーネントを結合できます。 コンポーネントを結合すると、リストまたは事前構築済みコンポーネントに関連付けられている追加情報があれば、それらがすべて取得されます。
例
リスト コンポーネントを含む Software というエンティティがあるとします。このリスト コンポーネントには、エントリとして "Proseware OS" が含まれています。 発話データには "I want to buy Proseware OS 9" が含まれていて、"Proseware OS 9" が Software としてタグ付けされています。
コンポーネントの結合を使用すると、エンティティはリスト コンポーネントのキーと共に "Proseware OS 9" として完全なコンテキストを返します。
同じ発話を持っていたが、学習済みコンポーネントによって予測されたのは "OS 9" のみであると仮定します。
コンポーネントを結合した場合、エンティティからは依然として "Proseware OS 9" が、リスト コンポーネントからのキーと共に返されます。
コンポーネントを結合しない
重複する各コンポーネントは、エンティティの個別のインスタンスとして返されます。 このオプションを使用して、予測後に独自のロジックを適用します。
例
リスト コンポーネントを含む Software というエンティティがあるとします。このリスト コンポーネントには、エントリとして "Proseware Desktop" が含まれています。 発話データには "I want to buy Proseware Desktop Pro" が含まれていて、"Proseware Desktop Pro" が Software としてタグ付けされています。
コンポーネントを結合しなかった場合、エンティティは 2 回返されます。
必要なコンポーネント
1 つのエンティティを複数のコンポーネントで定義できる場合がありますが、その 1 つ以上が存在する必要があります。 すべてのコンポーネントを必須として設定できます。これは、つまり、そのコンポーネントが存在しない場合、エンティティは返されません。 たとえば、リスト コンポーネントと必須の学習済みコンポーネントを含むエンティティがある場合、返されるエンティティに学習済みコンポーネントが含まれることが保証されます。そうでない場合、エンティティは返されません。
必須コンポーネントは学習済みコンポーネントで最もよく使われます。これは、それが他のコンポーネントの種類を特定のコンテキストに制限できるためであり、通常はロールに関連付けられます。 すべてのコンポーネントがエンティティに確実に存在するように、すべてのコンポーネントを必須にすることもできます。
Language Studio では、エンティティのすべてのコンポーネントの横にトグルがあり、必要に応じて設定できます。
例
"明日カイロ行きのチケットを 2 枚予約する" といった発話のため、フライトで予約するチケットの数を抽出するチケット数量というエンティティがあるとします。
通常は、すべての数値を抽出する Quantity.Number に対する事前構築済みのコンポーネントを追加します。 ただし、エンティティが事前構築済みでのみ定義されている場合は、"明日午後 3 時のカイロ行きチケットを 2 枚予約する" のように、チケット数量エンティティの一部として他の数値も抽出されます。
これを解決するには、トレーニング データで Ticket Quantity を意味するすべての数値に学習済みコンポーネントのラベルを付けます。 このエンティティには、2 つのコンポーネントがあります。すべての数値を認識する事前構築済みコンポーネントと、チケット数量が文内のどこにあるかを予測する学習済みコンポーネントです。 学習済みコンポーネントが必要な場合は、学習済みコンポーネントが正しいコンテキストで予測したときにのみチケット数量が返されるようにします。 事前構築済みコンポーネントも必要な場合は、返されるチケット数量エンティティに両方の数値が正しい位置に含まれるようにすることができます。
コンポーネントとオプションを使用する方法
コンポーネントを使用すると、複数の方法でエンティティを柔軟に定義できるようになります。 コンポーネントを結合すれば各コンポーネントが確実に表現され、予測で返されるエンティティの数が減ります。
一般的な手法は、事前構築済みコンポーネントをリストで拡張し、サポートされない値を補うことです。 たとえば、Organization エンティティがあって、そこに General.Organization という事前構築済みコンポーネントが追加されているものの、そのエンティティでは、実際のドメインに固有の一部の組織が予測できないとします。 リスト コンポーネントを使用して Organization エンティティの値を拡張すれば、実際の組織で事前構築の内容を補うことができます。
また別の場合には、小売プロジェクトの Product など、コンテキストを通じてエンティティを抽出したいケースもあるでしょう。 その場合は、製品の学習済みコンポーネントでラベル付けを行うことで、製品が "どこ" に来るかを文中の位置に基づいて学習することになります。 また、常に抽出したい一連の製品が、あらかじめわかっているケースもあるでしょう。 両方のコンポーネントを 1 つに結合すれば、エンティティの両方のオプションを得ることができます。
コンポーネントを結合しなかった場合、各コンポーネントは個別にエンティティ抽出の役割を果たします。 この方法の用途としては、リストから抽出されたエンティティと学習済みコンポーネントや事前構築済みコンポーネントで抽出されたコンポーネントとを区別して別々に扱う場合などが考えられます。
Note
以前、サービスがパブリック プレビュー期間の間は、[最も長い重複]、[完全な重複]、[和集合の重複]、[すべて個別に返す] という 4 つのオプションが提供されていました。 [最も長い重複] と [完全な重複] は非推奨となり、今後のサポート対象は、過去にこれらのオプションが選択されていたプロジェクトに限定されます。 [和集合の重複] は [Combine components] (コンポーネントの結合) という名前に、また [すべて個別に返す] は [Do not combine components] (コンポーネントを結合しない) という名前に変更されました。