.lu ファイル形式.lu file format

適用対象: SDK v4APPLIES TO: SDK v4

自然言語理解 (NLU) は、会話型ボットの中心です。Natural language understanding (NLU) is the heart of a conversational bot. これは、ユーザー入力 (自然言語) をボットが理解して対応できるオブジェクトに変換する主な目的を持つ機械学習ツールです。It’s a machine learning tool whose primary purpose is to convert a users input (natural language) into objects that your bot can understand and react to.

NLU エンジンは、ユーザーが自分で何を言っているのかを、魔法のように理解できない。NLU engines can't magically understand what a user is saying on their own. 開発者は、機械学習アルゴリズムと同様に、トレーニング例のセットを提供する必要があります。Developers need to provide them with sets of training examples, just like any machine learning algorithm. トレーニングが完了すると、NLU エンジンは、ユーザーの発話から単語やフレーズを識別し、ユーザーの意図 (通常は意図の形式) にマップする機能を利用できます。これは、ユーザーが実行するタスクまたはアクションを表し、ユーザーの意図に関連する要素を表すエンティティを表します。 Once trained, the NLU engine gains the ability to identify words or phrases from a user's utterance, and map those to a user's intention, generally in the form of intents, that represents a task or action the user wants to perform and entities that represents an element that is relevant to the user's intent. .lu ファイルは、composer と同様に、Bot Framework SDK を使用して開発されたボット用に定義する langue understanding テンプレートを作成する場所 [です][]。The .lu file is where you create your langue understanding templates that define these for your bot developed using the Bot Framework SDK as well as Composer.

.lu ファイルには、LUIS の概念を表す、Markdown に似た単純なテキスト ベースの定義が含まれています。An .lu file contains Markdown-like, simple text based definitions for LUIS concepts. [Orchestrator などの他の][]コンシューマーも .lu ファイルを使用しますが、この記事で定義されている要素のサブセットのみを解釈できる場合があります。Other consumers like Orchestrator also consume the the .lu file, but may only be able to interpret subset of the elements defined in this article.

サンプル発話を使用した意図の定義Defining intents using sample utterances

意図は、ユーザーの発話で表される、ユーザーが実行するタスクまたはアクションを表します。An intent represents a task or action the user wants to perform, as expressed in a user's utterance. ボットに意図を追加して、同じユーザーの意図を表す質問またはコマンドのグループを識別できます。You add intents to your bot to enable it to identify groups of questions or commands that represent the same user intention.

旅行ボットに対して定義する意図の例と、定義されている発話の例を次に示します。Some examples of intents you might define for a travel bot, with the example utterances that they are defined from:

IntentIntent 発話の例Example utterances
BookFlightBookFlight "Book me a flight to Me Next Week""Book me a flight to Maui next week"
"Fly me to The 17th""Fly me to Maui on the 17th"
"I need a plane ticket next Friday to Friday to Friday" (次の金曜日から土曜日まで飛行機のチケットが必要です)"I need a plane ticket next Friday to Maui"
GreetingGreeting "やあ""Hi"
"Hello""Hello"
"良い午後""Good afternoon"
CheckWeatherCheckWeather "来週のパリの天気は?"What's the weather like in Maui next week?"
なしNone "Cookie が好き""I like cookies"
"Bullfrogs が 7 フィートを超えるジャンプを記録しました""Bullfrogs have been recorded jumping over 7 feet"

定義する意図に加えて、[なし]はフォールバック意図で、ユーザーの発話から意図を特定できない場合にイベント unknownIntent が発生します。In addition to the intents that you define, None is a fallback intent that causes the unknownIntent event to fire when no intents can be determined from the users utterance. LUIS を使用する場合 、None 意図は、ドメインの外部にある発話を使用して作成する必要がある必須の意図です。When using LUIS, the None intent is a required intent that you need to create with utterances that are outside of your domain. 意図し ない 目的に関連付けられている発話には、lu-lu ファイル内の発話全体の約10% が含まれている必要があります。The utterances associated with your None intent should comprise roughly 10% of the total utterances in your .lu file.

発話のサンプルを使用したインテントは、次のように宣言されています。Intents with their sample utterances are declared in the following way:

# <intent-name>
    - <utterance1>
    - <utterance2>

# <intent-name> は、新しい意図の定義セクションを説明します。# <intent-name> describes a new intent definition section. インテント定義の後の各行は、形式を使用してその目的を記述する発話の例です - <utterance>Each line after the intent definition are example utterances that describe that intent using the - <utterance> format.

次の例では、ユーザーが意図を表現する方法を示すために、これらのインテントと例発話をデモンストレーションしています。Here is an example .lu file demonstrating these intents and example utterances that capture ways users can express the intent:

> Use ">" to create a comment in your .lu files.
> Use multiple comment ">" characters to define outlining
> sections in the file to help you organize the content.

>> Primary intents
# BookFlight
- Book me a flight to Maui next week
- Fly me to Maui on the 17th
- I need a plane ticket next Friday to Maui

# Greeting
- Hi
- Hello
- Good afternoon

>> Secondary intents
# CheckWeather
- What's the weather like in Maui next week?

注意

-+ 、または * 文字を使用してリストを示します。Use the -, +, or * character to denote lists. 番号付きのリストはサポートされていません。Numbered lists are not supported.

> を使用してコメントを作成します。Use > to create a comment.

複数のコメント (" > ") 文字を使用して、lu ファイル内のアウトラインセクションを定義して、コンテンツを整理することもできます。Multiple comment (">") characters can also be used to define outlining sections in the .lu file to help you organize the content. Composerとボットフレームワークの両方のアダプティブツールを使用すると、LU ファイルを編集するときにアウトラインを活用できます。Both Composer and Bot Framework Adaptive Tools allow you to take advantage of outlining when editing LU files.

インテントと発話の詳細については、「 LUIS アプリのインテント 」と「LUIS のドキュメント」の LUIS アプリに適した発話 についての説明を参照してください。For more information about intents and utterances, see Intents in your LUIS app and Understand what good utterances are for your LUIS app in the LUIS documentation.

エンティティEntities

エンティティは、インテントの解釈に使用できるパラメーターとして考えることができる (発話) の一部です。An entity is part of an utterance that can be thought of as a parameter that can be used in the interpretation of an intent. たとえば、(発話) Book Maui のチケット は、 Maui は、フライト先エンティティです。For example, in the utterance Book a ticket to Maui, Maui is a FlightDestination entity.

ユーザーの発話例Sample user utterance 予測される意図Intent predicted 抽出されたエンティティEntities extracted 説明Explanation
Hello, how are you? (こんにちは、元気ですか。)Hello, how are you? GreetingGreeting - 抽出するエンティティがありません。No entities to extract.
「フライトを Maui に登録する」"Book a flight to Maui" BookFlightBookFlight "Maui""Maui" "フライト先" エンティティは "Maui" として抽出されます。"FlightDestination" entity is extracted as "Maui".
「Maui 来週の天気は次のようになっていますか?」"What's the weather like in Maui next week?" CheckWeatherCheckWeather "Maui"、"来週""Maui", "next week" "WeatherLocation" エンティティは "Maui" として抽出され、"DateRange" エンティティは "next week" として抽出されます。"WeatherLocation" entity is extracted as "Maui" and "DateRange" entity is extracted as "next week".
「小さなピザを注文したい」"I want to order a small pizza" orderPizzaorderPizza "small""small" "Size" エンティティは "small" として抽出されます。"Size" entity is extracted as "small" .
"Schedule a meeting at 1pm with Bob in Distribution" (ディストリビューションのボブと午後 1 時にミーティング)"Schedule a meeting at 1pm with Bob in Distribution" ScheduleMeetingScheduleMeeting "1pm", "Bob""1pm", "Bob" "会議時間" エンティティは "1pm" として抽出され、"出席者" エンティティは "Bob" として抽出されます。"MeetingTime" entity is extracted as "1pm" and "Attendees" entity is extracted as "Bob".

ヒント

LUIS でのエンティティの使用に関する詳細については、LUIS のドキュメントの「 LUIS in The entities 」を参照してください。For more information specific to using entities in LUIS, see Entities in LUIS in the LUIS documentation.

エンティティ定義Entity definitions

エンティティ定義では、発話内のスパンを、ボットで使用できるエンティティとして認識する方法を定義します。An entity definition defines how to recognize a span in an utterance as an entity that you can then use in your bot. 機械学習、事前構築済み、リスト、正規表現、パターンなど、さまざまな種類のエンティティがあります。There are a number of different types of entities including: machine-learned, prebuilt, lists, regular expressions, and patterns.

.lu ファイル内のエンティティ定義は、アット 記号 ( ) の後にエンティティとエンティティ名の種類でエントリ @ を開始します。Entity definitions in .lu files start the entry with the at sign (@) followed by the type of entity and entity name:

@ <entity-type> <entity-name>

必要に応じて、各エンティティには、同 じエンティティの異 なる用途を識別するロールを含めすることもできます。Optionally, each entity can also have roles that identify different uses of the same entity. エンティティを認識 するためのより 良いジョブを行うのに役立つ機能を追加できます。You can also add features to help do a better job of recognizing entities. 一般的な構文は次のとおりです。The general syntax looks like this:

@ <entity-type> <entity-name> [[hasRole[s]] <comma-separated-list-of-roles>] [hasFeature[s] <comma-separated-list-of-features>]

リスト エンティティや正規表現エンティティなど、定義を必要とするエンティティは、次の表記を使用して表されます。Entities that require a definition, like list and regular expression entities, are represented using the following notation:

@ <entity-type> <entity1-name> = <definition>

エンティティ宣言のその他の例を、適用するエンティティ型と共に、次のセクションで示します。Additional examples of entity declarations will be demonstrated in the following sections along with the entity types they apply to.

事前構築済みのエンティティ を除き、エンティティ名にはスペースを含む複数の単語を含めることができます。With the exception of prebuilt entities, entity names can contain multiple words with spaces. スペースを含むすべてのエンティティ名は、引用符で囲む必要があります。All entity names with spaces must be wrapped in quotes:

@ ml "this is a simple entity" role1, role2 = definition
@ ml 'another simple entity' hasRole role1 hasFeatures feature1, feature2

エンティティの種類Entity types

LUIS には、いくつかの種類のエンティティがあります。There are several types of entities in LUIS. 以下のセクションでは、これらのエンティティ型と、ロールや機能などの関連する概念と、それらを使用する LU テンプレートを作成する方法の例について説明します。In the following sections you will learn about these entity types along with related concepts such as roles and features with examples of how to create LU templates that use them.

機械学習エンティティMachine-learned entity

機械学習エンティティは 、発話の例でラベルを付け、例を提供できるエンティティです。Machine-learned entities are entities that enable you to provide examples where you label them in the example utterances. これにより、学習に必要なコンテキストが提供されます。This gives them the context needed to learn from. 機械学習エンティティは、常に適切に書式設定されていないが同じ意味を持つデータを識別する場合に最適です。The machine-learned entity is ideal when identifying data that is not always well formatted but has the same meaning.

次の例は、city ( ) という名前の機械学習エンティティと、エンティティにラベルが付いたサンプル発話を含む意図 @ ml city bookFlight を示しています。The following example demonstrates a machine-learned entity named city (@ ml city) and a bookFlight intent with sample utterances with your entities labeled:

> Define the city machine-learned entity
@ ml city

> Define the bookFlight intent with sample utterances that contain the machine-learned entities
# bookFlight
- Book a flight from {@city = Cairo} to {@city = Seattle}
- Get me 2 tickets for a flight to {@city = Bangalore}
- Purchase ticket from {@city = Washington} to {@city = Tampa Bay}

ユーザーが「ロンドンから予約したフライトが必要です」のようなことを言った場合、LUIS は 'bookFlight' 意図を検出し、ロンドンとロンドンの両方を都市エンティティとして抽出します。When a user says something similar like “I need a flight booked from London to madrid”, LUIS will detect the 'bookFlight` intent and extract both London and Madrid as city entities.

ロール は、実質的にはコンテキスト情報の追加レイヤーであり、機械学習されたエンティティに追加することができます。また、コンテキストについても学習します。Roles are essentially an additional layer of contextual information you can add to your machine-learned entities, that also learn from context. 次の例の (発話) は、city エンティティに関連付けられている出発ロールとターゲットロールを示しています。The following example utterance shows the departure and destination roles associated with the city entity:

- Book a flight from {@city:departure = Cairo} to {@city:destination = Seattle}

機械学習されたエンティティは、相互に関連するエンティティの階層構造を持つ複雑な場合もあります。Machine-learned entities can also be complex where they have a hierarchy of entities related to each other. たとえば、 pizzaOrder quantity、size、crust、トッピングなど、次のような子エンティティを持つエンティティがあるとします。For example, you can have something like a pizzaOrder entity that has the following children entities: quantity, size, crust, toppings, and so on.

子エンティティを定義するには、次の例に示すように、アットマーク (@) にダッシュ (-) を付加し、インデントを設定します。You define a child entity by prepending a dash (-) to the at sign (@) and indenting, as the following example demonstrates:

@ prebuilt number
@ list sizeList
@ list crustList
@ list toppingList

@ ml pizzaOrder
    - @ number Quantity
    - @ sizeList Size
    - @ crustList Crust
    - @ toppingList Topping

上の例では、number エンティティはあらかじめ構築された エンティティです。In the above example, the number entity is a prebuilt entity. 残りのエンティティは、すべての リストエンティティです。The remaining entities are all list entities.

次の例では、とを address 2 つのロールとし、子として、機械学習されたエンティティの定義を示し fromAddress toAddress ます。The next example shows a definition of an address machine-learned entity, with fromAddress and toAddress as two roles, as well as children.

@ list cityList
@ prebuilt number
@ prebuilt geographyV2
@ regex regexZipcode = /[0-9]{5}/
@ ml address hasRoles fromAddress, toAddress
@ address =
    - @ number 'door number'
    - @ ml streetName
    - @ ml location usesFeature geographyV2
        - @ cityList city
        - @ regexZipcode zipcode

事前構築済みのエンティティPrebuilt entities

事前構築済みの LUIS エンティティは、システムによって定義されます。Prebuilt LUIS entities are defined by the system. これにより、品質が高く、プログラムで使用しやすい正規化された値が提供されるため、作業内容が保存されます。This saves you work since they are of high quality and provide normalized values that are easier to use in programs. たとえば、"1002" という語句は数値1002になります。For example the phrase "one thousand and two" would become the number 1002. 以下の LUIS 事前構築済みエンティティ型がサポートされています。The following LUIS prebuilt entity types are supported:

  • ageage
  • datetimeV2datetimeV2
  • ディメンションdimension
  • emailemail
  • geographyV2geographyV2
  • keyPhrasekeyPhrase
  • moneymoney
  • numbernumber
  • ordinalordinal
  • ordinalV2ordinalV2
  • percentagepercentage
  • personNamepersonName
  • phonenumberphonenumber
  • 温度temperature
  • urlurl
  • DATETIMEdatetime

構築済みのエンティティを定義する方法の例を次に示します。Here are examples of how to define prebuilt entities:

@ prebuilt number 
@ prebuilt datetimeV2
@ prebuilt age

リスト エンティティList entity

リスト エンティティは、固定かつ限定された関連単語セットとそのシノニムを表します。List entities represent a fixed, closed set of related words along with their synonyms. 対応するシノニムが認識されると、正規化された値が返されます。The normalized value is returned when any of the corresponding synonyms are recognized. これらは大文字と小文字を区別し、テキストの正確な一致に基づいて抽出されます。They are case-sensitive and extracted based on an exact text match.

次の例は、list エンティティを定義するための構文を示しています。The following example shows the syntax for defining a list entity:

@ list <entityName>  =
    - <normalized-value> :
        - <synonym1>
        - <synonym2>
        - ...
    - <normalized-value> :
        - <synonym1>, <synonym2>, ...

pizzaOrderコンピューターが学習したエンティティセクションから例を拡張すると、サイズと crust 子エンティティのリストの例を次に示します。Extending the pizzaOrder example from the machine-learned entity section, here is an example of lists for the size and crust child entities:

@ list sizeList = 
    - Extra Large :
        - extra large
        - XL
        - xl
        - huge
        - massive
    - Large:
        - large
        - big
    - Medium :
        - medium
        - regular
    - Small :
        - small
        - smallest
        - individual

@ list crustList = 
    - Stuffed Crust :
        - stuffed crust
        - stufffed crust
    - Thin :
        - thin
        - thin crust
    - Thick :
        - thick
        - thick crust
        - Deep Dish
        - deep dish

ヒント

リストエンティティは完全一致を抽出する必要があるため、共通のスペルミスを追加することによって結果が改善される可能性があります。Since a list entity requires an exact match to be extracted, your results may improve by adding common misspellings. スペルミスの一般的な原因の1つは、上記の例の "stufffed crust" のように、2文字の tripled などのエラーを入力した結果です。One common causes of misspellings is a result of typing errors such as double letters tripled as in "stufffed crust" in the above example.

リストエンティティを使用する場合は、リストの値を (発話) に直接含める必要があります。ただし、リストエンティティにラベルを付ける必要はありませんが、 パターン内でプレースホルダーとして使用することはできます。When using list entities you should include a value from the list directly in the utterance, you do not need to label list entities although you can still use them as place holders in a pattern. 次の例は、一覧の値を含む発話を示しています。The following example shows an utterance with values from the list:

- I'd like to order a large pepperoni stuffed crust pizza.

正規表現エンティティRegular expression entity

正規表現 エンティティは、 指定した正規表現の文字パターンに基づいてエンティティを抽出します。A regular expression entity extracts an entity based on a regular expression character pattern you provide. 正規表現は、構造化されたテキストや、特定の形式で予期される英数字値の定義済みのシーケンスに最適です。Regular expressions are best for structured text or a predefined sequence of alphanumeric values that are expected in a certain format. 次に例を示します。For example:

EntityEntity 正規表現Regular expression Example
Flight Number (便名)Flight Number flight [A-Z]{2} [0-9]{4}flight [A-Z]{2} [0-9]{4} flight AS 1234flight AS 1234
クレジット カード番号Credit Card Number [0-9]{16}[0-9]{16} 54787898654376325478789865437632

正規表現エンティティ定義の例を次に示します。Here's an example of the regular expression entity definitions:

> Flight Number regular expression entity definition
@ regex flightNumber = /flight [A-Z]{2} [0-9]{4}/

> Credit Card Number regular expression entity definition
@ regex creditCardNumber = /[0-9]{16}/

ロールRoles

ロールは、発話内のコンテキストに基づくエンティティの名前付き別名です。A role is a named alias for an entity based on context within an utterance. ロールは、任意の事前構築済みエンティティ型またはカスタム エンティティ型で使用できます。また、発話とパターンの例の両方で使用されます。A role can be used with any prebuilt or custom entity type and are used in both example utterances and patterns.

次の例では、Location エンティティの下に origindestination の 2 つのロールがあります。In the example below the Location entity has two roles, origin and destination:

EntityEntity RoleRole 目的Purpose
場所Location originorigin 平面が離着陸する場所Where the plane departs from
場所Location destinationdestination 平面が着陸する場所Where the plane lands

.lu ファイル形式のロールは、明示的にも暗黙的にも定義できます。Roles in .lu file format can be explicitly or implicitly defined. 明示的なロールの定義では、次の表記に従います。Explicit role definition follows the notation:

@ <entityType> <entityName> [hasRole[s]] role1, role2, ...

以下に、エンティティとそのロールを明示的に定義できるさまざまな方法を示します。Shown below are the variety of ways you can explicitly define entities and their roles:

> # ml entity definition with roles
> the following are 4 different approaches to define roles:

@ ml name role1, role2

@ ml name hasRoles role1, role2

@ ml name
@ name hasRoles role1, role2

@ ml name
@ name hasRole role1
@ name hasRole role2

次の形式を使用して、パターンとラベル付けされた発話でロールを暗黙的に直接定義することもできます。You can also implicitly define roles directly in patterns and labeled utterances using the following format:

{@<entityName>:<roleName>}

次の例では、ロール userName:firstName および userName:lastName の暗黙的な定義の方法を確認できます。You can see in the example below how the roles userName:firstName and userName:lastName are implicitly defined:

# getUserName
- My first name is {@userName:firstName=vishwac}
- My full name is {@userName:firstName=vishwac} {@userName:lastName=kannan}
- Hello, I'm {@userName:firstName=vishwac}
- {@userName=vishwac} is my name

@ ml userName

パターン では、表記を使用してロールを使用 {<entityName>:<roleName>} できます。In patterns, you can use roles using the {<entityName>:<roleName>} notation. 次に例を示します。Here's an example:

# getUserName
- call me {name:userName}
- I'm {name:userName}
- my name is {name:userName}

次に示すパターンで、エンティティに対して複数のロールを定義することもできます。You can also define multiple roles for an entity in patterns, seen below:

> Roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below

# BookFlight
- book flight from {city:fromCity} to {city:toCity}
- [can you] get me a flight from {city:fromCity} to {city:toCity}
- get me a flight to {city:toCity}
- I need to fly from {city:fromCity}

$city:Seattle=
- Seattle
- Tacoma
- SeaTac
- SEA

$city:Portland=
- Portland
- PDX

パターンPatterns

[パターンを][] 使用すると、エンティティが見つかる場所の所有者を含む発話を作成することで、一致する必要がある多数の例をカバーできます。Patterns allow you to cover a large number of examples that should be matched by creating an utterance with place holders for where entities should be found. パターンは、エンティティのホルダーを含むトークン レベルの正規表現です。The patterns are a token level regular expression with place holders for entities. 発話にエンティティ の配置ホルダーまたはパターン構文がある場合、その発話はパターンとして解釈されます。If an utterance has any entity place holders or pattern syntax then it is interpreted as a pattern. それ以外の場合は、機械学習をトレーニングする発話として解釈されます。Otherwise, it is interpreted as an utterance for training machine learning.

エンティティの場所の所有者は、任意の種類のエンティティに対応できます。または、パターン内のセクションが周囲の単語を見て識別されるエンティティである場合など、パターン自体で定義できます。The entity place holders can correspond to entities of any type or they can be defined by the pattern itself, such as when a section in the pattern is an entity that is identified by looking at the surrounding words.

パターンの構文Pattern syntax

.lu ファイル形式では、LUIS パターン構文 が [サポートされています][]。The .lu file format supports the LUIS Pattern syntax. パターン構文は、発話に埋め込まれたテンプレートです。Pattern syntax is a template embedded in an utterance. テンプレートには、一致させるワードとエンティティのほか、無視するワードや句読点が含まれている必要があります。The template should contain words and entities you want to match as well as words and punctuation you want to ignore. 正規表現ではありません。It is not a regular expression.

パターン内のエンティティは中かっこ で囲まれ、 {} です。Entities in patterns are surrounded by braces, {}. パターンにはエンティティ、およびロール付きのエンティティを含めることができます。Patterns can include entities, and entities with roles. pattern.any はパターンにおいてのみ使用されるエンティティです。Pattern.any is an entity only used in patterns.

機能Function 構文Syntax 入れ子レベルNesting level Example
エンティティentity {} - 中かっこ{} - braces 22 フォーム {エンティティ名} はどこですか?Where is form {entity-name}?
省略可能optional [] - 大かっこ[] - square brackets
省略可能とグループ化の組み合わせの入れ子レベルは、3 に制限されていますThere is a limit of 3 on nesting levels of any combination of optional and grouping
22 疑問符は省略可能です [?]The question mark is optional [?]
グループ化grouping () - 小かっこ() - parentheses 22 は (a | b)is (a | b)
oror | - 縦棒 (パイプ)| - vertical bar (pipe)
1 つのグループで使用できる縦棒 (または) は 2 個に制限されていますThere is a limit of 2 on the vertical bars (Or) in one group
- ここで、はフォーム ({フォーム名-短い} | {フォーム名-long} | {フォーム番号}) ですWhere is form ({form-name-short} | {form-name-long} | {form-number})
発話の開始または終了beginning and/or end of utterance ^ - キャレット^ - caret - ^発話を開始します^begin the utterance
発話を終了します^the utterance is done^
^{number} 個のエンティティとの発話全体の厳密なリテラル一致^^strict literal match of entire utterance with {number} entity^

詳細については、LUIS のドキュメントの [パターン構文][] に関する記事を参照してください。See the Pattern syntax article in the LUIS documentation for more information.

次の例は、 alarmTime パターンによって定義されたエンティティを含むパターンとして扱われる定義を示しています。The following example shows a definition that would be treated as a pattern with an alarmTime entity defined by the pattern:

# DeleteAlarm
- delete the {alarmTime} alarm

(発話) "午前 7 alarm を削除する" はパターンに一致し、 alarmTime "午前 7" のエンティティを認識します。The utterance "delete the 7am alarm" would match the pattern and would recognize an alarmTime entity of "7am".

これに対し、次の例は ラベル付き の (発話) です alarmTime 。は、ラベル付きの値 7am があるため、機械学習されたエンティティです。By contrast, the following example is a labeled utterance where alarmTime is a machine-learned entity since it has a labeled value 7AM:

# DeleteAlarm
- delete the {alarmTime=7AM} alarm

同じ (発話) にエンティティラベルとエンティティプレースホルダーを混在させることはできませんが、機械学習されたエンティティに対応するプレースホルダーを使用することができます。You cannot mix entity labels and entity place holders in the same utterance, but you can use place holders that correspond to machine-learned entities.

ヒント

パターンを追加する前にユーザー入力にどのように応答するかを理解しておく必要があります。これは、パターンが発話の例よりも大きくなり、自信を持っているためです。You should understand how your bot responds to user input before adding patterns, because patterns are weighted more heavily than example utterances and will skew confidence. モデルの設計の開始時にそれらを追加しても問題はありませんが、発話を使用してモデルをテストした後に、各パターンがどのようにモデルを変更するかを簡単に確認できます。There is no harm adding them in the beginning of your model design, but it's easier to see how each pattern changes the model after the model is tested with utterances.

フレーズ リストPhrase list

語句リストは、特定しようとしている概念を見つけるのに役立つ単語または語句の一覧です。A phrase list is a list of words or phrases that help find the concept you're trying to identify. リストでは、大文字と小文字は区別されません。The list is not case-sensitive. 語句リストの目的は2つあります。Phrase lists have two different purposes:

  • ディクショナリを拡張 する: これは、語句リストを定義するときの既定の設定であり、 非交換 可能と呼ばれています。Extend the dictionary: This is the default when you define a phrase list and is known as non-interchangeable. 複数単語の語句は、学習する例が少なくなる機械学習の機能になります。Multi-word phrases become a feature to the machine learning which requires fewer examples to learn. この使用法では、フェーズリストのメンバー間にリレーションシップはありません。In this usage, there is no relationship between the members of the phase list.
  • シノニムの定義: 交換可能語句リストは 、同じ ことを意味するシノニムを定義するために使用されます。Define synonyms: Interchangeable phrase lists are used to define synonyms that mean the same thing. この使用方法は、少数の例を使用して一般化するのに役立ちます。This usage helps generalize with fewer examples. リスト内の任意の語句は、機械学習と同じ機能になります。Any phrase in the list results in the same feature to the machine learning. これを使用するには interchangeable 、句の一覧の定義 () でを指定する必要があります @ phraselist <Name>(interchangeable)To use this requires specifying interchangeable in your phrase list definition (@ phraselist <Name>(interchangeable))

注意

特徴 、ユーザーの意図を正確に検出する上で、その機能の重要性を強調するために、意図またはエンティティに関連付けるフレーズ リストまたはエンティティです。a feature can be a phrase list or entity that you associate with an intent or entity to emphasize the importance of that feature in accurately detecting user intent. 詳細 については、「フレーズ リストを機能として追加する 」を参照してください。See Add a phrase list as a feature for more information.

使用される一般的なシナリオを含むフレーズ リストを使用する場合と方法の詳細については、「概念のフレーズ リストを作成する 」を参照してくださいFor additional information about when and how to use phrase lists including typical scenarios they are used for, see Create a phrase list for a concept.

フレーズ リストは、次の表記を使用して定義します。You define phrase lists using the following notation:

@ phraselist <Name>
    - <phrase1>
    - <phrase2>

ディクショナリを拡張するために使用されるフレーズ リストの例を次に示します。Here's an example of a phrase list used to extend the dictionary:

@ phraseList newTerms=
- surf the sky
- jump on the beam
- blue sky pajamas

フレーズ リストを使用して、シノニムを交換可能としてマークすることで定義することもできます。Phrase lists can also be used to define synonyms by marking them as interchangeable.

@ phraseList Want(interchangeable) =
    - require, need, desire, know

> You can also break up the phrase list values into a bulleted list
@ phraseList Want(interchangeable) =
    - require
    - need
    - desire
    - know

既定では、フレーズ リストは学習した意図とエンティティすべてで使用できます。By default, phrase lists are available to all learned intents and entities. 次の 3 つの可用性状態があります。There are three availability states:

可用性の状態Availability State DescriptionDescription
enabledForAllModelsenabledForAllModels (既定値)フレーズ リストが としてマークされている場合、それを特徴として具体的に一覧表示するかどうかに関限り、すべてのモデル enabledForAllModels で使用できます。(default) When a phrase list is marked as enabledForAllModels, it is available to all models whether or not you specifically list it as a feature.
disabledForAllModelsdisabledForAllModels フレーズ リストが としてマークされている場合は、特徴として具体的に一覧表示されている場合にのみ、モデル disabledForAllModels で使用されます。When a phrase list is marked as disabledForAllModels, it will only be used in a models if it is specifically listed as a feature.
disableddisabled フレーズ リストが としてマークされている場合、特徴として具体的に一覧表示されているモデルを含め、どの場所 disabled でも使用されません。When a phrase list is marked as disabled, it will not be used anywhere, including any models where it is specifically listed as a feature. これにより、フレーズ リストをオフにし、それがなくてもうまく機能する方法を簡単に確認できます。This provides an easy means to turn off a phrase list to see how well things work without it.

フレーズ リストは既定でグローバルに使用できます。また、 キーワードを使用して具体的に設定 enabledForAllModels することもできます。Phrase lists are globally available by default, and can also be specifically set using the enabledForAllModels keyword:

@ phraselist abc enabledForAllModels

フレーズ リストを に設定する 2 つの例を示します disabledForAllModelsTwo examples of setting a phrase list to disabledForAllModels:

@ phraselist abc disabledForAllModels

> You can also use this approach
@ phraselist question(interchangeable) =
    - are you
    - you are

@ question disabledForAllModels

フレーズ リストを に設定する場合、特徴として具体的に一覧表示されている場合でも disabled 使用されません。When setting a phrase list to disabled, it will not be used even when even when specifically listed as a feature:

> phrase list definition, temporarily set to disabled to measure its impact

@ phraselist yourPhraseList disabled

> phrase list as feature to intent, will not be used

@ intent yourIntent usesFeature yourPhraseList

フレーズ リストは、次のセクションで説明するように、特定の意図とエンティティの特徴として使用できます。Phrase lists can be used as features for specific intents and entities as described in the next section.

意図とエンティティへの機能の追加Adding features to intents and entities

機械学習は、特徴を取得し、発話などの目的やエンティティに関連する方法を学習することによって機能します。Machine learning works by taking features and learning how they relate to the desired intent or entity from example utterances. 既定では、機能は発話を構成する単語にすぎません。By default, features are simply the words that make up utterances. 語句リストは、複数の単語を1つの新機能にグループ化するための手段を提供します。これにより、機械学習の一般化が、少数の例よりも良くなります。Phrase lists provide a means to group together multiple words into a new feature; this makes the machine learning generalize better from fewer examples. 既定では、語句リストはグローバルであり、すべての機械学習モデルに適用されますが、特定のインテントまたはエンティティに関連付けることもできます。By default, phrase lists are global and apply to all machine-learned models, but you can also tie them to specific intents or entities. インテントまたはエンティティを特徴として使用して、他のインテントをエンティティとして検出することもできます。You can also use intents or entities as features to detect other intents as entities. これにより、単純な構成要素からより複雑な概念を構築できるように、モジュール性が提供されます。This provides modularity so that you can build up more complex concepts from simpler building blocks.

注意

機械学習では、特徴とは、システムが監視および学習するデータの特徴または属性を示すテキストです。In machine learning, a feature is text that describes a distinguishing trait or attribute of data that your system observes and learns from. このセクションと次のセクションで説明するように、語句リストおよびインテントとエンティティを機能として使用できます。Phrase lists as well as intents and entities can be used as features as explained in this and the following sections.

機能は、キーワードを使用して、学習した目的またはエンティティに追加でき usesFeature ます。Features can be added to any learned intent or entity using the usesFeature keyword.

語句リストを機能として追加するAdd a phrase list as a feature

語句リストは、インテントまたはエンティティにフィーチャーとして追加できます。Phrase lists can be added as a feature to intents or entities. これにより、他のインテントやエンティティに影響を与えることなく、特定のインテントまたはエンティティを利用できます。This helps those specific intents or entities without affecting other intents and entities. 次に、別のモデルに対する機能としてフレーズ リストを定義する方法の例を示します。Here's an example of how to define a phrase list as a feature to another model:

> phrase list definition

@ phraseList PLCity(interchangeable) =
    - seattle
    - space needle
    - SEATAC
    - SEA

> phrase list as feature to intent 

@ intent getUserProfileIntent usesFeature PLCity

> phrase list as a feature to an ml entity

@ ml myCity usesFeature PLCity

@ regex regexZipcode = /[0-9]{5}/

> a phrase list is used as a feature in a hierarchal entity

@ ml address fromAddress, toAddress
@ address =
    - @ number 'door number'
    - @ ml streetName
    - @ ml location
        - @ ml city usesFeature PLCity
        - @ regexZipcode zipcode

エンティティまたは意図の機能としての追加Add an entity or intent as a feature

次に、usesFeature を使用して意図とエンティティを機能として追加する方法の例を示します。Below are examples of how to add intents and entities as a feature with usesFeature:

> entity definition - @ <entityType> <entityName> [<roles>]

@ prebuilt personName
@ prebuilt age

> entity definition with roles

@ ml userName hasRoles fistName, lastName

> add an entity as a feature to another entity

@ userName usesFeature personName

> add an entity as feature to an intent

@ intent getUserNameIntent usesFeature personName

> Intent definition

# getUserNameIntent
- utterances

> multiple entities as a feature to a model

@ intent getUserNameIntent usesFeature age, personName

> intent as a feature to another intent

@ intent getUserProfileIntent usesFeature getUserNameIntent

# getUserProfileIntent
- utterances

MetadataMetadata

LUIS アプリケーションに関連するメタデータを含めることも、lu ファイルにナレッジベースを QnA Maker することもできます。You can include metadata related to your LUIS application or QnA Maker knowledge base in the .lu file. これは、LU コンテンツを正しく処理するようパーサーに指示する助けになります。This will help direct the parser to handle the LU content correctly. 通常、メタデータは、lu ファイルの先頭に追加されます。Metadata is typically added to the beginning of the .lu file.

>! # を使用して構成情報を定義する方法を次に示します。Here's how to define configuration information using > !#:

> !# @<property> = <value>
> !# @<scope>.<property> = <value>
> !# @<scope>.<property> = <semicolon-delimited-key-value-pairs>

CLI 引数で明示的に渡される情報によって、.lu ファイル内の情報がオーバーライドされることに注意してください。Note that any information explicitly passed in via CLI arguments will override information in the .lu file.

> LUIS application information
> !# @app.name = my luis application
> !# @app.desc = description of my luis application
> !# @app.versionId = 1.0
> !# @app.culture = en-us
> !# @app.luis_schema_version = 7.0.0
> !# @app.settings.NormalizePunctuation = true
> !# @app.settings.NormalizeWordForm = true
> !# @app.settings.UseAllTrainingData = true
> !# @app.tokenizerVersion = 1.0.0

上の例で使用したアプリケーションメタデータ値の説明については、次の表を参照してください。See the table below for a description of the application metadata values used in the above example. LUIS のアプリ設定の詳細については、LUIS のドキュメントの「 アプリとバージョンの設定 」を参照してください。For information on app.settings in LUIS, see App and version settings in the LUIS documentation.

メタデータMetadata 説明Description
NameName アプリケーション名Your application name
VersionIdVersionId その特定のバージョンの名前The name of that specific version
カルチャCulture アプリケーションで使用される言語The language used by your application
スキーマ バージョンSchema Version LUIS スキーマは、新しい機能または設定が LUIS に追加された場合にいつでも更新されます。The LUIS schema is updated anytime a new feature or setting is added in LUIS. LUIS モデルを作成または更新するときに使用したスキーマ バージョン番号を使用します。Use the schema version number that you used when creating or updating your LUIS model.

外部参照External references

以下のセクションでは、ローカル ファイルと URI 参照を作成する方法について詳しく説明します。The sections below detail how to make local file and URI references.

ローカル ファイル参照Local file references

.lu ファイルを参照します。References the .lu file. Markdown のリンク構文に従います。follow Markdown link syntax. サポートされる参照には以下が含まれます。Supported references include:

  • [link name](<.lu file name>) を介した別の .lu ファイルへの参照。Reference to another .lu file via [link name](<.lu file name>). 参照は、絶対パスでも、格納している .lu ファイルからの相対パスでもかまいません。Reference can be an absolute path or a relative path from the containing .lu file.
  • 他の .lu ファイルを含むフォルダーへの参照は、以下の方法を通してサポートされます。Reference to a folder with other .lu files is supported through:
    • [link name](<.lu file path>*): 指定された絶対パスまたは相対パスの下にある .lu ファイルを検索します[link name](<.lu file path>*): looks for .lu files under the specified absolute or relative path
    • [link name](<.lu file path>**): サブフォルダーを含む、指定された絶対パスまたは相対パスの下にある .lu ファイルを再帰的に検索します。[link name](<.lu file path>**): recursively looks for .lu files under the specified absolute or relative path, including subfolders.
  • 特定のファイルに定義されている発話への参照を意図セクションの下か、または QnA ペアとして追加することもできます。You can also add references to utterances defined in a specific file under an intent section or as QnA pairs.
    • [link name](<.lu file path>#<INTENT-NAME>): .lu ファイルの ですべての発話を検索し、参照が指定されている発話の一覧に追加します。[link name](<.lu file path>#<INTENT-NAME>): finds all utterances under in the .lu file and adds them to the list of utterances where the reference is specified.
    • [link name](<.lu file path>#<INTENT-NAME>*utterances*): .lu ファイルの の下のすべての発話 (パターンではない) を検索し、参照が指定されている発話の一覧に追加します。[link name](<.lu file path>#<INTENT-NAME>*utterances*): finds all utterances (not patterns) under in the .lu file and adds them to the list of utterances where the reference is specified.
    • [link name](<.lu file path>#<INTENT-NAME>*patterns*): .lu ファイルの の下のすべてのパターン (発話ではない) を検索し、参照が指定されているパターンの一覧に追加します。[link name](<.lu file path>#<INTENT-NAME>*patterns*): finds all patterns (not utterances) under in the .lu file and adds them to the list of patterns where the reference is specified.
    • [link name](<.lu file path>#*utterances*): .lu ファイル内のすべての発話を検索し、参照が指定されている発話の一覧に追加します。[link name](<.lu file path>#*utterances*): finds all utterances in the .lu file and adds them to the list of utterances where the reference is specified.
    • [link name](<.lu file path>#*patterns*): .lu ファイル内のすべてのパターンを検索し、参照が指定されている発話の一覧に追加します。[link name](<.lu file path>#*patterns*): finds all patterns in the .lu file and adds them to the list of utterances where the reference is specified.
    • [link name](<.lu file path>#*utterancesAndPatterns*): .lu ファイル内のすべての発話とパターンを検索し、参照が指定されている発話の一覧に追加します。[link name](<.lu file path>#*utterancesAndPatterns*): finds all utterances and patterns in the .lu file and adds them to the list of utterances where the reference is specified.
    • [link name](<.qna file path>#$name?): .qna コンテンツ内の特定の変更定義からすべての変更を検索し、参照が指定されている発話の一覧に追加します。[link name](<.qna file path>#$name?): finds all alterations from the specific alteration definition in the .qna content and adds them to the list of utterances where the reference is specified.
    • [link name](<.qna file path>#*alterations*?): .qna コンテンツからすべての変更を検索し、参照が指定されている発話の一覧に追加します。[link name](<.qna file path>#*alterations*?): finds all alterations from the .qna content and adds them to the list of utterances where the reference is specified.
    • [link name](<.qna file path>#?question-to-find?): 特定の質問からすべてのバリエーションの質問を検索し、参照が指定されている発話の一覧に追加します。[link name](<.qna file path>#?question-to-find?): finds all variation questions from the specific question and adds them to the list of utterances where the reference is specified. 質問に含まれるスペースはすべて、 - 文字に置き換える必要があることに注意してください。Note that any spaces in your question will need to be replaced with the - character.
    • [link name](<.qna file path>#*answers*?): すべての回答を検索し、参照が指定されている発話の一覧に追加します。[link name](<.qna file path>#*answers*?): finds all answers and adds them to the list of utterances where the reference is specified.

以下に、前述した参照の例を示します。Here's an example of the aforementioned references:

> You can include references to other .lu files

[All LU files](./all.lu)

> References to other files can have wildcards in them

[en-us](./en-us/*)

> References to other lu files can include subfolders as well.
> /** indicates to the parser to recursively look for .lu files in all subfolders as well.

[all LU files](../**)

> You can include deep references to intents defined in a .lu file in utterances

# None
- [None uttearnces](./all.lu#Help)

> With the above statement, the parser will parse all.lu and extract out all utterances associated with the 'Help' intent and add them under 'None' intent as defined in this file.

> NOTE: This **only** works for utterances as entities that are referenced by the uttearnces in the 'Help' intent will not be brought forward to this .lu file.

# All utterances
> you can use the *utterances* wild card to include all utterances from a lu file. This includes utterances across all intents defined in that .lu file.
- [all.lu](./all.lu#*utterances*)
> you can use the *patterns* wild card to include all patterns from a lu file.
> - [all.lu](./all.lu#*patterns*)
> you can use the *utterancesAndPatterns* wild card to include all utterances and patterns from a lu file.
> - [all.lu](./all.lu#*utterancesAndPatterns*)

> You can include wild cards with deep references to QnA maker questions defined in a .qna file in utterances

# None
- [QnA questions](./*#?)

> With the above statement, the parser will parse **all** .lu files under ./, extract out all questions from QnA pairs in those files and add them under 'None' intent as defined in this file.

> You can include deep references to QnA maker questions defined in a .qna file in utterances

# None
- [QnA questions](./qna1.qna#?)

> With the above statement, the parser will parse qna1.lu and extract out all questions from QnA pairs in that file and add them under 'None' intent as defined in this file.

URI 参照URI references

URI 参照を作成する方法の例を次に示します。Below are examples of how to make URI references:

> URI to LU resource
[import](http://.../foo.lu)

# intent1
> Ability to pull in specific utterances from an intent
- [import](http://.../foo.lu#None)

# intent2
> Ability to pull in utterances or patterns or both from a specific intent 'None'
- [import](http://..../foo.lu#None*utterances*)
- [import](http://..../bar.lu#None*patterns*)
- [import](http://..../taz.lu#None*utterancesandpatterns*)

# intent3
> Ability to pull in all utterances or patterns or both across all intents
- [import](http://..../foo.lu#*utterances*)
- [import](http://..../bar.lu#*patterns*)
- [import](http://..../taz.lu#*utterancesandpatterns*)

追加情報Additional Information