エンティティの種類
重要
LUIS は 2025 年 10 月 1 日に廃止され、2023 年 4 月 1 日から新しい LUIS リソースを作成できなくなります。 継続的な製品サポートと多言語機能のベネフィットを得るために、LUIS アプリケーションを会話言語理解に移行することをお勧めします。
エンティティは、ユーザーの意図に関連する項目または要素です。 エンティティは、発話から抽出できるデータを定義するものであり、必要なユーザー操作を完了するために不可欠です。 次に例を示します。
発話 | 予測される意図 | 抽出されたエンティティ | 説明 |
---|---|---|---|
Hello, how are you? (こんにちは、元気ですか。) | Greeting | - | 何も抽出されません。 |
I want to order a small pizza (スモール サイズのピザを注文したい) | orderPizza | 'small' | 'Size' エンティティは 'small' として抽出されます。 |
寝室の照明を消す | turnOff | 'bedroom' | 'Room' エンティティは 'bedroom' として抽出されます。 |
Check balance in my savings account ending in 4406 (末尾が 4406 の普通預金口座の残高を確認する) | checkBalance | 'savings'、'4406' | 'accountType' エンティティは 'savings' として抽出され、'accountNumber' エンティティは '4406' として抽出されます。 |
ニューヨーク行きのチケットを 3 枚購入する | buyTickets | '3'、'New York' | 'ticketsCount' エンティティは '3' として抽出され、'Destination' エンティティは 'New York' として抽出されます。 |
エンティティは省略可能ですが、強く推奨されます。 アプリ内のすべての概念に対してエンティティを作成する必要はなく、次の場合のみです。
- クライアント アプリケーションでそのデータが必要である。または、
- エンティティが、別のエンティティや意図のヒントまたはシグナルとして機能する。 特徴としてのエンティティの詳細については、「特徴としてのエンティティ」を参照してください。
エンティティの種類
エンティティを作成するには、名前と種類を指定する必要があります。 LUIS には、いくつかの種類のエンティティがあります。
リスト エンティティ
リスト エンティティは、固定かつ限定された関連単語セットとそのシノニムを表します。 リスト エンティティを使用すると、複数のシノニムやバリエーションを認識し、それらの正規化された出力を抽出できます。 現在のリストに基づいて新しい単語の候補を表示するには、 [recommend](推奨) オプションを使用します。
リスト エンティティは機械学習されたものではありません。つまり、LUIS ではリスト エンティティの追加の値は検出されません。 LUIS では、応答内のエンティティとして、任意のリスト内の項目に対してあらゆる一致がマークされます。
リスト エンティティの照合は、大文字と小文字が区別され、完全に一致している必要があります。 リスト エンティティを照合するときは、正規化された値も使用されます。 次に例を示します。
正規化された値 | シノニム |
---|---|
Small | sm 、sml 、tiny , smallest |
中間 | md 、mdm 、regular 、average 、middle |
Large | lg 、lrg 、big |
詳細については、リスト エンティティのリファレンス記事をご覧ください。
正規表現エンティティ
正規表現エンティティは、指定された正規表現パターンに基づいてエンティティを抽出します。 大文字小文字とカルチャのバリアントは無視されます。 正規表現エンティティは、構造化テキスト、または特定の形式で想定される英数字値の定義済みシーケンスに最適です。 次に例を示します。
Entity | 正規表現 | 例 |
---|---|---|
Flight Number (便名) | flight [A-Z]{2} [0-9]{4} |
flight AS 1234 |
クレジット カード番号 | [0-9]{16} |
5478789865437632 |
詳細については、正規表現エンティティのリファレンス記事をご覧ください。
事前構築済みのエンティティ
LUIS には、日付、時刻、数字、測定値、通貨など、一般的な情報の種類を認識するための作成済みエンティティのセットが含まれています。 作成済みエンティティのサポートは、LUIS アプリのカルチャによって異なります。 カルチャによるサポートを含む、LUIS がサポートする作成済みエンティティの完全な一覧については、作成済みエンティティのリファレンスに関するページをご覧ください。
作成済みエンティティがアプリケーションに含まれる場合、エンティティの予測が発行されるアプリケーションに含まれます。 作成済みエンティティの動作は事前にトレーニングされており、変更することはできません。
事前構築済みのエンティティ | 値の例 |
---|---|
PersonName | James、Bill、Tom |
DatetimeV2 | 2019-05-02 、May 2nd 、8am on May 2nd 2019 |
詳細については、事前構築済みエンティティのリファレンス記事をご覧ください。
Pattern.Any エンティティ
pattern.Any エンティティは、エンティティの開始位置と終了位置を示すためにパターンのテンプレート発話でのみ使用される可変長プレースホルダーです。 特定のルールまたはパターンに従っており、構文構造が固定された文に使用するのが最適です。 次に例を示します。
発話の例 | Pattern | Entity |
---|---|---|
Can I have a burger please? (ハンバーガーを 1 つください) | Can I have a {meal} [please][?] |
burger |
Can I have a pizza? (ピザを 1 枚ください) | Can I have a {meal} [please][?] |
pizza |
Where can I find The Great Gatsby? (グレート ギャツビーはどこにありますか) | Where can I find {bookName}? |
The Great Gatsby |
詳細については、Pattern.Any エンティティのリファレンス記事をご覧ください。
Machine learned (ML) エンティティ
機械学習エンティティでは、コンテキストを使用して、ラベル付けされた例に基づいてエンティティを抽出します。 これは、LUIS アプリケーションを構築するのに推奨されるエンティティです。 これは、機械学習アルゴリズムに依存しており、アプリケーションに合わせて正しく調整するにはラベル付けが必要です。 常に正しい形式とは限らないものの同じ意味を持つデータを識別するには、ML エンティティを使用します。
発話の例 | 抽出される product (商品) エンティティ |
---|---|
I want to buy a book (本を買いたい) | 'book' (本) |
Can I get these shoes please? (この靴をいただけますか) | 'shoes' (靴) |
Add those shorts to my basket. (このパンツをかごに追加します) | 'shorts' (パンツ) |
詳細については、「機械学習エンティティ」を参照してください。
構造がある ML エンティティ
1 つの ML エンティティは、それぞれが独自のプロパティを持つ、より小さいサブエンティティで構成することができます。 たとえば、Address エンティティには次の構造を使用できます。
- Address : 4567 Main Street, NY, 98052, USA
- Building Number: 4567
- Street Name: Main Street
- State: NY
- Zip Code: 98052
- Country: USA
有効な ML エンティティの構築
機械学習エンティティを効果的に構築するには、次のベスト プラクティスに従ってください。
- サブエンティティを持つ機械学習エンティティがある場合は、必ず、エンティティとサブエンティティの異なる順序とバリアントがラベル付けされた発話で提示されるようにしてください。 ラベル付けされた発話の例には、有効なすべてのフォームと、発話内に表示され、存在しない、並べ替えられているエンティティが含まれている必要があります。
- エンティティを固定セットにオーバーフィットすることは避けてください。 オーバーフィットは、モデルが適切に一般化されていない場合に発生します。機械学習モデルでは、一般的な問題です。 これは、新しい種類の例に対しては、アプリが適切に動作しない可能性があることを意味します。 徐々に、提供した限定的な例を超えてアプリが一般化できるように、ラベル付けされた発話例を変化させる必要があります。
- ラベル付けは、意図全体で一貫している必要があります。 これには、このエンティティを含む None 意図で提供する発話も含まれます。 一貫していないと、モデルでシーケンスを効果的に特定できなくなります。
特徴としてのエンティティ
エンティティは、別の意図やエンティティの特徴または特徴的な特性として使用されて、システムがそれを通じて監視したり学習したりできるようにすることを、そのもう 1 つの重要な機能としています。
意図の特徴としてのエンティティ
エンティティは、意図のシグナルとして使用できます。 たとえば、特定のエンティティが発話内にある場合は、それがどの意図に分類されるかが分かります。
発話の例 | Entity | Intent |
---|---|---|
Book me a fight to New York. ("ニューヨーク行きの便" を予約してください。) | City | Book Flight (飛行機を予約する) |
Book me the main conference room. (大会議室を予約してください) | ルーム | Reserve Room (部屋を予約する) |
エンティティの特徴としてのエンティティ
エンティティを他のエンティティの存在を示すインジケーターとして使用することもできます。 これの一般的な例では、事前構築済みエンティティを別の ML エンティティの特徴として使用しています。 フライト予約システムを構築している場合、'Book me a flight from Cairo to Seattle' (カイロからシアトル行きのフライトを予約してください) のような発話には、ML エンティティとして Origin City (出発地) や Destination City (目的地) が考えられます。 事前構築済みの GeographyV2 エンティティを両方のエンティティの特徴として使用することをお勧めします。
詳細については、GeographyV2 エンティティのリファレンス記事を参照してください。
エンティティを、他のエンティティでの必須の特徴として使用することもできます。 これは、抽出されたエンティティの解決に役立ちます。 たとえば、ピザの注文アプリケーションを作成していて、Size という ML エンティティがある場合は、SizeList リスト エンティティを作成し、それを Size エンティティの必須の特徴として使用できます。 アプリケーションからは、発話から抽出されたエンティティとして正規化された値が返されます。
詳細については、特徴に関する記事を参照してください。また、実際のカルチャで使用できる事前構築済みエンティティの解決については、事前構築済みエンティティに関する記事を参照してください。
エンティティからのデータ
ほとんどのチャット ボットおよびアプリケーションでは、意図名以外の情報も必要です。 この省略可能な追加データは、発話で検出されたエンティティから取得されます。 エンティティの種類ごとに、一致に関するさまざまな情報が返されます。
発話内の 1 つの単語またはフレーズは、複数のエンティティと一致する可能性があります。 その場合、一致するエンティティごとにそのスコアが返されます。
すべてのエンティティが、エンドポイントから応答のエンティティ配列で返されます
エンティティのベスト プラクティス
機械学習エンティティを使用する
機械学習エンティティは、アプリに合わせて調整されます。機械学習エンティティでは、ラベル付けが正しく行われる必要があります。 機械学習エンティティを使用していない場合、間違ったエンティティを使用している可能性があります。
機械学習エンティティは、他のエンティティを特徴量として使用できます。 このような他のエンティティとしては、正規表現エンティティやリスト エンティティなどのカスタム エンティティがあります。または、事前構築済みエンティティを特徴量として使用することもできます。
有効な機械学習エンティティの詳細をご覧ください。