봇 테스트
간단히 말해, 봇 테스트는 봇이 가장 적절한 작업으로 사용자 발화에 응답할 수 있는지 확인하는 것을 의미합니다. 언어의 유연성을 고려할 때, 사용자는 같은 의도를 표현하기 위해 다양한 문구를 사용할 것입니다. 예를 들어, 1월 1일 샌프란시스코에서 로스앤젤레스로 가는 티켓을 변경하고 싶습니다를 다음과 같이 바꿔서 표현할 수 있습니다. 여행 날짜를 변경해 주세요. 1월 1일은 못 갑니다. 요령은 동일한 발화로 이 두 발화를 매핑하도록 봇을 훈련시키거나 예약 수정 작업을 수행하는 것입니다. 따라서, 봇 테스트를 시작하기 위한 첫 번째 단계는 봇 응답을 테스트할 사용자 발화의 대표적인 샘플을 식별하는 것입니다. 지원 채팅 로그, 온라인 커뮤니티, 관련 포털의 FAQ 페이지 등 실제 언어 사용을 반영하는 데이터 소스를 찾습니다.
테스트 결과 유형
봇에 사용자 발화를 테스트할 때, NLP 엔진은 의도와 일치하는 봇 작업을 찾으려고 시도합니다. NLP 엔진은 기계 학습, 기초 의미 및 Knowledge Graph(봇에 있는 경우) 모델을 통한 하이브리드 접근 방식으로 관련성에 대한 일치 의도의 점수를 매깁니다. 모델은 사용자 발화를 가능한 일치 또는 확실한 일치로 분류합니다.
확실한 일치는 높은 신뢰도 점수를 얻은, 사용자 발화와 완벽하게 일치하는 것으로 간주합니다. 게시된 봇에서 사용자 입력이 단일한 확실한 일치와 일치하면, 봇이 작업을 직접 실행합니다. 발화가 여러 개의 확실한 일치와 일치하는 경우, 최종 사용자가 하나를 선택할 수 있는 옵션으로 전송합니다. 반면에, 가능한 일치는 사용자 입력에 대해 꽤 좋은 점수를 받지만 정확한 일치라고 부를 만큼 확실하다는 생각이 들지 않는 의도입니다. 내부적으로 시스템은 점수에 따라 가능한 일치를 좋은 일치와 확실하지 않은 일치로 추가 분류합니다. 게시된 봇에서 최종 사용자의 발화가 가능한 일치를 생성한 경우, 봇은 이러한 일치를 “이런 뜻이 맞습니까?”라는 제안 형태로 최종 사용자에게 보냅니다. 다음은 사용자 발화 테스트의 가능한 결과입니다.
엔티티 일치
봇을 테스트하는 동안, 일치하는 엔티티가 표시됩니다. 발화의 엔티티는 다음의 순서로 처리됩니다. 처음으로 NER 및 패턴 엔티티 그다음으로 나머지 엔티티. 플랫폼의 릴리스 8.0 이후, 엔티티가 어떻게 일치하는지에 대한 세부 정보와 신뢰도 점수가 표시됩니다. 세부 정보는 다음을 포함합니다.
- 식별 엔진 – 기계 학습 또는 기초 의미;
- 학습 유형 – NER, 패턴 학습, 엔티티 이름, 시스템 개념 등에서 일치가 있을 수 있습니다. 패턴 일치의 경우, 행을 클릭하여 같은 세부 정보를 얻습니다.
- NER 학습을 사용하여 ML 엔진이 식별한 신뢰도 점수(조건부 랜덤 필드가 NER 모델로 선택된 경우에만 해당함)
테스트 결과 분석
사용자 발화를 테스트하는 경우, 일치하는 의도 외에도 NLP 분석 상자가 표시되며, 최종 후보에 오른 의도 및 후보 선정에 사용된 NLP 모델, 상응하는 점수, 최종 우승자에 대한 간략한 개요를 제공합니다. 기초 의미 탭에서는, 최종 후보에 없더라도 모든 의도의 점수를 볼 수 있습니다. 위에서 언급한 대로, Kore.ai NLP 엔진은 기계 학습, 기초 의미 및 Knowledge Graph(있는 경우) 모델을 사용하여 의도를 일치시킵니다. NLP 엔진이 기본 모델 중 하나를 통해 단일의 확실한 일치를 찾은 경우, 해당 작업을 일치하는 의도로 간주합니다. 테스트에서 하나 이상의 확실한 일치가 확인되는 경우, 올바른 의도를 선택할 수 있는 옵션이 주어집니다. 모델이 하나 이상의 가능한 일치를 후보로 선정한 경우, 기초 의미 모델을 사용하여 순위와 해결에 의해 모든 후보 의도의 점수를 다시 채점하여 최종 승자를 결정합니다. 때로는, 여러 가능한 일치가 재채점 후에도 같은 점수를 확보하는데, 이 경우 개발자에게 여러 일치를 제시하여 하나를 선택하도록 합니다. NLP 분석 상자에서 학습 모델의 이름이 있는 탭을 클릭하여 의도 점수를 볼 수 있습니다.
ML 모델
ML 모델은 사용자 입력을 작업 레이블 및 각 작업의 학습 발화와 일치시키려 합니다. 사용자 입력이 여러 문장으로 구성된 경우, 각 문장은 작업 이름과 작업 발화에 대해 별도로 실행됩니다. 기계 학습 모델 버튼을 클릭하여 NLP 분석의 기계 학습 모델 섹션을 엽니다. 긍정적인 점수를 확보한 작업의 이름만 표시됩니다. 일반적으로, 작업에 추가된 학습 발화의 수가 많을수록, 발견 가능성이 더 높아집니다. 자세한 내용은, 기계 학습을 읽어보세요.
FM 모델
ML 모델 외에도, 봇의 각 작업은 작업 이름 및 동의어, 패턴의 다양한 조합을 포함하는 종합적인 맞춤형 NLP 알고리즘을 사용하여 사용자 입력에 대해 점수가 매겨집니다. Fundamental meaning(FM) 모델 탭에는 봇의 모든 의도에 대한 분석이 표시됩니다. 탭을 클릭하면 각 작업의 점수를 볼 수 있습니다. 처리된 발화를 클릭하면 사용자 발화를 분석하고 처리한 방법을 알 수 있습니다. 릴리스 7.2부터, FM 엔진은 봇의 언어에 따라 두 가지 방식으로 모델을 생성합니다. 접근 방법 1: 독일어 및 프랑스어를 지원합니다. 원어, 보편적인 품사, 의존 관계 및 관련 단어와 관계된 단어 분석 요소가 자세히 설명되어 있습니다. 그 다음, 처리된 각 의도의 점수 구분이 표시됩니다. 스코어링된 의도(일치됨 또는 제거됨)를 선택하면 각 단어에 대한 스코어링 세부 정보가 표시됩니다. 여기에는 발화의 단어, 종속성 파싱에 따라 각 단어에 할당된 점수가 포함됩니다.
접근 방법 2: 위에서 언급된 언어를 제외한 모든 언어를 지원합니다. 원어, 문장에서의 역할 및 처리된 단어(철자 수정의 경우)와 관계된 단어 분석 요소가 자세히 설명되어 있습니다. 그다음, 처리된 각 의도의 점수 구분이 표시됩니다. 스코어링된 의도(일치됨 또는 제거됨)를 선택하면 각 단어에 대한 스코어링 세부 정보가 표시됩니다. 자세한 분류는 아래와 같습니다.
- 일치된 단어: 작업 이름 또는 작업에 대해 학습된 발화의 단어와 일치하는 사용자 입력에서의 단어 수에 부여된 점수.
- 단어 범위: 작업 이름, 필드 이름, 발화, 동의어를 포함하여 작업의 전체 단어와 일치하는 단어의 비율에 대해 부여된 점수.
- 정확한 단어: 동의어가 아닌 정확히 일치하는 단어 수에 대해 부여된 점수.
- 보너스
- 문장 구조: 사용자 입력과 일치하는 문장 구조에 대한 보너스.
- 단어 위치: 문장 내 단어의 위치에 따라 단어에 부여된 점수. 문장의 시작 부분에 있는 개별 단어에 더 높은 선호도가 부여됩니다. 단어가 문장 시작에 가까우면 추가 점수를 받습니다.
- 순서 보너스: 작업 레이블과 동일한 순서로 된 단어 수에 대한 보너스.
- 역할 보너스: 일치하는 기본 역할 및 보조 역할(주어/동사/목적어)의 수에 대한 보너스.
- 확산 보너스: 패턴에서 첫 번째로 일치하는 단어와 마지막으로 일치하는 단어의 위치 차이에 대한 보너스. 차이가 클수록, 점수가 높아집니다.
- 패널티: 작업 이름 앞에 여러 개의 구문이 있거나 작업 레이블 중간에 접속사가 있는 경우 패널티.
Knowledge Graph
봇이 Knowledge Graph로 구성된 경우, 사용자 발화를 처리하여 용어를 추출하고 Knowledge Graph와 매핑하여 관련 경로를 가져옵니다. 용어 수가 사전 설정된 임계값을 초과하는 모든 경로는 추가 심사를 위해 최종 후보로 등록됩니다. 경로에 100% 용어가 포함되어 있고 유사한 FAQ가 있으면 완벽한 일치로 간주됩니다.
발화가 대화(KG에서 실행에 따른 대화 옵션)를 실행하는 경우, 동일한 것이 일치된 의도 및 일치된 발화로 표시됩니다. 아래 학습 세션에 자세히 설명된 대로 ML 또는 FM 엔진에서 의도에 대해 봇을 추가로 학습시킬 수 있습니다.
순위 및 해결
순위 및 해결은 전체 NLP 계산을 통해 최종 승자를 결정합니다. ML 모델 또는 Knowledge Graph 중 하나가 완벽한 일치를 찾을 경우, 순위와 해결은 의도를 다시 스코어링하지 않고 이를 일치된 의도로 표시합니다.
완벽한 일치가 여러 개 있는 경우, 개발자가 선택할 수 있는 옵션으로 제공됩니다. 순위와 해결은 기초 의미 모델을 사용하여 세 가지 모델이 식별한 다른 모든 우수한 일치 및 불확실한 일치의 점수를 재채점합니다. 재채점 후, 의도의 최종 점수가 특정 임계값을 넘는 경우에도 일치로 간주합니다.
순위와 해결 탭을 선택하면 세부 정보가 표시됩니다. 각 일치의 순위와 세부 정보는 일치된 발화를 선택하여 볼 수 있습니다.
봇 언어에 따른 스코어링 모델은 다음과 같습니다.
- 단어 역할, 문장/단어 위치 및 단어 순서 기반, 또는
- 종속성 파싱(독일어 및 프랑스어 지원) 기반
세 엔진이 서로 다른 확실한/가능한 일치를 반환할 때, 순위 및 해결에 의한 의도 제거의 기준은 다음과 같습니다.
- 날짜, 숫자 등 엔티티 값에 따라 일치된 의도는 기계 학습 모델에 의해 제거됩니다.
- 세 가지 엔진 중 하나로 식별된 모든 가능한 일치는 확실한 일치가 발견되는 경우 제거됩니다.
- 사용자 발화에서 이전에 또 다른 확실한 일치가 발견되는 경우 확실한 일치는 제거됩니다. 사용자 발화에 두 개의 의도가 포함된 경우입니다. 예를 들어, “항공편 예약 후 택시 예약”은 “항공편 예약” 및 “택시 예약”과 일치하지만 “택시 예약”은 “항공편 예약” 이후 제거됩니다.
- 확실한 의도 일치 다음에 나오는 의도 패턴 일치는 제거됩니다. 예를 들어, “이메일 전송 작업 생성”의 사용자 발화는 “작업 생성” 및 “이메일 전송”의 의도와 일치하지만, 이 경우 “이메일 전송”은 “작업 생성” 의도 다음에 나왔으므로 제거됩니다.
- 임계값 및 설정 섹션에서 설정된 최솟값 점수 미만의 점수를 받은 의도는 제거됩니다.
- 네거티브 패턴과 일치하는 확실한 일치.
- 정의된 경우, 사전 조건이 충족되지 않는 의도는 제거됩니다.
- 확실한 일치가 Knowledge Graph 엔진에서 답변에서 검색에서 나왔으며 다른 일치된 의도가 있습니다.
봇 학습시키기
학습은 NLP 엔진의 성능을 향상하여 사용자 입력에 따라 다른 것보다 봇 작업 또는 사용자 의도를 우선시하는 방법입니다. 봇을 테스트하고, 필요한 경우, 가능한 모든 사용자 발화에 대해 봇을 학습시켜야 합니다.
봇 학습
- 사용자 발화를 입력한 후, 테스트 결과에 따라 다음 중 하나를 수행하여 학습 옵션을 엽니다.
- 일치하지 않은 의도의 경우: 의도 선택 드롭다운 목록에서, 사용자 발화와 일치시킬 의도를 선택합니다.
- 일치하는 의도가 여러 개인 경우: 일치시킬 의도의 라디오 버튼을 선택합니다.
- 일치하는 의도가 하나인 경우: 일치하는 의도의 이름을 클릭합니다.
- 입력한 사용자 발화는 ML 발화 섹션 아래의 필드에 표시됩니다. 의도에 발화를 추가하려면, 저장을 클릭합니다. 원하는 만큼 차례대로 발화를 추가할 수 있습니다. 자세한 내용은, 기계 학습을 읽어보세요.
- 의도 동의어 섹션에서, 작업 이름의 각 단어는 별도의 라인 항목으로 나타납니다. NLP 인터프리터의 정확도를 최적화하여 올바른 작업을 인식하기 위한 단어의 동의어를 입력합니다. 자세한 내용은, 동의어 관리하기를 읽어보세요.
- 의도 패턴 섹션에서, 의도의 작업 패턴을 입력합니다. 자세한 내용은, 패턴 관리하기를 읽어보세요.
- 관련 학습 항목 입력을 모두 완료한 경우, 발화 재실행을 클릭하여 의도 점수가 개선되어 높은 신뢰도 점수를 얻었는지 확인합니다.
FAQ로 학습
봇이 FAQ로 사용자 발화에 응답하도록 하려면, 다음 두 가지 방법을 수행합니다.
- FAQ 페이지에서 용어, 용어 설정 또는 클래스를 설정하고, KG를 학습시킨 후 발화를 다시 테스트합니다.
- 대체 질문의 형태로 발화를 Knowledge Graph 페이지에서 선택한 FAQ에 추가하고, KG를 학습시킨 후 발화를 다시 테스트합니다.
Knowledge Graph 학습을 자세히 알아보세요.
잘못된 일치 표시
사용자 입력이 잘못된 작업과 일치하는 경우, 다음 작업을 수행하여 올바른 의도와 일치시킵니다.
- 일치된 의도 이름 위에서, 잘못된 일치로 표시 링크를 클릭합니다.
- 일치된 의도 드롭다운 목록이 열리고 다른 의도를 선택합니다.
- 사용자 입력에 해당하는 의도를 선택하고 봇을 훈련시킵니다.