Formát souboru .lu

PLATÍ PRO: SDK v4

Soubor .lu popisuje model porozumění jazyku. Soubor .lu obsahuje jednoduché textové definice založené na markdownu pro koncepty porozumění jazyku. K trénování jazykového modelu pro službu nebo modul pro rozpoznávání přirozeného jazyka (NLU) můžete použít jeden nebo více souborů .lu, které robot používá, jako je language Understanding (LUIS) nebo Orchestrator. Modul NLU, který zvolíte, může být schopen interpretovat pouze podmnožinu prvků, které může soubor .lu popsat.

Modul NLU spoléhá na jazykový model, aby porozuměl tomu, co uživatel říká. Modul vytvoří jazykový model ze sad trénovacích příkladů stejně jako jakýkoli algoritmus strojového učení. Po vytrénování modul použije model k predikci záměru promluvy, obecně ve formě jednoho nebo více záměrů , které představují úkol nebo akci, které chce uživatel provést, a nula nebo více entit , které představují prvky relevantní pro daný záměr.

Službu LUIS nebo Orchestrator můžete použít s libovolným robotem vyvinutým pomocí sady SDK nebo nástroje Composer služby Bot Framework.

Poznámka:

Služba Language Understanding (LUIS) bude vyřazena 1. října 2025. Od 1. dubna 2023 nebudete moct vytvářet nové prostředky LUIS. Novější verze language understanding je teď dostupná jako součást jazyka Azure AI.

Konverzační jazyk understanding (CLU), funkce jazyka Azure AI, je aktualizovaná verze služby LUIS. Další informace o podpoře porozumění jazyku v sadě SDK služby Bot Framework najdete v tématu Principy přirozeného jazyka.

Tento článek představuje referenční informace o reprezentaci prvků jazykového modelu ve formátu souboru .lu. Informace o tom, jak se v robotech používá porozumění jazyku, najdete v tématu Language Understanding nebo Zpracování přirozeného jazyka v composeru.

Definování záměrů pomocí ukázkových promluv

Záměr představuje úkol nebo akci, kterou chce uživatel provést, jak je vyjádřeno v promluvě uživatele. Do robota přidáte záměry, které mu umožní identifikovat skupiny otázek nebo příkazů, které představují stejný záměr uživatele.

Některé příklady záměrů, které můžete definovat pro cestovního robota, s ukázkovými promluvami, ze kterých jsou definované:

Záměr Ukázkové promluvy
BookFlight (Rezervovat let) "Zarezervovat mi let do Maui příští týden"
"Letět na Maui na 17.
"Potřebuji letenku příští pátek do Maui"
Pozdrav "Ahoj"
"Hello"
"Dobré odpoledne"
Zkontrolovat počasí "Jaké je počasí jako příští týden v Maui?"
Nic "Líbí se mi soubory cookie"
"Bullfrogs byl zaznamenán skok přes 7 stop"

Kromě záměrů, které definujete, none je záložní záměr, který způsobí unknownIntent , že událost se aktivuje, když se z promluvy uživatelů nedají určit žádné záměry. Při použití služby LUIS je záměr None povinným záměrem, který je potřeba vytvořit pomocí promluv, které nejsou součástí vaší domény. Promluvy spojené s vaším záměrem None by měly obsahovat zhruba 10 % celkových promluv v souboru .lu.

Záměry s ukázkovými promluvami se deklarují následujícím způsobem:

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

# <intent-name> popisuje nový oddíl definice záměru. Každý řádek za definicí záměru jsou ukázkové promluvy, které tento záměr popisují pomocí - <utterance> formátu.

Tady je příklad souboru .lu, který demonstruje tyto záměry a ukázkové promluvy, které zachycují způsoby, jak můžou uživatelé vyjádřit záměr:

> 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?

Poznámka:

-K označení seznamů použijte znak , +nebo * znak. Číslovaný seznam není podporován.

Slouží > k vytvoření komentáře.

Více znaků komentáře (">") lze také použít k definování oddílů osnovy v souboru .lu, které vám pomůžou uspořádat obsah. Composer umožňuje využít výhod osnovy při úpravách souborů LU.

Další informace ozáměrch službě LUIS najdete v tématu Záměry v aplikaci LUIS.

Entity

Entita je součástí promluvy, kterou lze považovat za parametr, který lze použít při interpretaci záměru. Například v promluvě Rezervovat lístek na Maui, Maui je entita FlightDestination.

Ukázková promluva uživatele Záměr predikovaný Extrahované entity Vysvětlení
Ahoj, jak se máš? Pozdrav - Žádné entity, které se mají extrahovat.
"Rezervovat let do Maui" BookFlight (Rezervovat let) "Maui" Entita FlightDestination se extrahuje jako Maui.
"Jaké je počasí jako příští týden v Maui?" Zkontrolovat počasí "Maui", "příští týden" Entita WeatherLocation se extrahuje jako maui a entita DateRange se extrahuje jako příští týden.
"Chci objednat malou pizzu" orderPizza "malý" Entita Size se extrahuje jako malá.
„Schedule a meeting at 1pm with Bob in Distribution“ (Naplánovat na 13:00 schůzku s Bobem v oddělení distribuce) ScheduleMeeting (Naplánovat schůzku) "1pm", "Bob" Entita MeetingTime se extrahuje jako 1:00 a entita Účastníci se extrahuje jako Bob.

Tip

Další informace specifické pro použití entit ve službě LUIS najdete v tématu Entity ve službě LUIS v dokumentaci ke službě LUIS.

Definice entit

Definice entity definuje, jak rozpoznat rozsah v promluvě jako entitu, kterou pak můžete použít ve svém robotovi. Existuje mnoho různých typů entit, mezi které patří: strojové učení, předem připravené, seznamy, regulární výrazy a vzory.

Definice entit v souborech .lu začínají položkou se znakem at (@) následovaným typem entity a názvem entity:

@ <entity-type> <entity-name>

Volitelně může mít každá entita také role , které identifikují různé použití stejné entity. Můžete také přidat funkce , které vám pomůžou lépe rozpoznat entity. Obecná syntaxe vypadá takto:

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

Entity, které vyžadují definici, jako jsou entity seznamu a regulárního výrazu , jsou reprezentovány pomocí následujícího zápisu:

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

Další příklady deklarací entit se demonstrují v následujících částech spolu s typy entit, na které se vztahují.

S výjimkou předem připravených entit můžou názvy entit obsahovat více slov s mezerami. Všechny názvy entit s mezerami musí být zabalené v uvozovkách:

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

Typy entit

Ve službě LUIS existuje několik typů entit. V následujících částech se dozvíte o těchto typech entit a souvisejících konceptech, jako jsou role a funkce, a příklady vytváření šablon LU, které je používají.

Strojově naučená entita

Strojově naučené entity jsou entity , které umožňují zadat příklady, ve kterých je označíte v ukázkových promluvách. To jim dává kontext potřebný k učení. Strojově naučená entita je ideální při identifikaci dat, která nejsou vždy dobře naformátovaná, ale mají stejný význam.

Následující příklad ukazuje strojově naučenou bookFlight entitu s názvem city (@ ml city) a záměr s ukázkovými promluvami s označenými entitami:

> 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 = Bengaluru}
- Purchase ticket from {@city = Washington} to {@city = Tampa Bay}

Když uživatel řekne něco podobného jako "Potřebuji let rezervovaný z Londýna do madridu", luis zjistí záměr bookFlight a extrahuje Londýn i Madrid jako městské entity.

Role jsou v podstatě další vrstvou kontextových informací, které můžete přidat do strojově naučených entit, které se také učí z kontextu. Následující příklad promluvy ukazuje role odletu a cíle přidružené k entitě města:

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

Strojově naučené entity můžou být také složité, pokud mají hierarchii entit souvisejících s sebou. Můžete mít například něco jako entitu pizzaOrder , která má následující podřízené entity: množství, velikost, kůru, zastavování atd.

Podřízenou entitu definujete tak, že předepíšete pomlčku (-) na znak at (@) a odsazení, jak ukazuje následující příklad:

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

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

V předchozím příkladu je entita čísla předem připravená entita. Zbývající entity jsou všechny entity seznamu.

Následující příklad ukazuje definici address strojově naučené entity se dvěma rolemi fromAddress a toAddress také podřízenými entitami.

@ 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

Předem připravené entity

Předem připravené entity SLUŽBY LUIS jsou definovány systémem. To vám ušetří práci, protože jsou vysoce kvalitní a poskytují normalizované hodnoty, které se snadněji používají v programech. Například fráze "jeden tisíc a dva" se stane číslem 1002. Podporují se následující typy luis [předem připravená entita][předem připravená entita]:

  • stáří
  • datetimeV2
  • Dimenze
  • E-mail
  • geographyV2
  • Keyphrase
  • Peníze
  • Číslo
  • Pořadové
  • pořadové čísloV2
  • percentage
  • personName
  • Phonenumber
  • Teplota
  • url
  • datetime

Tady jsou příklady, jak definovat předem připravené entity:

@ prebuilt number 
@ prebuilt datetimeV2
@ prebuilt age

Entita seznamu

[Výpis entit] [list-entity] představuje pevnou uzavřenou sadu souvisejících slov spolu s jejich synonymy. Normalizovaná hodnota se vrátí, když se rozpozná některá z odpovídajících synonym. Rozlišují se malá a velká písmena a extrahují se na základě přesné shody textu.

Následující příklad ukazuje syntaxi pro definování entity seznamu:

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

Rozšířením příkladu pizzaOrder z oddílu entity strojového učení je tady příklad seznamů pro podřízené entity velikosti a kůry:

@ 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

Tip

Vzhledem k tomu, že entita seznamu vyžaduje, aby se extrahoval přesná shoda, výsledky se můžou zlepšit přidáním běžných chybných pravopisů. Jednou z běžných příčin chybně napsaných znaků je výsledek překlepů, jako jsou dvojité písmena trojité jako v "vycpané krustě" v předchozím příkladu.

Pokud používáte entity seznamu, měli byste zahrnout hodnotu ze seznamu přímo do promluvy, nemusíte označovat entity seznamu, i když je stále můžete použít jako držitelé místa ve vzoru. Následující příklad ukazuje promluvu s hodnotami ze seznamu:

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

Entiay regulárního výrazu

[entita regulárního výrazu][regulární výraz-entita] extrahuje entitu na základě vzoru znaku regulárního výrazu, který zadáte. Regulární výrazy jsou nejvhodnější pro strukturovaný text nebo předdefinovanou sekvenci alfanumerických hodnot, které se očekávají v určitém formátu. Příklad:

Entita Regulární výraz Příklad
Flight Number (Číslo letu) let [A-Z]{2} [0-9]{4} let AS 1234
Číslo platební karty [0-9]{16} 5478789865437632

Tady je příklad definic entit regulárního výrazu:

> 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}/

Role

Role je pojmenovaný alias entity na základě kontextu v promluvě. Roli je možné použít s libovolným předem připraveným nebo vlastním typem entity a používá se jak v ukázkových promluvách, tak ve vzorech.

V příkladu pod entitou Location má dvě role a origindestination:

Entita Role Účel
Poloha origin (zdroj) Odkud letadlo odjíždí
Poloha destination Kde letadlo přistane

Role ve formátu souboru .lu mohou být explicitně nebo implicitně definovány. Explicitní definice role se řídí zápisem:

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

Níže jsou uvedeny různé způsoby, jak explicitně definovat entity a jejich role:

> # 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

Role můžete také implicitně definovat přímo ve vzorech a označených promluvách pomocí následujícího formátu:

{@<entityName>:<roleName>}

V následujícím příkladu vidíte, jak jsou role userName:firstNameuserName:lastName a implicitně definované:

# 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

Ve vzorech můžete použít role pomocí zápisu {<entityName>:<roleName>} . Tady je příklad:

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

Můžete také definovat více rolí pro entitu ve vzorech, jak je znázorněno níže:

> 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

Vzory

[Vzory] [] Umožňuje pokrýt velký počet příkladů, které by se měly shodovat vytvořením promluvy s držiteli místa, kde by se měly najít entity. Vzory představují regulární výraz na úrovni tokenu s držiteli místa pro entity. Pokud má promluva nějaké držáky nebo syntaxi vzorů, interpretuje se jako vzor. Jinak se interpretuje jako promluva pro trénování strojového učení.

Držitelé místa entit mohou odpovídat entitám libovolného typu nebo je mohou definovat samotným vzorem, například když je oddíl v modelu entitou, která je identifikována pohledem na okolní slova.

Syntaxe vzoru

Formát souboru .lu podporuje službu LUIS [Syntaxe vzoru][]. Syntaxe vzoru je šablona vložená do promluvy. Šablona by měla obsahovat slova i entity, které chcete shodovat, a také slova a interpunkce, které chcete ignorovat. Šablona není regulární výraz.

Entity ve vzorech jsou obklopeny složenými závorkami, {}. Vzory můžou zahrnovat entity a entity s rolemi. [Pattern.any] [pattern-any] je entita použitá pouze ve vzorech.

Function Syntaxe Úroveň vnoření Příklad
entity {} -Závorky 2 Where is form {entity-name}?
optional [] - Hranaté závorky
Je limit 3 na úrovních vnoření jakékoli kombinace volitelné a seskupování.
2 The question mark is optional [?]
grouping () - závorky 2 is (a \| b)
or | - svislý pruh (potrubí)
Na svislých pruhech (nebo) v jedné skupině je limit 2
- Where is form ({form-name-short} \| {form-name-long} \| {form-number})
začátek a/nebo konec promluvy ^-Stříška - ^begin the utterance
the utterance is done^
^strict literal match of entire utterance with {number} entity^

Další informace najdete v článku [Syntaxe vzoru][] v dokumentaci ke službě LUIS.

Následující příklad ukazuje definici, která by byla považována za vzor s entitou alarmTime definovanou modelem:

# DeleteAlarm
- delete the {alarmTime} alarm

Promluva "odstranění alarmu 7:00" by odpovídala vzoru a rozpoznala by entitu alarmTime "7:00".

Naproti tomu následující příklad je označená promluva, kde alarmTime je strojově naučená entita, protože má označenou hodnotu 7AM:

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

Ve stejné promluvě nemůžete kombinovat popisky entit a vlastníky míst entit, ale můžete použít vlastníky míst, které odpovídají strojově naučeným entitám.

Tip

Než přidáte vzory, měli byste porozumět tomu, jak robot reaguje na uživatelský vstup, protože vzory jsou vážené silněji než ukázkové promluvy a budou se zkosit spolehlivosti. Na začátku návrhu modelu není žádné škody, ale je jednodušší zjistit, jak každý vzor změní model po otestování s promluvami.

Seznam frází

[seznam frází][phrase-list] je seznam slov nebo frází, které pomáhají najít koncept, který se pokoušíte identifikovat. V seznamu se nerozlišuje malá a velká písmena. Seznamy frází mají dva různé účely:

  • Rozšiřte slovník: Toto je výchozí nastavení při definování seznamu frází a označuje se jako nezaměnitelný. Víceslovné fráze se stanou funkcí strojového učení, které vyžaduje méně příkladů, než se naučíte. V tomto použití neexistuje žádný vztah mezi členy seznamu fází.
  • Definovat synonyma: Seznamy zaměnitelných frází se používají k definování synonym, která znamenají stejnou věc. Toto použití pomáhá generalizovat s menším počtem příkladů. Jakákoli fráze v seznamu má za následek stejnou funkci strojového učení. Chcete-li použít tuto možnost interchangeable , je nutné zadat v definici seznamu frází (@ phraselist <Name>(interchangeable))

Poznámka:

Funkce může být seznam frází nebo entita, kterou přidružíte k záměru nebo entitě, aby se zdůraznila důležitost této funkce při přesném zjišťování záměru uživatele. Další informace najdete v tématu Přidání seznamu frází jako funkce .

Další informace o tom, kdy a jak používat seznamy frází, včetně typických scénářů, pro které se používají, najdete v tématu [Vytvoření seznamu frází pro koncept][phrase-list].

Seznamy frází definujete pomocí následujícího zápisu:

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

Tady je příklad seznamu frází, který slouží k rozšíření slovníku:

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

Seznamy frází lze také použít k definování synonym tím, že je označíte jako zaměnitelné.

@ 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

Ve výchozím nastavení jsou seznamy frází dostupné všem naučeným záměrům a entitám. Existují tři stavy dostupnosti:

Stav dostupnosti Popis
enabledForAllModels (výchozí) Pokud je seznam frází označený jako enabledForAllModels, je k dispozici pro všechny modely bez ohledu na to, jestli ho výslovně vypíšete jako funkci.
disabledForAllModels Pokud je seznam frází označený jako disabledForAllModels, používá se pouze v modelu, pokud je výslovně uveden jako funkce.
deaktivováno Pokud je seznam frází označený jako disabled, nepoužívá se nikde, včetně modelů, kde je výslovně uveden jako funkce. Díky tomu můžete snadno vypnout seznam frází, abyste viděli, jak dobře funguje bez něj.

Seznamy frází jsou ve výchozím nastavení globálně dostupné a dají se také nastavit pomocí klíčového enabledForAllModels slova:

@ phraselist abc enabledForAllModels

Dva příklady nastavení seznamu frází na disabledForAllModels:

@ phraselist abc disabledForAllModels

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

@ question disabledForAllModels

Když nastavíte seznam frází tak disabled, aby se nepoužíval, ani když je výslovně uvedený jako funkce:

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

@ phraselist yourPhraseList disabled

> phrase list as feature to intent, won't be used

@ intent yourIntent usesFeature yourPhraseList

Seznamy frází lze použít jako funkce pro konkrétní záměry a entity, jak je popsáno v další části.

Přidání funkcí do záměrů a entit

Strojové učení funguje tak, že přebírá funkce a učí se, jak souvisí s požadovaným záměrem nebo entitou z ukázkových promluv. Ve výchozím nastavení jsou funkce jednoduše slova, která tvoří promluvy. Seznamy frází poskytují prostředky pro seskupení více slov do nové funkce; tím se zobecní strojové učení z méně příkladů. Ve výchozím nastavení jsou seznamy frází globální a platí pro všechny strojově naučené modely, ale můžete je také svázat s konkrétními záměry nebo entitami. K detekci dalších záměrů jako entit můžete použít také záměry nebo entity. To poskytuje modularitu, abyste mohli vytvářet složitější koncepty z jednodušších stavebních bloků.

Poznámka:

Ve strojovém učení je funkce text, který popisuje rozlišující vlastnost nebo atribut dat, která systém sleduje a učí se z nich. Seznamy frází, záměry a entity se dají použít jako funkce, jak je vysvětleno v této a následující části.

Funkce je možné přidat do jakéhokoli získaného záměru nebo entity pomocí klíčového usesFeature slova.

Přidání seznamu frází jako funkce

Seznamy frází je možné přidat jako funkci k záměrům nebo entitám. To pomáhá těmto konkrétním záměrům nebo entitám, aniž by to mělo vliv na jiné záměry a entity. Tady je příklad definice seznamu frází jako funkce pro jiný 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

Přidání entity nebo záměru jako funkce

Níže jsou uvedeny příklady přidání záměrů a entit jako funkce s 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

Metadata

Do souboru .lu můžete zahrnout metadata související s vaší aplikací LUIS nebo službou QnA Maker znalostní báze. To pomůže analyzátoru správně zpracovat obsah LU. Metadata se obvykle přidávají na začátek souboru .lu.

Tady je postup definování informací o konfiguraci pomocí > !#:

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

Všimněte si, že všechny informace, které jsou explicitně předány prostřednictvím argumentů rozhraní příkazového řádku, přepíší informace v souboru .lu.

> 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

Popis hodnot metadat aplikace použitých v předchozím příkladu najdete v následující tabulce. Informace o app.settings ve službě LUIS najdete v tématu [Nastavení aplikace a verze][luis-metadata] v dokumentaci ke službě LUIS.

Metadata Popis
Name Název vaší aplikace
Id verze Název konkrétní verze
Kultura Jazyk používaný vaší aplikací
Verze schématu Schéma služby LUIS se aktualizuje vždy, když se ve službě LUIS přidá nová funkce nebo nastavení. Použijte číslo verze schématu, které jste použili při vytváření nebo aktualizaci modelu LUIS.

Externí odkazy

Následující části podrobně popisují, jak vytvořit odkazy na místní soubor a identifikátor URI .

Odkazy na místní soubory

Poznámka:

Azure AI QnA Maker bude vyřazený 31. března 2025. Od 1. října 2022 nebudete moci vytvářet nové zdroje ani znalostní báze QnA Maker. Novější verze funkce pro otázky a odpovědi je teď dostupná jako součást jazyka Azure AI.

Vlastní odpověď na otázky, funkce jazyka Azure AI, je aktualizovaná verze služby QnA Maker. Další informace o podpoře otázek a odpovědí v sadě SDK služby Bot Framework najdete v tématu Principy přirozeného jazyka.

Odkazuje na soubor .lu. Postupujte podle syntaxe odkazu Markdownu. Mezi podporované odkazy patří:

  • Odkaz na jiný soubor .lu prostřednictvím [link name](<.lu file name>). Odkazem může být absolutní cesta nebo relativní cesta z obsahujícího souboru .lu.
  • Odkaz na složku s jinými soubory .lu se podporuje prostřednictvím:
    • [link name](<.lu file path>*): vyhledá soubory .lu pod zadanou absolutní nebo relativní cestou.
    • [link name](<.lu file path>**): rekurzivně hledá soubory .lu pod zadanou absolutní nebo relativní cestou, včetně podsložek.
  • Můžete také přidat odkazy na promluvy definované v určitém souboru v oddílu záměru nebo jako páry QnA.
    • [link name](<.lu file path>#<INTENT-NAME>): Najde všechny promluvy v souboru .lu v části <INTENT-NAME> a přidá je do seznamu promluv, ve kterých je zadaný odkaz.
    • [link name](<.lu file path>#<INTENT-NAME>*utterances*): Najde všechny promluvy (ne vzory) v souboru .lu v souboru <.> lu a přidá je do seznamu promluv, kde je zadaný odkaz.
    • [link name](<.lu file path>#<INTENT-NAME>*patterns*): Vyhledá všechny vzory (ne promluvy) v souboru .lu v souboru <.> lu a přidá je do seznamu vzorů, ve kterých je zadaný odkaz.
    • [link name](<.lu file path>#*utterances*): najde všechny promluvy v souboru .lu a přidá je do seznamu promluv, kde je zadaný odkaz.
    • [link name](<.lu file path>#*patterns*): najde všechny vzory v souboru .lu a přidá je do seznamu promluv, kde je zadán odkaz.
    • [link name](<.lu file path>#*utterancesAndPatterns*): Najde všechny promluvy a vzory v souboru .lu a přidá je do seznamu promluv, ve kterých je zadaný odkaz.
    • [link name](<.qna file path>#$name?): najde všechny změny z konkrétní definice změny v obsahu .qna a přidá je do seznamu promluv, kde je zadán odkaz.
    • [link name](<.qna file path>#*alterations*?): najde všechny změny z obsahu .qna a přidá je do seznamu promluv, kde je zadán odkaz.
    • [link name](<.qna file path>#?question-to-find?): najde všechny variantní otázky z konkrétní otázky a přidá je do seznamu promluv, ve kterých je zadaný odkaz. Všimněte si, že všechny mezery v otázce budou muset být nahrazeny znakem - .
    • [link name](<.qna file path>#*answers*?): najde všechny odpovědi a přidá je do seznamu promluv, ve kterých je zadaný odkaz.

Tady je příklad výše uvedených odkazů:

> 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 won't 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.

Odkazy na identifikátor URI

Níže jsou uvedeny příklady, jak vytvořit odkazy na identifikátor URI:

> 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*)

Další informace