エンティティ コンポーネント

会話言語理解におけるエンティティとは、発話から抽出される関連情報です。 エンティティは、さまざまな方法によって抽出できます。 コンテキストから学習したり、一覧から一致させたり、事前構築済みの認識済みエンティティによって検出したりすることができます。 プロジェクト内のすべてのエンティティは、これらの方法の 1 つ以上で構成されており、これらはエンティティのコンポーネントとして定義されています。

エンティティが複数のコンポーネントによって定義されている場合、それらの予測は重複する可能性があります。 コンポーネントが重複したときのエンティティ予測の動作は、"エンティティ オプション" の固定オプション セットを使用して決定できます。

コンポーネントの種類

エンティティ コンポーネントは、エンティティを抽出する方法を決定します。 エンティティには、エンティティの抽出に使用する唯一のメソッドを決定する 1 つのコンポーネントを含めることができます。 エンティティに複数のコンポーネントを含めることで、エンティティを定義および抽出する方法を拡張することもできます。

Learned コンポーネント

学習済みコンポーネントは発話へのラベル付けに使用されたエンティティ タグを使用して、機械学習モデルをトレーニングします。 モデルは、発話内のコンテキストに基づいてエンティティがどこにあるかを予測することを学習します。 ラベルは、周囲にある単語の意味に基づき、とラベル付けされた単語として、エンティティが発話内に存在すると予想される場所の例を提供します。

このコンポーネントは、エンティティに対して発話にタグを付けてラベルを追加した場合にのみ定義されます。 エンティティに発話をタグ付けしない場合、そのエンティティには学習済みコンポーネントが与えられません。

エンティティの学習済みコンポーネントの例を示すスクリーンショット。

List コンポーネント

list コンポーネントは、固定かつ限定された関連単語セットとその同義語を表します。 このコンポーネントは、同義語として指定された値のリストに対して完全なテキスト一致を実行します。 各同意語は "リスト キー" に属し、リスト コンポーネントが一致した場合に出力で返される同意語の正規化された標準値としてリスト キーを使用できます。 リスト キーは一致には使用 "されません"。

多言語プロジェクトでは、言語ごとに異なる類義語のセットを指定できます。 Prediction API を使用する際に、入力要求で言語を指定すれば、その言語に関連した同意語のみが一致します。

エンティティのリスト コンポーネントの例を示すスクリーンショット。

事前構築済みコンポーネント

事前構築済みコンポーネントを使用すると、数値、日時、名前などの一般的な型をライブラリから選択できます。 追加すると、事前構築済みのコンポーネントが自動的に検出されます。 1 つのエンティティにつき、最大 5 つの事前構築済みコンポーネントを使用できます。 詳細については、サポートされている事前構築済みコンポーネントの一覧を参照してください。

エンティティの事前構築済みコンポーネントの例を示すスクリーンショット。

RegEx コンポーネント

RegEx コンポーネントは、一貫したパターンをキャプチャするための正規表現と一致します。 追加すると、正規表現と一致するすべてのテキストが抽出されます。 同じエンティティ内に、それぞれが異なるキー識別子を持つ複数の正規表現を含めることができます。 一致した式は、予測応答の一部としてキーを返します。

多言語プロジェクトでは、言語ごとに異なる式を指定できます。 Prediction API を使用する際に、入力要求で言語を指定すれば、その言語に関連した正規表現のみが一致します。

エンティティの正規表現コンポーネントの例を示すスクリーンショット。

エンティティ オプション

1 つのエンティティに複数のコンポーネントが定義されている場合、それらの予測は重複する可能性があります。 重複が発生すると、各エンティティの最終的な予測は、次のいずれかのオプションによって決定されます。

コンポーネントを結合する

コンポーネントが重複する場合に、すべてのコンポーネントの和集合を取得して、コンポーネントを 1 つのエンティティとして結合します。

このオプションを使用して重複するすべてのコンポーネントを結合できます。 コンポーネントを結合すると、リスト コンポーネントまたは事前構築済みコンポーネントに関連付けられている追加情報があれば、すべて取得できます。

リスト コンポーネントを含むソフトウェアというエンティティがあるとします。このリスト コンポーネントには、エントリとして "Proseware OS" が含まれています。 発話データに "Proseware OS 9 を購入したい" が含まれていて、"Proseware OS 9" がソフトウェアとしてタグ付けされています。

重複している学習済みリスト エンティティを示すスクリーンショット。

結合されたコンポーネントを使用すると、エンティティはリスト コンポーネントのキーと共に "Proseware OS 9" としての完全なコンテキストを返します。

結合されたコンポーネントの結果を示すスクリーンショット。

同じ発話があるものの、学習済みコンポーネントによって予測されたのは "OS 9" のみであるとします。

学習済みコンポーネントによって OS9 が予測された発話を示すスクリーンショット。

結合されたコンポーネントを使用すると、エンティティはリスト コンポーネントからのキーと共に "Proseware OS 9" を返します。

返されたソフトウェア エンティティを示すスクリーンショット。

コンポーネントを結合しない

重複する各コンポーネントは、エンティティの個別のインスタンスとして返されます。 このオプションを使用して、予測後に独自のロジックを適用します。

リスト コンポーネントを含むソフトウェアというエンティティがあるとします。このリスト コンポーネントには、エントリとして "Proseware Desktop" が含まれています。 発話データに "Proseware Desktop Pro を購入したい" が含まれていて、"Proseware Desktop Pro" がソフトウェアとしてタグ付けされています。

重複している学習済みリスト エンティティの例を示すスクリーンショット。

コンポーネントを結合しなかった場合、エンティティは 2 回返されます。

2 回返されたエンティティを示すスクリーンショット。

必須コンポーネント

1 つのエンティティを複数のコンポーネントで定義できる場合がありますが、1 つ以上のコンポーネントが存在する必要があります。 すべてのコンポーネントを "必須" として設定できます。つまり、そのコンポーネントが存在しない場合、エンティティは返され "ません"。 たとえば、リスト コンポーネントと必須の学習済みコンポーネントを含むエンティティがある場合、返されるエンティティには必ず学習済みコンポーネントが含まれます。 そうでない場合、エンティティは返されません。

必須コンポーネントは他のコンポーネントの種類を特定のコンテキストに制限できるため、学習済みコンポーネントで最もよく使われます。コンテキストは通常 "ロール" に関連付けられます。 すべてのコンポーネントがエンティティに確実に存在するように、すべてのコンポーネントを必須にすることもできます。

Language Studio では、エンティティのすべてのコンポーネントの横にトグルがあり、必要に応じて設定できます。

"明日のカイロ行きのチケットを 2 枚予約する" といった発話用に、フライトで予約するチケットの数を抽出するチケット数量というエンティティがあるとします。

通常は、すべての数値を抽出する Quantity.Number に対する事前構築済みのコンポーネントを追加します。 エンティティが事前構築済みのコンポーネントだけで定義されている場合は、チケット数量エンティティの一部として他の数値も抽出されます ("明日の午後 3 時のカイロ行きのチケットを 2 枚予約する"など)。

このシナリオを解決するには、トレーニング データでチケット数量を意味するすべての数値に学習済みコンポーネントのラベルを付けます。 このエンティティには 2 つのコンポーネントがあります。すべての数値を認識する事前構築済みコンポーネントと、チケット数量が文のどこにあるかを予測する学習済みコンポーネントです。 学習済みコンポーネントが必要な場合は、学習済みコンポーネントが正しいコンテキストで予測したときにのみチケット数量が返されるようにします。 事前構築済みコンポーネントも必要な場合は、返されるチケット数量エンティティが数値で、正しい位置にあることを保証することができます。

コンポーネントとオプションを使用する

コンポーネントを使用すると、複数の方法でエンティティを柔軟に定義できるようになります。 コンポーネントを結合すれば各コンポーネントが確実に表現され、予測で返されるエンティティの数が減ります。

一般的な手法は、事前構築済みコンポーネントをリストで拡張し、サポートされない値を補うことです。 たとえば、組織エンティティがあり、そこに General.Organization という事前構築済みコンポーネントが追加されているものの、そのエンティティではユーザーのドメインに固有のすべての組織が予測できないとします。 リスト コンポーネントを使用して組織エンティティの値を拡張すれば、ユーザーの組織で事前構築済みコンポーネントを拡張できます。

別の場合には、小売プロジェクトの製品など、コンテキストを通じてエンティティを抽出したいこともあるでしょう。 その場合は、製品の学習済みコンポーネントのラベル付けを行うことで、製品が "どこ" に来るかを文中の位置に基づいて学習することになります。 また、常に抽出したい一連の製品があらかじめわかっているケースもあるでしょう。 両方のコンポーネントを 1 つに結合すれば、エンティティの両方のオプションを得ることができます。

コンポーネントを結合しなかった場合、各コンポーネントは個別にエンティティ抽出の役割を果たします。 この方法の用途としては、リストから抽出されたエンティティと学習済みコンポーネントや事前構築済みコンポーネントで抽出されたコンポーネントとを区別して別々に扱う場合などが考えられます。

Note

以前、サービスがパブリック プレビュー期間の間は、[最も長い重複][完全な重複][和集合の重複][すべて個別に返す] という 4 つのオプションが提供されていました。 [最も長い重複][完全な重複] は非推奨となり、今後のサポート対象は、過去にこれらのオプションが選択されていたプロジェクトに限定されます。 [和集合の重複][Combine components] (コンポーネントの結合) という名前に、また [すべて個別に返す][Do not combine components] (コンポーネントを結合しない) という名前に変更されました。