.lu fájlformátum

A KÖVETKEZŐKRE VONATKOZIK: SDK v4

A .lu fájl egy nyelvfelismerési modellt ír le. A .lu-fájlok Markdown-szerű, egyszerű szövegalapú definíciókat tartalmaznak a nyelvfelismerési fogalmakhoz. Egy vagy több .lu fájl használatával betanított egy nyelvi modellt a robot által használt természetes nyelvi megértési (NLU) szolgáltatáshoz vagy motorhoz, például a Language Understandinghez (LUIS) vagy az Orchestratorhoz. A választott NLU-motor csak azoknak az elemeknek a részhalmazát tudja értelmezni, amelyeket egy .lu-fájl leírhat.

Az NLU-motor egy nyelvi modellre támaszkodik, hogy megértse a felhasználó által elmondott szöveget. A motor a gépi tanulási algoritmusokhoz hasonlóan betanítási példákból hoz létre egy nyelvi modellt. A betanítást követően a motor a modellt használja egy kimondott szöveg szándékának előrejelzésére, általában egy vagy több szándék formájában, amely egy olyan feladatot vagy műveletet jelöl, amelyet a felhasználó el szeretne végezni, és nulla vagy több olyan entitás, amely a szándék szempontjából releváns elemeket jelöl.

A LUIS vagy az Orchestrator bármely robottal használható, amelyet a Bot Framework SDK vagy a Composer használatával fejlesztettek ki.

Megjegyzés:

A Language Understanding (LUIS) 2025. október 1-jén megszűnik. 2023. április 1-től nem hozhat létre új LUIS-erőforrásokat. Az Azure AI Language részeként már elérhető a nyelvértés újabb verziója.

Az Azure AI Language egyik funkciója, a beszélgetési nyelv megértése (CLU) a LUIS frissített verziója. További információ a Bot Framework SDK nyelvfelismerési támogatásáról: Természetes nyelvfelismerés.

Ez a cikk a nyelvi modell elemeinek .lu fájlformátumban való ábrázolására szolgál. A nyelvértés robotokban való használatáról további információt a Language Understanding vagy a Natural language processing in Composer című témakörben talál.

Szándékok definiálása kimondott mintával

A szándék egy olyan feladatot vagy műveletet jelöl, amelyet a felhasználó el szeretne végezni a felhasználó kimondott szövegében kifejezve. Szándékokat adhat hozzá a robothoz, hogy azonos felhasználói szándékot képviselő kérdések vagy parancsok csoportjait azonosíthassa.

Néhány példa arra, hogy milyen szándékokat definiálhat egy utazási robothoz, és milyen kimondott szövegekből vannak definiálva:

Szándék Példák kimondott szövegekre
RepülőjegyFoglalás "Foglaljon nekem egy repülőt Mauiba jövő héten"
"Repülj mauira 17-én"
"Szükségem van egy repülőjegyre jövő pénteken Mauiba"
Üdvözlés "Szia"
"Hello"
"Jó délutánt"
Időjárás-ellenőrzés "Milyen lesz az időjárás Mauiban a jövő héten?"
None "Szeretem a cookie-kat"
"Bullfrogs már rögzített ugrás több mint 7 láb"

A definiált szándékokon kívül a None egy tartalék szándék, amely az unknownIntent eseményt aktiválja, ha a felhasználók kimondott szövegéből nem határozható meg szándék. A LUIS használatakor a Nincs szándék kötelező szándék, amelyet a tartományon kívüli kimondott szövegekkel kell létrehoznia. A None szándékhoz társított kimondott szövegeknek a .lu fájlban lévő teljes kimondott szövegek nagyjából 10%-át kell tartalmazniuk.

A kimondott mintájú szándékokat a következő módon deklaráljuk:

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

# <intent-name> egy új szándékdefiníciós szakaszt ír le. A szándékdefiníciót követő minden sor példa kimondott szöveg, amely a formátum használatával írja le ezt a - <utterance> szándékot.

Íme egy példa .lu fájl ezekre a szándékokra és kimondott szövegekre, amelyek rögzítik, hogy a felhasználók hogyan fejezhetik ki a szándékot:

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

Megjegyzés:

A listák jelöléséhez használja a -, +vagy * a karaktert. A számozott listák nem támogatottak.

Megjegyzés létrehozásához használható > .

Több megjegyzés (">") karakter is használható a .lu fájl tagoló szakaszainak meghatározására a tartalom rendszerezéséhez. A Composer lehetővé teszi, hogy kihasználja a lu-fájlok szerkesztésekor a vázlatkészítés előnyeit.

A szándékokkal és kimondott szövegekkel kapcsolatos további információkért tekintse meg a LUIS-alkalmazásban lévő szándékokat, és ismerje meg, hogy milyen jó kimondott szövegek tartoznak a LUIS-alkalmazáshoz a LUIS dokumentációjában.

Entitások

Az entitás egy kimondott szöveg része, amely olyan paraméterként tekinthető, amely felhasználható egy szándék értelmezéséhez. A kimondott szövegben például a Book a ticket to Maui (Maui) egy FlightDestination entitás.

Felhasználói kimondott szövegminta Szándék előrejelzett Kinyert entitások Explanation
Helló, hogy vagy? Üdvözlés - Nincs kinyerni kívánt entitás.
"Foglaljon egy járatot Mauiba" RepülőjegyFoglalás "Maui" A "FlightDestination" entitás "Maui" néven lesz kinyerve.
"Milyen lesz az időjárás Mauiban a jövő héten?" Időjárás-ellenőrzés "Maui", "jövő hét" A "WeatherLocation" entitást a rendszer "Maui" néven nyeri ki, a "DateRange" entitás pedig "jövő héten" lesz kinyerve.
"Szeretnék rendelni egy kis pizzát" orderPizza "kicsi" A "Size" entitás "kicsiként" lesz kinyerve.
„Ütemezz egy értekezletet 13 óráraBobbal a terjesztési osztályról.” ÉrtekezletÜtemezés "13:00", "Bob" A "MeetingTime" entitás "13:00" néven lesz kinyerve, a "Résztvevők" entitás pedig "Bob" néven lesz kinyerve.

Tipp.

Az entitások LUIS-ban való használatával kapcsolatos további információkért tekintse meg a LUIS dokumentációjában szereplő Entitások a LUIS-ban című témakört.

Entitásdefiníciók

Az entitásdefiníciók meghatározzák, hogyan ismerhetők fel a kimondott szövegekben egy olyan entitások, amelyeket aztán használhat a robotban. Számos különböző típusú entitás létezik, például gépi tanult, előre összeállított, listák, reguláris kifejezések és minták.

A .lu fájlokban lévő entitásdefiníciók a bejegyzést az at sign (@) jellel, majd az entitás és az entitás neve típusával indítják el:

@ <entity-type> <entity-name>

Opcionálisan minden entitás rendelkezhet olyan szerepkörök használatával is, amelyek azonos entitás különböző felhasználási módjait azonosítják. Olyan funkciókat is hozzáadhat, amelyek segítenek jobban felismerni az entitásokat. Az általános szintaxis a következőképpen néz ki:

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

A definíciót igénylő entitások( például lista - és reguláris kifejezés-entitások ) a következő jelöléssel jelennek meg:

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

Az entitásdeklarációkra vonatkozó további példákat a következő szakaszokban mutatjuk be, valamint azokat az entitástípusokat, amelyekre vonatkoznak.

Az előre összeállított entitások kivételével az entitásnevek szóközökkel több szót is tartalmazhatnak. A szóközökkel rendelkező entitásneveket idézőjelekbe kell burkolni:

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

Entitástípusok

A LUIS-ban számos entitástípus létezik. A következő szakaszokban megismerheti ezeket az entitástípusokat és kapcsolódó fogalmakat, például szerepköröket és funkciókat, valamint példákat az őket használó LU-sablonok létrehozására.

Gépi tanulással létrejött entitás

A gépien tanult entitások olyan entitások , amelyek lehetővé teszik, hogy példákat adjon meg, ahol a kimondott példaszövegekben felcímkézheti őket. Ez megadja nekik a tanuláshoz szükséges környezetet. A gépileg tanult entitás ideális az olyan adatok azonosításához, amelyek nem mindig jól formázottak, de jelentésük megegyezik.

Az alábbi példa egy város (@ ml city) nevű, gép által tanult entitást és egy bookFlight kimondott mintával rendelkező szándékot mutat be az entitások címkéjével:

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

Amikor egy felhasználó valami hasonlót mond, mint például a "Szükségem van egy londonból Madridba lefoglalt járatra", a LUIS észleli a "bookFlight" szándékot, és kinyeri Londont és Madridot is városi entitásként.

A szerepkörök lényegében a környezetfüggő információk további rétegei, amelyeket hozzáadhat a gép által tanult entitásokhoz, amelyek szintén a környezetből tanulnak. Az alábbi példaszöveg a városi entitáshoz társított indulási és célszerepköröket mutatja be:

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

A gépien tanult entitások összetettek is lehetnek, ha az entitások egymással kapcsolatos hierarchiával rendelkeznek. Lehet például egy pizzaOrder olyan entitás, amely a következő gyermek entitásokkal rendelkezik: mennyiség, méret, kéreg, öntet stb.

Gyermekentitást úgy definiálhat, hogy egy kötőjelet (-) a kezdőjelre (@) és a behúzásra elővesz, ahogy az alábbi példa mutatja:

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

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

A fenti példában a szám entitás egy előre összeállított entitás. A fennmaradó entitások mind listaentitások.

A következő példa egy address gépien tanult entitás definícióját mutatja be két szerepkörrel, toAddress valamint gyermekekkelfromAddress.

@ 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

Előre összeállított entitások

Az előre összeállított LUIS-entitásokat a rendszer határozza meg. Ez megkönnyíti a munkát, mivel kiváló minőségűek, és normalizált értékeket biztosítanak, amelyek könnyebben használhatók a programokban. Az "ezer és kettő" kifejezés például az 1002-es szám lesz. A következő LUIS [előre összeállított entitás][előre összeállított entitás] típusok támogatottak:

  • életkor
  • datetimeV2
  • dimenzió
  • e-mail
  • geographyV2
  • keyPhrase
  • Pénzt
  • number
  • Ordinális
  • ordinalV2
  • percentage
  • personName
  • telefonszám
  • hőmérséklet
  • url
  • dátum/idő

Íme néhány példa az előre összeállított entitások definiálására:

@ prebuilt number 
@ prebuilt datetimeV2
@ prebuilt age

Listaentitás

[Entitások listázása] A [list-entity] a kapcsolódó szavak rögzített, zárt halmazát jelöli a szinonimáikkal együtt. A normalizált érték a megfelelő szinonimák felismerésekor lesz visszaadva. A kis- és nagybetűk megkülönböztetése és kinyerése pontos szöveges egyezés alapján történik.

Az alábbi példa egy listaentitást definiáló szintaxist mutat be:

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

pizzaOrder A gép által tanult entitásszakaszból kiterjesztve az alábbi példa a méret- és kéreg-gyermek entitások listáját tartalmazza:

@ 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

Tipp.

Mivel a listaentitások pontos egyezést igényelnek, az eredmények általános elírások hozzáadásával javulhatnak. A hibás elírások egyik gyakori oka a gépelési hibák, például a kettős betűk háromszorosa, mint a fenti példában a "töltött kéreg" esetében.

Listaentitások használatakor közvetlenül a kimondott szövegben kell szerepeltetnie egy értéket a listából, de a mintában helyőrzőként továbbra is használhatja őket. Az alábbi példa egy kimondott szöveget mutat be a listából származó értékekkel:

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

Reguláriskifejezés-entitás

A [reguláris kifejezés entitás][regular-expression-entity] egy entitást nyer ki egy ön által megadott reguláris kifejezéskarakte-minta alapján. A reguláris kifejezések a legjobban strukturált szöveghez vagy előre definiált alfanumerikus értékek sorozatához használhatók, amelyek egy adott formátumban várhatók. Például:

Entitás Reguláris kifejezés Example
Járatszám járat [A-Z]{2} [0-9]{4} AS 1234-es járat
Hitelkártyaszám [0-9]{16} 5478789865437632

Íme egy példa a reguláris kifejezés entitásdefinícióira:

> 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 szerepkör egy entitás elnevezett aliasa, amely egy kimondott szövegkörnyezeten alapul. A szerepkör bármilyen előre összeállított vagy egyéni entitástípussal használható, és példaszövegekben és mintákban is használható.

Az alábbi példában a Hely entitásnak két szerepköre van, origin és destination:

Entitás Role Purpose
Location forrás (origin) Ahonnan a gép indul
Location Cél Ahol a gép leszáll

A .lu fájlformátumú szerepkörök explicit vagy implicit módon definiálhatók. Az explicit szerepkör-definíció a következő jelölést követi:

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

Az alábbiakban bemutatjuk az entitások és szerepköreik definiálásának különböző módjait:

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

A szerepköröket implicit módon is definiálhatja a mintákban és a címkézett kimondott szövegekben a következő formátumban:

{@<entityName>:<roleName>}

Az alábbi példában láthatja, hogyan definiálják a szerepköröket userName:firstName , és userName:lastName hogyan vannak implicit módon definiálva:

# 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

A mintákban a szerepköröket a {<entityName>:<roleName>} jelölés használatával használhatja. Here's an example:

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

Egy entitáshoz több szerepkört is definiálhat mintákban, az alábbiakban látható módon:

> 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

Minták

[Minták] [] lehetővé teszi, hogy számos olyan példát fedjen le, amelyeket egy kimondott szövegnek az entitások helyőrzőivel való létrehozásával kell megfeleltetnie. A minták egy jogkivonatszintű reguláris kifejezés, amely az entitások helyőrzőivel rendelkezik. Ha egy kimondott szövegnek van egy entitás helyőrzője vagy mintázatszintaxisa, akkor azt mintaként értelmezi a rendszer. Ellenkező esetben kimondott szövegként értelmezik a gépi tanulás betanításához.

Az entitás helyőrzői bármilyen típusú entitásnak megfelelhetnek, vagy maga a minta definiálhatja őket, például ha a minta egy szakasza olyan entitás, amelyet a környező szavakkal azonosítunk.

Minta szintaxisa

A .lu fájlformátum támogatja a LUIS [Minta szintaxisa][]. A mintaszintaxis egy kimondott szövegbe ágyazott sablon. A sablonnak tartalmaznia kell az egyezni kívánt szavakat és entitásokat, valamint a figyelmen kívül hagyni kívánt szavakat és írásjeleket. A sablon nem reguláris kifejezés.

A minták entitásait kapcsos zárójelek veszik körül. {} A minták lehetnek entitások és szerepkörrel rendelkező entitások. [Pattern.any] A [pattern-any] egy entitás, amelyet csak mintákban használnak.

Function Syntax Beágyazási szint Example
Entitás {} -Fogszabályozó 2 Where is form {entity-name}?
választható [] - szögletes zárójelek
A választható és csoportosítási szintek beágyazási szintjei 3-ra vannak korlátozva
2 The question mark is optional [?]
Csoportosítás () - zárójelek 2 is (a \| b)
vagy | - függőleges sáv (cső)
A függőleges sávokon (vagy) egy csoportban 2-nek van korlátja
- Where is form ({form-name-short} \| {form-name-long} \| {form-number})
a kimondott szöveg kezdete és/vagy vége ^-Billentyűzettel - ^begin the utterance
the utterance is done^
^strict literal match of entire utterance with {number} entity^

További információkért tekintse meg a LUIS dokumentációjának [Minta szintaxisa][] című cikkét.

Az alábbi példa egy definíciót mutat be, amelyet mintaként kezelne a minta által definiált entitással alarmTime :

# DeleteAlarm
- delete the {alarmTime} alarm

A kimondott szöveg "törölje a 7:00 riasztást" megfelelne a mintának, és felismerné a "7:00" entitást alarmTime .

Ezzel szemben az alábbi példa egy címkézett kimondott szöveg, amely alarmTime gépileg tanult entitás, mivel 7 ÓRA címkézett értékkel rendelkezik:

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

Az entitásfeliratok és az entitáshely-tulajdonosok nem keverhetők ugyanabban a kimondott szövegben, de gépileg tanult entitásoknak megfelelő helyőrzőket is használhat.

Tipp.

A minták hozzáadása előtt meg kell értenie, hogy a robot hogyan reagál a felhasználói bemenetre, mivel a minták súlyozása nagyobb, mint a kimondott szövegek példája, és a megbízhatóságot is meg fogja szabni. A modellterv elején nincs akadálya a hozzáadásuknak, de könnyebb látni, hogy az egyes minták hogyan módosítják a modellt, miután kimondott szövegekkel tesztelték a modellt.

Kifejezéslista

A [kifejezéslista][kifejezéslista] olyan szavak vagy kifejezések listája, amelyek segítenek megtalálni az azonosítani kívánt fogalmat. A lista nem érzékeny a kis- és nagybetűkre. A kifejezéslistáknak két különböző célja van:

  • A szótár kiterjesztése: Ez az alapértelmezett kifejezéslista definiálásakor, és nem cserélhető. A többszavas kifejezések a gépi tanulás egyik funkciójává válnak, amelyhez kevesebb példa szükséges a tanuláshoz. Ebben a használatban nincs kapcsolat a fázislista tagjai között.
  • Szinonimák definiálása: A felcserélhető kifejezéslisták olyan szinonimák definiálására szolgálnak, amelyek ugyanazt jelentik. Ez a használat kevesebb példával segíti az általánosítást. A listában szereplő kifejezések ugyanazt a funkciót eredményezik a gépi tanulásban. Ennek használatához meg kell adnia interchangeable a kifejezéslista definícióját (@ phraselist <Name>(interchangeable))

Megjegyzés:

A funkció lehet kifejezéslista vagy entitás, amelyet egy szándékhoz vagy entitáshoz társít, hogy kiemelje a funkció fontosságát a felhasználói szándék pontos észlelésében. További információ: Kifejezéslista hozzáadása funkcióként .

További információ a kifejezéslisták használatáról, beleértve a használt tipikus forgatókönyveket is: [Kifejezéslista létrehozása fogalomhoz][kifejezéslista].

A kifejezéslistákat a következő jelöléssel definiálhatja:

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

Íme egy példa a szótár kiterjesztésére használt kifejezéslistára:

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

A kifejezéslisták szinonimák meghatározására is használhatók, ha felcserélhetőként jelölik meg őket.

@ 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

Alapértelmezés szerint a kifejezéslisták minden tanult szándék és entitás számára elérhetők. Három rendelkezésre állási állapot létezik:

Rendelkezésre állás állapota Leírás
enabledForAllModels (alapértelmezett) Ha egy kifejezéslistát megjelöl enabledForAllModels, az minden modell számára elérhető, függetlenül attól, hogy kifejezetten funkcióként listázta-e.
disabledForAllModels Ha egy kifejezéslistát jelöl, disabledForAllModelsaz csak akkor használatos a modellben, ha kifejezetten funkcióként van felsorolva.
letiltva Ha egy kifejezéslistát megjelöl disabled, az sehol nem használatos, beleértve azokat a modelleket is, ahol kifejezetten funkcióként vannak felsorolva. Így egyszerűen kikapcsolhat egy kifejezéslistát, hogy lássa, milyen jól működnek nélküle a dolgok.

A kifejezéslisták alapértelmezés szerint globálisan elérhetők, és kifejezetten a enabledForAllModels kulcsszó használatával is beállíthatók:

@ phraselist abc enabledForAllModels

Két példa egy kifejezéslista beállítására disabledForAllModels:

@ phraselist abc disabledForAllModels

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

@ question disabledForAllModels

Ha egy kifejezéslistát a következőre disabledállít be, az nem lesz használatban, még akkor sem, ha kifejezetten funkcióként van felsorolva:

> 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

A kifejezéslisták bizonyos szándékok és entitások funkcióiként használhatók a következő szakaszban leírtak szerint.

Funkciók hozzáadása szándékokhoz és entitásokhoz

A gépi tanulás úgy működik, hogy a jellemzőket és a kívánt szándékhoz vagy entitáshoz való viszonyt a kimondott szövegekből tanulja meg. Alapértelmezés szerint a funkciók egyszerűen kimondott szövegeket alkotó szavak. A kifejezéslisták lehetővé teszik több szó új funkcióba való csoportosítását; így a gépi tanulás általánosabbá válik kevesebb példából. Alapértelmezés szerint a kifejezéslisták globálisak, és az összes gép által tanult modellre vonatkoznak, de adott szándékokhoz vagy entitásokhoz is kötheti őket. Szándékok vagy entitások funkcióként is használhatók más szándékok entitásként való észleléséhez. Ez modularitást biztosít, így összetettebb fogalmakat hozhat létre egyszerűbb építőelemekből.

Megjegyzés:

A gépi tanulásban a funkció olyan szöveg, amely a rendszer által megfigyelt és tanult adatok megkülönböztető tulajdonságát vagy attribútumát írja le. A kifejezéslisták, szándékok és entitások az ebben és a következő szakaszokban ismertetett funkciókként használhatók.

A kulcsszavak használatával usesFeature bármely tanult szándékhoz vagy entitáshoz adhatók szolgáltatások.

Kifejezéslista hozzáadása funkcióként

A kifejezéslisták funkcióként hozzáadhatók a szándékokhoz vagy entitásokhoz. Ez segít ezeknek az adott szándékoknak vagy entitásoknak anélkül, hogy más szándékokat és entitásokat érintenének. Íme egy példa arra, hogyan definiálhat egy kifejezéslistát egy másik modell funkciójaként:

> 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

Entitás vagy szándék hozzáadása funkcióként

Az alábbiakban példákat láthat arra, hogyan adhat hozzá szándékokat és entitásokat funkcióként a következőkkel 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

Metaadatok

A LUIS-alkalmazáshoz vagy a QnA Maker-tudásbázis kapcsolódó metaadatokat is felveheti a .lu fájlba. Ez segít irányítani az elemzőt a LU-tartalom helyes kezelésére. A metaadatok általában a .lu fájl elejére kerülnek.

A konfigurációs adatok definiálása a !#használatával > :

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

Vegye figyelembe, hogy a parancssori felület argumentumaival explicit módon átadott információk felülbírálják a .lu fájlban található információkat.

> 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

A fenti példában használt alkalmazás metaadat-értékeinek leírását az alábbi táblázatban találja. További információ a LUIS app.beállításairól: [Alkalmazás- és verzióbeállítások][luis-metaadatok] a LUIS dokumentációjában.

Metaadatok Leírás
Név Az alkalmazás neve
VersionId Az adott verzió neve
Kulturális környezet Az alkalmazás által használt nyelv
Sémaverzió A LUIS-séma mindig frissül, amikor új funkciót vagy beállítást ad hozzá a LUIS-ban. Használja a LUIS-modell létrehozásakor vagy frissítésekor használt sémaverzió számát.

Külső hivatkozások

Az alábbi szakaszok részletesen ismertetik, hogyan hozhat létre helyi fájl- és URI-hivatkozásokat .

Helyi fájlhivatkozások

Megjegyzés:

Az Azure AI QnA Maker 2025. március 31-én megszűnik. 2022. október 1-től nem hozhat létre új QnA Maker-erőforrásokat vagy tudásbázis. A kérdés- és válaszképesség újabb verziója már elérhető az Azure AI Language részeként.

Az Egyéni kérdések megválaszolása, az Azure AI Nyelv egyik funkciója a QnA Maker szolgáltatás frissített verziója. A Bot Framework SDK kérdés-válasz támogatásával kapcsolatos további információkért lásd a természetes nyelv megértését.

A .lu fájlra hivatkozik. Kövesse a Markdown-hivatkozás szintaxisát. A támogatott hivatkozások a következők:

  • Hivatkozás egy másik .lu fájlra a következőn keresztül [link name](<.lu file name>): . A hivatkozás lehet abszolút elérési út vagy relatív elérési út a .lu fájlt tartalmazó fájlból.
  • Más .lu fájlokat tartalmazó mappára való hivatkozás a következőkkel támogatott:
    • [link name](<.lu file path>*): .lu fájlokat keres a megadott abszolút vagy relatív elérési út alatt
    • [link name](<.lu file path>**): rekurzívan keres .lu fájlokat a megadott abszolút vagy relatív elérési út alatt, beleértve az almappákat is.
  • Egy adott fájlban meghatározott kimondott szövegekre mutató hivatkozásokat is hozzáadhat egy szándékszakaszban vagy QnA-párként.
    • [link name](<.lu file path>#<INTENT-NAME>): megkeresi az ÖSSZES kimondott szöveget az INTENT-NAME> alatt <a .lu fájlban, és hozzáadja őket azoknak a kimondott szövegeknek a listájához, ahol a hivatkozás meg van adva.
    • [link name](<.lu file path>#<INTENT-NAME>*utterances*): megkeresi az összes kimondott szöveget (nem mintákat) az INTENT-NAME> fájlban<, és hozzáadja őket a kimondott szövegek listájához, ahol a hivatkozás meg van adva.
    • [link name](<.lu file path>#<INTENT-NAME>*patterns*): megkeresi az összes mintát (nem kimondott szöveget) az INTENT-NAME> fájlban<, és hozzáadja azokat azon minták listájához, ahol a hivatkozás meg van adva.
    • [link name](<.lu file path>#*utterances*): megkeresi a .lu fájl összes kimondott szövegét, és hozzáadja őket azon kimondott szövegek listájához, ahol a hivatkozás meg van adva.
    • [link name](<.lu file path>#*patterns*): megkeresi a .lu fájl összes mintáját, és hozzáadja őket azon kimondott szövegek listájához, ahol a hivatkozás meg van adva.
    • [link name](<.lu file path>#*utterancesAndPatterns*): megkeresi az összes kimondott szöveget és mintát a .lu fájlban, és hozzáadja őket azoknak a kimondott szövegeknek a listájához, ahol a hivatkozás meg van adva.
    • [link name](<.qna file path>#$name?): megkeresi a .qna-tartalom adott módosítási definíciójának összes módosítását, és hozzáadja azokat a kimondott szövegek listájához, ahol a hivatkozás meg van adva.
    • [link name](<.qna file path>#*alterations*?): megkeresi a .qna-tartalom minden módosítását, és hozzáadja őket azon kimondott szövegek listájához, ahol a hivatkozás meg van adva.
    • [link name](<.qna file path>#?question-to-find?): megkeresi az adott kérdés összes változatkérdését, és hozzáadja őket azoknak a kimondott szövegeknek a listájához, amelyekben a hivatkozás meg van adva. Vegye figyelembe, hogy a kérdésben szereplő szóközöket a karakterre - kell cserélni.
    • [link name](<.qna file path>#*answers*?): megkeresi az összes választ, és hozzáadja őket azoknak a kimondott szövegeknek a listájához, ahol a hivatkozás meg van adva.

Íme egy példa a fent említett hivatkozásokra:

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

URI-hivatkozások

Az alábbiakban példákat talál az URI-hivatkozások készítésére:

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

További információ