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 설정 및 지침

의도 명명 지침

작업(의도 식별자) 이름을 지정할 때는 아래 지침을 따르세요.

  • 동작 동사, 목적어, 수식어(목적어 앞이나 뒤에 위치)를 사용하세요. 일반적으로 의도의 이름은 2~4개의 단어로 구성됩니다.
  • 작업 목적을 전달하기 위해 5개 미만의 단어를 사용합니다.
  • 동작이 유사한 경우 서로 다른 작업이라도 같은 동사를 사용합니다(예: 사안을 제출하다/보고서를 받다 대신 사안을 제출하다/보고서를 제출하다).
  • 한 단어로 된 동작은 피하세요.
  • 한정사(the, my, that 등)를 피하세요.
  • 숫자는 피하되 그게 불가능할 경우에는 항상 숫자 형식으로 표현하세요.
  • 작업, 경고, 조치, 취소, 삭제, 수정, webhook과 같은 Kore.ai 플랫폼 용어를 사용하지 마세요.
  • 의도 이름에 엔티티가 될 만한 내용을 사용하지 마세요(예: 오늘 날씨 확인에서 오늘이라는 단어는 엔티티가 될 수 있는 단어임).
  • () & / \ $ [ ] + * 같은 특수 문자를 사용하지 마세요.
  • – , 같은 구두점을 사용하지 마세요. ! ? ‘ “.
  • 대명사를 사용하지 마세요(예: 저에게 모든 문제를 알려주세요(Show Me All Issues))
  • 봇 이름과 관련된 용어를 사용하지 마세요(예: Asana 작업 생성).
  • 한 단어를 동사와 명사 양쪽으로 사용하지 마세요(예: 사안 업데이트하기 /업데이트 받기).
  • 항목 목록 엔티티 유형인 경우 동의어를 정의하는 동안 다음 문자의 조합을 사용하지 마세요. (), %, °(온도 기호, 예를 들어 30°C).

주문형 작업(작업, 대화, 정보 작업)에는 항상 동작 동사, 목적어, 수식어(목적어 앞이나 뒤에 위치)가 포함되어야 합니다. 거의 모든 동작을 how + what 형식에 매핑하고 목표가 다음과 같은 문장을 완성해야 합니다.

  • 무언가를 함
  • 어떠한 상태를 불러옴
  • 상세 보고서를 보냄
  • 중요한 보고서 이메일 전송
  • 3일 동안의 일기 예보 확인

경고에는 항상 목적어와 수식어(목적어 앞이나 뒤에 위치)가 포함되어야 합니다. 경고에 동사를 함께 사용하지 마세요. 알림 이름에 알림이라는 단어를 사용하지 마세요. 알림은 what 형식으로 매핑되어야 하며 경고 다음과 같은 것에 대한 알림으로 문장을 완성해야 합니다.

  • 어떤 것
  • 상태 업데이트
  • 중요 상태 업데이트
  • 변경 사항

패턴

이름에 사용된 단어에 동의어를 사용하는 것은 좋지만 사용자는 때때로 속어, 은유 또는 기타 관용적 표현이 들어간 작업을 지칭해야 할 수 있습니다.

예를 들어, 사용자는 오늘의 강우 상황을 입력했는데 작업 이름은 현재 날씨 확인일 수 있습니다. 이런 경우, 작업 이름 안에 있는 단어가 사용되지는 않았지만, 입력된 내용은 같은 의미를 띄게 됩니다. 봇 NLP 인터프리터의 정확도와 인식을 최적화하기 위해, 패턴을 만들 수 있습니다.

NLP 인터프리터가 작업이나 필드에 동의어를 일치시키고 다른 작업이나 필드에 패턴을 일치시킬 때, 패턴 일치에 우선 순위를 적용하여 동의어 일치보다는 인식을 하는 데 사용하게 됩니다.

참고: 나열된 순서대로 패턴을 평가합니다. 따라서 패턴을 추가할 때 가장 제한적인 것부터 가장 덜 제한적인 것의 순서대로 추가하세요.
다음은 의도 패턴을 만들기 위한 몇 가지 일반적인 지침입니다.
  • 최소 3단어 이상을 사용하세요.
  • 표준형 단어를 사용하세요(즉, 동사 원형, 단수 명사).
  • 단어와 동의어 모두 소문자를 사용하세요.
  • 단어에 미국식 철자를 사용합니다(즉, normalise 대신 normalize).
  • 한정사와 대명사(the, a, my, that)를 사용하지 마세요.
  • 숫자 사용을 피하세요.
  • 작업 패턴을 정의할 때 엔티티 값을 사용하지 마세요.
  • 발음 생략(즉, what's)을 사용하지 마세요.
  • () & / \ $ [ ] + * 같은 특수 문자를 사용하지 마세요.
  • – , 같은 구두점을 사용하지 마세요. ! ? ‘ “.

패턴 사용에 대한 빠른 지침의 경우, 패턴 사용 방법?을 참조하세요.

패턴 연산자

  • AND: ( X Y ): 단어의 순서 관계. 기본 설정은 이렇습니다. 즉, 패턴을 주문 취소로 지정하면 (주문 취소)와 같습니다.
    예를 들어, (주문 취소)전화 주문을 취소해주세요와 일치하지만 보류 중인 iPhone X 주문이 있습니다. 취소할 수 있습니까와는 일치하지 않습니다. 봇 빌더 도구는 단어 사이에 와일드카드 수가 증가하는 패턴을 사용합니다(의도의 경우 최대 3개). 따라서 주문 취소 패턴은 다음 내용과 일치할 수 있습니다.
    • 주문 취소
    • 내 주문 취소
    • 마지막 주문 취소
    • 지난 주의 대량 주문 취소
  • OR: [X Y Z]: 이들 중 어떤 쪽이든 사용자 발화에서 서로 바꿔 사용할 수 있습니다. 예를 들어, ([주세요 만들어주세요] 저에게 [음식 음료 디저트])는 아래 발화 중 하나와 일치합니다.
    • 음식을 주세요
    • 음료 한 잔 만들어주세요
    • 음료 한 잔 주세요
    • 디저트 주세요
    • 즉석 음식 만들어주세요
  • NOT: !X: 의도 일치를 위해 사용자 발화에 나타나지 않아야 하는 단어들입니다. 예를 들어, (!예보)는 현재 날씨 확인이라는 의도 패턴으로 표시하는데 봇은 3일 동안의 일기예보 확인이라는 다른 의도를 지원합니다.
    • 사용자 발화: 캘리포니아 여행 계획 중 일기예보를 알려주세요는
      • 현재 날씨 확인과는 일치하지 않고
      • 3일 동안의 일기예보 확인과 일치합니다
        !단어시점 이후가 아님을 참고하세요. 따라서 (!일기예보)와 (일기 !예보 확인)은 다릅니다. 일기예보 확인 발화는 두 번째와는 일치하지만 첫 번째와는 일치하지 않습니다.
  • Optional: {X}: 예를 들어, {전화} 사용자 발화가 전화번호를 알려주세요 또는 번호를 알려주세요인 경우 플랫폼은 이를 같은 것으로 취급합니다.
  • 문구 실행: X_Y: 사이에 어떠한 단어도 없는 경우 사용자 발화에 있는 그대로 문구를 실행합니다. 예를 들어, transfer_funds 자금 이체(transfer funds) 또는 자금을 이체하고 싶습니다(I want to transfer funds)라는 발화와는 일치하지만 자금을 이체할 수 있나요(Can I transfer some funds)와는 일치하지 않습니다.
  • 개념: ~: 플랫폼에는 개발자가 패턴을 정의하는 데 사용할 수 있는 많은 내장된 개념이 있습니다. 예를 들어, (저는 [좋아합니다 사랑합니다] ~세계_국가)는 다음과 일치합니다.
    • 저는 인도를 좋아합니다
    • 저는 호주 여행을 사랑합니다
    • 아프리카 국가를 방문하고 싶습니다
  • Unordered: <<, >>: 임의의 순서로 단어를 찾는 데 사용합니다. 예를 들어, <<주문 취소>>는 <i>전화 주문을 취소해주세요와 일치하고 보류 중인 iPhone X 주문이 있습니다. 취소할 수 있습니까와도 일치합니다
  • Start/End of Statement: <, >: 예를 들어, (자금 이체(transfer fund) )는 자금 이체(transfer funds)를 하고 싶습니다와는 일치하지만 오늘 자금을 이체합니다(transfer funds today)와는 일치하지 않습니다.
  • Quote: ‘ –: 단어를 인용하거나 표준형이 아닌 단어를 사용하는 경우, 시스템은 패턴에서 사용한 것으로 자체적으로 제한합니다. 예를 들어, (지금을 이체하는 것을 좋아합니다(like to transfer funds)내 계좌에서 자금을 이체하고 싶습니다(I would like to transfer funds from my account와는 일치하지만 자금 이체 과정이 정말 마음에 들었습니다(I really liked transfer funds process)와는 일치하지 않습니다.

엔티티 패턴

위와 같이 엔티티를 탐지하기 위해 개발자는 엔티티 패턴 및 개체명 인식 학습 조합을 사용할 수 있습니다. 엔티티 패턴은 Kore에 엔터티의 유효한 값을 찾을 위치를 안내합니다. 엔티티 패턴이 문장의 여러 위치에서 발견될 수 있으며 Kore는 유효한 값을 가진 첫 번째 인스턴스에서 값을 추출합니다. 위의 작업 패턴 지침 외에도, 엔티티 패턴에 대한 아래 지침 내용을 따르세요.

  • 엔티티의 예상 위치를 나타내는 위치 와일드카드 *를 포함합니다(예: (에서 * 까지), (에서 * >)). 이것 없이는 패턴이 유효하지 않습니다.
  • 엔티티 위치의 앞뒤 패턴에 있어야 하는 단어를 사용합니다. 위치 와일드카드 뒤에 오는 단어는 유효한 엔티티 값의 검색 범위를 정하는 데 도움이 됩니다.
  • 문장의 시작과 끝 기호(< 및 >)를 사용하여 위치 와일드카드를 구분하지만 봇 빌더 도구가 엔티티 값을 추출하기 위해 문장 경계를 넘지 않기 때문에 꼭 필요한 것은 아닙니다(설명은 제외).
  • 필드 패턴에서 다른 위치 와일드카드를 사용하지 마세요. 모든 필드 패턴을 동일한 방식으로 처리하며 하나를 제외한 다른 모든 위치 와일드카드는 무시합니다.
  • 패턴 엔티티 패턴에서 필드 이름이나 동의어를 사용하지 마세요. 지정된 단어 사이에 최대 두 개의 와일드카드 단어만 사용하도록 염두에 두세요.

다음은 자금 이체 의도에서 계좌 번호의 fromto를 인식하는 엔티티 패턴의 몇 가지 예입니다.
위에서 정의한 패턴 연산자는 엔티티 패턴에도 적용될 수 있습니다.

  • 패턴: word1 *n – word1 발생 후 최대 n개 단어
    엔티티 ToAccount의 패턴 – to *1
    ToAccount는 transfer funds to ABC123라는 사용자 발화에서 캡처되지만 transfer funds for ABC123에서는 캡처되지 않습니다.
  • 패턴: word1 * word2 또는 word1 word2 *n -사용자 발화의 여러 엔터티.
    엔티티 ToAccount의 패턴 – to * fromfrom to *1.
    엔티티 FromAccount의 패턴 – from * toto from *1.
    ToAccount & FromAccount는 transfer funds from XYZ321 to ABC123transfer funds to ABC123 from XYZ321라는 사용자 발화에서는 캡처되지만 transfer funds for ABC123 using XYZ321에서는 캡처되지 않습니다.
    참고 사항: 엔티티에 여러 패턴을 입력하면 둘 중 하나가 일치합니다.
  • 패턴: [ word1 word2 ] *n – […] 내에 정의된 한 단어 또는 문구와 일치합니다.
    엔티티 ToAccount의 패턴 – to *1.
    엔티티 FromAccount의 패턴 – [ using from ] *1.
    ToAccount & FromAccount는 transfer funds from XYZ321 to ABC123transfer funds to ABC123 using XYZ321라는 사용자 발화에서 캡처되지만 transfer funds for ABC123 using XYZ321에서는 캡처되지 않습니다.
  • 패턴: ~concept *n – concept를 사용하여 만든 패턴입니다.
    엔티티 ToAccount의 패턴 – to *1.
    엔티티 FromAccount의 패턴 – ~from*1 여기서 from은 (using) (from)과 같은 concept입니다
    ToAccount & FromAccount는 transfer funds from XYZ321 to ABC123transfer funds to ABC123 using XYZ321라는 사용자 발화에서 캡처되지만 transfer funds for ABC123 using XYZ321에서는 캡처되지 않습니다.

패턴 추가 방법에 대한 자세한 내용은, 패턴 관리하기를 참조하세요.

네거티브 패턴

네거티브 패턴을 사용하여 기초 의미 또는 기계 학습 모델을 통해 탐지된 의도를 제거합니다.

예를 들어, 사용자가 문제가 발생했을 때 항공편을 예약하려고 했습니다(I was trying to Book a Flight when I faced an issue고 말합니다. 기계는 의도를 항공편 예약(Book a Flight)으로 식별하지만 이는 사용자가 원하는 일이 아닙니다. 이럴 경우, 하려고(was trying to) *를 네거티브 패턴으로 정의하고 일치하는 의도가 무시되도록 합니다.

동의어

의도/엔티티를 식별하는 단어가 서로 바뀌어서 사용되는 경우 동의어를 사용해야 합니다. 의도와 엔티티 둘 다에 동의어를 정의합니다.

각각 의도에는 이름이 있습니다. 예를 들어, 의도 이름이 안내 검색(Guided Search)인 경우입니다. 사용자가 이 작업을 시작하기 위해 입력할 수 있는 동의어가 많이 있습니다. 가령 제품 탐색이라면 화장품을 보여주세요(Show me makeup), 또는 제품을 보여주세요(show me products)가 있습니다.

개발자는 작업 이름을 두세 단어로 제한해야 합니다. 그런 다음 각 단어의 동의어를 고려합니다.

  • 탐색 – 찾기(Find), 검색(Search)
  • 제품 – 화장품(Makeup), 상품(Goods), 키트(Kit)

다음과 같은 철자 오류도 염두에 두어야 합니다.

  • makeup – make up

동의어는 원칙적으로 작업 이름의 일부로 정의한 단어에 대해서만 정의해야 합니다. 봇 수준에서 추가한 동의어는 모든 작업에 적용할 수 있습니다. 즉, 개발자가 작업 A의 단어에 동의어를 추가하면, 해당 동의어는 작업 이름에 같은 단어가 있는 다른 작업에도 사용됩니다. 예를 들어, 안내 검색에서 탐색이라는 단어에 정의한 동의어는 키워드 검색에도 사용됩니다. 동의어는 의도를 요청하는 사용자에게 예상되는 변형된 형태의 수를 늘리는 데 사용할 수 있고 사용해야만 합니다. 모든 것과 일치할 만큼 일반적이지 않으면서 기존 의도 이름을 대체 문구로 보완합니다. 동의어는 단방향이므로 foo=bar가 bar=foo를 의미하지는 않습니다.

동의어에 대한 일반 지침:

  • 표준형 단어를 사용하세요(즉, 동사 원형, 단수 명사).
  • 단어와 동의어 모두 소문자를 사용하세요.
  • 동의어 문구를 5단어 미만으로 유지합니다.
  • 단어에 미국식 철자를 사용합니다(즉, normalise 대신 normalize).
  • 의미보다 의도를 사용하세요(즉, 조치의 컨텍스트가 찾기(find) 및 표시하기(display)를 의미하는 경우 getshow의 좋은 동의어가 됩니다.
  • 한정사나 대명사(the, a, my, that 등)에 동의어를 추가하지 마세요.
  • 두 개의 충돌하는 작업과 일치할 수 있는 동의어를 사용하지 마세요.
  • () & / \ $ [ ] + * 같은 특수 문자를 사용하지 마세요.
  • – , 같은 구두점을 사용하지 마세요. ! ? ‘ “.
  • 여러 개의 단어에 동의어를 지정하지 마세요(예를 들어, 이것은 틀렸습니다(this is wrong): 틀린(wrong), 부적절한(bad)).
  • 숫자에 동의어를 추가하지 마세요.
  • 문구 형식을 사용하지 마세요(즉, 찾아보다(lookup)를 동의어로 사용하지 마세요. 그냥 보다(look)를 사용하세요).
  • 2글자 이하로 줄이지 마세요.

동의어 작업

엔티티(값 목록 및 조회 유형에만 해당) 식별의 사용자 입력 및 동의어 간 일치는 다음 방식 중 하나로 일어날 수 있습니다.

  • 부분 일치 – 입력의 한 개 이상의 단어가 주어진 동의어의 한 개 이상의 단어와 일치해야 하는 기본 작업입니다. 예를 들어, 사용자 발화 직불 카드는 동의어 신용 카드와 일치합니다.
  • 정확히 일치 – 여기서 입력은 주어진 동의어의 모든 단어를 다 포함해야 합니다. 예를 들어, 추가 신용 카드신용 카드와 일치합니다. 그러나, 직불 카드신용 카드와 일치하지 않습니다. 정확한 일치를 트리거하려면, 동의어를 큰따옴표로 묶어야 합니다.
  • 전체 일치 – 전체 입력이 주어진 동의어 단어와 정확히 일치해야 합니다. 예를 들어, a credit card는 <credit card>와 일치해야 하지만 my credit card는 <credit card>와 일치하지 않아야 합니다. 마찬가지로 a credit card는 <my credit card>와 일치하지 않아야 합니다. 정확한 일치를 트리거하려면, 동의어를 꺾쇠 괄호로 묶어야 합니다.
  • 표준형 일치 – 사용자 입력이 동의어 또는 표준형과 일치하는 기본 작업입니다. 예를 들어, check가 checking의 표준형이기 때문에 내 잔액 확인(check my balance)이 동의어 계좌(checking account)와 일치합니다. 이 작업을 중단하려면 동의어에 확인(checking)을 위해 작은 따옴표를 접두사로 붙입니다. (v7.1 이후)
참고: 엔티티뿐만 아니라 의도를 식별하기 위해 동의어를 추가할 수 있습니다. 의도가 식별된 후에만 엔티티 식별이 트리거됩니다.
동의어 추가 방법에 대한 자세한 내용은, 동의어 관리하기를 참조하세요.

개념

개념은 한 개의 단어를 식별 그룹으로 간주하려는 관련된 용어 및 동의어 모음입니다.

개념 명명 규칙:

  • ~를 접두사로 두어야 합니다
  • 개념 이름으로 허용되는 문자는 다음과 같습니다.
    • a~z 및 A~Z
    • 1에서 9까지
    • _ (밑줄)
  • 하나 이상의 알파벳이 ~ 뒤에 와야 합니다.
  • _(밑줄)로 시작하거나 끝나서는 안 됩니다.
  • 이들은 대소문자를 구분하지 않습니다. 즉 ~myConcept는 ~myconcept와 동일합니다.

허용되는 개념 이름의 예:

  • ~my_concept
  • ~Sample
  • ~test123
  • ~my_new_concept

유효하지 않은 개념 이름의 예:

  • ~_concept
  • ~concept_
  • ~a-concept
  • ~123test

이모지로 맞춤형 개념을 정의할 수도 있습니다.

자세한 내용은 맞춤형 개념을 참조하세요.

표준 응답

표준 응답은 플랫폼이 대화 중 특정 상황에 응답하는 데 사용하는 템플릿 메시지입니다. 이러한 상황의 예로는 사용자 입력이 모호한 경우의 해결, 승인 요청, 확인 받기, 중단 및 재개에 대한 알림 등이 있습니다. 표준 응답은 다음과 같이 분류됩니다.

  • 진술
  • 인사말
  • 질의
  • 오류 및 경고
  • 질문 및 선택

플랫폼에는 미리 준비된 답변이 제공되지만, 개발자는 이러한 메시지와 더불어 추가로 변형된 형태를 사용자 정의하는 것이 좋습니다.

대화 단계 전반에 걸쳐 최종 사용자가 원활한 경험을 할 수 있도록 하기 위해, 개발자는 각 표준 응답을 검토하여 봇의 전체 페르소나/테마에 맞는지 확인해야 할 수 있습니다.

표준 응답은 일반 텍스트 메시지이거나 JavaScript로 생성되어 지원 채널의 동적 메시지 및 템플릿을 구성할 수 있습니다. 해당 되는 경우, 표준 응답은 개발자가 메시지를 사용자 정의하는 데 도움이 되는 컨텍스트 태그를 지원합니다.

예를 들어, 사용자가 봇이 수행할 수 있는 작업을 요청하면 봇은 다음과 같은 메시지로 응답합니다. 다음은 제가 수행할 수 있는 작업입니다(Here are the tasks I can perform for you). <list-of-tasks>. 이 예시에서, 개발자는 이 메시지를 수정하고 적절한 곳에 <list-of-tasks> 태그를 재사용하도록 선택할 수 있습니다. 이와 같은 태그는 런타임 값으로 대화하는 동안 실제 텍스트 컨텍스트로 대체됩니다.

지식 그래프

실행 가능한 작업의 경우, 의도는 작업 이름(기초 의미 모델에서 사용됨) 또는 작업에 정의된 기계 학습 발화를 기반으로 식별됩니다. 이 접근 방식은 언어 의미와 기계 학습 모델에서 파생된 통계적 확률로 작업을 다른 작업과 구별할 수 있는 경우에 적합합니다.

FAQ의 경우, 이 접근 방식은 의미적 변형 측면에 보면 FAQ는 대부분 서로 유사하기 때문에 잘 작동하지 않을 수 있으며, 보다 적절한 답변을 찾기 위해 도메인에 대한 추가 인텔리전스가 필요합니다.

Kore.ai의 지식 그래프 기반 모델은 사용자의 의도(이 경우 가장 적절한 질문)를 식별하는 데 있어 주요 도메인 용어와 그 관계의 중요성을 나타내는 데 필요한 추가 인텔리전스를 제공합니다.

다음 두 가지 예를 통해 지식 그래프를 작성하는 데 필요한 다양한 설정을 설명합니다.

예 A 예 B

다음 질문을 학습시킨 봇에 대해 생각해봅시다.

  • A1: 대출 신청은 어떻게 하나요?(How to apply for a loan?)
  • A2: 보험 신청 절차가 어떻게 되나요?(What is the process to apply for insurance?)

다음 질문을 학습시킨 봇에 대해 생각해봅시다.

  • B1: 공동 계좌를 개설할 수 있나요?(Can I open a joint account?)
  • B2: 공동 계좌 소유자는 어떻게 추가하나요?(How do I add a joint account holder?)
  • B3: 수표책 신청은 어떻게 하나요?(How can I apply for a checkbook?)
  • B4: 직불 카드는 어떻게 신청하나요?(How do I apply for a debit card?)

다음은 순수한 기계 학습 및 시멘틱 규칙을 기반으로 하는 일반적인 모델의 의도 인식과 관련된 몇 가지 문제입니다.

  1. 기계 학습 기반 모델에서 얻은 결과는 사용자 발화가 관련 없는 질문과 일치하는 용어가 더 많을 경우, 긍정 오류의 결과를 초래하는 경향이 있습니다.
  2. 봇이 도메인의 용어 및 관계를 기반으로 이해해야 하는 경우 모델이 작동하지 않습니다. 예를 들어, 사용자 발화 대출 신청은 어떻게 하나요?는 A1 대신 우선 일치 항목으로 A2를 잘못 가져옵니다. A2가 A1보다 사용자 발화와 일치하는 용어가 더 많기 때문입니다.
  3. 이 모델은 질문의 일부가 다른 질문과 연결되어 규정되어 있는 경우 올바른 응답을 가져오지 못합니다. 예를 들어, A: 사용자 발화 대출을 신청했는데 보험 가입이 될까요?는 A1과 A2 사이에서 애매모호한 결과를 가져옵니다. 예 B: 사용자 발화 공동 계좌를 개설했는데 직불 카드 발급이 가능한가요?는 B4 대신 B1으로 잘못 일치시킬 수 있습니다.

Kore 지식 그래프 모델에서, 루트 레벨에 모든 질문을 두는 것은 용어 빈도 및 시멘틱 규칙 기반 모델을 사용하는 것과 같습니다.

핵심 도메인 용어와 그 관계

핵심 용어와 그 관계를 식별하는 것은 온톨로지 구축의 중요한 한 측면입니다. 예 A를 통해 이와 같은 사실을 이해해봅시다. A1과 A2는 모두 신청 절차에 관한 것입니다. 하나는 대출 신청에 대해 이야기하고 다른 하나는 보험 신청에 대해 이야기합니다. 따라서 온톨로지를 생성하는 동안 두 개의 자식 노드 대출보험으로 부모 노드 신청을 만들 수 있습니다. 그러면 A1과 A2는 각각 대출보험 노드의 자식 노드로 지정할 수 있습니다.

지식 그래프의 표현
예 A


마찬가지로 예 B의 경우 그래프는 다음과 같습니다

그래프 엔진의 기능

  • 동의어를 사용한 학습의 용이성: Kore.ai 지식 그래프는 동의어를 그래프 노드에 연결할 수 있습니다. 이렇게 하면 질문의 변화를 캡처하는 데 도움이 됩니다. 예를 들어, 위의 예 A에서, 사용자는 getapply의 동의어로 입력할 수 있습니다.
  • 대체 질문의 향상된 범위: 지식 그래프에 대체 질문을 추가할 수 있습니다. 이는 사용자가 동일한 질문을 하는 다양한 방법을 파악하는 데 도움이 됩니다. 위의 예 B에서 공동 계좌 소유자는 어떻게 추가하나요?라는 질문에 대해 아내를 공동 계좌 소유자로 추가할 수 있나요?라는 대체 질문을 추가할 수 있습니다.
  • 향상된 정확도: 온톨로지 기반 질문 답변은 긍정 오류 가능성을 줄여줍니다. 예를 들어, SSN 신청 절차가 어떻게 되나요?라는 사용자 발화의 경우 용어 빈도 기반 모델은 A2를 일치 항목으로 잘못 제시합니다. 온톨로지 기반 모델에는 이러한 긍정 오류를 방지할 수 있는 기능이 있습니다.
  • 클래스를 이용한 문구 저울질: Kore.ai의 그래프 엔진은 관련이 없는 제안을 필터링하기 위해 클래스 개념을 도입했습니다. 자세한 설명은 아래 클래스 섹션을 참조하세요
  • 용어 중요성을 표시하는 기능: Kore.ai 그래프 엔진에는 중요한 온톨로지 용어를 표시하는 기능이 있습니다. 예를 들어, 대출 신청은 어떻게 하나요라는 질문에서 대출은 중요한 용어입니다. 대출 키워드가 사용자 발화에 없으면 A1을 가져오는 것은 거의 의미가 없습니다. 반면 용어 빈도 기반 모델에서 사용자 발화 대출 신청은 어떻게 하나요는 A1을 잘못 가져옵니다.
  • 관련 노드를 그룹화하는 기능: 그래프의 크기가 커지면, 그래프 노드를 관리하는 것이 어려운 작업이 될 수 있습니다. 온톨로지 엔진의 구성자 노드 구조를 사용하여 봇 개발자는 노드에서 관련 노드를 그룹화할 수 있습니다.

지식 그래프 특성

참고: 특성은 v6.4 이하의 클래스를 대체하는 것입니다.

특성을 과도하게 사용하면 부정 오류가 발생할 수 있으므로 잘 판단하여 사용해야 합니다. 클래스를 사용할 때는 다음 사항을 확인하세요.

  • 클래스의 충분한 범위.
  • 클래스를 부적절하게 일반화해서는 안 됩니다.
  • 모든 FAQ를 상호 배타적인 클래스에 태그합니다.

다음은 클래스 작동 방식의 예입니다. 요청이라는 클래스를 만들고 여기에 요청 관련 문구를 추가한다고 가정해봅시다. 사용자가 WebEx를 받고 싶습니다고 말할 때 받고 싶습니다를 요청 클래스에 학습시킨 경우, 이 FAQ는 요청이라는 단어에 태그된 지식 그래프 경로에서만 다룹니다. 다음은 긍정적인 시나리오입니다. 그러나 사용자가 WebEx를 받는 것을 도와줄 수 있습니까?라고 말하는데 요청 클래스에 학습시킨 유사한 발언이 없는 경우 None 클래스로 태그되며 이 FAQ는 요청이라는 단어가 없는 경로에서만 사용됩니다. 따라서 작동하지 않게 됩니다.

또 다른 가능성은 사용자가 WebEx 해결을 위한 도움을 요청하고 싶습니다라고 말했는데 요청하고 싶습니다가 포함된 일부 발화로 요청 클래스를 학습시켰으면 모든 클래스에 걸친 학습을 기반으로 엔진은 이 기능(요청하고 싶습니다가 포함된 문구)을 일반화하고 요청 클래스에 태그할 수 있습니다. 이 경우, 요청 클래스가 WebEx의 도움 경로에 없으면 도움말 > WebEx에 대한 입력을 식별하지 못합니다.

이 클래스가 유용한 경우는 상호 배타적인 FAQ 집합이 있는 경우입니다. 예를 들어, 제품의 문제점에 대한 FAQ 세트와 제품 구매 과정에 대한 FAQ 세트가 있는 경우입니다.
제품 구매 절차에 대한 FAQ:

  1. Microsoft Office를 온라인으로 구입하려면 어떻게 해야 하나요?
  2. 바이러스 백신 소프트웨어를 구매하기 위한 절차가 어떻게 되나요?

제품 문제에 대한 FAQ:

  1. 소프트웨어 설치에 문제가 있습니다
  2. 바이러스 백신 문제를 해결하는 방법

사용자가 바이러스 백신이 작동하지 않을 때 해결하는 절차가 어떻게 되나요?라고 말하면 엔진은 이 입력이 A2 및 B2 둘 다와 유사하다는 것을 발견하고 둘 다 제시하도록 할 수 있습니다. 문제구매와 상호 배타적이며, 이 경우 구매 관련 FAQ를 제시하는 것이 전혀 의미가 없습니다. 그 반대(구매 관련 질문에 문제 FAQ를 일치)의 상황이 훨씬 더 큰 문제(problem)가 될 수 있습니다. 이 문제를 해결하기 위해, 문제 유형과 구매 유형인 클래스 두 개를 만듭니다. 입력한 내용은 구매 또는 문제로 분류되며 적절한 답변을 찾는 데 관련된 질문만 사용됩니다.

이전
기초 의미

 

 

NLP 설정 및 지침

의도 명명 지침

작업(의도 식별자) 이름을 지정할 때는 아래 지침을 따르세요.

  • 동작 동사, 목적어, 수식어(목적어 앞이나 뒤에 위치)를 사용하세요. 일반적으로 의도의 이름은 2~4개의 단어로 구성됩니다.
  • 작업 목적을 전달하기 위해 5개 미만의 단어를 사용합니다.
  • 동작이 유사한 경우 서로 다른 작업이라도 같은 동사를 사용합니다(예: 사안을 제출하다/보고서를 받다 대신 사안을 제출하다/보고서를 제출하다).
  • 한 단어로 된 동작은 피하세요.
  • 한정사(the, my, that 등)를 피하세요.
  • 숫자는 피하되 그게 불가능할 경우에는 항상 숫자 형식으로 표현하세요.
  • 작업, 경고, 조치, 취소, 삭제, 수정, webhook과 같은 Kore.ai 플랫폼 용어를 사용하지 마세요.
  • 의도 이름에 엔티티가 될 만한 내용을 사용하지 마세요(예: 오늘 날씨 확인에서 오늘이라는 단어는 엔티티가 될 수 있는 단어임).
  • () & / \ $ [ ] + * 같은 특수 문자를 사용하지 마세요.
  • – , 같은 구두점을 사용하지 마세요. ! ? ‘ “.
  • 대명사를 사용하지 마세요(예: 저에게 모든 문제를 알려주세요(Show Me All Issues))
  • 봇 이름과 관련된 용어를 사용하지 마세요(예: Asana 작업 생성).
  • 한 단어를 동사와 명사 양쪽으로 사용하지 마세요(예: 사안 업데이트하기 /업데이트 받기).
  • 항목 목록 엔티티 유형인 경우 동의어를 정의하는 동안 다음 문자의 조합을 사용하지 마세요. (), %, °(온도 기호, 예를 들어 30°C).

주문형 작업(작업, 대화, 정보 작업)에는 항상 동작 동사, 목적어, 수식어(목적어 앞이나 뒤에 위치)가 포함되어야 합니다. 거의 모든 동작을 how + what 형식에 매핑하고 목표가 다음과 같은 문장을 완성해야 합니다.

  • 무언가를 함
  • 어떠한 상태를 불러옴
  • 상세 보고서를 보냄
  • 중요한 보고서 이메일 전송
  • 3일 동안의 일기 예보 확인

경고에는 항상 목적어와 수식어(목적어 앞이나 뒤에 위치)가 포함되어야 합니다. 경고에 동사를 함께 사용하지 마세요. 알림 이름에 알림이라는 단어를 사용하지 마세요. 알림은 what 형식으로 매핑되어야 하며 경고 다음과 같은 것에 대한 알림으로 문장을 완성해야 합니다.

  • 어떤 것
  • 상태 업데이트
  • 중요 상태 업데이트
  • 변경 사항

패턴

이름에 사용된 단어에 동의어를 사용하는 것은 좋지만 사용자는 때때로 속어, 은유 또는 기타 관용적 표현이 들어간 작업을 지칭해야 할 수 있습니다.

예를 들어, 사용자는 오늘의 강우 상황을 입력했는데 작업 이름은 현재 날씨 확인일 수 있습니다. 이런 경우, 작업 이름 안에 있는 단어가 사용되지는 않았지만, 입력된 내용은 같은 의미를 띄게 됩니다. 봇 NLP 인터프리터의 정확도와 인식을 최적화하기 위해, 패턴을 만들 수 있습니다.

NLP 인터프리터가 작업이나 필드에 동의어를 일치시키고 다른 작업이나 필드에 패턴을 일치시킬 때, 패턴 일치에 우선 순위를 적용하여 동의어 일치보다는 인식을 하는 데 사용하게 됩니다.

참고: 나열된 순서대로 패턴을 평가합니다. 따라서 패턴을 추가할 때 가장 제한적인 것부터 가장 덜 제한적인 것의 순서대로 추가하세요.
다음은 의도 패턴을 만들기 위한 몇 가지 일반적인 지침입니다.
  • 최소 3단어 이상을 사용하세요.
  • 표준형 단어를 사용하세요(즉, 동사 원형, 단수 명사).
  • 단어와 동의어 모두 소문자를 사용하세요.
  • 단어에 미국식 철자를 사용합니다(즉, normalise 대신 normalize).
  • 한정사와 대명사(the, a, my, that)를 사용하지 마세요.
  • 숫자 사용을 피하세요.
  • 작업 패턴을 정의할 때 엔티티 값을 사용하지 마세요.
  • 발음 생략(즉, what's)을 사용하지 마세요.
  • () & / \ $ [ ] + * 같은 특수 문자를 사용하지 마세요.
  • – , 같은 구두점을 사용하지 마세요. ! ? ‘ “.

패턴 사용에 대한 빠른 지침의 경우, 패턴 사용 방법?을 참조하세요.

패턴 연산자

  • AND: ( X Y ): 단어의 순서 관계. 기본 설정은 이렇습니다. 즉, 패턴을 주문 취소로 지정하면 (주문 취소)와 같습니다.
    예를 들어, (주문 취소)전화 주문을 취소해주세요와 일치하지만 보류 중인 iPhone X 주문이 있습니다. 취소할 수 있습니까와는 일치하지 않습니다. 봇 빌더 도구는 단어 사이에 와일드카드 수가 증가하는 패턴을 사용합니다(의도의 경우 최대 3개). 따라서 주문 취소 패턴은 다음 내용과 일치할 수 있습니다.
    • 주문 취소
    • 내 주문 취소
    • 마지막 주문 취소
    • 지난 주의 대량 주문 취소
  • OR: [X Y Z]: 이들 중 어떤 쪽이든 사용자 발화에서 서로 바꿔 사용할 수 있습니다. 예를 들어, ([주세요 만들어주세요] 저에게 [음식 음료 디저트])는 아래 발화 중 하나와 일치합니다.
    • 음식을 주세요
    • 음료 한 잔 만들어주세요
    • 음료 한 잔 주세요
    • 디저트 주세요
    • 즉석 음식 만들어주세요
  • NOT: !X: 의도 일치를 위해 사용자 발화에 나타나지 않아야 하는 단어들입니다. 예를 들어, (!예보)는 현재 날씨 확인이라는 의도 패턴으로 표시하는데 봇은 3일 동안의 일기예보 확인이라는 다른 의도를 지원합니다.
    • 사용자 발화: 캘리포니아 여행 계획 중 일기예보를 알려주세요는
      • 현재 날씨 확인과는 일치하지 않고
      • 3일 동안의 일기예보 확인과 일치합니다
        !단어시점 이후가 아님을 참고하세요. 따라서 (!일기예보)와 (일기 !예보 확인)은 다릅니다. 일기예보 확인 발화는 두 번째와는 일치하지만 첫 번째와는 일치하지 않습니다.
  • Optional: {X}: 예를 들어, {전화} 사용자 발화가 전화번호를 알려주세요 또는 번호를 알려주세요인 경우 플랫폼은 이를 같은 것으로 취급합니다.
  • 문구 실행: X_Y: 사이에 어떠한 단어도 없는 경우 사용자 발화에 있는 그대로 문구를 실행합니다. 예를 들어, transfer_funds 자금 이체(transfer funds) 또는 자금을 이체하고 싶습니다(I want to transfer funds)라는 발화와는 일치하지만 자금을 이체할 수 있나요(Can I transfer some funds)와는 일치하지 않습니다.
  • 개념: ~: 플랫폼에는 개발자가 패턴을 정의하는 데 사용할 수 있는 많은 내장된 개념이 있습니다. 예를 들어, (저는 [좋아합니다 사랑합니다] ~세계_국가)는 다음과 일치합니다.
    • 저는 인도를 좋아합니다
    • 저는 호주 여행을 사랑합니다
    • 아프리카 국가를 방문하고 싶습니다
  • Unordered: <<, >>: 임의의 순서로 단어를 찾는 데 사용합니다. 예를 들어, <<주문 취소>>는 <i>전화 주문을 취소해주세요와 일치하고 보류 중인 iPhone X 주문이 있습니다. 취소할 수 있습니까와도 일치합니다
  • Start/End of Statement: <, >: 예를 들어, (자금 이체(transfer fund) )는 자금 이체(transfer funds)를 하고 싶습니다와는 일치하지만 오늘 자금을 이체합니다(transfer funds today)와는 일치하지 않습니다.
  • Quote: ‘ –: 단어를 인용하거나 표준형이 아닌 단어를 사용하는 경우, 시스템은 패턴에서 사용한 것으로 자체적으로 제한합니다. 예를 들어, (지금을 이체하는 것을 좋아합니다(like to transfer funds)내 계좌에서 자금을 이체하고 싶습니다(I would like to transfer funds from my account와는 일치하지만 자금 이체 과정이 정말 마음에 들었습니다(I really liked transfer funds process)와는 일치하지 않습니다.

엔티티 패턴

위와 같이 엔티티를 탐지하기 위해 개발자는 엔티티 패턴 및 개체명 인식 학습 조합을 사용할 수 있습니다. 엔티티 패턴은 Kore에 엔터티의 유효한 값을 찾을 위치를 안내합니다. 엔티티 패턴이 문장의 여러 위치에서 발견될 수 있으며 Kore는 유효한 값을 가진 첫 번째 인스턴스에서 값을 추출합니다. 위의 작업 패턴 지침 외에도, 엔티티 패턴에 대한 아래 지침 내용을 따르세요.

  • 엔티티의 예상 위치를 나타내는 위치 와일드카드 *를 포함합니다(예: (에서 * 까지), (에서 * >)). 이것 없이는 패턴이 유효하지 않습니다.
  • 엔티티 위치의 앞뒤 패턴에 있어야 하는 단어를 사용합니다. 위치 와일드카드 뒤에 오는 단어는 유효한 엔티티 값의 검색 범위를 정하는 데 도움이 됩니다.
  • 문장의 시작과 끝 기호(< 및 >)를 사용하여 위치 와일드카드를 구분하지만 봇 빌더 도구가 엔티티 값을 추출하기 위해 문장 경계를 넘지 않기 때문에 꼭 필요한 것은 아닙니다(설명은 제외).
  • 필드 패턴에서 다른 위치 와일드카드를 사용하지 마세요. 모든 필드 패턴을 동일한 방식으로 처리하며 하나를 제외한 다른 모든 위치 와일드카드는 무시합니다.
  • 패턴 엔티티 패턴에서 필드 이름이나 동의어를 사용하지 마세요. 지정된 단어 사이에 최대 두 개의 와일드카드 단어만 사용하도록 염두에 두세요.

다음은 자금 이체 의도에서 계좌 번호의 fromto를 인식하는 엔티티 패턴의 몇 가지 예입니다.
위에서 정의한 패턴 연산자는 엔티티 패턴에도 적용될 수 있습니다.

  • 패턴: word1 *n – word1 발생 후 최대 n개 단어
    엔티티 ToAccount의 패턴 – to *1
    ToAccount는 transfer funds to ABC123라는 사용자 발화에서 캡처되지만 transfer funds for ABC123에서는 캡처되지 않습니다.
  • 패턴: word1 * word2 또는 word1 word2 *n -사용자 발화의 여러 엔터티.
    엔티티 ToAccount의 패턴 – to * fromfrom to *1.
    엔티티 FromAccount의 패턴 – from * toto from *1.
    ToAccount & FromAccount는 transfer funds from XYZ321 to ABC123transfer funds to ABC123 from XYZ321라는 사용자 발화에서는 캡처되지만 transfer funds for ABC123 using XYZ321에서는 캡처되지 않습니다.
    참고 사항: 엔티티에 여러 패턴을 입력하면 둘 중 하나가 일치합니다.
  • 패턴: [ word1 word2 ] *n – […] 내에 정의된 한 단어 또는 문구와 일치합니다.
    엔티티 ToAccount의 패턴 – to *1.
    엔티티 FromAccount의 패턴 – [ using from ] *1.
    ToAccount & FromAccount는 transfer funds from XYZ321 to ABC123transfer funds to ABC123 using XYZ321라는 사용자 발화에서 캡처되지만 transfer funds for ABC123 using XYZ321에서는 캡처되지 않습니다.
  • 패턴: ~concept *n – concept를 사용하여 만든 패턴입니다.
    엔티티 ToAccount의 패턴 – to *1.
    엔티티 FromAccount의 패턴 – ~from*1 여기서 from은 (using) (from)과 같은 concept입니다
    ToAccount & FromAccount는 transfer funds from XYZ321 to ABC123transfer funds to ABC123 using XYZ321라는 사용자 발화에서 캡처되지만 transfer funds for ABC123 using XYZ321에서는 캡처되지 않습니다.

패턴 추가 방법에 대한 자세한 내용은, 패턴 관리하기를 참조하세요.

네거티브 패턴

네거티브 패턴을 사용하여 기초 의미 또는 기계 학습 모델을 통해 탐지된 의도를 제거합니다.

예를 들어, 사용자가 문제가 발생했을 때 항공편을 예약하려고 했습니다(I was trying to Book a Flight when I faced an issue고 말합니다. 기계는 의도를 항공편 예약(Book a Flight)으로 식별하지만 이는 사용자가 원하는 일이 아닙니다. 이럴 경우, 하려고(was trying to) *를 네거티브 패턴으로 정의하고 일치하는 의도가 무시되도록 합니다.

동의어

의도/엔티티를 식별하는 단어가 서로 바뀌어서 사용되는 경우 동의어를 사용해야 합니다. 의도와 엔티티 둘 다에 동의어를 정의합니다.

각각 의도에는 이름이 있습니다. 예를 들어, 의도 이름이 안내 검색(Guided Search)인 경우입니다. 사용자가 이 작업을 시작하기 위해 입력할 수 있는 동의어가 많이 있습니다. 가령 제품 탐색이라면 화장품을 보여주세요(Show me makeup), 또는 제품을 보여주세요(show me products)가 있습니다.

개발자는 작업 이름을 두세 단어로 제한해야 합니다. 그런 다음 각 단어의 동의어를 고려합니다.

  • 탐색 – 찾기(Find), 검색(Search)
  • 제품 – 화장품(Makeup), 상품(Goods), 키트(Kit)

다음과 같은 철자 오류도 염두에 두어야 합니다.

  • makeup – make up

동의어는 원칙적으로 작업 이름의 일부로 정의한 단어에 대해서만 정의해야 합니다. 봇 수준에서 추가한 동의어는 모든 작업에 적용할 수 있습니다. 즉, 개발자가 작업 A의 단어에 동의어를 추가하면, 해당 동의어는 작업 이름에 같은 단어가 있는 다른 작업에도 사용됩니다. 예를 들어, 안내 검색에서 탐색이라는 단어에 정의한 동의어는 키워드 검색에도 사용됩니다. 동의어는 의도를 요청하는 사용자에게 예상되는 변형된 형태의 수를 늘리는 데 사용할 수 있고 사용해야만 합니다. 모든 것과 일치할 만큼 일반적이지 않으면서 기존 의도 이름을 대체 문구로 보완합니다. 동의어는 단방향이므로 foo=bar가 bar=foo를 의미하지는 않습니다.

동의어에 대한 일반 지침:

  • 표준형 단어를 사용하세요(즉, 동사 원형, 단수 명사).
  • 단어와 동의어 모두 소문자를 사용하세요.
  • 동의어 문구를 5단어 미만으로 유지합니다.
  • 단어에 미국식 철자를 사용합니다(즉, normalise 대신 normalize).
  • 의미보다 의도를 사용하세요(즉, 조치의 컨텍스트가 찾기(find) 및 표시하기(display)를 의미하는 경우 getshow의 좋은 동의어가 됩니다.
  • 한정사나 대명사(the, a, my, that 등)에 동의어를 추가하지 마세요.
  • 두 개의 충돌하는 작업과 일치할 수 있는 동의어를 사용하지 마세요.
  • () & / \ $ [ ] + * 같은 특수 문자를 사용하지 마세요.
  • – , 같은 구두점을 사용하지 마세요. ! ? ‘ “.
  • 여러 개의 단어에 동의어를 지정하지 마세요(예를 들어, 이것은 틀렸습니다(this is wrong): 틀린(wrong), 부적절한(bad)).
  • 숫자에 동의어를 추가하지 마세요.
  • 문구 형식을 사용하지 마세요(즉, 찾아보다(lookup)를 동의어로 사용하지 마세요. 그냥 보다(look)를 사용하세요).
  • 2글자 이하로 줄이지 마세요.

동의어 작업

엔티티(값 목록 및 조회 유형에만 해당) 식별의 사용자 입력 및 동의어 간 일치는 다음 방식 중 하나로 일어날 수 있습니다.

  • 부분 일치 – 입력의 한 개 이상의 단어가 주어진 동의어의 한 개 이상의 단어와 일치해야 하는 기본 작업입니다. 예를 들어, 사용자 발화 직불 카드는 동의어 신용 카드와 일치합니다.
  • 정확히 일치 – 여기서 입력은 주어진 동의어의 모든 단어를 다 포함해야 합니다. 예를 들어, 추가 신용 카드신용 카드와 일치합니다. 그러나, 직불 카드신용 카드와 일치하지 않습니다. 정확한 일치를 트리거하려면, 동의어를 큰따옴표로 묶어야 합니다.
  • 전체 일치 – 전체 입력이 주어진 동의어 단어와 정확히 일치해야 합니다. 예를 들어, a credit card는 <credit card>와 일치해야 하지만 my credit card는 <credit card>와 일치하지 않아야 합니다. 마찬가지로 a credit card는 <my credit card>와 일치하지 않아야 합니다. 정확한 일치를 트리거하려면, 동의어를 꺾쇠 괄호로 묶어야 합니다.
  • 표준형 일치 – 사용자 입력이 동의어 또는 표준형과 일치하는 기본 작업입니다. 예를 들어, check가 checking의 표준형이기 때문에 내 잔액 확인(check my balance)이 동의어 계좌(checking account)와 일치합니다. 이 작업을 중단하려면 동의어에 확인(checking)을 위해 작은 따옴표를 접두사로 붙입니다. (v7.1 이후)
참고: 엔티티뿐만 아니라 의도를 식별하기 위해 동의어를 추가할 수 있습니다. 의도가 식별된 후에만 엔티티 식별이 트리거됩니다.
동의어 추가 방법에 대한 자세한 내용은, 동의어 관리하기를 참조하세요.

개념

개념은 한 개의 단어를 식별 그룹으로 간주하려는 관련된 용어 및 동의어 모음입니다.

개념 명명 규칙:

  • ~를 접두사로 두어야 합니다
  • 개념 이름으로 허용되는 문자는 다음과 같습니다.
    • a~z 및 A~Z
    • 1에서 9까지
    • _ (밑줄)
  • 하나 이상의 알파벳이 ~ 뒤에 와야 합니다.
  • _(밑줄)로 시작하거나 끝나서는 안 됩니다.
  • 이들은 대소문자를 구분하지 않습니다. 즉 ~myConcept는 ~myconcept와 동일합니다.

허용되는 개념 이름의 예:

  • ~my_concept
  • ~Sample
  • ~test123
  • ~my_new_concept

유효하지 않은 개념 이름의 예:

  • ~_concept
  • ~concept_
  • ~a-concept
  • ~123test

이모지로 맞춤형 개념을 정의할 수도 있습니다.

자세한 내용은 맞춤형 개념을 참조하세요.

표준 응답

표준 응답은 플랫폼이 대화 중 특정 상황에 응답하는 데 사용하는 템플릿 메시지입니다. 이러한 상황의 예로는 사용자 입력이 모호한 경우의 해결, 승인 요청, 확인 받기, 중단 및 재개에 대한 알림 등이 있습니다. 표준 응답은 다음과 같이 분류됩니다.

  • 진술
  • 인사말
  • 질의
  • 오류 및 경고
  • 질문 및 선택

플랫폼에는 미리 준비된 답변이 제공되지만, 개발자는 이러한 메시지와 더불어 추가로 변형된 형태를 사용자 정의하는 것이 좋습니다.

대화 단계 전반에 걸쳐 최종 사용자가 원활한 경험을 할 수 있도록 하기 위해, 개발자는 각 표준 응답을 검토하여 봇의 전체 페르소나/테마에 맞는지 확인해야 할 수 있습니다.

표준 응답은 일반 텍스트 메시지이거나 JavaScript로 생성되어 지원 채널의 동적 메시지 및 템플릿을 구성할 수 있습니다. 해당 되는 경우, 표준 응답은 개발자가 메시지를 사용자 정의하는 데 도움이 되는 컨텍스트 태그를 지원합니다.

예를 들어, 사용자가 봇이 수행할 수 있는 작업을 요청하면 봇은 다음과 같은 메시지로 응답합니다. 다음은 제가 수행할 수 있는 작업입니다(Here are the tasks I can perform for you). <list-of-tasks>. 이 예시에서, 개발자는 이 메시지를 수정하고 적절한 곳에 <list-of-tasks> 태그를 재사용하도록 선택할 수 있습니다. 이와 같은 태그는 런타임 값으로 대화하는 동안 실제 텍스트 컨텍스트로 대체됩니다.

지식 그래프

실행 가능한 작업의 경우, 의도는 작업 이름(기초 의미 모델에서 사용됨) 또는 작업에 정의된 기계 학습 발화를 기반으로 식별됩니다. 이 접근 방식은 언어 의미와 기계 학습 모델에서 파생된 통계적 확률로 작업을 다른 작업과 구별할 수 있는 경우에 적합합니다.

FAQ의 경우, 이 접근 방식은 의미적 변형 측면에 보면 FAQ는 대부분 서로 유사하기 때문에 잘 작동하지 않을 수 있으며, 보다 적절한 답변을 찾기 위해 도메인에 대한 추가 인텔리전스가 필요합니다.

Kore.ai의 지식 그래프 기반 모델은 사용자의 의도(이 경우 가장 적절한 질문)를 식별하는 데 있어 주요 도메인 용어와 그 관계의 중요성을 나타내는 데 필요한 추가 인텔리전스를 제공합니다.

다음 두 가지 예를 통해 지식 그래프를 작성하는 데 필요한 다양한 설정을 설명합니다.

예 A 예 B

다음 질문을 학습시킨 봇에 대해 생각해봅시다.

  • A1: 대출 신청은 어떻게 하나요?(How to apply for a loan?)
  • A2: 보험 신청 절차가 어떻게 되나요?(What is the process to apply for insurance?)

다음 질문을 학습시킨 봇에 대해 생각해봅시다.

  • B1: 공동 계좌를 개설할 수 있나요?(Can I open a joint account?)
  • B2: 공동 계좌 소유자는 어떻게 추가하나요?(How do I add a joint account holder?)
  • B3: 수표책 신청은 어떻게 하나요?(How can I apply for a checkbook?)
  • B4: 직불 카드는 어떻게 신청하나요?(How do I apply for a debit card?)

다음은 순수한 기계 학습 및 시멘틱 규칙을 기반으로 하는 일반적인 모델의 의도 인식과 관련된 몇 가지 문제입니다.

  1. 기계 학습 기반 모델에서 얻은 결과는 사용자 발화가 관련 없는 질문과 일치하는 용어가 더 많을 경우, 긍정 오류의 결과를 초래하는 경향이 있습니다.
  2. 봇이 도메인의 용어 및 관계를 기반으로 이해해야 하는 경우 모델이 작동하지 않습니다. 예를 들어, 사용자 발화 대출 신청은 어떻게 하나요?는 A1 대신 우선 일치 항목으로 A2를 잘못 가져옵니다. A2가 A1보다 사용자 발화와 일치하는 용어가 더 많기 때문입니다.
  3. 이 모델은 질문의 일부가 다른 질문과 연결되어 규정되어 있는 경우 올바른 응답을 가져오지 못합니다. 예를 들어, A: 사용자 발화 대출을 신청했는데 보험 가입이 될까요?는 A1과 A2 사이에서 애매모호한 결과를 가져옵니다. 예 B: 사용자 발화 공동 계좌를 개설했는데 직불 카드 발급이 가능한가요?는 B4 대신 B1으로 잘못 일치시킬 수 있습니다.

Kore 지식 그래프 모델에서, 루트 레벨에 모든 질문을 두는 것은 용어 빈도 및 시멘틱 규칙 기반 모델을 사용하는 것과 같습니다.

핵심 도메인 용어와 그 관계

핵심 용어와 그 관계를 식별하는 것은 온톨로지 구축의 중요한 한 측면입니다. 예 A를 통해 이와 같은 사실을 이해해봅시다. A1과 A2는 모두 신청 절차에 관한 것입니다. 하나는 대출 신청에 대해 이야기하고 다른 하나는 보험 신청에 대해 이야기합니다. 따라서 온톨로지를 생성하는 동안 두 개의 자식 노드 대출보험으로 부모 노드 신청을 만들 수 있습니다. 그러면 A1과 A2는 각각 대출보험 노드의 자식 노드로 지정할 수 있습니다.

지식 그래프의 표현
예 A


마찬가지로 예 B의 경우 그래프는 다음과 같습니다

그래프 엔진의 기능

  • 동의어를 사용한 학습의 용이성: Kore.ai 지식 그래프는 동의어를 그래프 노드에 연결할 수 있습니다. 이렇게 하면 질문의 변화를 캡처하는 데 도움이 됩니다. 예를 들어, 위의 예 A에서, 사용자는 getapply의 동의어로 입력할 수 있습니다.
  • 대체 질문의 향상된 범위: 지식 그래프에 대체 질문을 추가할 수 있습니다. 이는 사용자가 동일한 질문을 하는 다양한 방법을 파악하는 데 도움이 됩니다. 위의 예 B에서 공동 계좌 소유자는 어떻게 추가하나요?라는 질문에 대해 아내를 공동 계좌 소유자로 추가할 수 있나요?라는 대체 질문을 추가할 수 있습니다.
  • 향상된 정확도: 온톨로지 기반 질문 답변은 긍정 오류 가능성을 줄여줍니다. 예를 들어, SSN 신청 절차가 어떻게 되나요?라는 사용자 발화의 경우 용어 빈도 기반 모델은 A2를 일치 항목으로 잘못 제시합니다. 온톨로지 기반 모델에는 이러한 긍정 오류를 방지할 수 있는 기능이 있습니다.
  • 클래스를 이용한 문구 저울질: Kore.ai의 그래프 엔진은 관련이 없는 제안을 필터링하기 위해 클래스 개념을 도입했습니다. 자세한 설명은 아래 클래스 섹션을 참조하세요
  • 용어 중요성을 표시하는 기능: Kore.ai 그래프 엔진에는 중요한 온톨로지 용어를 표시하는 기능이 있습니다. 예를 들어, 대출 신청은 어떻게 하나요라는 질문에서 대출은 중요한 용어입니다. 대출 키워드가 사용자 발화에 없으면 A1을 가져오는 것은 거의 의미가 없습니다. 반면 용어 빈도 기반 모델에서 사용자 발화 대출 신청은 어떻게 하나요는 A1을 잘못 가져옵니다.
  • 관련 노드를 그룹화하는 기능: 그래프의 크기가 커지면, 그래프 노드를 관리하는 것이 어려운 작업이 될 수 있습니다. 온톨로지 엔진의 구성자 노드 구조를 사용하여 봇 개발자는 노드에서 관련 노드를 그룹화할 수 있습니다.

지식 그래프 특성

참고: 특성은 v6.4 이하의 클래스를 대체하는 것입니다.

특성을 과도하게 사용하면 부정 오류가 발생할 수 있으므로 잘 판단하여 사용해야 합니다. 클래스를 사용할 때는 다음 사항을 확인하세요.

  • 클래스의 충분한 범위.
  • 클래스를 부적절하게 일반화해서는 안 됩니다.
  • 모든 FAQ를 상호 배타적인 클래스에 태그합니다.

다음은 클래스 작동 방식의 예입니다. 요청이라는 클래스를 만들고 여기에 요청 관련 문구를 추가한다고 가정해봅시다. 사용자가 WebEx를 받고 싶습니다고 말할 때 받고 싶습니다를 요청 클래스에 학습시킨 경우, 이 FAQ는 요청이라는 단어에 태그된 지식 그래프 경로에서만 다룹니다. 다음은 긍정적인 시나리오입니다. 그러나 사용자가 WebEx를 받는 것을 도와줄 수 있습니까?라고 말하는데 요청 클래스에 학습시킨 유사한 발언이 없는 경우 None 클래스로 태그되며 이 FAQ는 요청이라는 단어가 없는 경로에서만 사용됩니다. 따라서 작동하지 않게 됩니다.

또 다른 가능성은 사용자가 WebEx 해결을 위한 도움을 요청하고 싶습니다라고 말했는데 요청하고 싶습니다가 포함된 일부 발화로 요청 클래스를 학습시켰으면 모든 클래스에 걸친 학습을 기반으로 엔진은 이 기능(요청하고 싶습니다가 포함된 문구)을 일반화하고 요청 클래스에 태그할 수 있습니다. 이 경우, 요청 클래스가 WebEx의 도움 경로에 없으면 도움말 > WebEx에 대한 입력을 식별하지 못합니다.

이 클래스가 유용한 경우는 상호 배타적인 FAQ 집합이 있는 경우입니다. 예를 들어, 제품의 문제점에 대한 FAQ 세트와 제품 구매 과정에 대한 FAQ 세트가 있는 경우입니다.
제품 구매 절차에 대한 FAQ:

  1. Microsoft Office를 온라인으로 구입하려면 어떻게 해야 하나요?
  2. 바이러스 백신 소프트웨어를 구매하기 위한 절차가 어떻게 되나요?

제품 문제에 대한 FAQ:

  1. 소프트웨어 설치에 문제가 있습니다
  2. 바이러스 백신 문제를 해결하는 방법

사용자가 바이러스 백신이 작동하지 않을 때 해결하는 절차가 어떻게 되나요?라고 말하면 엔진은 이 입력이 A2 및 B2 둘 다와 유사하다는 것을 발견하고 둘 다 제시하도록 할 수 있습니다. 문제구매와 상호 배타적이며, 이 경우 구매 관련 FAQ를 제시하는 것이 전혀 의미가 없습니다. 그 반대(구매 관련 질문에 문제 FAQ를 일치)의 상황이 훨씬 더 큰 문제(problem)가 될 수 있습니다. 이 문제를 해결하기 위해, 문제 유형과 구매 유형인 클래스 두 개를 만듭니다. 입력한 내용은 구매 또는 문제로 분류되며 적절한 답변을 찾는 데 관련된 질문만 사용됩니다.

이전
기초 의미

 

 

메뉴