분해 가능한 LUIS 애플리케이션 빌드

Important

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

이 자습서에서는 다양한 사용자 의도를 예측할 수 있는 통신 LUIS 애플리케이션을 만들 수 있습니다. 자습서를 마치면 사용자가 제공한 텍스트를 기반으로 하여 사용자 의도를 예측할 수 있는 통신 애플리케이션이 있습니다.

여기서는 다음과 같은 다양한 사용자 시나리오(의도)를 처리합니다.

  • 새 통신 회선에 가입
  • 기존 계층 업데이트
  • 청구서 결제

이 자습서에서는 다음 방법에 대해 알아봅니다.

  1. LUIS 애플리케이션 만들기
  2. 의도 만들기
  3. 엔터티 추가
  4. 발언 추가
  5. 예제 발화의 레이블 지정
  6. 앱 학습
  7. 응용 프로그램 게시
  8. 게시된 엔드포인트에서 예측 가져오기

LUIS 애플리케이션 만들기

  1. LUIS 포털에 로그인합니다.

  2. + 새 앱을 선택하여 새 애플리케이션을 만듭니다.

    A screenshot of the application creation screen.

  3. 표시되는 창에서 기본 문화권인 영어를 유지하면서 "Telecom Tutorial"이라는 이름을 입력합니다. 다른 필드는 선택 사항이므로 설정하지 마세요. 완료를 선택합니다.

    A screenshot of the LUIS application's creation fields.

사용자 의도

빌드 섹션에서 가장 먼저 표시되는 항목은 앱의 의도입니다. 의도는 사용자가 수행하려는 작업 또는 동작을 나타냅니다.

통신 LUIS 애플리케이션을 상상해 보세요. 사용자에게 필요한 것은 무엇일까요?

아마도 어떤 유형의 사용자 작업을 수행하거나 도움을 요청해야 할 수 있습니다. 다른 사용자가 자신의 계층을 업데이트하거나 청구서를 결제하려고 할 수도 있습니다.

결과 스키마는 다음과 같습니다. 자세한 내용은 스키마 계획에 대한 모범 사례를 참조하세요.

의도 용도
UserActions 사용자 작업 확인
도움말 도움말 요청
UpdateTier 현재 계층 업데이트
PayBill 미결 청구서 결제
없음 사용자가 LUIS 앱이 응답하도록 설계되지 않은 것을 질문하고 있는지 확인합니다. 이 의도는 앱 만들기의 일부로 제공되며 삭제할 수 없습니다.

새 의도 만들기

의도는 자연어 텍스트에서 결정되는 사용자의 의도에 따라 사용자 발화를 분류하는 데 사용됩니다.

발화를 분류하기 위해 의도에는 이 의도를 사용하여 분류되는 사용자 발화의 예제가 필요합니다.

  1. 위쪽 탐색 메뉴에서 빌드를 선택한 다음, 화면 왼쪽에서 의도를 선택합니다. + 만들기를 선택하여 새 의도를 만듭니다. 새 의도 이름으로 "UserAction"을 입력한 다음, 완료를 선택합니다.

    UserAction은 많은 의도 중 하나일 수 있습니다. 예를 들어 일부 사용자는 새 줄에 가입하려는 반면, 다른 사용자는 정보를 검색하도록 요청할 수 있습니다.

  2. 사용자가 요청할 것으로 예상되는 여러 예제 발언을 이 의도에 추가합니다.

    • 안녕하세요, 새 줄에 가입하고 싶습니다
    • 새 줄에 가입할 수 있나요?
    • 안녕하세요, 새 줄을 원합니다.
    • 내 줄 번호를 잊어 버렸습니다!
    • 새 줄 번호를 원합니다.

    A screenshot showing example utterances for the UserAction intent.

PayBill 의도의 경우 일부 발화는 다음과 같을 수 있습니다.

  • 내 청구서를 결제하고 싶습니다.
  • 내 청구서 정산
  • 청구서 결제
  • 내 현재 잔액을 마감하고 싶습니다.
  • 잠깐만요! 현재 청구서를 결제하고 싶습니다

예제 발화을 입력하면 LUIS가 이 의도에 대해 예측해야 하는 발화의 종류를 학습하게 됩니다. 이는 올바른 예제입니다. 다른 모든 의도의 발화는 이 의도에 대한 잘못된 예제로 취급됩니다. 발화 예제를 더 많이 추가할수록 앱의 예측이 더 향상되는 것이 가장 좋습니다.

이러한 몇 가지 발언은 데모용으로만 제공됩니다. 실제 앱에는 길이, 단어 순서, 시제, 문법적 정확도, 문장 부호 및 단어 개수가 다양한 15-30개 이상의 발언이 있어야 합니다.

나머지 의도 만들기

위의 단계를 수행하여 다음 의도를 앱에 추가합니다.

"Help"

  • "도움이 필요합니다."
  • "지원이 필요합니다."
  • "도와주세요."
  • "누군가 나를 지원할 수 있나요?"
  • "난처한 상황에 있어요, 나를 도울 수 있나요?"
  • "도움을 받을 수 있을까요?"

"UpdateTier"

  • "내 계층을 업데이트하고 싶습니다"
  • "내 계층 업데이트"
  • "VIP 계층으로 변경하고 싶습니다"
  • "내 구독을 표준 계층으로 변경"

None 의도에 대한 발화 예제

클라이언트 애플리케이션은 발언에 의미가 있는지 또는 애플리케이션에 적합한지 여부를 알아야 합니다. 클라이언트 애플리케이션에서 발화에 대답하지 않아야 하는지 여부를 결정하기 위해 "None" 의도가 만들기 프로세스의 일부로 각 애플리케이션에 추가됩니다.

LUIS가 발화에 대해 "None" 의도를 반환하는 경우 클라이언트 애플리케이션에서 사용자가 대화를 종료하려는지 묻거나 대화를 계속하기 위한 추가 지침을 제공할 수 있습니다.

"None" 의도를 비워 두면 주체 도메인 외부에서 예측해야 하는 발화가 기존 주체 도메인 의도 중 하나에서 예측됩니다. 따라서 채팅 봇과 같은 클라이언트 애플리케이션은 잘못된 예측에 따라 잘못된 작업을 수행합니다.

  1. 왼쪽 패널에서 의도를 선택합니다.

  2. 없음 의도를 선택합니다. 사용자가 입력할 수 있지만 Telecom 앱과 관련이 없는 세 개의 발화를 추가합니다. 다음 예제에서는 계층, 업그레이드, 가입, 청구서와 같이 주체 도메인에서 예상하는 단어를 사용하지 않아야 합니다.

    • "내 항공편은 언제인가요?"
    • "피자 주문을 변경해야 합니다."
    • "오늘 날씨는 어떤가요?"

엔터티 추가

엔터티는 사용자 의도와 관련된 항목 또는 요소입니다. 엔터티는 발화에서 추출할 수 있는 데이터를 정의하며 사용자의 필수 작업을 완료하는 데 필수적입니다.

  1. 빌드 섹션에서 엔터티를 선택합니다.

  2. 새 엔터티를 추가하려면 + 만들기를 선택합니다.

    이 예에서는 기계 학습된 엔터티 형식으로 "UpdateTierInfo" 및 엔터티 형식으로 "Tier"라는 두 개의 엔터티를 만듭니다. 또한 Luis를 사용하면 다양한 엔터티 형식을 만들 수 있습니다.

  3. 표시되는 창에서 "UpdateTierInfo"를 입력하고, 사용 가능한 형식에서 학습된 컴퓨터를 선택합니다. 구조체를 이 엔터티에 추가하려면 구조체 추가 상자를 선택합니다.

    A screenshot showing an entity.

  4. 다음을 선택합니다.

  5. 자식 하위 엔터티를 추가하려면 "+" 기호를 선택하고 하위 추가를 시작하세요. "UpdateTierInfo" 엔터티 예제의 경우 다음 세 가지 하위 엔터티가 필요합니다.

    • OriginalTier
    • NewTier
    • PhoneNumber

    A screenshot of subentities in the app.

  6. 하위 항목을 모두 추가한 후 만들기를 선택합니다.

    "Tier"라는 다른 엔터티를 만들지만, 이번에는 목록 엔터티가 되며 여기에는 표준 계층, 프리미엄 계층 및 VIP 계층을 제공할 수 있는 모든 계층이 포함됩니다.

  7. 이렇게 하려면 엔터티 탭으로 이동하여 + 만들기를 누르고, 표시되는 화면의 형식에서 목록을 선택합니다.

  8. 항목을 목록에 추가하고 필요에 따라 동의어를 추가하여 해당 멘션의 모든 사례를 이해하도록 할 수 있습니다.

    A screenshot of a list entity.

  9. 이제 "UpdateTierInfo" 엔터티로 돌아가서 이전에 만든 "OriginalTier" 및 "newTier" 엔터티에 대한 기능으로 "tier" 엔터티를 추가합니다. 다음과 같이 표시됩니다.

    A screenshot of an entity's features.

    "originalTier" 및 "newTier" 모두에 대한 기능으로 tier를 추가했으며 정규식 형식인 "Phonenumber" 엔터티를 추가했습니다. 이 엔터티는 ML 및 목록 엔터티를 만든 것과 동일한 방식으로 만들 수 있습니다.

이제 의도를 성공적으로 만들고, 발화 예제를 추가하고, 엔터티를 추가했습니다. 4개의 의도("None" 의도 제외) 및 3개의 엔터티를 만들었습니다.

예제 발화의 레이블 지정

기계 학습 엔터티가 만들어지고 하위 엔터티에 기능이 생겼습니다. 추출 개선을 완료하려면 예제 발화의 레이블을 하위 엔터티로 지정해야 합니다.

발화에 레이블을 지정하는 두 가지 방법이 있습니다.

  1. 레이블 지정 도구 사용

    1. 엔터티 팔레트를 열고, 상황에 맞는 도구 모음에서 "@" 기호를 선택합니다.
    2. 팔레트에서 각 엔터티 행을 선택한 다음, 팔레트 커서를 사용하여 각 예제 발화의 엔터티를 선택합니다.
  2. 커서를 끌어 텍스트를 강조 표시합니다. 커서를 사용하여 레이블을 지정하려는 텍스트를 강조 표시합니다. 다음 이미지에서 "vip - 계층"을 강조 표시하고 "NewTier" 두 가지 선택했습니다.

    A screenshot showing how to label utterances.

앱 학습

LUIS 웹 사이트의 오른쪽 위에서 학습 단추를 선택합니다.

학습하기 전에 먼저 각 의도에 대해 하나 이상의 발화가 있는지 확인합니다.

A screenshot showing the but for training an app.

앱 게시

챗봇 또는 다른 클라이언트 애플리케이션에서 LUIS 예측을 받으려면 앱을 예측 엔드포인트에 게시해야 합니다. 게시하려면 먼저 애플리케이션을 학습시켜야 합니다.

  1. 오른쪽 위 탐색에서 게시를 선택합니다.

    A screenshot showing the button for publishing an app.

  2. 프로덕션 슬롯을 선택한 다음, 완료를 선택합니다.

    A screenshot showing the production slot selector.

  3. 알림에서 엔드포인트 URL에 액세스를 선택하여 Azure 리소스 페이지로 이동합니다. 앱과 연결된 예측 리소스가 있는 경우에만 URL을 볼 수 있습니다. 화면 왼쪽에서 관리를 클릭하여 Azure 리소스 페이지를 찾을 수도 있습니다.

    A screenshot showing the endpoint access notification.

의도 예측 가져오기

  1. 오른쪽 위 메뉴에서 관리를 선택한 다음, 왼쪽에서 Azure 리소스를 선택합니다.

  2. 예제 쿼리 URL을 복사하여 새 웹 브라우저 탭에 붙여넣습니다.

    엔드포인트 URL의 형식은 다음과 같습니다.

    https://YOUR-CUSTOM-SUBDOMAIN.api.cognitive.microsoft.com/luis/prediction/v3.0/apps/YOUR-APP-ID/slots/production/predict?subscription-key=YOUR-KEY-ID&verbose=true&show-all-intents=true&log=true&query=YOUR\_QUERY\_HERE
    
  3. 주소 표시줄의 URL 끝으로 이동하여 query= 문자열 매개 변수를 다음으로 바꿉니다.

    “여보세요! 새 번호를 찾고 있습니다."

    query 발화는 URI로 전달됩니다. 이 발화는 발화 예제와 동일하지 않으며, LUIS에서 UserAction 의도를 최고 채점 의도로 예측하는지 확인하는 데 적합한 테스트여야 합니다.

    {
        "query": "hello! i am looking for a new number please",
        "prediction": 
        {
            "topIntent": "UserAction",
            "intents": 
            {
                "UserAction": {
                "score": 0.8607431},
                "Help":{
                "score": 0.031376917},
                "PayBill": {
                "score": 0.01989629},
                "None": {
                "score": 0.013738701},
                "UpdateTier": {
                "score": 0.012313577}
            },
        "entities": {}
        }
    }
    

JSON 결과는 최고 채점 의도를 prediction.topIntent 속성으로 식별합니다. 모든 점수는 1에서 0 사이이며, 1에 가까울수록 더 좋은 점수입니다.

클라이언트-애플리케이션 다음 단계

이 자습서에서는 LUIS 앱을 만들고, 의도를 만들고, 엔터티를 만들고, 발화 예제를 각 의도에 추가하고, 발화 예제를 None 의도에 추가하고, 엔드포인트에서 학습, 게시 및 테스트했습니다. LUIS 모델을 빌드하는 기본 단계입니다.

LUIS는 사용자 발화에 대한 답변을 제공하지 않고, 자연어로 요청되는 정보의 형식만 식별합니다. 대화형 후속 작업은 Azure Bot과 같은 클라이언트 애플리케이션을 통해 제공됩니다.

리소스 정리

더 이상 필요하지 않은 경우 LUIS 앱을 삭제합니다. 이렇게 하려면 왼쪽 위 메뉴에서 내 앱을 선택합니다. 앱 목록에서 앱 이름 오른쪽에 있는 줄임표(...)를 선택하고, 삭제를 선택합니다. 앱을 삭제하시겠습니까?라는 팝업 대화 상자에서 확인을 선택합니다.