LUIS 앱의 패턴

Important

LUIS는 2025년 10월 1일에 사용 중지되며 2023년 4월 1일부터 새 LUIS 리소스를 만들 수 없습니다. 지속적인 제품 지원 및 다국어 기능을 활용하려면 LUIS 애플리케이션대화 언어 이해로 마이그레이션하는 것이 좋습니다.

패턴은 여러 발화가 매우 유사할 경우 정확도를 향상시키도록 디자인됩니다. 패턴를 통해 더 많은 발화를 제공하지 않고도 의도에 대한 더 높은 정확성을 얻을 수 있습니다.

패턴을 통해 낮은 의도 신뢰도 해결

직원과 관련해서 조직도에 보고하는 Human Resources 앱을 가정해 봅니다. 직원의 이름 및 관계가 제공될 경우 LUIS는 관련 직원을 반환합니다. 관리자 이름은 Alice이고 Michael, Rebecca 및 Carl이 부하 직원으로 팀에 소속되어 있는 Tom이라는 직원이 있다고 가정합니다.

A screenshot showing use of patterns

발언 예측된 의도 의도 점수
Tom의 부하 직원은 누구인가요? GetOrgChart 0.30
어떤 직원이 Tom의 부하 직원인가요? GetOrgChart 0.30

앱이 문장 길이가 다르고, 단어 순서가 다르고, 사용되는 단어(“부하 직원” “관리자”, “직속 부하”)도 다른 10~20개 발언을 포함하는 경우 LUIS는 낮은 신뢰도 점수를 반환할 수 있습니다. LUIS가 단어 순서의 중요성을 이해하도록 돕는 패턴을 만듭니다.

패턴은 다음과 같은 상황을 해결합니다.

  • 의도 점수가 낮은 경우
  • 올바른 의도가 최상위 점수를 받지 못했으나 최상위 점수에 근접한 경우

패턴은 의도를 보장하지 않음

패턴은 혼합된 예측 기술을 사용합니다. 템플릿 발언에 대한 의도를 패턴으로 설정해도 의도 예측이 제대로 이루어질 것이라고 보장할 수 없지만 강력한 신호가 될 수 있습니다.

패턴을 사용해도 기계 학습 엔터티 검색이 개선되지 않음

패턴은 기본적으로 의도 및 역할의 예측에만 도움을 줍니다. "pattern.any" 엔터티는 자유 형식 엔터티를 추출하는 데 사용됩니다. 패턴에서 엔터티를 사용하는 동안에는 패턴은 기계 학습 엔터티를 검색하는 데 도움이 되지 않습니다.

여러 발언을 단일 패턴으로 축소하는 경우에는 향상된 엔터티 예측을 기대하지 못합니다. 앱에서 간단한 엔터티를 활용하려면 발화를 추가하거나 목록 엔터티를 사용해야 합니다.

패턴에 엔터티 역할 사용

패턴의 둘 이상의 엔터티가 문맥상 관련이 있는 경우 패턴은 엔터티 역할을 사용하여 엔터티에 대한 컨텍스트 정보를 추출합니다.

패턴이 있거나 없는 예측 점수

충분한 예제 발언이 제공될 경우, LUIS는 패턴 없이 예측 신뢰도를 높일 수 있습니다. 패턴은 많은 발언을 제공할 필요 없이, 신뢰도 점수를 높입니다.

패턴 일치

패턴은 먼저 패턴 내 엔터티를 검색한 다음, 패턴의 나머지 단어 및 단어 순서가 유효한지 검사됩니다. 패턴이 일치하려면 패턴에 엔터티가 필요합니다. 패턴은 문자 수준이 아닌 토큰 수준에서 적용됩니다.

Pattern.any 엔터티

pattern.any 엔터티를 사용하면 엔터티의 표현이 발화의 나머지 부분에서 엔터티의 끝을 확인하기 어렵게 만드는 자유 형식 데이터를 찾을 수 있습니다.

예를 들어 직원이 회사 문서를 찾는 데 도움이 되는 인적 자원 앱을 고려해 보세요. 이 앱은 다음 예제 발화를 이해해야 할 수 있습니다.

  • "HRF-123456은 어디에 있나요?"
  • "누가 HRF-123234를 작성했나요?"
  • "HRF-456098은 프랑스어로 게시되었나요?"

그러나 각 문서에는 형식이 지정된 이름(위 목록에 사용됨)과 사람이 읽을 수 있는 이름(예: 회사 2018 버전 5로 새로 입사한 직원의 재배치 요청)이 있습니다.

사람이 읽을 수 있는 이름의 발화는 다음과 같습니다.

  • "회사 2018 버전 5로 신입직원 재배치 요청은 어디에 있나요?"
  • ""회사 2018 버전 5로 신입 사원의 재배치 요청은 누가 작성했나요"?"
  • 회사 2018 버전 5로 신입사원 재배치 요청은 프랑스어로 게시되었나요?"

발화에는 LUIS에서 엔터티가 끝나는 위치를 혼동할 수 있는 단어가 포함됩니다. 패턴에서 Pattern.any 엔터티를 사용하면 LUIS가 양식 이름을 올바르게 추출하도록 문서 이름의 시작 및 끝을 지정할 수 있습니다. 예를 들어 다음 템플릿 발화는 다음과 같습니다.

  • Where is {FormName}[?]
  • Who authored {FormName}[?]
  • {FormName}은 프랑스어로 게시되었나요[?]

패턴에 대한 모범 사례:

이후 반복에서 패턴 추가

패턴은 발화보다 비중이 크고 확신을 왜곡하므로 패턴을 추가하기 전에 앱 작동 방식을 이해해야 합니다.

앱이 어떻게 작동하는지 이해했으면 앱에 적용되는 패턴을 추가합니다. 앱의 디자인을 반복할 때마다 추가할 필요가 없습니다.

모델 디자인 초기에 패턴을 추가해도 아무 문제가 없지만, 모델이 발화로 테스트된 후에 각 기능이 모델을 어떻게 바꾸는지 확인하는 것이 더 편리합니다.

너무 많은 패턴 추가 안 함

패턴을 너무 많이 추가하지 마세요. LUIS는 더 적은 예제를 사용하여 빠르게 학습합니다. 시스템을 불필요하게 오버로드하지 마세요.

기능

기계 학습에서 특징은 컴퓨터가 관찰하고 학습하는 데이터의 고유한 특성 또는 특성입니다.

기계 학습 기능은 개념을 구별하는 항목을 찾을 수 있는 위치에 대한 중요한 단서를 LUIS에 제공합니다. 이는 LUIS에서 사용할 수 있지만 어려운 규칙이 아닌 힌트입니다. LUIS는 레이블과 함께 이러한 힌트를 사용하여 데이터를 찾습니다.

기능은 f(x) = y와 같은 함수로 설명할 수 있습니다. 발화 예제에서 기능은 고유한 특성을 찾을 수 있는 위치를 알려줍니다. 이 정보를 사용하여 스키마를 만들 수 있습니다.

기능 유형

기능은 스키마 디자인의 필수 요소입니다. LUIS는 구 목록과 모델을 모두 기능으로 지원합니다.

  • 구 목록 기능
  • 기능으로서의 모델(의도 또는 엔터티)

발화 예제 설명에서 기능 찾기

LUIS는 언어 기반 애플리케이션이므로 기능은 텍스트 기반입니다. 구별하려는 특성을 나타내는 텍스트를 선택합니다. LUIS의 경우 가장 작은 단위는 토큰입니다. 영어의 경우 토큰은 공백 또는 문장 부호가 없는 연속적인 문자 및 숫자의 범위입니다.

공백과 문장 부호는 토큰이 아니므로 기능으로 사용할 수 있는 텍스트 단서에 집중합니다. 다음과 같은 단어의 변형을 포함해야 합니다.

  • 복수형
  • 동사 시제
  • Abbreviations
  • 철자 및 맞춤법 오류

텍스트는 특성을 구별하므로 다음이 필요한지 확인합니다.

  • 정확한 단어 또는 구 일치: 정규식 엔터티 또는 목록 엔터티를 엔터티 또는 의도에 대한 기능으로 추가하는 것이 좋습니다.
  • 잘 알려진 개념(예: 날짜, 시간 또는 사람 이름) 일치: 미리 작성된 엔터티를 엔터티 또는 의도에 대한 기능으로 사용합니다.
  • 시간이 지남에 따라 새 예제 학습: 개념의 몇 가지 예제에 대한 구 목록을 엔터티 또는 의도에 대한 기능으로 사용합니다.

개념에 대한 구 목록 만들기

구 목록은 개념을 설명하는 단어 또는 구의 목록입니다. 구 목록은 토큰 수준에서 대/소문자를 구분하지 않는 일치 항목으로 적용됩니다.

구 목록을 추가하는 경우 기능을 전역으로 설정할 수 있습니다. 전체 기능은 전체 앱에 적용됩니다.

구 목록을 사용하는 경우

LUIS 앱이 개념에 대한 새 항목을 일반화하고 식별하는 데 필요한 경우 때 구 목록을 사용합니다. 구 목록은 도메인 특정 어휘와 같습니다. 이는 의도와 엔터티에 대한 이해의 품질을 향상시킵니다.

구 목록을 사용하는 방법

구 목록을 사용하는 경우 LUIS는 컨텍스트를 고려하고 일반화하여 비슷하지만 텍스트와 정확히 일치하지 않는 항목을 식별합니다. 구 목록을 사용하려면 다음 단계를 따릅니다.

  1. 기계 학습 엔터티로 시작합니다.
  2. 발화 예제를 추가합니다.
  3. 기계 학습 엔터티를 사용하여 레이블을 지정합니다.
  4. 구 목록을 추가합니다.
  5. 비슷한 의미의 단어를 추가합니다. 가능한 모든 단어 또는 구를 추가하지 마세요. 대신 한 번에 몇 개의 단어 또는 구를 추가합니다. 그런 다음, 다시 학습시키고 게시합니다.
  6. 제안된 단어를 검토하고 추가합니다.

일반적인 구 목록 시나리오

구 목록의 일반적인 시나리오는 특정 아이디어와 관련된 단어를 늘리는 것입니다.

의학 용어는 의미를 높이기 위해 구 목록이 필요할 수 있는 단어의 좋은 예입니다. 이러한 용어에는 특정 물리적, 화학적, 치료적 또는 추상적 의미가 있을 수 있습니다. 구 목록이 없으면 용어가 주제 영역에서 중요하다는 것을 LUIS에서 인식하지 못합니다.

예를 들어 의료 용어를 추출하려면 다음을 수행합니다.

  1. 발화 예제를 만들고, 해당 발화 내에서 레이블을 의학 용어에 지정합니다.
  2. 주제 영역 내에서 용어의 예제가 포함된 구 목록을 만듭니다. 이 구 목록에는 레이블이 지정된 실제 용어와 동일한 개념을 설명하는 다른 용어가 포함되어야 합니다.
  3. 구 목록에 사용된 개념을 추출하는 엔터티 또는 하위 엔터티에 구 목록을 추가합니다. 가장 일반적인 시나리오는 기계 학습 엔터티의 구성 요소(자식)입니다. 구 목록을 모든 의도 또는 엔터티에 적용해야 하는 경우 구 목록을 전체 구 목록으로 표시합니다. enabledForAllModels 플래그는 API에서 이 모델 범위를 제어합니다.

구 목록에 대한 토큰 일치

구 목록은 항상 토큰 수준에서 적용됩니다. 다음 표에서는 Ann이라는 단어가 포함된 구 목록이 해당 순서에서 동일한 문자의 변형에 적용되는 방법을 보여 줍니다.

"Ann"의 토큰 변형 토큰이 있는 경우 구 목록 일치
ANN
aNN
예 - 토큰은 Ann입니다.
Ann's 예 - 토큰은 Ann입니다.
Anne 아니요 - 토큰은 Anne입니다.

다른 모델에 도움이 되는 기능으로서의 모델

모델(의도 또는 엔터티)을 기능으로 다른 모델(의도 또는 엔터티)에 추가할 수 있습니다. 기존 의도 또는 엔터티를 기능으로 추가하면 레이블이 지정된 예제가 있는 잘 정의된 개념을 추가하는 것입니다.

모델을 기능으로 추가하는 경우 기능은 다음과 같이 설정할 수 있습니다.

  • 필수입니다. 예측 엔드포인트에서 반환되는 모델에 필요한 기능을 찾아야 합니다.
  • 전역. 전체 기능은 전체 앱에 적용됩니다.

엔터티를 의도의 기능으로 사용하는 경우

해당 엔터티의 검색이 의도에 중요한 경우 엔터티를 기능으로 의도에 추가합니다.

예를 들어 의도(예: BookFlight)가 항공편 예약이고 엔터티가 항공권 정보(예: 좌석 수, 출발지 및 목적지)인 경우 항공권 정보 엔터티를 찾는 것은 BookFlight 의도를 찾는 데 상당한 가중치를 추가해야 합니다.

엔터티를 다른 엔터티의 기능으로 사용하는 경우

엔터티 (A)의 검색이 엔터티 (B)의 예측에 중요한 경우 엔터티 (A)를 기능으로 다른 엔터티 (B)에 추가해야 합니다.

예를 들어 배송 주소 엔터티가 거리 주소 하위 엔터티에 포함된 경우 거리 주소 하위 엔터티를 찾는 것은 배송 주소 엔터티에 대한 예측에 상당한 가중치를 추가합니다.

  • 배송 주소(기계 학습 엔터티):
    • 거리 번호(하위 엔터티)
    • 거리 주소(하위 엔터티)
    • 시(하위 엔터티)
    • 시/도(하위 기관)
    • 국가/지역(하위 엔터티)
    • 우편 번호(하위 엔터티)

기능이 있는 중첩된 하위 엔터티

기계 학습 하위 엔터티는 개념이 부모 엔터티에 있음을 나타냅니다. 부모 항목은 다른 하위 엔터티 또는 최상위 엔터티일 수 있습니다. 하위 엔터티의 값은 해당 부모의 기능으로 작동합니다.

하위 엔터티에는 구 목록과 모델(다른 엔터티)이 모두 기능으로 포함될 수 있습니다.

구 목록이 하위 엔터티에 있는 경우 개념의 어휘를 늘리지만 예측의 JSON 응답에 정보를 추가하지 않습니다.

다른 엔터티의 기능이 하위 엔터티에 있는 경우 JSON 응답에는 다른 엔터티의 추출된 데이터가 포함됩니다.

필요한 기능

예측 엔드포인트에서 모델을 반환하려면 필수 기능을 찾을 수 있어야 합니다. 들어오는 데이터가 기능과 일치해야 한다고 알고 있는 경우 필수 기능을 사용합니다.

발화 텍스트가 필수 기능과 일치하지 않으면 추출되지 않습니다.

필수 기능은 비기계 학습 엔터티를 사용합니다.

  • 정규식 엔터티
  • 목록 엔터티
  • 미리 빌드된 엔터티

데이터에서 모델을 찾을 수 있다고 확신하는 경우 필요에 따라 기능을 설정합니다. 필수 기능을 찾을 수 없는 경우 아무것도 반환하지 않습니다.

배송 주소의 예를 계속합니다.

배송 주소(기계 학습된 엔터티)

  • 거리 번호(하위 엔터티)
  • 거리 주소(하위 엔터티)
  • 거리 이름(하위 엔터티)
  • 시(하위 엔터티)
  • 시/도(하위 기관)
  • 국가/지역(하위 엔터티)
  • 우편 번호(하위 엔터티)

미리 작성된 엔터티를 사용하는 필수 기능

시, 시/도 및 국가/지역과 같은 미리 작성된 엔터티는 일반적으로 닫힌 목록 세트이며, 시간이 지남에 따라 크게 변경되지 않습니다. 이러한 엔터티에는 관련 권장 기능이 있을 수 있으며, 이러한 기능은 필수로 표시될 수 있습니다. 그러나 isRequired 플래그는 할당된 엔터티에만 관련되며 계층에는 영향을 주지 않습니다. 미리 작성된 하위 엔터티 기능을 찾을 수 없는 경우 부모 엔터티의 검색 및 반환에 영향을 주지 않습니다.

필수 기능의 예로 주소 검색을 고려합니다. 거리 번호를 요구 사항으로 만드는 것을 고려할 수 있습니다. 이렇게 하면 사용자가 "1 Microsoft Way" 또는 "One Microsoft Way"를 입력할 수 있으며, 둘 다 거리 번호 하위 엔터티에 대해 숫자 "1"로 확인됩니다. 자세한 내용은 미리 빌드된 엔터티 문서를 참조하세요.

목록 엔터티를 사용하는 필수 기능

목록 엔터티는 동의어와 함께 정식 이름의 목록으로 사용됩니다. 필수 기능으로, 발화에 정식 이름 또는 동의어가 포함되지 않은 경우 엔터티가 예측 엔드포인트의 일부로 반환되지 않습니다.

회사에서 제한된 국가/지역 세트로만 배송한다고 가정합니다. 고객이 국가/지역을 참조할 수 있는 여러 가지 방법을 포함하는 목록 엔터티를 만들 수 있습니다. LUIS가 발화의 텍스트 내에서 정확히 일치하는 항목을 찾지 못하면 엔터티(목록 엔터티의 필수 기능이 있음)가 예측에서 반환되지 않습니다.

정식 이름** 동의어
미국 미국
U.S.A
US
USA
0

챗봇과 같은 클라이언트 애플리케이션은 후속 질문에 도움을 요청할 수 있습니다. 이는 고객이 국가/지역 선택이 제한적이고 필수임을 이해하는 데 도움이 됩니다.

정규식 엔터티를 사용하는 필수 기능

필수 기능으로 사용되는 정규식 엔터티는 다양한 텍스트 일치 기능을 제공합니다.

배송 주소 예에서는 국가/지역 우편 번호의 구문 규칙을 캡처하는 정규식을 만들 수 있습니다.

전체 기능

가장 일반적인 용도는 특정 모델에 기능을 적용하는 것이지만 기능을 전체 기능으로 구성하여 전체 애플리케이션에 적용할 수 있습니다.

전체 기능의 가장 일반적인 용도는 어휘를 앱에 추가하는 것입니다. 예를 들어 고객이 기본 언어를 사용하지만 동일한 발화 내에서 다른 언어를 사용할 수 있기를 기대하는 경우 보조 언어의 단어를 포함하는 기능을 추가할 수 있습니다.

사용자는 의도 또는 엔터티에서 보조 언어를 사용할 필요가 있으므로 보조 언어의 단어를 구 목록에 추가합니다. 구 목록을 전체 기능으로 구성합니다.

추가 혜택을 위한 기능 결합

둘 이상의 기능을 사용하여 특성 또는 개념을 설명할 수 있습니다. 일반적인 페어링은 다음을 사용하는 것입니다.

예: 여행 앱에 대한 발권 예약 엔터티 기능

기본적인 예로, 항공편 예약 의도와 항공편 예약 엔터티를 사용하여 항공편을 예약하는 앱을 고려합니다. 항공편 예약 엔터티는 예약 시스템에서 항공권을 예약하기 위한 정보를 캡처합니다.

항공편 예약에 대한 기계 학습 엔터티에는 출발지와 목적지를 캡처하기 위한 두 개의 하위 엔터티가 있습니다. 기능을 최상위 엔터티가 아니라 각 하위 엔터티에 추가해야 합니다.

A screenshot showing example entities for a ticket booking application.

항공편 예약 엔터티는 출발지도착지가 포함된 하위 엔터티가 있는 기계 학습 엔터티입니다. 이러한 하위 엔터티는 모두 지리적 위치를 나타냅니다. 위치를 추출하고 출발지도착지를 구별하는 데 도움이 되도록 각 하위 엔터티에는 기능이 있어야 합니다.

Type 출발지 하위 엔터티 도착지 하위 엔터티
기능으로서의 모델 geographyV2 미리 작성된 엔터티 geographyV2 미리 작성된 엔터티
구문 목록 출발지 단어 : start at, begin from, leave 도착지 단어 : to, arrive, land at, go, going, stay, heading
구문 목록 공항 코드 - 출발지와 목적지 모두에 대해 동일한 목록 공항 코드 - 출발지와 목적지 모두에 대해 동일한 목록
구문 목록 공항 이름 - 출발지와 목적지 모두에 대해 동일한 목록 공항 코드 - 출발지와 목적지 모두에 대해 동일한 목록

사람들이 공항 코드와 공항 이름을 사용할 필요가 있는 경우 LUIS에는 두 가지 유형의 구를 모두 사용하는 구 목록이 있어야 합니다. 공항 코드는 챗봇에 입력된 텍스트에서 더 일반적일 수 있는 반면, 공항 이름은 음성 지원 챗봇과 같은 음성 대화에서 더 일반적일 수 있습니다.

예측 JSON에서는 모델만 반환되므로 기능의 일치하는 세부 정보는 구 목록이 아닌 모델에 대해서만 반환됩니다.

의도에서 항공편 예약 레이블 지정

기계 학습 엔터티가 만들어지면 발화 예제를 의도에 추가하고, 레이블을 부모 엔터티와 모든 하위 엔터티에 지정해야 합니다.

항공편 예약 예의 경우 텍스트의 TicketBooking 엔터티 및 하위 엔터티를 사용하여 레이블을 의도의 발화 예제에 지정합니다.

A screenshot showing labeling for an example utterance.

예: 피자 주문 앱

두 번째 예로, 누군가가 주문하는 피자 유형의 세부 정보를 포함하여 피자 주문을 받는 피자 식당용 앱을 고려합니다. 주문 처리를 완료하려면 가능한 경우 피자의 각 세부 정보를 추출해야 합니다.

이 예의 기계 학습 엔터티는 중첩된 하위 엔터티, 구 목록, 미리 작성된 엔터티 및 사용자 지정 엔터티를 사용하여 더 복잡합니다.

A screenshot showing a machine learning entity with different subentities.

이 예에서는 하위 엔터티 수준 및 하위 엔터티 수준의 자식에 있는 기능을 사용합니다. 어떤 수준에서 어떤 종류의 구 목록 또는 모델을 기능으로 가져오는지는 엔터티 디자인의 중요한 부분입니다.

하위 엔터티에는 엔터티를 검색하는 데 도움이 되는 기능으로 많은 구 목록이 있을 수 있지만, 각 하위 엔터티에는 기능으로 하나의 모델만 있습니다. 이 피자 앱에서 이러한 모델은 주로 목록입니다.

A screenshot showing a machine learning entity many phrase lists as features.

레이블이 올바르게 지정된 발화 예제는 엔터티가 중첩되는 방식을 보여 주는 방식으로 표시됩니다.

다음 단계