대화형 봇을 구축하는 데 있어 중요한 요소 중 하나는 상황에 맞는 하위 의도를 추가하는 것입니다.
대화 흐름에서 다른 경로를 택하고, 이전에 제공된 엔티티 값을 수정하는 등 다양한 목적을 위해 상황에 맞는 적절한 의도가 필요할 수 있습니다. 컨텍스트 전환 관리 방법에서 컨텍스트 데이터를 중단 처리와 함께 사용하여 봇과 더욱 자연스럽고 인간적인 상호 작용을 실현하는 방법을 살펴보았습니다.
이 기능은 주로 두 의도의 중단 동작을 정의할 수 있도록 합니다. 이 기능을 사용하면 맞춤형 처리 동작으로 상황에 맞는 의도의 동작을 정의하기가 어려울 수 있습니다. 상황별 NLU를 간소화하기 위해 그룹 노드 기능이 의도 범위 지정, 훈련 및 처리 설정으로 향상되었습니다. 자세한 내용은 여기를 참조하세요.
본 방법에서는 맥락 이탈, 입력 값 수정, 상황에 맞는 후속 쿼리를 포함하는 항공편 예약 봇 시나리오를 살펴봅니다. 이 모든 것을 한 곳에서 쉽게 달성할 수 있도록 그룹 노드를 사용하겠습니다.
문제 설명
항공권 티켓 예약 과정 중:
- 사용자는 목적지 또는 여행 날짜에 관한 생각을 바꿀 수 있습니다.
- 사용자는 예약을 확인하기 전에 항공편 예약 작업의 일부가 아닌 날씨 정보를 확인할 수 있습니다.
- 사용자는 예약에 관한 후속 질문을 할 수 있습니다.
- 사용자는 작업 취소를 선택할 수 있습니다.
전제 조건
이 방법에서는 다음과 같은 대화 작업과 함께 항공편 세부 정보 봇을 사용합니다.
2a단계: 하위 의도 정의, 목적지 및 여행 날짜 변경에 대한 동작 속성을 학습 및 설정합니다. 다음으로 하위 의도를 정의하고 학습을 추가하며, 하위 의도가 식별되어야 하는 조건과 이러한 경우의 봇 동작을 선택적으로 설정해야 합니다. 먼저 목적지 및 여행 날짜를 변경할 수 있는 경우를 생각해 봅시다.
- 엔티티 그룹 화면에서 의도 추가 버튼을 클릭
- 여행 날짜 및 목적지 변경을 허용하기 위한 의도 생성
- 의도 이름을 입력(예: 날짜 및 목적지 변경)
- 설명을 입력합니다.
- 학습의 기계 학습 옵션을 사용하여 이러한 의도를 파악할 수 있는 사용자 발화까지 학습해보도록 하겠습니다.
- 발화 추가(예: “다른 날짜 및 목적지를 시도해 봅시다“)
- 선택적으로 다른 발화를 추가(예: “생각이 바뀌었네요. 다시 시작합시다.“)
- 이 발화의 하위 의도를 학습
- 목적지 및 여행 날짜 값 재설정:
- 처리의 컨텍스트 변수 설정 옵션에서 다음 키-값 쌍을 사용하여 목적지 도시 및 이동 날짜를 재설정합니다:
키 값 context.entities.To null context.entities.When null
- 처리의 컨텍스트 변수 설정 옵션에서 다음 키-값 쌍을 사용하여 목적지 도시 및 이동 날짜를 재설정합니다:
- 선택적으로 사용자에게 변경 사항에 대한 메시지 표시를 합니다.(예: “좋습니다. 처음부터 다시 시작합니다.”)
- 전환 흐름 아래에서 노드로 이동 옵션을 사용하여 흐름을 출발지 엔티티 노드로 다시 가져갑니다 시작 엔티티 값이 변경되지 않았기 때문에 흐름이 다음 엔티티로 이동하고 목적지 및 시간으로 이동합니다
- 여행 날짜 및 목적지 변경을 허용하기 위한 의도 생성
2b단계: NER 학습과 함께 목적지 변경에 대한 하위 의도를 정의하고, 학습하고, 행동 속성을 설정합니다 원래 엔티티 값을 변경하는 위의 활용 사례를 계속 사용하면 사용자가 자신의 발화에서 변경 사항을 지정할 수 있습니다. 사용자가 사용자의 발화에서 목적지의 변경을 나타내는 경우를 생각해 보세요.
- 의도 추가 버튼을 클릭하여 새 하위 의도 추가
- 목적지 변경을 허용하기 위한 의도 생성
- 의도 이름 입력(예: 목적지 변경)
- 설명을 입력합니다.
- 학습의 기계 학습 옵션을 사용하여 이러한 의도를 파악할 수 있는 사용자 발화까지 학습해보도록 하겠습니다.
- 발화 추가(예: “대신 시카고로 갑시다“)
- NER 접근 방식을 사용하여, 발화 내 목적지 엔티티에 주석을 답니다.
- 이 발화의 하위 의도를 학습
- 목적지 값을 캡처된 값으로 설정합니다. 이 값은 컨텍스트 객체에서 identifiedSubIntents 배열로 저장됩니다. 가장 최근에 식별된 하위 의도는 항상 배열의 0번째 인덱스에 저장됩니다.
- 처리의 컨텍스트 변수 설정 옵션에서 다음 키-값 쌍을 사용하여 목적지를 설정합니다:
키 값 context.entities.To context.identifiedSubIntents[0].entities.To
- 처리의 컨텍스트 변수 설정 옵션에서 다음 키-값 쌍을 사용하여 목적지를 설정합니다:
- 선택적으로 사용자에게 메시지 표시 (예: “목적지를 {{context.identifiedSubIntents[0].entities.To}}로 변경“)
- 전환 흐름 아래에서 노드로 이동 옵션을 사용하여 흐름을 출발지 엔티티 노드로 다시 가져갑니다
- 목적지 변경을 허용하기 위한 의도 생성
맥락 이탈
대화는 선형 방식으로 일어나지 않습니다. 사용자는 주요 의도에서 이탈한 후 다시 돌아올 수 있습니다. 그룹을 사용하여 이를 달성하기 위한 단계를 살펴보겠습니다. 항공편을 예약하는 동안 사용자는 여행 날짜를 확정하기 전에 목적지 도시의 날씨를 확인하길 원할 수 있습니다. 봇이 여행 날짜 입력을 기다리는 동안 “내일 XYZ 도시의 날씨는 어떠냐“라는 질문을 할 수 있습니다. 이러한 경우, 사용자에게 날짜를 다시 묻는 메시지가 표시되기 전에 날씨 정보가 사용자에게 표시되어야 합니다. 위의 엔티티 수정 사례와 마찬가지로 날씨 보고서 대화의 범위를 설정하고 동작을 학습하고 설정하는 단계가 있습니다.
- 날씨 보고서와 관련된 쿼리의 범위는 실제 예약 이전이므로 엔티티 사용 사례 수정에 사용된 같은 엔티티 그룹을 사용합니다.
- 대화 작업 노드를 추가하여 현재 대화에서 날씨 보고서 대화 상자를 실행합니다. 팁: 날씨 보고서 대화 작업을 기존 노드에 추가한 다음 연결에서 제거하여 다른 노드에 연결되지 않은 플로팅 노드로 만듭니다.
- 이 작업에는 입력값대로 위치가 필요하며 이 경우 사용자가 입력한 목적지 도시로 설정될 수 있습니다.
- 이 대화에 대한 연결 규칙이 출발지 엔티티로 다시 루프 백해야 합니다. 이렇게 하면 사용자가 원래 대화 흐름에서 그대로 둔 위치에서 다시 시작할 수 있습니다.
- 엔티티 그룹 설정 대화 상자에서
- 신규 추가 의도
- 의도 선택 드롭다운에서 날씨 보고서 선택
- 학습은 날씨 보고서 대화의 학습 발화, 패턴 및 규칙으로 입력됩니다. 이 목록에 추가할 수 있지만 이는 일반적인 학습 데이터이며 날씨 보고서가 사용되는 모든 인스턴스에 영향을 줄 수 있습니다.
- 전환 흐름이 노드로 이동으로 설정되어 있고 Weather_Report 노드가 선택되어 있는지 확인합니다.
- 봇과 대화를 사용하여 시나리오를 테스트합니다.
상황에 맞는 FAQ
그룹 노드를 사용하여 상황에 맞는 쿼리에 응답할 수도 있습니다. 사용자가 예약을 완료한 후 탑승수속 프로세스에 대해 문의할 수 있습니다. 입력 값 수정, 맥락 이탈(범위 지정, 교육 및 동작 정의)과 동일한 단계를 통해 이러한 작업을 수행할 수 있습니다:
- 지금 범위는 예약 확인 후이기 때문에, 노드 예약 후 절차를 그룹화하겠습니다.
- 그룹을 명명합니다(예: 쿼리 그룹)
- 설명 을 입력합니다
- 쿼리 그룹 설정 대화에서 새 의도 추가
- 사용자의 쿼리를 허용하기 위한 의도 생성
- 의도 이름 입력(예: 체크인 쿼리)
- 설명을 입력합니다.
- 학습의 기계 학습 옵션을 사용하여 이러한 의도를 파악할 수 있는 사용자 발화까지 학습해보도록 하겠습니다.
- 발화 추가(예: “공항에서 몇 시에 보고해야 합니까?)
- 선택적으로 다른 발화 추가(예: “체크인 시간은 언제입니까?)”
- 이 발화의 하위 의도를 학습
- 메시지 표시를 사용하여 사용자에게 응답(예: “웹 체크인을 선택했으므로 항공편 이륙하기 30분 전에 신고해야 합니다“)
- 전환 흐름이 대화 재개로 설정되어 있는지 확인
- 사용자의 쿼리를 허용하기 위한 의도 생성
- 봇과 대화옵션을 사용하여 시나리오를 위해 테스트합니다.