지속적으로 사용자를 이해하고 상호작용하는 챗봇의 능력은 대화를 지원하는 자연어 처리(NLP)의 탄탄함에 좌우됩니다. Kore.ai의 플랫폼은 기초 의미와 기계 학습 엔진을 결합하여 사전 학습 없이도 대화 정확도를 극대화하는 독특한 자연어 처리 전략을 사용합니다. Kore.ai 플랫폼에 구축된 봇은 다중 문장 메시지, 다중 의도, 사용자가 만든 문맥 참조, 패턴 및 관용구 문장 등을 이해하고 처리할 수 있습니다. 개요는 여기를 참조하세요. NL 엔진은 광범위한 엔티티에 대한 인식을 지원하고 추가 패턴으로 봇의 언어 이해를 추가로 사용자 정의하는 데 필요한 도구를 제공합니다.

봇 최적화하기

봇이 NLP에 최적화되어 있는지 확인하기 위해, 봇에 사용한 이름과 용어를 정의하고 구체화하여 NLP 인터프리터의 정확도와 성능을 향상시켜 사용자에게 적합한 봇 작업을 인식할 수 있습니다. 작업 수준에서 동의어를 정의한 다음, 동의어를 관리 및 구체화하고 봇 수준에서 테스트합니다. 봇 및 봇 작업 최적화를 시작하려면, 자연어 옵션에 액세스해야 합니다. 이러한 옵션은 편의를 위해 다양한 제목으로 분류되어 있습니다.

  • 학습 – 학습 섹션에서 NLP 인터프리터가 봇의 사용자 입력을 인식하고 응답하는 방법을 정의한 다음 올바른 사용자 의도를 인식하도록 인터프리터를 학습시킬 수 있습니다.
    • 기계 학습 발화 – 기계 학습을 통해, 사용자가 액세스하려는 의도된 작업인 사용자 의도에 대한 더 나은 인식과 시스템 성능을 위하여 사용자 발화의 봇 인식을 향상할 수 있습니다.
    • 동의어 및 개념 – 동의어 섹션을 사용하여 사용자가 제공한 올바른 의도와 엔티티를 인식할 때 NLP 인터프리터 정확도를 최적화할 수 있습니다.
    • 패턴 및 규칙 – 패턴 섹션에서 의도 및 엔티티에 대한 속어, 은유 또는 기타 관용적 표현을 정의할 수 있습니다.
  • 임곗값 및 설정 – 이 섹션에서는 최소 인식 작업에 필요한 인식 신뢰 수준, 사용자가 일치 목록에서 선택하도록 요청하는 신뢰 범위, 지식 그래프의 긍정 일치에 대한 인식 신뢰 수준을 정의할 수 있습니다.
  • 사용자 발화 및 네거티브 의도 패턴을 위해 자동 학습 설정과 같은 고급 설정을 수정합니다.

다음을 통해 봇 최적화를 시작할 수 있습니다.

이 문서의 나머지 부분에서는 NLP 처리의 다양한 측면과 그 안의 다양한 엔진에 대한 심층적인 이해를 제공합니다.

NLP 학습

형태론은 NLP의 기본 원리입니다. 형태론은 단어, 단어가 어떻게 형성되는지, 같은 언어에서 다른 단어들과의 관계를 연구하는 학문입니다. 단어의 구조와 어간, 어근, 접두사, 접미사와 같은 단어의 일부를 분석합니다. 또한, 형태론은 품사, 억양, 강세를 살펴보고 문맥이 단어의 발음과 의미를 어떻게 바꿀 수 있는지도 살펴봅니다. 이를 기반으로, 사용자 발화는 엔티티 추출 및 의도 탐지를 시도하기 전에 다음과 같은 전처리를 거칩니다.

  • 토큰화 – 발화를 문장으로 분할(문장 토큰화)하고 문장을 단어로 분할합니다. Kore.ai는 영어의 경우 TreeBank Tokenizer를 사용합니다. 언어마다 고유한 tokenizer가 있을 수 있습니다.
  • toLower() – 모든 텍스트를 소문자로 변환합니다(단어의 의미가 대소문자에 따라 달라지므로 독일어에서는 수행되지 않음). 이 프로세스는 ML과 KG 엔진에서만 수행됩니다.
  • 불용어 제거 – 언어마다 개발자가 편집할 수 있는 고유한 불용어 세트가 있습니다. 학습 향상에 도움이 되지 않는 단어를 제거합니다. 이 프로세스는 NL과 KG 엔진에서만 수행됩니다. 이 설정은 선택 사항이며, 기본적으로 비활성화되어 있습니다.
  • 표제어 추출 또는 어간 추출(언어별) 
    • 어간 추출 – “Working”->” work”, “Running”->” Run”, “housing”->”hous”와 같은 단어의 어간을 유지합니다. 기본적으로 단어를 잘라냅니다. 출력 단어는 유효한 언어 단어가 아닐 수 있습니다.
    • 표제어 추출 – 사전을 사용하여 단어를 기본형으로 변환합니다. 앞의 예와 같이, “Working”->” work”, “Running”->” Run” however, “housing”->” house”. 
  • N-그램 – 동시 출현 단어를 결합하는 데 도움이 됩니다. 예: “New York City” 및 “Internet Explorer”. 각 단어에는 고유한 의미가 있습니다. 그러나, 첫 번째 경우에 tri-gram을 사용하고 두 번째 경우에 bi-gram을 사용하면 실제로 더 의미 있는 단어가 됩니다. N-그램은 또한 단어 앞과 단어 뒤의 문맥을 얻는 데 도움이 됩니다.

ML 엔진

ML 엔진은 학습 샘플과 학습 과정을 통해 ML 모델을 구축합니다. 앞서 언급했듯이, 기계 학습 엔진은 의도 감지 및 엔티티 추출과 관련이 있습니다. 

  • 의도 예측 모델은 통계 모델링 및 신경망을 사용하여 학습됩니다. 의도 분류에서는 사용자 발화에 특정 의도의 태그를 지정합니다. 분류 알고리즘은 레이블이 지정된 샘플 발화 세트에서 해석 방법에 대해 학습합니다. 학습 발화 준비 및 큐레이션은 강력한 기계 학습 모델을 구축하는 데 있어 가장 중요한 측면 중 하나입니다. 
  • 엔티티 감지에는 시스템 엔티티 인식(기본 제공되는 규칙 기반 모델), 사용자 정의 엔티티 예측(사용자 정의 학습 가능한 규칙 기반 모델) 및 명명된 엔티티 인식이 포함됩니다. 시스템 엔티티는 내장된 규칙을 사용하여 정의됩니다. 그러나, NER 접근 방법을 사용하면 간단하게 ML 학습 발화에서 값을 선택하고 명명된 엔티티에 태그를 지정함으로써 모든 명명된 엔티티는 기계 학습을 사용하여 학습될 수 있습니다. 

ML 학습

ML 엔진 학습 단계는 다음과 같이 나열할 수 있습니다.

  1. 학습 세트로 사용될 수 있는 데이터를 선택 및 수집하기
  2. 평가 및 조정을 위한 학습 세트 나누기(테스트 및 교차 검증 세트)
  3. 알고리즘(피드 포워드 신경망, 지원 벡터 머신 등) 및 하이퍼 매개변수(예: 신경망의 층 수 및 각 층의 뉴런 수)에 따라 몇 가지 ML 모델을 학습시키기
  4. 테스트 및 교차 검증 세트를 통해 모델 평가 및 조정하기
  5. 가장 성능이 좋은 모델을 선택하고 원하는 과제를 해결하는 데 사용하기

ML 학습 개선을 위한 팁:

  • 다양한 ML 모델 비교에 필수적인 배치 테스트 스위트. 배치 스위트를 실행하고 매개변수를 설정하고 스위트를 재실행하고 결과를 비교합니다.
  • 어떤 ML 모델을 사용해야 하는지에 대한 정해진 규칙은 없습니다. 엔진을 설정하고 배치 스위트를 실행하고 결과를 비교하는 시행착오 방법입니다.
  • 데이터가 큰 경우 ML 엔진에서 자동으로 불용어와 동의어를 인식하므로 명시적으로 활성화하지 않고도 처리됩니다.
  • 인플루언서 단어를 확인하고 n-그램 알고리즘에 필요한 경우 불용어로 추가합니다.
  • 가능한 한 다양한 예를 준비합니다.
  • 노이즈 또는 농담을 추가하지 마세요. 불가피한 경우, 의도 간에 동일하게 표현되도록 노이즈를 추가합니다. 그렇지 않으면 노이즈가 의도에 쉽게 과적합될 수 있습니다.

혼돈 지표는 경계선에 있는 학습 문장을 식별하고 그에 따라 수정하는 데 사용할 수 있습니다. 행렬의 각 점은 발화를 나타내며 개별적으로 편집할 수 있습니다.  이 그래프는 다음 매개변수 각각에 대해 추가로 연구할 수 있습니다.

  1. 발화를 올바른 의도에 할당하여 긍정 오류 및 부정 오류를 제거합니다. 점을 클릭하고 발화 편집 페이지에서 발화를 올바른 의도에 할당합니다.
  2. 응집력은 각 의도 쌍 간의 유사성으로 정의될 수 있습니다. 응집력이 높을수록 의도 학습이 우수합니다. 동의어를 추가하거나 발화를 바꾸어 응집력을 향상시킵니다.
  3. 두 가지 의도에서 각 학습 문구 쌍 사이의 거리입니다. 거리가 멀수록 예측이 우수합니다.
  4. 혼동되는 문구, 즉 의도 간에 유사한 문구를 피해야 합니다.

K-fold 모델은 대용량 데이터에 적합하지만 two-fold의 경우 적은 데이터로도 사용할 수 있습니다. 요구 사항에 따라 F1 점수, 정밀도, 재현율을 추적하고 미세 조정합니다. 더 높은 재현율 점수값을 권장합니다.

ML 프로세스

의도 감지

아래 다이어그램에는 학습 및 예측 단계 모두에 대한 의도 감지 파이프라인이 요약되어 있습니다. 학습 파이프라인의 경우, 언어 감지 및 자동 수정은 트레이너가 학습을 수행해야 하는 언어를 알고 있으며 Kore와 같은 도메인별 비사전 단어가 포함될 수 있는 사용되는 철자를 알고 있을 것이라는 가정 하에 실행되지 않습니다.

엔티티 추출

엔티티 추출은 의도 이행에 사용될 수 있는 의도와는 별도로 사용자가 제공한 모든 입력을 식별하는 것을 수반합니다. 엔티티는 세 가지 유형입니다

  1. 날짜, 시간, 색상 등과 같은 시스템 엔티티는 플랫폼에서 기본 제공합니다. 시스템 엔티티는 거의 22~24개의 엔티티를 포함하며 문자열과 설명 엔티티 유형을 제외하고 학습 없이 ML 엔진에서 자동으로 인식됩니다.
  2. 사용자 지정 엔티티는 봇 개발자가 정의하며 열거형, 조회, 원격, 정규식 표현식, 복합 엔티티와 같은 값 목록을 포함합니다. 또한 사용자 지정 엔티티는 ML 엔진이 대부분 자동 감지합니다.
  3. NER(명명된 엔티티 인식)은 서로 다른 엔티티에 대해 동일한 엔티티 유형을 식별하는 학습이 필요합니다. 예를 들어, 항공편 예약 의도에서 출발지 도시와 목적지 도시는 모두 도시 유형 엔티티이므로 엔진은 두 엔티티를 구별하는 학습이 필요합니다. NER은 조건부 임의 필드 기반 또는 신경망 기반일 수 있습니다. CRF는 NN 기반 방법에 비해 적은 데이터로 동작하고 학습 시간이 더 빠르기 때문에 더 선호됩니다.

다음 다이어그램에는 NER 엔티티 추출 파이프라인이 요약되어 있습니다.

ML 출력

ML 엔진은 사용자 발화에 대해 분류를 실행하고 순위와 해결이 올바른 의도를 식별하기 위해 사용하는 다음의 점수 출력을 생성합니다.

  • 각 클래스/의도에 대한 확률 점수는 다음과 같이 해석할 수 있습니다
    • 확실한 일치/완벽한 일치: 확률 점수가 0.95 초과인 경우(기본값 및 조정 가능) 
    • 가능한 일치: 점수가 0.95 미만인 경우 다른 엔진으로 검색될 수 있는 다른 의도에 대해 순위를 매길 수 있습니다.
  • 임곗값 점수(기본값 0.3)보다 큰 각 클래스/의도에 대한 퍼지 점수 – 퍼지 논리는 주어진 의도의 각 발화를 거쳐 사용자 입력과 발화가 가까운 정도를 확인하기 위해 사용자 입력과 비교합니다. 점수는 일반적으로 0에서 100 사이이며 다음과 같이 해석할 수 있습니다.
    • 확실한 일치/완벽한 일치: 점수가 95% 초과인 경우(기본값 및 조정 가능) 
    • 가능한 일치: 점수가 95% 미만인 경우 다른 엔진으로 검색될 수 있는 다른 의도에 대해 순위를 매길 수 있습니다.
  • CR 문장 – ML 엔진은 또한 임곗값 점수를 사용하여 자격이 있는 각 의도에 대해 상위 5개의 ML 문장을 보냅니다. 이 5개의 ML 발화는 퍼지 점수를 사용하여 도출됩니다. 순위 및 해결은 재채점을 위해 이러한 CR 문장을 사용하여 이러한 발화 중 가장 최고의 발화를 선택합니다(각 발화를 사용자 입력과 비교하고 최고 점수를 가진 발화를 선택함)

ML 엔진 한계

ML 모델은 매우 철저하고 포괄적이지만, 나름의 한계가 있습니다. 

  1. ML 모델은 충분한 학습 데이터를 사용할 수 없는 경우 작은 데이터 세트에 과적합되어 결과적으로 일반화 기능이 저하되며 이로 인해 생산 성능이 저하되는 경향이 있습니다.
  2. 인터넷이나 뉴스 기사와 같은 일부 공통 도메인에서 가져온 데이터 세트에 기반하여 학습한 경우 도메인 적응이 어려울 수 있습니다.
  3. 통제성과 해석성은 블랙박스처럼 작동하므로 결과를 설명하기 어려운 경우가 대부분입니다.
  4. 자원과 시간 측면에서 비용이 많이 듭니다
  5. 위의 두 가지 요소로 인해 시간과 노력 측면에서 유지 관리나 문제 해결에 비용이 많이 들고 회귀 문제가 발생할 수 있습니다.

따라서, FM 엔진으로 보강된 ML 엔진은 더 우수한 결과를 얻을 수 있습니다. 기본 ML 모델을 사용하여 봇을 훈련시킬 수 있으며 관용적인 문장, 명령어와 같은 발화 및 퀵 픽스(quick fix)에 대해 FM 패턴과 네거티브 패턴을 사용하여 사소한 문제를 해결할 수 있습니다.

FM 엔진

기초 의미 모델은 의도 일치 결정을 위해 시멘틱 규칙(Sementic Rule)과 언어 문맥을 사용하는 결정론적 모델입니다. 이 엔진은 동의어, 내장된 사용자 정의 개념과 패턴을 사용하여 학습이 가능합니다. FM 모델은 다음과 같은 다양한 의미 규칙을 사용하여 사용자 발화에 점수를 매깁니다.

  • 문법;
  • 품사;
  • 단어 일치, 문장 전체에서 단어 범위, 단어 위치;
  • 문장 구조 및 기타 등등.

FM 프로세스

FM 모델은 학습에서 다음의 프로세스를 사용합니다.

  1. 토큰화(단어 분할)은 주어진 텍스트를 토큰이라는 단위로 나누는 과정입니다. 하이픈으로 연결된 단어는 그대로 유지되고(이후 철자 수정이 적용될 수 있음), 하이픈이 있는 숫자는 분리됩니다. 예를 들어, “2-3”은 “2 – 3”이 됩니다. 토큰화는 날짜, 통화 등과 같은 알려진 개념에 대해서는 수행되지 않습니다.
  2. 대체는 시스템 개념을 사용하여 감탄사, 약어, 문자 속기 및 축약형을 확장하는 과정입니다. 가령, 모든 인사말 관련 표현의 경우 ~emohello, 확인의 경우 ~yes for confirmation, 거절의 경우 ~no 등이 있습니다.
  3. 병합은 명백한 단일 단어, 숫자 또는 날짜 형태인 일련의 단어를 결합하는 과정입니다. 예를 들어, “credit card” 또는 “twenty five” 또는 “twenty-five”는 한 단어로 병합됩니다.
  4. 철자 검사는 알 수 없는 단어를 알려진 단어(있는 경우)로 바꾸는 과정이며 대/소문자 변환을 수반합니다. 플랫폼은 철자 검사를 위해 WordNet 및 봇 정의 용어를 참조합니다. 예를 들어, “I wantt to pai bill”은 “I want to pay bill”이 됩니다.
  5. 표제어 추출 – 봇 플랫폼은 WordNet 데이터베이스를 사용하여 주어진 텍스트에서 단어의 기본형을 찾습니다.
  6. 수집(Gleaning)은 발화의 일부를 식별하여 특별한 것으로 표시합니다. 여기에는 다음 사항이 포함됩니다.
    • 공손한 문구를 마킹하고 노이즈로 취급합니다. 예: “can you please….”. 
    • 여러 의도를 나타내는 언어 구조(예: “and then”, “and after that”, “but first”)는 문장을 두 개로 분할하고 다중 의도 감지를 수행합니다.
    • 숫자 및 기타 관련 엔티티를 식별하고 정규화 합니다. 예를 들어, "seven one three triple five double zero eighty four"는 7135550084가 되고 이는 전화번호일 것입니다.
    • 시스템 엔티티: 백분율 – “sixty six percent”, 측정 단위 – “five sq km”, “12 stone 7 pounds”, 통화 – “twenty bucks”, “six lakh rupees”, 날짜 및 시간 – “last day of next month”, “10 o’clock tonight”.
  7. POS 태깅은 말뭉치의 단어를 문맥과 정의에 기반하여 음성 태그의 상응하는 부분에 마크업하는 과정입니다. 음성 태그의 일부는 단어 간의 관계 추출에 사용되는 구문 분석 트리를 작성하는 데 유용합니다. POS 태깅은 단어를 어근 형태로 줄이는 데 사용되는 lemmatizer를 구축하는 데도 필수적입니다. 각 단어에는 음성 태그의 일부가 할당되고, 봇 정의 데이터에서 역할(주어/동사/목적어)이 할당될 수 있습니다.
  8. 마킹은 각 단어에 개념을 할당하는 과정입니다. POS 태깅과 구문 분석은 명사와 동사를 다루는 추상적인 반면, 마킹은 단어에 의미를 적용합니다. 예를 들어, "항공편 예약(book a flight)"에서 book은 명사 또는 동사일 수 있지만 이 맥락에서 동사로 마킹됩니다.

FM 엔진의 핵심 요소

동의어, 개념, 패턴은 FM 엔진의 토대입니다. 의도 감지에 사용되며 여러 가능한 의도 중에서 선택하려고 할 때 순위 및 해결에서도 사용됩니다.

  • 동의어는 의도/엔티티 식별에 사용되는 단어를 서로 바꿔 사용할 때 필요합니다. 플랫폼에는 사전이 내장되어 있으며, 봇 사전을 구축하는 데 사용될 도메인 단어를 추가하여 보강할 수 있습니다.
  • 개념은 한 번 정의하고 여러 장소에서 사용할 수 있는 사전 정의된 선택 항목입니다. 플랫폼에는 개발자가 패턴(예: ~world_country, ~asian_country)을 정의하는 데 사용할 수 있는 많은 내장된 개념이 있습니다. 사용 사례에 적용할 수 있는 사용자 정의 개념을 만들 수 있고 계층적 개념을 만들 수도 있습니다.
  • 패턴은 FM 엔진에서 의도 감지에 주로 사용됩니다. 작업 이름에 은유나 기타 관용 표현을 정의하는 데 사용될 수 있습니다. 패턴 정의에 개념을 사용할 수 있습니다.

FM 출력

FM 엔진은 다음에 기반하여 주어진 사용자 입력에서 단어에 대한 정보를 수집합니다.

  • 문장에서 일치하는 단어의 위치
  • 일치하는 단어가 명사 또는 동사인지 여부
  • 일치하는 단어의 역할 – 메인 주어, 메인 동사, 메인 목적어
  • 정확한 단어 일치 또는 동의어
  • 일치하는 단어의 시제 – 현재/미래/과거

일련의 개별 점수는 일치하는 단어 세트에서 계산됩니다.

  • 목표는 입력에서 가장 초기의 문장에서 가능성이 제일 높은 단어와 일치하는 작업을 택하는 것입니다.
  • 단어가 서로 가까울 때 문장의 시작 쪽으로 작업 레이블과 같은 순서로 우선권이 단어에 주어집니다.
  • 작업 이름 앞에 여러 개의 구문이 있거나 작업 레이블 중간에 접속사가 있는 경우에는 바람직하지 않습니다.
  • 현재 시제 또는 미래 시제에서 구로 된 작업에 우선권이 주어집니다.

온톨로지 기반 KG

온톨로지 기반 지식 그래프는 정적 FAQ 텍스트를 지능적이고 개인화된 대화형 경험으로 전환합니다. 도메인 용어와 관계를 사용하여 학습 요구 사항을 줄입니다. 또한, ML이 혼란스러울 때마다 온톨로지 가중치 기능을 활성화하고 적절한 답변 해결을 위해 자동 대화형 대화를 활성화하는 기능도 있습니다.

그래프 엔진의 기능

  • 동의어를 사용한 쉬운 학습 – Kore.ai 지식 그래프는 동의어를 그래프 노드에 연결할 수 있습니다. 이렇게 하면 질문의 변화를 캡처하는 데 도움이 됩니다.
  • 대체 질문을 통한 적용 범위 향상 – 지식 그래프에는 대체 질문을 추가할 수 있는 기능이 있습니다. 이는 사용자가 동일한 질문을 하는 다양한 방법을 파악하는 데 도움이 됩니다.
  • 향상된 정확도 – 온톨로지 기반 질문 답변은 긍정 오류 가능성을 줄여줍니다. 
  • 특성을 사용한 문구 저울질 – Kore.ai의 그래프 엔진을 사용하여 개발자는 관련 없는 제안을 필터링 하기 위해 특성의 개념을 구축할 수 있습니다.
  • 용어 중요성을 표시하는 기능 – Kore.ai 그래프 엔진에는중요한 온톨로지 용어를 표시하는 기능이 있습니다.
  • 관련 노드를 그룹화하는 기능 – 그래프의 크기가 커지면 그래프 노드를 관리하는 것이 어려운 작업이 될 수 있습니다. 온톨로지 엔진의 "구성자 노드" 구조를 사용하여 봇 개발자는 노드에서 관련 노드를 그룹화할 수 있습니다.

FAQ 탐지 단계

  • 1단계: 노드 추출: KG 엔진은 사용자 발화를 처리하여 그래프에 있는 용어(온톨로지 노드)를 추출합니다. 또한, 용어와 관련된 동의어, 클래스 및 태그를 고려합니다.
  • 2단계: 그래프 질의: KG 엔진은 추출 노드로 구성된 모든 경로를 가져옵니다.
  • 3단계: 경로 후보 선정: 사용자 발화와 50% 이상 일치하는 용어로 구성된 모든 경로는 추가 처리를 위해 선정됩니다. 참고: 경로 범위 계산은 루트 노드를 고려하지 않습니다.
  • 4단계: 특성으로 필터링: 지식 그래프에서 특성이 정의되면, 위 단계에서 선정된 경로가 사용자 발화에서 분류 알고리즘의 신뢰도 점수를 기반으로 추가로 필터링됩니다. 
  • 5단계: 랭커로 보내기: 그런 다음, KG 엔진은 선정된 경로를 온톨로지 랭커 프로그램으로 보냅니다.
  • 6단계: 코사인 유사도 기반 점수 계산: 온톨로지 랭커는 사용자 정의 동의어, 기본형 단어, n-그램, 불용어를 통해 사용자 발화와 선정된 질문 간의 코사인 유사성을 계산합니다. 코사인 유사성 점수가 증가하지 않는 순서대로 경로의 순위를 매깁니다.
  • 7단계: 일치 규정: 그런 다음 온톨로지 랭커는 다음과 같이 경로를 규정합니다.
    • 점수를 가진 경로(paths with score) >= 임곗값 상한(upper_threshold)인 경로를 답변으로 규정합니다(확실한 일치).
    • 임곗값 하한(lower_threshold) < 점수(score) < 임곗값 상한(upper_threshold)인 경로제안으로 표시됩니다(가능한 일치).
    • 점수를 가진 경로(paths with score) < 임곗값 하한(lower_threshold)인 경로는 무시합니다.

특성

특성은 의도를 인식하기 전 사용자 입력에서 추출할 수 있는 엔티티입니다. 특성은 여러 시나리오에서 사용할 수 있습니다.

  • 간접 엔티티 추출에서 특성 예를 들어, 성별 또는 연령별 단어는 텍스트에서 추론할 수 있습니다. “1~5세 아기를 위한 옷”과 같은 문구는 유아용 제품임을 암시합니다.
  • 특성은 규칙을 사용하여 의도 인식에 사용될 수 있습니다. 의도에 대한 모든 규칙 일치는 확실한 일치로 간주됩니다.
  • 특성은 키워드/문구 및 동의어를 기반으로 식별할 수 있습니다. 예: Trait-Color: Blue – “파랑”, “사파이어”, “틸”, Trait-Color-Red – 빨랑, 마룬, 크림슨 Trait-Status: NotWorking: “작동 안 함”, “꺼짐”, Trait-Status:Working: “작동 함”, “켜짐”
  • 특성은 문장의 키워드나 특정 문구에서 유추할 수도 있습니다. 문장의 특정 단어와 엔티티의 값 사이에는 뚜렷한 연관성이 없으므로 값을 결정하려면 전체 문장이 필요합니다. 예: Trait-Greeting-Emotion: Positive – “좋은 아침입니다”, “잘 지내세요”, Trait-Greeting-Emotion: Negative – “말하기 싫습니다”, “문제 없어요”

순위 및 해결

순위 및 해결 엔진은 위의 엔진에서 출력을 받아 추가로 처리합니다. R&R 엔진과 함께 작용하는 다양한 매개변수에 대한 간단한 요약:

  • ML 엔진의 출력: 주어진 발화에 대해
    • 결정론적 일치: 사용자 입력에 대해 95% 이상 일치의 퍼지 점수 매치입니다.
    • 가능한 일치: 각 의도의 신뢰도 점수
    • ML 학습 데이터 세트에서 의도의 신뢰도 점수가 임곗값(기본값 0.3)보다 큰 각 의도의 상위 5개 발화
    • 사용자 입력에 가까운 상위 5개의 발화는 ML 엔진이 찾습니다.
  • KG 엔진의 출력
    • 결정론적 일치: 사용자 입력에 대해 95% 이상 일치의 결정론적인 퍼지 매치인 경우 퍼지 점수입니다.
    • 가능한 일치: 최소 임곗값(경로 용어의 50% 이상 일치 및 60% 이상 단어 일치)과 일치하는 질문의 신뢰도 점수
    • 일치하는 동의어, 일치하는 노드, 일치하는 경로 용어, 일치하는 클래스/특성
    • 원본 질문, (일치하는 동의어로 대체된) 수정된 질문
    • 일치하는 각 질문의 대체 질문
  • FM 엔진의 출력
    • 결정론적 일치: 결정론적으로 일치하는 의도(패턴 일치 또는 입력이 작업 이름과 정확히 동일함)
    • 가능한 일치: 동의어를 포함한 부분 레이블 일치.

승자는 다음과 같이 순위 및 해결에 의해 결정됩니다.

  • 확실한 일치 발견됨
    • 엔진이 의도를 확실히 찾은 경우 이 의도는 최상의 의도입니다.
    • 하나 이상의 엔진이 다른 의도를 찾았지만 결정론적으로는 이 의도를 모호한 것으로 간주하고 찾은 의도를 사용자에게 선택 항목으로 제시하여 사용자가 옳다고 생각하는 의도를 선택하도록 합니다.
  • 가능한 일치 발견됨
    • 결정론적 의도가 발견된 경우, 가능한 모든 일치를 무시합니다.
    • 오직 FM 또는 ML 엔진이 의도를 찾았지만 가능한 경우, 이 의도는 최상의 의도입니다.
    • 오직 KG 엔진이 가능한 의도를 찾았고 의도의 점수가 임곗값(80%)보다 높은 경우 이 의도는 최상의 의도입니다.
    • 오직 KG 엔진이 가능한 의도를 찾았고 의도의 점수가 60%를 초과하지만 80% 미만인 경우 이 의도는 최상의 의도이지만, 신뢰도가 낮으므로 제안으로 표시합니다(사용자에게 "이런 뜻이 맞습니까"로 표시됨)
    • 가능한 의도가 하나 이상 발견된 경우 
      • ML 엔진에서 제공한 5개의 발화에 각각 점수를 매기고 각 가능한 의도에 대해 가장 높은 점수를 얻은 발화를 찾습니다.
      • 대체 질문, KG 엔진에서 제공한 수정된 질문에 각각 점수를 매기고 각 의도에 대해 가장 높은 점수를 얻은 질문을 찾습니다.
      • 점수에 순위를 매기고 최고 점수를 얻은 의도를 최상의 의도로 선택합니다.
      • 최상위 의도와 바로 다음 의도가 2% 범위 내에 있으면 모호한 것으로 간주합니다.

一貫してユーザーを理解し、対話するチャットBotの能力は、会話を強化する自然言語処理(NLP)の堅牢性によって決まります。

Kore.aiのプラットフォームは独自の自然言語処理戦略を採用しており、ファンダメンタルミーニングと機械学習エンジンを組み合わせることで、事前のトレーニングをほとんどせずに会話の精度を最大化します。Kore.aiのプラットフォーム上に構築されたBotは、複数の文を含むメッセージ、複数のインテント、ユーザーによるコンテキストの参照、パターンや慣用句などを、理解して処理することができます。

NLエンジンには、さまざまなエンティティの認識サポートが含まれており、追加のパターンを使用してBotの言語理解をさらにカスタマイズするために必要なツールを提供します。

自然言語理解のためのBotの最適化

BotがNLPに最適化されていることを確認するために、お客様のBotに使用される名前と用語を定義および改良し、NLPインタプリタの精度とパフォーマンスを向上させ、ユーザーに適切なBotタスクを認識させることができます。
タスクレベルで同義語を定義することから始めて、同義語の管理と改良、Botレベルでのテストを行います。

BotおよびBotタスクの最適化を開始するには、自然言語オプションにアクセスする必要があります。これらのオプションは、便宜上様々な見出しに分類されています。

  • トレーニング – トレーニングセクションでは、NLPインタプリタがBotのユーザー入力をどのように認識して応答するかを定義し、正しいユーザーインテントを認識するようにインタプリタをトレーニングすることができます。
    • 機械学習の発話 – 機械学習を使用すると、ユーザーの発話のBot認識を強化して、ユーザーインテントに対する認識とシステムパフォーマンスを向上させることができます。
    • 同義語 > 概念 – 同義語セクションを使用して、ユーザーが提供した正しいインテントおよびエンティティを認識する際のNLPインタプリタの精度を最適化することができます。
    • パターン – パターンセクションでは、インテントやエンティティに関するスラング、メタファー、またはその他の慣用表現を定義することができます。
    • しきい値および設定 – このセクションを使用して、最小限の認識アクションに必要な認識信頼度、可能な一致リストからの選択をユーザーに求めるための信頼度の範囲、およびナレッジグラフの正の一致に対する認識信頼度を定義することができます。
    • ユーザーの発話に対する自動トレーニング設定やネガティブインテントパターンなどのその他の設定を変更します。
  • インテリジェンス – このセクションでは、定義済みのタスク以上にBotの機能を強化するのに役立ちます。このセクションでは、逸脱や混乱時のBotの動作をガイドするのに役立ちます。
    • 割り込みの管理では、進行中のタスク実行中に識別された割り込みについて、どのように処理すべきかを定義することができます。
    • エンティティの変更は、ユーザーが要求を変更することを可能にし、そのようなシナリオにおけるBotの動作を定義します。
    • ユーザーの発話に存在する複数のインテントを識別できるようにBotを設定します。
    • サブドメイン、Botの連絡先カード、Korea.aiのID要件などの詳細設定を変更します。
  • 会話をデフォルトにする– このセクションでは、標準的なクエリ、Botのイベント、およびインテントが理解されていない場合の応答を定義することができます。

A chatbot’s ability to consistently understand and interact with a user is dictated by the robustness of the Natural Language Processing (NLP) that powers the conversation.

Kore.ai’s platform uses a unique Natural Language Processing strategy, combining Fundamental Meaning and Machine Learning engines for maximum conversation accuracy with little upfront training. Bots built on Kore.ai’s platform can understand and process multi-sentence messages, multiple intents, contextual references made by the user, patterns and idiomatic sentences, and more. See here for an overview.

The NL engine includes recognition support for a wide range of entities and provides the tools needed to further customize your bot’s language understanding using additional patterns.

Optimizing your Bot

To make sure your bot is NLP-optimized, you can define, and refine names and terms used for your bot to enhance the NLP interpreter accuracy and performance to recognize the right bot task for the user.
You begin by defining synonyms at the task level, and then manage and refine synonyms, and test at the bot level.

To get started optimizing your bot and bot tasks, you need to access the Natural Language options. These options are categorized under various headings for your convenience:

  • Training – In the Training section, you can define how the NLP interpreter recognizes and responds to the user input for a bot, and then train the interpreter to recognize the correct user intent.
    • Machine Learning Utterances – With Machine Learning, you can enhance bot recognition of user utterances for better recognition and system performance for the user intent which is the intended task that the user wants to access.
    • Synonyms & Concepts – You can use the Synonyms section to optimize the NLP interpreter accuracy in recognizing the correct intent and entity provided by the user.
    • Patterns & Rules – In the Patterns section, you can define slang, metaphors, or other idiomatic expressions for intent and entities.
  • Thresholds & Configurations – In this section, you can define the recognition confidence levels required for minimum recognition actions, the confidence range for asking a user to choose from a list of possible matches, and a recognition confidence level for a positive match for the knowledge graph.
  • Modify Advanced Settings like auto training setting for user utterances and negative intent patterns.

You can start optimizing your bot, by:

The rest of this document gives an in-depth understanding of the various aspects of NLP processing and various engines therein.

NLP Training

Morphology is the underlying principle behind NLP. Morphology is the study of words, how they are formed, and their relationship to other words in the same language. It analyzes the structure of words and parts of words, such as stems, root words, prefixes, and suffixes. Morphology also looks at parts of speech, intonation, and stress, and the ways the context can change a word’s pronunciation and meaning.

Based on this, a user utterance undergoes the following preprocessing before an attempt at entity extraction and intent detection:

  • Tokenization – Splitting of utterances into sentences (Sentence tokenization) and Splitting of Sentence(s) into words. Kore.ai NLP uses TreeBank Tokenizer for English. Each language might have its own tokenizer
  • toLower() – Convert all the text into lower (Not done for German, since the word meaning changes based on the case). This process is done only by ML and KG engines.
  • StopWord removal – Each language has its own set of stop words that can be edited by the developer. Removes words that may not contribute to improving the learning. This process is done only in ML and KG engines. This setting is optional, by default is disabled.
  • Lemmatization or Stemming depending on the language 
    • Stemming – Retains the stem of the word like “Working”->” work”, “Running”->” Run”, “housing”->”hous”. It basically cuts the words. The output word may not be a valid language word
    • Lemmatization – Converts the word to its base form using the dictionary. Like in earlier examples “Working”->” work”, “Running”->” Run” however,  “housing”->” house”. 
  • N-grams – Helps in combining co-occurring words. For example, “New York City” and “Internet Explorer”. Each word has its own meaning. But when we take tri-gram in the first case and bi-gram in the second case, it actually results in a more meaningful word. N-grams also help in getting some context before or after a word.

ML Engine

From the training samples and the learning process, ML Engine builds an ML model. As mentioned earlier, Machine Learning Engine is concerned with intent detection and entity extraction. 

  • The intent prediction model is trained using statistical modeling and Neural networks.  Intent classification tags the user utterance to a specific intent. The classification algorithm learns from the set of sample utterances that are labeled on how they should be interpreted. Training utterance preparation and curation is one of the most significant aspects of building a robust Machine learning model. 
  • Entity Detection involves recognizing System Entities (Out Of the Box, Rule-based model) predicting Custom Entities (Custom-trainable Rules-based Model), and Named Entity Recognition. System Entities are defined using built-in rules. However, using the NER approach, any named entity can be trained using Machine Learning by simply choosing the value from the ML training utterances and tagging them against the named entity. 

ML Training

Steps in training ML engine can be listed as follows:

  1. Choosing and gathering data that can be used as the training set
  2. Dividing the training set for evaluation and tuning (test and cross-validation sets)
  3. Training a few ML models according to algorithms (feed-forward neural networks, support vector machines, and so on) and hyperparameters (for example, the number of layers and the number of neurons in each layer for neural networks)
  4. Evaluating and tuning the model over test and cross-validation sets
  5. Choosing the best performing model and using it to solve the desired task

ML Training Validations

The Kore.ai’s Natural Learning Process (NLP) training module empowers ML engine in designing robust and accurate virtual assistants to provide the best conversational experiences and reduce the cost required to rectify virtual assistants after deployment. 

The NLP module improves the performance by constantly validating the ML Engine and presents  actionable insights to resolve the conflicts in intent and entity training. Learn more.

Tips for better ML training:

  • Batch test suites compulsory, for comparing various ML models. Run the batch suite, configure the parameters, re-run the suite and compare the results.
  • There is no set rule as to which ML model to go for. It is a trial and error method –  configure the engine, run batch suites and compare results.
  • If your data is huge then the stop words and synonyms are recognized automatically by the ML engine and taken care of without having to enable them explicitly.
  • Check for influencer words and if needed add it as a stop word, for the n-gram algorithm.
  • Prepare as diverse examples as possible.
  • Avoid adding noise or pleasantries. If unavoidable, add noise so that it is equally represented across intents, else you can easily overfit noise to intents

Confusion Matrix can be used to identify training sentences that are borderline and fix them accordingly. Each dot in the matrix represents an utterance and can be individually edited. 

The graph can further be studied for each of the following parameters:

  1. Get rid of false positives and false negatives by assigning the utterance to the correct intent. Click on the dot and on the edit utterance page assign the utterance to the correct intent.
  2. Cohesion can be defined as the similarity between each pair of intents. The higher the cohesion the better the intent training. Improve cohesion by adding synonyms or rephrasing the utterance.
  3. Distance between each pair of training phrases in the two intents. Larger the distance the better the prediction.
  4. Confusing phrases should be avoided i.e. phrases that are similar between intents.

K-fold model is ideal for large data but can be used for less data too with two-folds. Track and fine-tune the F1-score, Precision, and Recall as per your requirements. A higher value of recall score is recommended.

ML Process

Intent Detection

The below diagram summarizes the intent detection pipeline for both training and prediction stages. For the training pipeline, the language detection and auto-correction are not run with the assumption that the trainer would be aware of the language in which training needs to be done and of the spellings to be used which might include domain-specific non-dictionary words like Kore, etc.

Entity Extraction

Entity extraction involves identifying any information provided by the user apart from the intent that can be used in the intent fulfillment. The entities are of three types

  1. System entities like date, time, color, etc are provided out-of-the-box by the platform. It includes nearly 22-24 entities and these are recognized by the ML engine automatically with no training except for string & description entity types.
  2. Custom entities are defined by the bot developer and these include the list of values – enumerated, lookup, and remote, regex expressions, and composite entities. These are also mostly auto-detected by the ML engine.
  3. NER or named entity recognition needs the training to identify the same entity type for different entities e.g. source & destination cities for flight booking intent, both of which are city type entities and the engine needs the training to distinguish between the two. NER can be conditional random field-based or neural network-based. CRF is preferred since it works on lesser data and has a faster training time compared to the NN-based method.

The following diagram summarizes the NER entity extraction pipeline

ML Output

ML Engine runs the classification against the user utterance and generates the following scores output which Ranking and Resolver use for identifying the correct intent:

  • The probability Score for each class/intent, can be interpreted as follows
    • Definitive Match/Perfect Match: If the probability score >0.95 (default and adjustable) 
    • Possible match: If the score is <0.95%, it becomes eligible for ranking against other intents which may have been found by other engines.
  • The fuzzy score for each of the classes/intents which are greater than the Threshold score(default is 0.3) – Fuzzy logic goes through each utterance of a given intent and compares it against the user input to see how close the user input and the utterance are. The scores are usually from 0-100 and can be interpreted as follows:
    • Definite Match/Perfect Match: If the score is above 95%(default  & adjustable) 
    • Possible match: If the score is <95%, becomes eligible for Ranking against other intents which may have been found by other engines.
  • CR Sentences – The ML engine also sends the top 5 ML utterances for each of those Intents which have qualified using the Threshold score. These 5 ML utterances are derived using the Fuzzy score. Ranking & Resolver uses these CR sentences to Rescore and choose the best of these utterances (compares each utterance against user input and chooses an utterance with topmost score)

ML Engine Limitations

Though the ML model is very thorough and encompassing, it has its own limitations. 

  1. In cases where sufficient training data is not available ML model tends to overfit small datasets and subsequently leading to poor generalization capability, which in turn leads to poor performance in production.
  2. Domain adaptation might be difficult if trained on datasets originating from some common domains like the internet or news articles.
  3. Controllability and interpretability are hard because, most of the time, they work like a black box, making it difficult to explain the results.
  4. Cost is high both in terms of resources and time
  5. The above two points also result in maintenance or problem resolution being expensive (again both in terms of time & effort) and can result in regression issues.

Hence ML engines augmented by FM engines would yield better results. One can train the bot with a basic ML model, and any minor issues can be addressed using FM patterns and negative patterns for idiomatic sentences, command-like utterances, and quick fixes.

FM Engine

The Fundamental Meaning model is a deterministic model that uses semantic rules and language context to determine the intent match. This engine can be trained using synonyms, built-in and custom concepts, and patterns.

The FM model scores user utterance using various semantic rules which include:

  • Grammar;
  • Parts of speech;
  • Word Match, Word Coverage across the sentence, Word Position;
  • Sentence structure and many more.

FM Process

FM model uses the following processes in training

  1. Tokenization (word segmentation) is the process of breaking up the given text into units called tokens. Hyphenated words are retained (might be subjected to spell correction later); digits with a hyphen are split, eg “2-3” becomes “2 – 3”. Tokenization is not done for known concepts like Dates, Currency, etc.
  2. Substitution is the process of expanding interjections, abbreviations, texting shorthand, and contractions using system concepts. Like ~emohello for all greeting-related expressions, ~yes for confirmation, ~no for rejection, and much more.
  3. Merging is the process of combining a sequence of words that are obviously a single word, numbers, or dates. E.g. “credit card” or “twenty five” or “twenty-five” merged into a single word.
  4. Spell Check is the process of replacing unknown words with known words (if any) and involves case conversion. The platform refers to WordNet and Bot Defined Terms for spell check. E.g. “I wantt  to pai bill”   becomes “I want to pay bill”
  5. Lemmatize – The Bots Platform uses the WordNet database to look up for lemmas of the words in a given text.
  6. Gleaning to identify sections of utterances and mark them as special. This includes
    • Marking polite phrases and treating them as noise, like “can you please….”. 
    • Language constructs that indicate multiple intents, like “and then”, “and after that”, “but first” cause the sentence to be split into two and do multiple intent detection.
    • Identify and normalize numbers and from other related entities: e.g. “seven one three triple five double zero eighty four” => 7135550084, which is probably a phone number.
    • System entities like Percentages – “sixty six percent”; Units of measurement – “five sq km”, “12 stone 7 pounds”; Currencies – “twenty bucks”, “six lakh rupees”; Dates and times – “last day of next month”, “10 o’clock tonight”.
  7. POS tagging is the process of marking up a word in a corpus to a corresponding part of a speech tag, based on its context and definition. Part of Speech Tags is useful for building parse trees, which are used in extracting relations between words. POS Tagging is also essential for building lemmatizers which are used to reduce a word to its root form.  Each word is assigned a part of the speech tag, and possibly a role (subject/verb/object) from bot definition data.
  8. Marking is the process of assigning concepts to each word. POS tagging and parsing are abstract, dealing with nouns and verbs while Marking applies meanings to the words. For example, “book a flight” – book can be a noun or verb, in this context, it is marked as a verb.

Key Elements in FM Engine

Synonyms, Concepts & Patterns are the cornerstones of the FM engine. These are used in intent detection and also by Ranking & Resolver when trying to choose among the multiple possible intents.

  • Synonyms need to be used when the words used to identify an intent/entity can be used interchangeably like. The platform comes with a built-in library, it can be augmented by adding domain words that will be used to build a Bot dictionary.
  • Concepts are a predefined set of choices that are defined once and used in multiple places. The platform has a large set of inbuilt concepts that developers can use to define a pattern like ~world_country, ~asian_country. You can create your own custom concepts which are applicable to your use case, you can also create hierarchical concepts.
  • Patterns used mainly for intent detection in the FM engine. Can be used to define metaphors or other idiomatic expressions for task names. Concepts can be used in defining patterns.

FM Output

The FM Engine collects information on a word in a given user input depending on:

  • Position of the matching word in the sentence
  • Whether the matching word is a Noun or verb
  • Role of the matching word – Main Subject, Main Verb, Main Object
  • Exact word match or Synonym
  • Tense of the matching word – present/future/past

A series of individual scores are calculated from the set of matched words.

  • The goal is to prefer tasks that match the most likely words in the earliest sentence in the input.
  • Preference is given to the words when they are close together, towards the start of the sentence, and in the same order as the task label.
  • It is undesirable if there are several phrases before the task name or if there is a conjunction in the middle of the task label.
  • Preference is given to tasks in phrases in the present or future tense.

Ontology-based KG

Ontology-based Knowledge Graph turns static FAQ text into an intelligent, personalized conversational experience. It uses domain terms and relationships thus reducing the training needs. It also has the capability to enable the ontology weighted features whenever ML gets confused and automatic conversational dialog for resolving appropriate answers.

Capabilities of a Graph Engine

  • Ease of training using synonyms – Kore.ai’s Knowledge Graph has a provision to associate synonyms against a graph node. This helps capture the variation in a question.
  • Better coverage with alternate questions – Knowledge Graph has a provision to add alternate questions. This helps us to capture the various ways a user might ask the same question.
  • Improved accuracy – Ontology-driven question-answers reduce the possibility of false positives. 
  • Weighing Phrases using Traits – Kore.ai’s graph engine allows developers to build a concept of Traits for filtering out irrelevant suggestions.
  • Ability to mark term importance – Kore.ai’s graph engine has a provision to mark an ontology term as important.
  • Ability to group relevant nodes – As the graph grows in size, managing graph nodes can become a challenging task. Using the “organizer node” construct of the ontology engine, bot developers can group relevant nodes under a node.

FAQ Detection Steps

  • Step 1: Extract Nodes: The KG engine processes the user utterance to extract the term (ontology nodes) present in the graph. It also takes into consideration the synonyms, classes, and tags associated with the terms.
  • Step 2: Query Graph: The KG engine fetches all the paths that consist of the extracted nodes.
  • Step 3: Shortlist Paths: All the paths consisting of 50% or more matching terms with the user utterance are shortlisted for further processing.
    Note: Patch coverage computation doesn’t consider the root node.
  • Step 4: Filter with Traits: If classes are defined in the Knowledge Graph, paths shortlisted in the above step are further filtered based on the confidence score of a classification algorithm in user utterance. 
  • Step 5: Send to Ranker: The KG engine then sends the shortlisted paths to the Ontology Ranker Program.
  • Step 6: Score based on Cosine Similarity: The Ontology Ranker makes use of user-defined synonyms, lemma forms of word, n-grams, stop words, to compute the cosine similarity between the user utterance and the shortlisted questions. Paths are ranked in non-increasing order of cosine similarity score.
  • Step 7: Qualify Matches: The Ontology Ranker then qualifies the paths as follows:

    • Paths with score >= upper_threshold are qualified as an answer (definitive match).
    • Paths with lower_threshold < score < upper_threshold are marked as suggestion (probable match).
    • Paths with a score < lower_threshold are ignored.

Traits

Traits are entities that can be extracted from user input, before intent recognition. They can be used in multiple scenarios

  • They in Indirect entity Extraction ex: gender or age-specific words can be inferred from the text. A phrase like “Suit for your baby aged 1-5 years” implies it is a product for toddlers.
  • Traits can be used for intent recognition, using rules. Any rule match for intent will be considered a definitive match.
  • Traits can be identified based on keywords/phrases and their synonyms. For Example, Trait-Color: Blue – “Blue”, “Sapphire”, “Teal”; Trait-Color-Red – Red, Maroon, Crimson Trait-Status: NotWorking: “doesn’t work”, “switched off”;  Trait-Status:Working: “working”, “turned on”
  • Traits can also be inferred from a keyword or specific phrase in the sentence. There is no obvious association between certain words in the sentence and the value of the entity, but rather you need the sentence as a whole to determine the value. For example, Trait-Greeting-Emotion: Positive – “Good Morning”, “How are you”;  Trait-Greeting-Emotion: Negative – “I hate to say”, “I am not having trouble”

Ranking & Resolver

The Ranking & Resolver engine receives the outputs from the above engines and further processes them.

A quick recap of the various parameters the R&R engine works with:

  • The output of ML Engine: for a given utterance
    • Deterministic match: fuzzy score match of >= 95% match against user input.
    • Probable matches: Confidence scores for each intent
    • Top 5 utterances (from ML training dataset) of each intent whose confidence score is > threshold (default is 0.3)
    • Top 5 utterances are found by ML engine which are close to the user input
  • The output of KG Engine
    • Deterministic Match: Fuzzy score if Deterministic (fuzzy match of >= 95% match against user input).
    • Probable matches: Confidence scores of Questions that matched minimum threshold(>=50% match of path terms & >=60% word match)
    • Synonyms matched, Nodes matched, Path terms matched, Class/Traits matched
    • Original Question, Modified question(replaced with synonyms which matched)
    • Alternate questions of each matched question
  • The output of FM Engine
    • Deterministic Match: Intents that matched deterministically (Pattern match or input is exactly the same as the task name)
    • Probable matches: Partial label matches including synonyms.

The winner is decided by the Ranking & Resolver as follows:

  • Definitive match(s) found
    • If any engine has found an Intent Definitively,  that’s the winning Intent
    • If more than one engine found different intents but Deterministically, then consider them as ambiguous and present the found intents as choices to the user to choose the intent which user felt is right.
  • Possible matches found
    • If a deterministic Intent is found, ignore all probable matches.
    • If only FM or ML engine found an Intent but probable, that’s the winning intent.
    • If only the KG engine found a probable intent and its score is > higher threshold(80%) then that’s the winning intent
    • If only the KG engine found a probable Intent and its score is >60% but <80% then that’s the winning intent, but since the confidence is low, show it as a suggestion (user will see “Did you mean”)
    • If more than one probable intents were found, 
      • Score each of the 5 utterances given by the ML engine and find the highest scoring utterance against each probable Intent.
      • Score each of the alternate questions, modified questions given by the KG engine, and find the highest scoring question against each intent.
      • Rank the scores and choose the Top scoring intent as the winning intent.
      • If Topper and the immediate next intent are within the range of 2% then consider them as ambiguous.