LUIS 앱 계획
Important
LUIS는 2025년 10월 1일에 사용 중지되며 2023년 4월 1일부터 새 LUIS 리소스를 만들 수 없습니다. 지속적인 제품 지원 및 다국어 기능을 활용하려면 LUIS 애플리케이션을 대화 언어 이해로 마이그레이션하는 것이 좋습니다.
LUIS(Language Understanding) 앱 스키마는 주체 도메인과 관련된 의도와 엔터티를 포함합니다. 의도는 사용자 발화를 분류하고 엔터티는 사용자 발화에서 데이터를 추출합니다. 의도와 엔터티는 주체 도메인과 관련됩니다. 의도는 사용자 발화를 분류합니다.
LUIS 앱은 반복적으로 개발할 때 가장 효율적으로 학습하고 수행합니다. 일반적인 반복 주기는 다음과 같습니다.
- 새 버전 만들기
- LUIS 앱 스키마 편집. 여기에는 다음이 포함됩니다.
- 예제 발화를 사용한 의도
- 엔터티
- 기능
- 학습, 테스트 및 게시
- 예측 엔드포인트로 전송된 발화를 검토하여 활성 학습 테스트
- 엔드포인트 쿼리에서 데이터 수집
도메인 식별
LUIS 앱은 주체 도메인을 중심으로 합니다. 예를 들어, 티켓, 항공편, 호텔 및 렌터카 예약을 처리하는 여행 앱이 있을 수 있습니다. 또 다른 앱에서는 운동, 피트니스 노력 추적 및 목표 설정과 관련된 콘텐츠를 제공할 수 있습니다. 도메인 식별은 도메인과 관련된 단어 또는 구를 찾는 데 도움이 됩니다.
팁
LUIS는 많은 일반적인 시나리오에 대해 미리 빌드된 도메인을 제공합니다. 미리 빌드된 도메인을 앱의 시작점으로 사용할 수 있는지 확인하세요.
의도 식별
애플리케이션의 작업에 중요한 의도에 대해 생각해 보세요.
항공편을 예약하고 사용자 목적지의 날씨를 확인하는 기능이 있는 여행 앱을 예로 들어보겠습니다. 이러한 작업에 BookFlight 및 GetWeather 등 두 가지 의도를 정의할 수 있습니다.
더 많은 기능이 있는 복잡한 앱에서는 더 많은 의도가 있을 수 있으며 의도가 너무 구체적이지 않도록 신중하게 정의해야 합니다. 예를 들어 BookFlight 및 BookHotel은 별도의 의도여야 하지만 BookInternationalFlight 및 BookDomesticFlight는 너무 유사할 수 있습니다.
참고 항목
앱의 기능을 수행하는 데 필요한 만큼의 의도만 사용하는 것이 좋습니다. 너무 많은 의도를 정의하면 LUIS에서 발화를 올바르게 분류하기가 더욱 어려워집니다. 너무 적게 정의하면 너무 일반적이어서 겹칠 수 있습니다.
전반적인 사용자 의도를 식별할 필요가 없는 경우 모든 사용자 예제 발화를 None
의도에 추가합니다. 앱에 더 많은 의도가 필요하게 되면 나중에 의도를 만들 수 있습니다.
각 의도의 예제 발화 만들기
시작하려면 의도마다 너무 많은 발화를 만들지 마세요. 앱에 필요한 의도를 확인하면 의도당 발화 예를 15~30개 만듭니다. 각 발화는 이전에 제공된 발화와 달라야 합니다. 다양한 단어 수, 단어 선택, 동사 시제 및 문장 부호를 포함합니다.
자세한 내용은 LUIS 앱에 대한 좋은 발화 이해를 참조하세요.
엔터티 식별
예제 발화에서 추출하려는 엔터티를 식별합니다. 항공편을 예약하려면 목적지, 날짜, 항공사, 티켓 범주 및 여행 클래스와 같은 정보가 필요합니다. 이러한 데이터 형식에 대한 엔터티를 만든 다음 예제 발화에서 엔터티를 표시합니다. 엔터티는 의도를 수행하는 데 중요합니다.
앱에서 사용할 엔터티를 결정할 때는 개체 형식 간의 관계를 캡처할 수 있도록 엔터티 형식이 서로 다릅니다. 다양한 형식에 대한 자세한 내용은 LUIS의 엔터티를 참조하세요.
팁
LUIS는 일반적인 대화형 사용자 시나리오에 대해 미리 빌드된 엔터티를 제공합니다. 미리 빌드된 엔터티를 애플리케이션 개발의 시작점으로 사용하는 것이 좋습니다.
의도 및 엔터티
의도는 전체 발화의 원하는 결과이고, 엔터티는 발화에서 추출된 데이터의 일부입니다. 일반적으로 의도는 클라이언트 애플리케이션에서 수행해야 하는 작업에 연결됩니다. 엔터티는 이 작업을 수행하는 데 필요한 정보입니다. 프로그래밍 관점에서 보면 의도는 메서드 호출을 트리거하고 엔터티는 해당 메서드 호출에 대한 매개 변수로 사용됩니다.
이 발화는 의도를 포함해야 하며, 엔터티를 포함할 수도 있습니다.
"시애틀에서 카이로까지 항공권 구입"
이 발화에는 다음과 같은 단일 의도가 있습니다.
- 비행기 티켓 구입
이 발화에는 다음과 같은 여러 엔터티가 있을 수 있습니다.
- 위치 - 시애틀(출발지) 및 카이로(도착지)
- 단일 티켓 수량
함수 또는 의도가 두 개 이상 있는 발화 확인
대부분의 경우, 특히 자연스런 대화를 사용하는 경우 사용자는 둘 이상의 기능이나 의도를 포함할 수 있는 발화를 제공합니다. 이를 처리하기 위한 일반 전략은 의도와 엔터티 모두에서 출력을 나타낼 수 있다는 점을 이해하는 것입니다. 이 표현은 클라이언트 애플리케이션 작업에 매핑될 수 있어야 하며 의도로 제한될 필요는 없습니다.
Int-ent-ties는 작업(일반적으로 의도로 이해됨)도 앱 출력의 엔터티로 캡처되고 특정 작업에 매핑될 수 있다는 개념입니다. 예를 들어 일반적으로 부정은 전체 추출을 위한 의도 및 엔터티에 의존합니다. 다음과 같이 단어 선택이 매우 유사하지만 결과가 다른 발화 두 개를 고려해 보겠습니다.
- "카이로에서 시애틀로 가는 항공편을 예약해 주세요."
- "카이로발 시애틀행 항공편 취소"
별도의 의도 두 개 대신 FlightAction 기계 학습 엔터티를 사용하여 단일 의도를 만들어야 합니다. 기계 학습 엔터티는 요청 예약 및 취소 작업 모두의 세부 정보와 출발지나 목적지 위치의 세부 정보를 추출해야 합니다.
이 FlightAction 엔터티는 다음과 같은 최상위 수준 기계 학습 엔터티와 하위 엔터티로 구성됩니다.
- FlightAction
- 작업
- 기원
- 대상
추출하려면 하위 엔터티에 기능을 추가합니다. 사용자 발화에 표시할 어휘와 예측 응답에서 반환할 값을 기준으로 기능을 선택합니다.
모범 사례
스키마 계획
앱의 스키마를 빌드하기 전에 이 앱을 사용하려는 방법과 위치를 식별해야 합니다. 더 철저하고 구체적으로 계획할수록 앱이 더 좋아집니다.
- 대상 사용자 조사
- 앱을 나타내는 엔드투엔드 가상 사용자 정의(음성, 아바타, 이슈 처리(사전, 사후))
- 기존 솔루션에 전달하거나 이 앱에 대한 새 솔루션을 만들어 사용자 상호 작용 채널(예: 텍스트 또는 음성) 식별
- 엔드투엔드 사용자 경험
- 이 앱이 수행해야 할 작업과 수행하지 않아야 할 작업은 무엇인가요? 수행해야 할 작업의 우선 순위는 어떻게 되나요?
- 주요 사용 사례는 무엇인가요?
- 데이터 수집 - 데이터 수집 및 준비 알아보기
모든 단일 예제를 사용하여 학습 및 게시 안 함
학습 및 게시 전에 10개 또는 15개의 발화를 추가합니다. 이렇게 하면 예측 정확도에 미치는 영향을 확인할 수 있습니다. 단일 발화를 추가하면 점수에 분명한 영향을 주지 않습니다.
LUIS를 학습 플랫폼으로 사용 안 함
LUIS는 언어 모델의 도메인에 관련됩니다. 일반 자연어 학습 플랫폼으로 작동하지 않습니다.
버전을 사용하여 반복적으로 앱 빌드
각 작성 주기는 기존 버전에서 복제된 새 버전 내에 포함되어야 합니다.
너무 빨리 게시 안 함
적절한 계획 없이 앱을 너무 빨리 게시하면 다음과 같은 몇 가지 이슈가 발생할 수 있습니다.
- 앱이 실제 시나리오에서 적절한 수준의 성능으로 작동하지 않습니다.
- 스키마(의도 및 엔터티)가 적절하지 않으며 스키마에 따라 클라이언트 앱 논리를 개발한 경우 다시 실행해야 할 수 있습니다. 이로 인해 작업 중인 프로젝트에 예기치 않은 지연과 추가 비용이 발생할 수 있습니다.
- 모델에 추가한 발화로 인해 디버그하고 식별하기 어려운 발화 예에 편견이 발생할 수 있습니다. 또한 특정 스키마를 커밋한 후 모호성을 제거하기 어려워집니다.
앱 성능 모니터링
일괄 테스트 세트를 사용하여 예측 정확도를 모니터링합니다.
예제 발화 또는 엔드포인트 발화로 사용되지 않는 별도의 발화 세트를 유지합니다. 테스트 집합의 앱을 계속 개선합니다. 실제 사용자 발화를 반영하도록 테스트 집합을 조정합니다. 이 테스트 세트를 사용하여 앱의 반복 또는 버전을 평가합니다.
모든 가능한 값을 사용하여 구문 목록 만들지 않기
구문 목록에 몇 가지 예를 제공하지만 모든 단어 또는 구문을 제공하지는 않습니다. LUIS는 컨텍스트를 일반화하고 고려합니다.