.lu 파일 형식
적용 대상: SDK v4
.lu 파일은 언어 이해 모델을 설명합니다. .lu 파일에는 언어 이해 개념에 대한 Markdown과 유사한 간단한 텍스트 기반 정의가 포함되어 있습니다. 하나 이상의 .lu 파일을 사용하여 LUIS(Language Understanding) 또는 Orchestrator와 같이 봇이 사용하는 NLU(자연어 이해) 서비스 또는 엔진에 대한 언어 모델을 학습시킬 수 있습니다. 선택한 NLU 엔진은 .lu 파일이 설명할 수 있는 요소의 하위 집합만 해석할 수 있습니다.
NLU 엔진은 언어 모델을 사용하여 사용자가 말하는 내용을 이해합니다. 엔진은 기계 학습 알고리즘과 마찬가지로 학습 예제 집합에서 언어 모델을 만듭니다. 일단 학습되면 엔진은 모델을 사용하여 일반적으로 사용자가 수행하려는 작업 또는 작업을 나타내는 하나 이상의 의도 형식으로 발화의 의도를 예측하고 의도와 관련된 요소를 나타내는 엔터티를 0개 이상 예측합니다.
Bot Framework SDK 또는 Composer를 사용하여 개발된 모든 봇에서 LUIS 또는 Orchestrator를 사용할 수 있습니다.
참고 항목
LUIS(Language Understanding)는 2025년 10월 1일에 사용 중지됩니다. 2023년 4월 1일부터 새 LUIS 리소스를 만들 수 없습니다. 이제 최신 버전의 언어 이해가 Azure AI Language의 일부로 제공됩니다.
Azure AI Language의 기능인 CLU(대화형 언어 이해)는 업데이트된 LUIS 버전입니다. Bot Framework SDK의 언어 이해 지원에 대한 자세한 내용은 자연어 이해를 참조하세요.
이 문서는 언어 모델 요소를 .lu 파일 형식으로 나타내는 방법에 대한 참조입니다. 봇에서 언어 이해가 사용되는 방법에 대한 자세한 내용은 Composer의 Language Understanding 또는 자연어 처리를 참조하세요.
샘플 발화를 사용하여 의도 정의
의도는 사용자의 발화에 표현된 대로 사용자가 수행하려는 작업 또는 작업을 나타냅니다. 동일한 사용자 의도를 나타내는 질문 또는 명령 그룹을 식별할 수 있도록 봇에 의도를 추가합니다.
여행 봇에 대해 정의할 수 있는 의도의 몇 가지 예는 다음과 같이 정의되는 발화 예제입니다.
의도 | 예제 발화 |
---|---|
BookFlight | "다음 주에 마우이행 항공편 예약" "17일에 마우이로 날아오라" "다음 주 금요일에 마우이행 비행기 티켓이 필요합니다." |
인사말 | "안녕하세요" "Hello" "좋은 오후" |
CheckWeather | "다음 주 마우이의 날씨는 어떻습니까?" |
없음 | "나는 쿠키를 좋아한다" "불프로그는 7 피트 이상 점프 기록되었습니다" |
정의한 의도 외에도 None 은 사용자 발언에서 의도를 확인할 수 없을 때 이벤트가 발생하도록 하는 unknownIntent
대체 의도입니다. LUIS를 사용하는 경우 None 의도는 할 일 이외의 발언을 사용하여 만들어야 하는 필수 의도입니다기본. None 의도와 연결된 발화는 .lu 파일의 총 발화의 약 10%를 구성해야 합니다.
샘플 발화가 있는 의도는 다음과 같은 방식으로 선언됩니다.
# <intent-name>
- <utterance1>
- <utterance2>
# <intent-name>
는 새 의도 정의 섹션을 설명합니다. 의도 정의 뒤의 각 줄은 형식을 사용하여 해당 의도를 설명하는 예제 발화입니다 - <utterance>
.
다음은 이러한 의도를 보여 주는 예제 .lu 파일과 사용자가 의도를 표현할 수 있는 방법을 캡처하는 발화 예제입니다.
> 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?
참고 항목
-또는 +* 문자를 사용하여 목록을 나타냅니다. 번호 매기기 목록은 지원되지 않습니다.
주석을 만드는 데 사용합니다 > .
여러 주석("">) 문자를 사용하여 콘텐츠를 구성하는 데 도움이 되는 .lu 파일의 개요 섹션을 정의할 수도 있습니다. 작성 기를 사용하면 LU 파일을 편집할 때 개요를 활용할 수 있습니다.
의도 및 발화에 대한 자세한 내용은 LUIS 앱의 의도를 참조하고 LUIS 설명서의 LUIS 앱에 적합한 발화가 무엇인지 이해합니다.
개체
엔터티는 의도 해석에 사용할 수 있는 매개 변수로 생각할 수 있는 발화의 일부입니다. 예를 들어 발화에서 Maui 티켓은 FlightDestination 엔터티입니다.
샘플 사용자 발화 | 예측된 의도 | 추출된 엔터티 | 설명 |
---|---|---|---|
Hello, how are you? | 인사말 | - | 추출할 엔터티가 없습니다. |
"마우이행 항공편 예약" | BookFlight | "마우이" | "FlightDestination" 엔터티는 "Maui"로 추출됩니다. |
"다음 주 마우이의 날씨는 어떻습니까?" | CheckWeather | "Maui", "다음 주" | "WeatherLocation" 엔터티는 "Maui"로 추출되고 "DateRange" 엔터티는 "다음 주"로 추출됩니다. |
"나는 작은 피자를 주문하고 싶다" | orderPizza | "small" | "Size" 엔터티는 "small"로 추출됩니다. |
"배포에서 Bob과 함께 오후 1시에 모임 예약" | ScheduleMeeting | "1pm", "Bob" | "MeetingTime" 엔터티는 "1pm"으로 추출되고 "참석자" 엔터티는 "Bob"으로 추출됩니다. |
팁
LUIS에서 엔터티를 사용하는 방법에 대한 자세한 내용은 LUIS 설명서의 LUIS 엔터티를 참조하세요.
엔터티 정의
엔터티 정의는 발화의 범위를 봇에서 사용할 수 있는 엔터티로 인식하는 방법을 정의합니다. 기계 학습, 미리 빌드된 엔터티, 목록, 정규식 및 패턴을 비롯한 다양한 유형의 엔터티가 있습니다.
.lu 파일의 엔터티 정의는 at 기호(@
)와 엔터티 및 엔터티 이름의 형식으로 항목을 시작합니다.
@ <entity-type> <entity-name>
필요에 따라 각 엔터티에는 동일한 엔터티의 서로 다른 용도를 식별하는 역할이 있을 수도 있습니다. 엔터티를 더 잘 인식하는 데 도움이 되는 기능을 추가할 수도 있습니다. 일반적인 구문은 다음과 같습니다.
@ <entity-type> <entity-name> [[hasRole[s]] <comma-separated-list-of-roles>] [hasFeature[s] <comma-separated-list-of-features>]
목록 및 정규식 엔터티와 같은 정의가 필요한 엔터티는 다음 표기법을 사용하여 표시됩니다.
@ <entity-type> <entity1-name> = <definition>
엔터티 선언의 추가 예제는 다음 섹션에서 적용할 엔터티 형식과 함께 보여 줍니다.
미리 빌드된 엔터티를 제외하고 엔터티 이름에는 공백이 있는 여러 단어가 포함될 수 있습니다. 공백이 있는 모든 엔터티 이름은 따옴표로 묶어야 합니다.
@ ml "this is a simple entity" role1, role2 = definition
@ ml 'another simple entity' hasRole role1 hasFeatures feature1, feature2
엔터티 형식
LUIS에서 엔터티에는 몇 가지 형식이 있습니다. 다음 섹션에서는 이러한 엔터티 형식 및 역할 및 기능과 같은 관련 개념과 이를 사용하는 LU 템플릿을 만드는 방법의 예제에 대해 알아봅니다.
기계 학습된 엔터티
기계 학습 엔터티는 예제 발화에서 레이블을 지정하는 예제를 제공할 수 있는 엔터티 입니다. 이를 통해 학습하는 데 필요한 컨텍스트를 제공합니다. 기계 학습 엔터티는 항상 형식이 잘 지정되지는 않지만 동일한 의미를 가지는 데이터를 식별할 때 이상적입니다.
다음 예제에서는 도시(@ ml city
)라는 기계 학습된 엔터티와 레이블이 bookFlight
지정된 엔터티가 있는 샘플 발화의 의도를 보여 줍니다.
> 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}
사용자가 "런던에서 마드리드로 항공편을 예약해야 합니다"와 비슷한 내용이 표시되면 LUIS는 'bookFlight' 의도를 감지하고 런던과 마드리드를 모두 도시 엔터티로 추출합니다.
역할은 기본적으로 컨텍스트에서 학습하는 기계 학습 엔터티에 추가할 수 있는 컨텍스트 정보의 추가 계층입니다. 다음 예제 발화는 도시 엔터티와 연결된 출발 및 대상 역할을 보여 줍니다.
- Book a flight from {@city:departure = Cairo} to {@city:destination = Seattle}
기계 학습된 엔터티는 서로 관련된 엔터티 계층 구조가 있는 복잡한 엔터티일 수도 있습니다. 예를 들어 수량, 크기, 크러스트, 토핑 등 자식 엔터티가 있는 엔터티와 같은 pizzaOrder
항목을 가질 수 있습니다.
다음 예제와 같이 대시(-)를 at 기호(@)에 앞에 추가하고 들여쓰기하여 자식 엔터티를 정의합니다.
@ prebuilt number
@ list sizeList
@ list crustList
@ list toppingList
@ ml pizzaOrder
- @ number Quantity
- @ sizeList Size
- @ crustList Crust
- @ toppingList Topping
위의 예제에서 숫자 엔터티는 미리 빌드된 엔터티입니다. 다시 기본 엔터티는 모두 목록 엔터티입니다.
다음 예제에서는 자식뿐만 아니라 두 개의 역할과 함께 fromAddress
toAddress
기계 학습된 엔터티의 정의를 address
보여 줍니다.
@ 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
사전 빌드된 엔터티
미리 빌드된 LUIS 엔터티는 시스템에 의해 정의됩니다. 이렇게 하면 고품질이므로 작업을 절약할 수 있으며 프로그램에서 더 쉽게 사용할 수 있는 정규화된 값을 제공합니다. 예를 들어 "1,000과 2"라는 구는 숫자 1002가 됩니다. 다음 LUIS [미리 빌드된 엔터티][미리 빌드된 엔터티] 형식이 지원됩니다.
- 연령
- datetimeV2
- 차원
- 이메일
- geographyV2
- keyPhrase
- money
- 번호
- 서수
- ordinalV2
- percentage
- personName
- Phonenumber
- 온도
- url
- 날짜/시간
미리 빌드된 엔터티를 정의하는 방법의 예는 다음과 같습니다.
@ prebuilt number
@ prebuilt datetimeV2
@ prebuilt age
엔터티 나열
[엔터티 나열] [list-entity]는 해당 동의어와 함께 고정된 닫힌 관련 단어 집합을 나타냅니다. 정규화된 값은 해당 동의어가 인식될 때 반환됩니다. 대/소문자를 구분하고 정확한 텍스트 일치를 기반으로 추출됩니다.
다음 예제에서는 목록 엔터티를 정의하기 위한 구문을 보여줍니다.
@ list <entityName> =
- <normalized-value> :
- <synonym1>
- <synonym2>
- ...
- <normalized-value> :
- <synonym1>, <synonym2>, ...
기계 학습 엔터티 섹션에서 예제를 확장하면 pizzaOrder
크기 및 크러스트 자식 엔터티에 대한 목록의 예는 다음과 같습니다.
@ 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
팁
목록 엔터티를 추출하려면 정확한 일치 항목이 필요하므로 일반적인 맞춤법 오류를 추가하여 결과가 향상될 수 있습니다. 맞춤법 오류의 한 가지 일반적인 원인은 위의 예제에서 "박제된 크러스트"와 같이 이중 문자가 세 배로 증가한 것과 같은 입력 오류의 결과입니다.
목록 엔터티를 사용하는 경우 목록 엔터티를 패턴의 자리 표시자로 계속 사용할 수 있지만 목록 엔터티에 레이블을 지정할 필요는 없습니다. 다음 예제에서는 목록의 값이 있는 발화를 보여 주는 예제입니다.
- I'd like to order a large pepperoni stuffed crust pizza.
정규식 엔터티
[정규식 엔터티][regular-expression-entity]는 사용자가 제공하는 정규식 문자 패턴을 기반으로 엔터티를 추출합니다. 정규식은 특정 형식으로 예상되는 정형 텍스트 또는 미리 정의된 영숫자 값 시퀀스에 가장 적합합니다. 예시:
엔터티 | 정규식 | 예시 |
---|---|---|
항공편 번호 | 항공편 [A-Z]{2} [0-9]{4} | 비행 AS 1234 |
신용 카드 번호 | [0-9]{16} | 5478789865437632 |
다음은 정규식 엔터티 정의의 예입니다.
> 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
역할은 발화 내의 컨텍스트를 기반으로 하는 엔터티의 명명된 별칭입니다. 역할은 미리 빌드된 엔터티 또는 사용자 지정 엔터티 형식과 함께 사용할 수 있으며 예제 발화와 패턴 모두에서 사용됩니다.
아래 예제에서 Location 엔터티에는 다음과 같은 두 가지 역할이 origin
있습니다 destination
.
엔터티 | 역할 | 목적 |
---|---|---|
위치 | origin | 비행기가 출발할 위치 |
위치 | destination | 비행기가 착륙하는 곳 |
.lu 파일 형식의 역할은 명시적으로 또는 암시적으로 정의할 수 있습니다. 명시적 역할 정의는 표기법을 따릅니다.
@ <entityType> <entityName> [hasRole[s]] role1, role2, ...
아래에는 엔터티 및 해당 역할을 명시적으로 정의할 수 있는 다양한 방법이 나와 있습니다.
> # 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
다음 형식을 사용하여 패턴 및 레이블이 지정된 발화에서 직접 역할을 암시적으로 정의할 수도 있습니다.
{@<entityName>:<roleName>}
아래 예제에서는 역할 userName:firstName
과 userName:lastName
암시적으로 정의된 방법을 확인할 수 있습니다.
# 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>}
역할을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
# getUserName
- call me {name:userName}
- I'm {name:userName}
- my name is {name:userName}
아래와 같이 패턴에서 엔터티에 대한 여러 역할을 정의할 수도 있습니다.
> 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
패턴
[패턴] [] 엔터티를 찾을 위치에 대한 자리 표시자를 사용하여 발화를 만들어 일치해야 하는 많은 예제를 처리할 수 있습니다. 패턴은 엔터티에 대한 자리 표시자가 있는 토큰 수준 정규식입니다. 발화에 엔터티 자리 표시자 또는 패턴 구문이 있는 경우 패턴으로 해석됩니다. 그렇지 않으면 기계 학습 학습을 위한 발언으로 해석됩니다.
엔터티 자리 표시자는 모든 형식의 엔터티에 해당하거나 패턴 자체에 의해 정의될 수 있습니다(예: 패턴의 섹션이 주변 단어를 확인하여 식별되는 엔터티인 경우).
패턴 구문
.lu 파일 형식은 LUIS [패턴 구문][]을 지원합니다. 패턴 구문은 발화에 포함된 템플릿입니다. 템플릿에는 일치하려는 단어와 엔터티뿐만 아니라 무시하려는 단어와 문장 부호가 모두 포함되어야 합니다. 템플릿은 정규식이 아닙니다.
패턴의 엔터티는 중괄호로 묶입니다 {}. 패턴은 엔터티 및 역할이 있는 엔터티를 포함할 수 있습니다. [Pattern.any] [pattern-any]는 패턴에만 사용되는 엔터티입니다.
함수 | 구문 | 중첩 수준 | 예시 |
---|---|---|---|
개체 | {} -중괄호 | 2 | Where is form {entity-name}? |
선택적 | [] - 대괄호 는 선택 사항 및 그룹화의 조합 중첩 수준에서 3으로 제한됩니다. |
2 | The question mark is optional [?] |
grouping | () - 괄호 | 2 | is (a \| b) |
또는 | | - 세로 막대(파이프) 한 그룹에서 세로 막대(또는)에 2의 제한이 있습니다. |
- | Where is form ({form-name-short} \| {form-name-long} \| {form-number}) |
발화의 시작 및/또는 끝 | ^-캐럿 | - | ^begin the utterance the utterance is done^ ^strict literal match of entire utterance with {number} entity^ |
자세한 내용은 LUIS 설명서의 [패턴 구문][] 문서를 참조하세요.
다음 예제에서는 패턴으로 정의된 엔터티를 사용하여 패턴 alarmTime
으로 처리되는 정의를 보여 줍니다.
# DeleteAlarm
- delete the {alarmTime} alarm
"오전 7시 알람 삭제" 발화는 패턴과 일치하며 "오전 7시"의 엔터티를 alarmTime
인식합니다.
반면, 다음 예제는 레이블이 지정된 값이 오전 7시이므로 기계 학습 엔터티인 레이블이 지정된 발화 alarmTime
입니다.
# DeleteAlarm
- delete the {alarmTime=7AM} alarm
엔터티 레이블과 엔터티 자리 표시자를 동일한 발화에 혼합할 수는 없지만 기계 학습된 엔터티에 해당하는 자리 표시자를 사용할 수 있습니다.
팁
패턴은 예제 발화보다 가중치가 더 많이 적용되고 신뢰도가 왜곡되므로 패턴을 추가하기 전에 봇이 사용자 입력에 응답하는 방식을 이해해야 합니다. 모델 디자인의 시작 부분에 추가해도 아무런 문제가 없지만, 발화로 모델을 테스트한 후 각 패턴이 모델을 변경하는 방식을 더 쉽게 확인할 수 있습니다.
구문 목록
[구 목록][phrase-list]는 식별하려는 개념을 찾는 데 도움이 되는 단어 또는 구의 목록입니다. 목록은 대/소문자를 구분하지 않습니다. 구문 목록에는 다음과 같은 두 가지 용도가 있습니다.
- 사전 확장: 구 목록을 정의할 때 기본값이며 교환할 수 없는 것으로 알려져 있습니다. 다중 단어 구는 기계 학습의 기능이 되며 학습할 예제가 더 적습니다. 이 사용에서는 단계 목록의 멤버 간에 관계가 없습니다.
- 동의어 정의: 교환 가능한 구 목록은 동일한 것을 의미하는 동의어를 정의하는 데 사용됩니다. 이 사용은 더 적은 수의 예제로 일반화하는 데 도움이 됩니다. 목록의 모든 구문은 기계 학습과 동일한 기능을 생성합니다. 이를 사용하려면 구 목록 정의(
@ phraselist <Name>(interchangeable)
)에 지정interchangeable
해야 합니다.
참고 항목
기능은 사용자 의도를 정확하게 검색할 때 해당 기능의 중요성을 강조하기 위해 의도 또는 엔터티와 연결하는 구 목록 또는 엔터티일 수 있습니다. 자세한 내용은 기능으로 구 목록 추가를 참조하세요.
사용되는 일반적인 시나리오를 포함하여 구 목록을 사용하는 시기 및 방법에 대한 자세한 내용은 [개념에 대한 구 목록 만들기][phrase-list]를 참조하세요.
다음 표기법을 사용하여 구 목록을 정의합니다.
@ phraselist <Name>
- <phrase1>
- <phrase2>
사전을 확장하는 데 사용되는 구 목록의 예는 다음과 같습니다.
@ phraseList newTerms=
- surf the sky
- jump on the beam
- blue sky pajamas
구 목록을 상호 교환 가능한 것으로 표시하여 동의어를 정의하는 데 사용할 수도 있습니다.
@ 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
기본적으로 구 목록은 학습된 모든 의도 및 엔터티에서 사용할 수 있습니다. 세 가지 가용성 상태가 있습니다.
가용성 상태 | 설명 |
---|---|
enabledForAllModels | (기본값) 구 목록이 표시되면 구체적으로 기능으로 enabledForAllModels 나열하는지 여부에 관계없이 모든 모델에서 사용할 수 있습니다. |
disabledForAllModels | 구문 목록이 기능으로 disabledForAllModels 표시된 경우 모델에서만 사용됩니다. |
disabled | 구 목록이 기능으로 disabled 표시된 경우 특정한 기능으로 나열된 모델을 포함하여 어디에서도 사용되지 않습니다. 이렇게 하면 구 목록을 해제하여 구 목록 없이도 작업이 얼마나 잘 작동하는지 쉽게 확인할 수 있습니다. |
구문 목록은 기본적으로 전역적으로 사용할 수 있으며 키워드(keyword) 사용하여 enabledForAllModels
구체적으로 설정할 수도 있습니다.
@ phraselist abc enabledForAllModels
구 목록을 disabledForAllModels
다음으로 설정하는 두 가지 예:
@ phraselist abc disabledForAllModels
> You can also use this approach
@ phraselist question(interchangeable) =
- are you
- you are
@ question disabledForAllModels
구 목록을 disabled
설정하면 기능으로 구체적으로 나열된 경우에도 구 목록을 사용하지 않습니다.
> 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
구문 목록은 다음 섹션에 설명된 대로 특정 의도 및 엔터티에 대한 기능으로 사용할 수 있습니다.
의도 및 엔터티에 기능 추가
기계 학습은 기능을 사용하고 예제 발화에서 원하는 의도 또는 엔터티와 어떻게 관련되는지 학습하여 작동합니다. 기본적으로 기능은 단순히 발화를 구성하는 단어입니다. 구문 목록은 여러 단어를 새 기능으로 그룹화할 수 있는 수단을 제공합니다. 이렇게 하면 기계 학습이 더 적은 예제에서 더 잘 일반화됩니다. 기본적으로 구문 목록은 전역이며 기계 학습된 모든 모델에 적용되지만 특정 의도 또는 엔터티에 연결할 수도 있습니다. 의도 또는 엔터티를 기능으로 사용하여 다른 의도를 엔터티로 검색할 수도 있습니다. 이렇게 하면 더 간단한 구성 요소에서 더 복잡한 개념을 작성할 수 있도록 모듈화가 제공됩니다.
참고 항목
기계 학습에서 기능은 시스템에서 관찰하고 학습하는 데이터의 고유 특성 또는 특성을 설명하는 텍스트입니다. 구문 목록, 의도 및 엔터티는 이 섹션과 다음 섹션에 설명된 대로 기능으로 사용할 수 있습니다.
키워드(keyword) 사용하여 학습된 의도 또는 엔터티에 usesFeature
기능을 추가할 수 있습니다.
구 목록을 기능으로 추가
구 목록을 의도 또는 엔터티에 기능으로 추가할 수 있습니다. 이렇게 하면 다른 의도 및 엔터티에 영향을 주지 않고 특정 의도 또는 엔터티에 도움이 됩니다. 구 목록을 다른 모델에 대한 기능으로 정의하는 방법의 예는 다음과 같습니다.
> 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
엔터티 또는 의도를 기능으로 추가
다음은 다음을 사용하여 의도 및 엔터티를 기능으로 추가하는 방법의 예입니다 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
메타데이터
LUIS 애플리케이션 또는 QnA Maker 기술 자료 관련된 메타데이터를 .lu 파일에 포함할 수 있습니다. 이를 통해 파서에서 LU 콘텐츠를 올바르게 처리하도록 지시할 수 있습니다. 메타데이터는 일반적으로 .lu 파일의 시작 부분에 추가됩니다.
!#을 사용하여 > 구성 정보를 정의하는 방법은 다음과 같습니다.
> !# @<property> = <value>
> !# @<scope>.<property> = <value>
> !# @<scope>.<property> = <semicolon-delimited-key-value-pairs>
CLI 인수를 통해 명시적으로 전달된 모든 정보는 .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
위의 예제에서 사용된 애플리케이션 메타데이터 값에 대한 설명은 아래 표를 참조하세요. LUIS의 app.settings에 대한 자세한 내용은 LUIS 설명서의 [앱 및 버전 설정][luis-metadata]을 참조하세요.
메타데이터 | 설명 |
---|---|
이름 | 애플리케이션 이름 |
VersionId | 해당 특정 버전의 이름 |
문화권 | 애플리케이션에서 사용하는 언어 |
스키마 버전 | LUIS 스키마는 LUIS에 새 기능 또는 설정이 추가되면 언제든지 업데이트됩니다. LUIS 모델을 만들거나 업데이트할 때 사용한 스키마 버전 번호를 사용합니다. |
외부 참조
아래 섹션에서는 로컬 파일 및 URI 참조를 만드는 방법을 자세히 설명합니다.
로컬 파일 참조
참고 항목
Azure AI QnA Maker는 2025년 3월 31일에 사용 중지됩니다. 2022년 10월 1일부터 새로운 QnA Maker 리소스 또는 참조 자료를 만들 수 없습니다. 이제 최신 버전의 질문 및 답변 기능이 Azure AI 언어의 일부로 사용할 수 있습니다.
Azure AI Language의 기능인 사용자 지정 질문 답변은 QnA Maker 서비스의 업데이트된 버전입니다. Bot Framework SDK의 질문 및 답변 지원에 대한 자세한 내용은 자연어 이해를 참조하세요.
.lu 파일을 참조합니다. Markdown 링크 구문을 따릅니다. 지원되는 참조는 다음과 같습니다.
- 를 통해
[link name](<.lu file name>)
다른 .lu 파일에 대한 참조 참조는 포함하는 .lu 파일의 절대 경로 또는 상대 경로일 수 있습니다. - 다른 .lu 파일이 있는 폴더에 대한 참조는 다음을 통해 지원됩니다.
[link name](<.lu file path>*)
: 지정된 절대 경로 또는 상대 경로에서 .lu 파일을 찾습니다.[link name](<.lu file path>**)
: 하위 폴더를 포함하여 지정된 절대 또는 상대 경로에서 .lu 파일을 재귀적으로 찾습니다.
- 의도 섹션 아래의 특정 파일에 정의된 발화에 대한 참조를 추가하거나 QnA 쌍으로 추가할 수도 있습니다.
[link name](<.lu file path>#<INTENT-NAME>)
: .lu 파일의 INTENT-NAME> 아래에 <있는 모든 발화를 찾아 참조가 지정된 발화 목록에 추가합니다.[link name](<.lu file path>#<INTENT-NAME>*utterances*)
: .lu 파일의 INTENT-NAME> 아래에 <있는 모든 발화(패턴 아님)를 찾아 참조가 지정된 발화 목록에 추가합니다.[link name](<.lu file path>#<INTENT-NAME>*patterns*)
: .lu 파일의 INTENT-NAME> 아래에 <있는 모든 패턴(발화 아님)을 찾아 참조가 지정된 패턴 목록에 추가합니다.[link name](<.lu file path>#*utterances*)
: .lu 파일의 모든 발화를 찾아 참조가 지정된 발화 목록에 추가합니다.[link name](<.lu file path>#*patterns*)
: .lu 파일의 모든 패턴을 찾아 참조가 지정된 발화 목록에 추가합니다.[link name](<.lu file path>#*utterancesAndPatterns*)
: .lu 파일의 모든 발화 및 패턴을 찾아 참조가 지정된 발화 목록에 추가합니다.[link name](<.qna file path>#$name?)
: .qna 콘텐츠의 특정 변경 정의에서 모든 변경 내용을 찾아 참조가 지정된 발화 목록에 추가합니다.[link name](<.qna file path>#*alterations*?)
: .qna 콘텐츠에서 모든 변경 내용을 찾아 참조가 지정된 발화 목록에 추가합니다.[link name](<.qna file path>#?question-to-find?)
: 특정 질문에서 모든 변형 질문을 찾아 참조가 지정된 발화 목록에 추가합니다. 질문의 모든 공백은 문자로 - 바꿔야 합니다.[link name](<.qna file path>#*answers*?)
: 모든 답변을 찾아 참조가 지정된 발화 목록에 추가합니다.
다음은 afore멘션 참조의 예입니다.
> 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 참조
다음은 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*)
추가 정보
- .qna 파일에 대한 자세한 내용은 .qna 파일 형식을 참조하세요.