GETTING STARTED
Kore.ai XO Platform
Virtual Assistants Overview
Natural Language Processing (NLP)
Concepts and Terminology
Quick Start Guide
Accessing the Platform
Navigating the Kore.ai XO Platform
Building a Virtual Assistant
Help & Learning Resources
Release Notes
Current Version
Recent Updates
Previous Versions
Deprecations
Request a Feature
CONCEPTS
Design
Storyboard
Overview
FAQs
Conversation Designer
Overview
Dialog Tasks
Mock Scenes
Dialog Tasks
Overview
Navigate Dialog Tasks
Build Dialog Tasks
Node Types
Overview
Intent Node
Dialog Node
Dynamic Intent Node
GenAI Node
GenAI Node (v2, BETA)
GenAI Prompt
Entity Node
Form Node
Confirmation Node
Message Nodes
Logic Node
Bot Action Node
Service Node
Webhook Node
Script Node
Process Node
Agent Transfer
Node Connections
Node Connections Setup
Sub-Intent Scoping
Entity Types
Entity Rules
User Prompts or Messages
Voice Call Properties
Knowledge AI
Introduction
Knowledge Graph
Introduction
Terminology
Build a Knowledge Graph
Manage FAQs
Knowledge Extraction
Import or Export Knowledge Graph
Prepare Data for Import
Importing Knowledge Graph
Exporting Knowledge Graph
Auto-Generate Knowledge Graph
Knowledge Graph Analysis
Answer from Documents
Alert Tasks
Small Talk
Digital Skills
Overview
Digital Forms
Digital Views
Introduction
Widgets
Panels
Session and Context Variables
Context Object
Intent Discovery
Train
NLP Optimization
ML Engine
Overview
Model Validation
FM Engine
KG Engine
Traits Engine
Ranking and Resolver
Training Validations
NLP Configurations
NLP Guidelines
LLM and Generative AI
Introduction
LLM Integration
Kore.ai XO GPT Module
Prompts & Requests Library
Co-Pilot Features
Dynamic Conversations Features
Guardrails
Intelligence
Introduction
Event Handlers
Contextual Memory
Contextual Intents
Interruption Management
Multi-intent Detection
Amending Entities
Default Conversations
Conversation Driven Dialog Builder
Sentiment Management
Tone Analysis
Default Standard Responses
Ignore Words & Field Memory
Test & Debug
Overview
Talk to Bot
Utterance Testing
Batch Testing
Conversation Testing
Conversation Testing Overview
Create a Test Suite
Test Editor
Test Case Assertion
Test Case Execution Summary
Glossary
Health and Monitoring
NLP Health
Flow Health
Integrations
Actions
Actions Overview
Asana
Configure
Templates
Azure OpenAI
Configure
Templates
BambooHR
Configure
Templates
Bitly
Configure
Templates
Confluence
Configure
Templates
DHL
Configure
Templates
Freshdesk
Configure
Templates
Freshservice
Configure
Templates
Google Maps
Configure
Templates
Here
Configure
Templates
HubSpot
Configure
Templates
JIRA
Configure
Templates
Microsoft Graph
Configure
Templates
Open AI
Configure
Templates
Salesforce
Configure
Templates
ServiceNow
Configure
Templates
Stripe
Configure
Templates
Shopify
Configure
Templates
Twilio
Configure
Templates
Zendesk
Configure
Templates
Agents
Agent Transfer Overview
Custom (BotKit)
Drift
Genesys
Intercom
NiceInContact
NiceInContact(User Hub)
Salesforce
ServiceNow
Configure Tokyo and Lower versions
Configure Utah and Higher versions
Unblu
External NLU Adapters
Overview
Dialogflow Engine
Test and Debug
Deploy
Channels
Publishing
Versioning
Analyze
Introduction
Dashboard Filters
Overview Dashboard
Conversations Dashboard
Users Dashboard
Performance Dashboard
Custom Dashboards
Introduction
Custom Meta Tags
Create Custom Dashboard
Create Custom Dashboard Filters
LLM and Generative AI Logs
NLP Insights
Task Execution Logs
Conversations History
Conversation Flows
Conversation Insights
Feedback Analytics
Usage Metrics
Containment Metrics
Universal Bots
Introduction
Universal Bot Definition
Universal Bot Creation
Training a Universal Bot
Universal Bot Customizations
Enabling Languages
Store
Manage Assistant
Team Collaboration
Plan & Usage
Overview
Usage Plans
Templates
Support Plans
Invoices
Authorization
Conversation Sessions
Multilingual Virtual Assistants
Get Started
Supported Components & Features
Manage Languages
Manage Translation Services
Multiingual Virtual Assistant Behavior
Feedback Survey
Masking PII Details
Variables
Collections
IVR Settings
General Settings
Assistant Management
Manage Namespace
Data
Overview
Guidelines
Data Table
Table Views
App Definitions
Data as Service
HOW TOs
Build a Travel Planning Assistant
Travel Assistant Overview
Create a Travel Virtual Assistant
Design Conversation Skills
Create an ‘Update Booking’ Task
Create a Change Flight Task
Build a Knowledge Graph
Schedule a Smart Alert
Design Digital Skills
Configure Digital Forms
Configure Digital Views
Train the Assistant
Use Traits
Use Patterns
Manage Context Switching
Deploy the Assistant
Use Bot Functions
Use Content Variables
Use Global Variables
Use Web SDK
Build a Banking Assistant
Design Conversation Skills
Create a Sample Banking Assistant
Create a Transfer Funds Task
Create a Update Balance Task
Create a Knowledge Graph
Set Up a Smart Alert
Design Digital Skills
Configure Digital Forms
Configure Digital Views
Add Data to Data Tables
Update Data in Data Tables
Add Data from Digital Forms
Train the Assistant
Composite Entities
Use Traits
Use Patterns for Intents & Entities
Manage Context Switching
Deploy the Assistant
Configure an Agent Transfer
Use Assistant Functions
Use Content Variables
Use Global Variables
Intent Scoping using Group Node
Analyze the Assistant
Create a Custom Dashboard
Use Custom Meta Tags in Filters
APIs & SDKs
API Reference
API Introduction
Rate Limits
API List
koreUtil Libraries
SDK Reference
SDK Introduction
Web SDK
How the Web SDK Works
SDK Security
SDK Registration
Web Socket Connect and RTM
Tutorials
Widget SDK Tutorial
Web SDK Tutorial
BotKit SDK
BotKit SDK Deployment Guide
Installing the BotKit SDK
Using the BotKit SDK
SDK Events
SDK Functions
Installing Botkit in AWS
Tutorials
BotKit - Blue Prism
BotKit - Flight Search Sample VA
BotKit - Agent Transfer

ADMINISTRATION
Intro to Bots Admin Console
Administration Dashboard
User Management
Managing Your Users
Managing Your Groups
Role Management
Manage Data Tables and Views
Bot Management
Enrollment
Inviting Users
Sending Bulk Invites to Enroll Users
Importing Users and User Data
Synchronizing Users from Active Directory
Security & Compliance
Using Single Sign-On
Two-Factor Authentication for Platform Access
Security Settings
Cloud Connector
Analytics for Bots Admin
Billing
  1. Docs
  2. Virtual Assistants
  3. Natural Language
  4. 봇 성능 향상 – NLP 최적화

봇 성능 향상 – NLP 최적화

지속적으로 사용자를 이해하고 상호작용하는 챗봇의 능력은 대화를 지원하는 자연어 처리(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% 범위 내에 있으면 모호한 것으로 간주합니다.

봇 성능 향상 – NLP 최적화

지속적으로 사용자를 이해하고 상호작용하는 챗봇의 능력은 대화를 지원하는 자연어 처리(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% 범위 내에 있으면 모호한 것으로 간주합니다.
메뉴