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