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
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 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
Intelligence
Introduction
Event Handlers
Contextual Memory
Contextual Intents
Interruption Management
Multi-intent Detection
Amending Entities
Default Conversations
Conversation Driven Dialog Builder
Sentinment 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
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
Migrate External Bots
Google Dialogflow Bot
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
Tutorials
BotKit - Blue Prism
BotKit - Flight Search Sample VA
BotKit - Agent Transfer
  1. Docs
  2. Virtual Assistants
  3. How Tos
  4. 의도와 엔티티에 대한 패턴 사용 방법

의도와 엔티티에 대한 패턴 사용 방법

패턴을 사용하면 NLP 통역가의 정확도를 향상시킬 수 있습니다.

본 문서에서는 다양한 패턴 구문에 대해 자세히 설명하고 이러한 패턴 구문이 의도 감지 및 엔티티 추출에 어떻게 사용될 수 있는지 설명합니다.

기억해야 할 사항:

  • 패턴은 ML 엔진을 사용할 수 없는 경우에만 마지막 수단으로 사용됩니다. 이러한 사례의 예로는 발화와 같은 관용구가 있는 발화, 명령을 식별하도록 학습하는 것입니다.
  • 패턴은 나열된 순서대로 평가됩니다. 일치 항목이 발견되면 나머지 패턴은 평가되지 않습니다. 따라서 패턴을 추가할 때 가장 제한적인 순서에서 가장 덜 제한적인 순서로 추가해야 합니다.
  • 패턴에는 하나의 와일드카드(*)만 허용됩니다.
  • 기능 대부분이 모든 언어를 지원하지만, 일부 예외가 있습니다. 자세한 내용은 여기를 참조하세요.
다음은 의도 패턴을 생성하기 위한 몇 가지 일반적인 지침입니다.
  • 최소 3개의 단어를 사용하세요.
  • 표준적인 형태의 단어를 사용하세요(예: 부정사, 단수 명사).
  • 단어와 동의어에 모두 소문자를 사용합니다.
  • 단어의 미국 철자를 사용합니다(즉, normalise 대신 normalize).
  • 한정사 및 대명사(the, a, my, that)는 사용하지 마세요.
  • 숫자를 사용하지 마세요.
  • 작업 패턴을 정의할 때 엔티티 값을 사용하지 않도록 합니다.
  • 축약(예: what's)을 사용하지 마세요.
  • () & / \ $ [ ] + * 와 같은 특수 문자는 사용하지 마세요.
  • 다음과 같은 구두점은 사용하지 마세요. , ! ? ‘ “.

의도 감지용 패턴

다음은 의도 감지를 위해 설정할 수 있는 패턴 구문 목록으로, 예시가 함께 제시됩니다.

패턴 설명 패턴 예제
word1 word2…wordn 이를 통해 정의된 모든 단어를 동일한 연속 순서대로 사용자 발화에서 사용할 수 있도록 하고, 패턴에서 언급된 두 개의 연속된 단어 사이에 최대 3개의 단어(언어별)를 추가하고, 지정된 단어 세트 앞뒤에 무한한 개수의 단어를 추가로 사용할 수 있도록 합니다.
샘플 패턴 "transfer fund"
발화 일치 – "can you please transfer funds from my account"
– "can you please transfer some funds from my account"
– "transfer funds"
발화 불일치 – "i want to transfer"
– "can i transfer some significant amount of monetary funds"
– "i want to do fund transfer"
word1_word2 word1과 word2 사이에 추가 단어가 허용되지 않는 구문을 적용합니다. 이는 토큰의 시퀀스가 구문으로 읽히도록 하기 위한 것입니다. 사용은 단어로 제한되며 콘셉트는 허용되지 않습니다.
참고 사항: word1, word2 및 _ 사이에 공백이 없어야 합니다. 또한 "_word1"은 사용자 발화의 word1이 플랫폼에서 사용된 것으로 표시되지 않도록 하고 엔티티 추출에 고려되도록 하기 위한 것입니다 이 기능은 엔티티 단어가 의도 패턴에 사용될 때 유용합니다.
샘플 패턴 "transfer_fund"
발화 일치 "can you help me transfer funds"
발화 불일치 "can you please transfer some funds from my account"
word1* word2 지정된 단어/구 사이에 0에서 무한개의 추가 단어 수
샘플 패턴 "transfer * fund"
발화 일치 – "can you please transfer some funds from my account"
– "can you help me transfer funds"
발화 불일치 "i want to transfer"
word1 *n word2 지정된 단어/구 사이에 정확히 n 개의 추가 단어를 추가로 사용합니다
샘플 패턴 "transfer *2 fund"
발화 일치 – "can you help me transfer some significant funds from my account"
발화 불일치 – "i want to transfer"
– "can you please transfer some funds from my account"
– "can you help me transfer some significant amount of funds"
word1 *0 word2 두 토큰 사이의 와일드카드를 사용하지 않도록 설정합니다. 두 단어 사이의 밑줄과 비슷하지만 두 콘셉트 간에 또는 [ ], { } 그룹 내에서 사용할 수 있습니다.
(7.1 이상 사용 가능)
샘플 패턴 "transfer *0 fund"
발화 일치 – "can you please transfer funds from my account"
– "can you help me transfer funds"
발화 불일치 "i want to transfer some funds"
word1 < word2 word2의 일치 항목이 문장의 시작 부분부터 시작됨을 나타냅니다. 이 기능은 특히 word2가 발화 중간에 나타나는 경우에 유용합니다.
대괄호 뒤에 공백을 추가합니다
샘플 패턴 "transfer < fund"
발화 일치 – "자금 이체를 원해요"
– "자금 이체를 시작하고 싶습니다"
발화 불일치 "i want to transfer"
word1 > word2 문장의 끝을 나타내며 그다음에는 단어를 사용할 수 없습니다.
대괄호를 닫기 전에 공백을 추가합니다
샘플 패턴 "transfer * fund >"
발화 일치 – "transfer funds"
– "transfer few funds"
발화 불일치 "오늘 자금 이체"
!abc 단어/콘셉트 "abc"는 이 토큰 이후의 사용자 발화 어디에서도 존재하지 않아야 함을 나타냅니다.
!와 단어/콘셉트 사이에 공백은 없습니다
샘플 패턴 – "!status transfer fund"
– "transfer !status fund"
– "transfer fund !status"
발화 일치 "i want to transfer funds"
발화 불일치 – "what is the status of my fund transfer"
– "i want to find my fund transfer status"
!! abc 바로 다음 단어/콘셉트는 "abc"가 되어서는 안 됩니다
.!!와 단어/콘셉트 사이에 공백이 없어야 합니다
샘플 패턴 "transfer fund !!status"
발화 일치 – "i want to transfer funds"
– "what is the status of my fund transfer"
– "i want to find my fund transfer from yesterday's status"
발화 불일치 "i want to find my fund transfer status"
[ … ] 단어/콘셉트 그룹을 정의하는 데 사용되며 [ ] 에서 선언된 그룹 중 하나와 정확히 일치해야 합니다. 일치하는 항목이 발견되면 그룹의 나머지 부분은 무시되므로 단어를 순서대로 정렬하세요.
참고 사항: 괄호는 단어로 묶지 않아야 합니다. 즉, 괄호와 인접 단어 사이에 공백을 둡니다.
유지 관리 및 추적의 어려움 때문에 이 패턴 대신 콘셉트를 사용하는 것이 좋습니다. 이 패턴은 봇 성능에도 악영향을 미칩니다.
샘플 패턴 "transfer [ funds amount cash ]"
발화 일치 – "transfer money"
– "can i transfer some cash"
– "i want to transfer funds"
발화 불일치 "transfer dollars"
{ … } 선택적 그룹 또는 단어/콘셉트를 정의하는 데 사용되며, 일치 값은 { }에 선언된 단어/패턴 중 하나 또는 0에 대한 것입니다. 일치하는 항목이 발견되면 그룹의 나머지 부분은 무시되므로 단어를 순서대로 정렬하세요.
참고 사항: 괄호는 단어로 묶지 않아야 합니다. 즉, 괄호와 인접 단어 사이에 공백을 둡니다.
샘플 패턴 "transfer { some few my } fund"
발화 일치 – "how do i transfer funds"
– "can i transfer some funds"
발화 불일치 "i want to transfer"
( … ) 패턴을 포함합니다. 예를 들어, 패턴이나 패턴의 일부가 이 괄호 안에 있으면 [ ] 및 { }와는 다른 패턴으로 이를 취급합니다.
이것은 기본 설정입니다. 즉, 패턴 word1 word2가 있으면 [ ] 또는 { } 안에 하위 패턴을 정의하는 데
일반적으로 명시적으로 사용되는 (word1 word2)로 처리됩니다.
샘플 패턴 "( transfer fund )"
발화 일치 "transfer funds from my account"
발화 불일치 "i would like to initiate fund transfer"
<< … >> 순서로 단어를 찾는 데 사용됩니다.
잘못된 긍정으로 실행될 수 있는 위험으로 인해, 이 패턴을 사용하지 않는 것이 좋습니다.
샘플 패턴 "<< transfer fund >>"
발화 일치 – "transfer funds from my account"
– "i would like to initiate fund transfer"
발화 불일치 "i want to transfer"
word1 단어를 인용하거나 정식 형식이 아닌 단어를 사용하는 경우, 시스템은 패턴에서 사용한 것으로 제한됩니다
샘플 패턴 "'like to transfer fund"
발화 일치 "I would like to ransfer funds from my account"
발화 불일치 "I really liked transfer funds process"
word1~concept2
~concept1~concept2
(ver8.0부터)
단어(word1) 또는 콘셉트(concept1)는 다른 개념(concept2)의 멤버인 경우에만 일치시킬 수 있습니다. 가장 일반적인 용도는 각각의 POS 태그에 동적으로 추가되는 시스템 콘셉트를 통해 하는 것입니다.
샘플 패턴 "schedule~verb"
발화 일치 "schedule a meeting"
발화 불일치 "show my schedule"

패턴 연산자

  • AND: ( X Y ): 순서대로 정렬된 단어 관계입니다. 이것은 기본 설정입니다. 즉, 패턴을 취소 순서로 지정하면 이는 (취소 순서)와 같습니다.
    예를 들어 (주문 취소)전화 주문 취소와 일치하지만 iPhone X에 대한 보류 중인 주문이 있습니다. 취소할 수 있나요와는 일치하지 않습니다. 봇 빌더 도구는 단어 사이에 와일드카드를 많이 사용하는 패턴을 사용합니다(의도에 따라 최대 3개). 따라서 주문 취소 패턴이 일치할 수 있습니다.
    • cancel order
    • cancel my order
    • cancel that last order
    • cancel last weeks big order
  • OR: [X Y Z]: 이 중 어느 것이든 사용자의 발화에서 혼용될 수 있습니다. 예를 들어 ([get make] me [food drink dessert])는 아래의 모든 발화와 일치합니다:
    • Get me food
    • Make me a drink
    • Get me a drink
    • Get me a dessert
    • Make me some quick food
  • NOT: !X: 의도 일치에 대한 사용자 발화에 표시되지 않아야 하는 단어입니다. 예를 들어, (!forecast)는 현재 날씨 가져오기라는 이름의 의도 패턴으로 표시되며 봇은 3일간의 일기 예보라 불리는 또 다른 의도를 지원합니다.
    • 사용자 발화: 캘리포니아 여행을 계획하고 있어 보를 받아줘
      • 현재 날씨 가져오기와 일치하지 않습니다
      • 3일간의 일기 예보와 일치합니다.
        !word는이 시점 이후를 의미하지 않습니다. 따라서 (!forecast the weather) 및 (get the weather !forecast)는 다릅니다. 이 발화는 첫 번째가 아닌 두 번째 날씨와 일치하는 날씨에 대한 예보를 가져오기 합니다.
  • 선택 사항: {X}: 예를 들어, {phone} 사용자 발화가 전화번호 받기 또는 번호 받기일 경우 플랫폼에서 동일하게 처리합니다.
  • 구문 적용: X_Y: 사용자 발화에서 중간에 아무 단어 없이 해당 구문의 발생을 강제합니다. 예: transfer_funds. 발화 transfer funds 또는 I want to transfer funds 는 일치하지만 Can I transfer some funds와는 일치하지 않습니다.
  • 콘셉트: ~: 플랫폼에는 개발자가 패턴을 정의하는 데 사용할 수 있는 많은 기본 제공 콘셉트가 있습니다. 예를 들어 (I [like love] ~world_country)는 다음과 일치합니다
    • I like India
    • I love traveling to Australia
    • I would like to visit an African country
  • 무작위: <<, >>: 임의의 순서로 단어를 찾는 데 사용됩니다. 예를 들어, <<Cancel Order>>는 Cancel my phone order와 일치하며 I have a pending order for an iPhone X, can I cancel와도 일치합니다.
  • 문장 시작/끝: <, >: 예를 들어, (transfer fund >)는 I want to transfer funds과 일치하지만 transfer funds today와는 일치하지 않습니다.
  • 인용: ‘ –: 단어를 인용하거나 정식 형식이 아닌 단어를 사용하는 경우, 시스템은 패턴에서 사용한 것으로 제한됩니다. 예를 들어, (like to transfer funds) 이것은 I would like to transfer funds from my account 와 일치하지만 I really liked transfer funds process와는 일치하지 않습니다.

네거티브 패턴

네거티브 패턴은 구문이 있는 상태에서 탐지된 의도를 제거하는 데 사용할 수 있습니다. 이렇게 하면 잘못된 긍정에 일치하는 의도를 필터링 할 수 있습니다.

사용자 발화: "I was transferring funds when I got network failure error"
의도 감지됨자금 이체
의도된 의도컴플레인 등록

자금 이체
사용자 발화 의도에 대한 부정적인 패턴 (network failure) (error) (technical issue)을 추가합니다: "I was transferring funds when I got network failure error"
또는 "I was transferring funds when I faced a technical issue"
또는 "I got an error during transfer funds process."
의도 거부됨자금 이체
의도 트리거 됨: 컴플레인 등록

엔터티 추출 패턴

패턴을 사용하면 사용자 발화 내 위치 및 발생에 따라 사용자 발화에서의 엔티티의 값을 식별할 수 있습니다.

{…}, […], !, ~콘셉트와 같은 의도 패턴 연산자는 엔티티 추출을 위해 사용될 수 있습니다. 다음은 패턴을 적용할 수 있는 몇 가지 활용 사례입니다.

모든 엔티티 패턴에는 플랫폼에서 엔티티 값을 찾아야 하는 위치를 나타내는 * (일부 형식의)가 포함되어야 합니다.

자금 이체 의도를 포함한 뱅킹 봇 예제를 계속합니다. 이 의도는 ToAccountFromAccount의 두 엔티티가 필요합니다. 이를 달성하는 방법을 살펴보겠습니다.

패턴 1: word1 * word2

이 와일드카드를 엔티티의 예상 위치를 나타내는 위치 와일드카드로 사용할 수 있습니다.
ToAccount 엔티티 패턴: to * from
사용자 발화Transfer funds to ABC123 from my account.
추출된 엔티티ToAccount = ABC123
사용자 발화를 통해 엔티티 추출되지 않음: "transfer funds for ABC123 from my account"

패턴 2: word1 * n

이것은 지정된 word1 뒤의 단어 수에 따라 엔티티의 예상 위치를 나타내는 위치 와일드카드 * 로 사용할 수 있습니다. 즉, word1 뒤에 있는 n 단어는 엔터티로 간주됩니다. n 단어가 없다면 word1의 다음 발생을 찾습니다.
ToAccount 엔티티 패턴: From *2
사용자 발화Transfer funds to ABC123 from my account.
추출된 엔티티: FromAccount = 내 계좌
사용자 발화: Transfer funds to ABC123 from XYZ321 that is from my account.
추출된 엔티티
: FromAccount = 내 계좌
사용자 발화를 통해 엔티티 추출 되지 않음
: "transfer funds to ABC123 using my account"

패턴 2에 대한 확장자: word1 *~n

위(패턴 2)와 유사하지만 해당 단어 개수를 사용할 수 있다면 최대 n개의 숫자를 추출합니다. 엔티티가 무언가를 추출해야 하므로 *~1이 실제로 * 1과 같습니다.

패턴 3: word1*word2와 word3*n의 조합입니다

이는 사용자 발화에서 엔티티 값을 찾을 수 있는 위치에 대한 패턴과 엔티티에 기여하는 단어 수를 조합하는 것으로 사용될 수 있습니다.
ToAccount 엔티티 패턴: "to * from""from to *1"
FromAccount 엔티티에 대한 패턴: "From * to" 및 "to From * 2"
사용자 발화Transfer funds to ABC123 from my account.
또는 Transfer funds from my account to ABC123.
추출된 엔티티ToAccount=ABC123FromAccount=my account
사용자 발화를 통해 엔티티 추출 되지 않음: "transfer funds for ABC123 using my account"

패턴 4: [ word1 word2 ] *

이는 말에서 하나 이상의 단어가 있어야 하는 일련의 단어 또는 콘셉트를 사용하는 패턴일 수 있습니다. 그룹 내 순서는 중요합니다(자세한 내용은 위의 의도 감지에서 참조).
ToAccount 엔티티 패턴: "to * [ using from ]""[ using from ] to *1"
FromAccount 엔티티에 대한 패턴: "[ using from ] * to" 및 "to [ using from ] *"
사용자 발화Transfer funds to ABC123 from my account.
또는Transfer funds using my account to ABC123.
추출된 엔티티ToAccount=ABC123FromAccount=my account
사용자 발화를 통해 엔티티 추출 되지 않음: "transfer funds for ABC123 using my account"

패턴 5: ~CustomConcept *

이는 개념 사용을 위한 것입니다. 커스텀 콘셉트를 생성하여 패턴을 정의하는 데 사용할 수 있습니다.
ToAccount 엔티티 패턴: "to * from""from to *"
FromAccount 엔티티에 대한 패턴: "~in * to" 및 "to ~in *"
커스텀 콘셉트: ~in(using) (from)
사용자 발화Transfer funds to ABC123 using my account.
또는 Transfer funds from my account to ABC123.
추출된 엔티티ToAccount = ABC123 및 FromAccount = my account
사용자 발화를 통해 엔티티 추출 되지 않음: "transfer funds to ABC123 of my account"

패턴 6: ~intent

엔티티 패턴 및 커스텀 엔티티에 유용합니다
인텐트 식별에 사용되는 단어는 동적으로 ~intent 콘셉트를 사용하여 표시됩니다. 그러면 이 점을 일부 엔티티 패턴의 고정점 또는 참조점으로 사용할 수 있습니다.
샘플 패턴"~intent~meeting~plural"
사용자 발화를 통해 엔티티 추출되지 않음: show my meetings.
사용자 발화가 엔티티를 표시할 수 있습니다. "schedule a presentation called Meeting the Sales Goals"

패턴 7: $currentEntity

엔티티가 실제로 처리될 때까지 패턴 평가를 지연시킬 때 유용합니다. 일반적으로 엔티티 패턴은 대화가 시작될 때 그리고 엔티티가 처리될 때까지 단어를 보호해야 하는지 확인하기 위해 새 입력 시 평가됩니다. 특히 문자열의 경우 항상 바람직한 것은 아닙니다.
패턴"$currentEntity=TaskTitle 'called *"
대화 흐름이 TaskTitle 노드에 도달하면 위의 규칙이 패턴을 평가합니다.

의도와 엔티티에 대한 패턴 사용 방법

패턴을 사용하면 NLP 통역가의 정확도를 향상시킬 수 있습니다.

본 문서에서는 다양한 패턴 구문에 대해 자세히 설명하고 이러한 패턴 구문이 의도 감지 및 엔티티 추출에 어떻게 사용될 수 있는지 설명합니다.

기억해야 할 사항:

  • 패턴은 ML 엔진을 사용할 수 없는 경우에만 마지막 수단으로 사용됩니다. 이러한 사례의 예로는 발화와 같은 관용구가 있는 발화, 명령을 식별하도록 학습하는 것입니다.
  • 패턴은 나열된 순서대로 평가됩니다. 일치 항목이 발견되면 나머지 패턴은 평가되지 않습니다. 따라서 패턴을 추가할 때 가장 제한적인 순서에서 가장 덜 제한적인 순서로 추가해야 합니다.
  • 패턴에는 하나의 와일드카드(*)만 허용됩니다.
  • 기능 대부분이 모든 언어를 지원하지만, 일부 예외가 있습니다. 자세한 내용은 여기를 참조하세요.
다음은 의도 패턴을 생성하기 위한 몇 가지 일반적인 지침입니다.
  • 최소 3개의 단어를 사용하세요.
  • 표준적인 형태의 단어를 사용하세요(예: 부정사, 단수 명사).
  • 단어와 동의어에 모두 소문자를 사용합니다.
  • 단어의 미국 철자를 사용합니다(즉, normalise 대신 normalize).
  • 한정사 및 대명사(the, a, my, that)는 사용하지 마세요.
  • 숫자를 사용하지 마세요.
  • 작업 패턴을 정의할 때 엔티티 값을 사용하지 않도록 합니다.
  • 축약(예: what's)을 사용하지 마세요.
  • () & / \ $ [ ] + * 와 같은 특수 문자는 사용하지 마세요.
  • 다음과 같은 구두점은 사용하지 마세요. , ! ? ‘ “.

의도 감지용 패턴

다음은 의도 감지를 위해 설정할 수 있는 패턴 구문 목록으로, 예시가 함께 제시됩니다.

패턴 설명 패턴 예제
word1 word2…wordn 이를 통해 정의된 모든 단어를 동일한 연속 순서대로 사용자 발화에서 사용할 수 있도록 하고, 패턴에서 언급된 두 개의 연속된 단어 사이에 최대 3개의 단어(언어별)를 추가하고, 지정된 단어 세트 앞뒤에 무한한 개수의 단어를 추가로 사용할 수 있도록 합니다.
샘플 패턴 "transfer fund"
발화 일치 – "can you please transfer funds from my account"
– "can you please transfer some funds from my account"
– "transfer funds"
발화 불일치 – "i want to transfer"
– "can i transfer some significant amount of monetary funds"
– "i want to do fund transfer"
word1_word2 word1과 word2 사이에 추가 단어가 허용되지 않는 구문을 적용합니다. 이는 토큰의 시퀀스가 구문으로 읽히도록 하기 위한 것입니다. 사용은 단어로 제한되며 콘셉트는 허용되지 않습니다.
참고 사항: word1, word2 및 _ 사이에 공백이 없어야 합니다. 또한 "_word1"은 사용자 발화의 word1이 플랫폼에서 사용된 것으로 표시되지 않도록 하고 엔티티 추출에 고려되도록 하기 위한 것입니다 이 기능은 엔티티 단어가 의도 패턴에 사용될 때 유용합니다.
샘플 패턴 "transfer_fund"
발화 일치 "can you help me transfer funds"
발화 불일치 "can you please transfer some funds from my account"
word1* word2 지정된 단어/구 사이에 0에서 무한개의 추가 단어 수
샘플 패턴 "transfer * fund"
발화 일치 – "can you please transfer some funds from my account"
– "can you help me transfer funds"
발화 불일치 "i want to transfer"
word1 *n word2 지정된 단어/구 사이에 정확히 n 개의 추가 단어를 추가로 사용합니다
샘플 패턴 "transfer *2 fund"
발화 일치 – "can you help me transfer some significant funds from my account"
발화 불일치 – "i want to transfer"
– "can you please transfer some funds from my account"
– "can you help me transfer some significant amount of funds"
word1 *0 word2 두 토큰 사이의 와일드카드를 사용하지 않도록 설정합니다. 두 단어 사이의 밑줄과 비슷하지만 두 콘셉트 간에 또는 [ ], { } 그룹 내에서 사용할 수 있습니다.
(7.1 이상 사용 가능)
샘플 패턴 "transfer *0 fund"
발화 일치 – "can you please transfer funds from my account"
– "can you help me transfer funds"
발화 불일치 "i want to transfer some funds"
word1 < word2 word2의 일치 항목이 문장의 시작 부분부터 시작됨을 나타냅니다. 이 기능은 특히 word2가 발화 중간에 나타나는 경우에 유용합니다.
대괄호 뒤에 공백을 추가합니다
샘플 패턴 "transfer < fund"
발화 일치 – "자금 이체를 원해요"
– "자금 이체를 시작하고 싶습니다"
발화 불일치 "i want to transfer"
word1 > word2 문장의 끝을 나타내며 그다음에는 단어를 사용할 수 없습니다.
대괄호를 닫기 전에 공백을 추가합니다
샘플 패턴 "transfer * fund >"
발화 일치 – "transfer funds"
– "transfer few funds"
발화 불일치 "오늘 자금 이체"
!abc 단어/콘셉트 "abc"는 이 토큰 이후의 사용자 발화 어디에서도 존재하지 않아야 함을 나타냅니다.
!와 단어/콘셉트 사이에 공백은 없습니다
샘플 패턴 – "!status transfer fund"
– "transfer !status fund"
– "transfer fund !status"
발화 일치 "i want to transfer funds"
발화 불일치 – "what is the status of my fund transfer"
– "i want to find my fund transfer status"
!! abc 바로 다음 단어/콘셉트는 "abc"가 되어서는 안 됩니다
.!!와 단어/콘셉트 사이에 공백이 없어야 합니다
샘플 패턴 "transfer fund !!status"
발화 일치 – "i want to transfer funds"
– "what is the status of my fund transfer"
– "i want to find my fund transfer from yesterday's status"
발화 불일치 "i want to find my fund transfer status"
[ … ] 단어/콘셉트 그룹을 정의하는 데 사용되며 [ ] 에서 선언된 그룹 중 하나와 정확히 일치해야 합니다. 일치하는 항목이 발견되면 그룹의 나머지 부분은 무시되므로 단어를 순서대로 정렬하세요.
참고 사항: 괄호는 단어로 묶지 않아야 합니다. 즉, 괄호와 인접 단어 사이에 공백을 둡니다.
유지 관리 및 추적의 어려움 때문에 이 패턴 대신 콘셉트를 사용하는 것이 좋습니다. 이 패턴은 봇 성능에도 악영향을 미칩니다.
샘플 패턴 "transfer [ funds amount cash ]"
발화 일치 – "transfer money"
– "can i transfer some cash"
– "i want to transfer funds"
발화 불일치 "transfer dollars"
{ … } 선택적 그룹 또는 단어/콘셉트를 정의하는 데 사용되며, 일치 값은 { }에 선언된 단어/패턴 중 하나 또는 0에 대한 것입니다. 일치하는 항목이 발견되면 그룹의 나머지 부분은 무시되므로 단어를 순서대로 정렬하세요.
참고 사항: 괄호는 단어로 묶지 않아야 합니다. 즉, 괄호와 인접 단어 사이에 공백을 둡니다.
샘플 패턴 "transfer { some few my } fund"
발화 일치 – "how do i transfer funds"
– "can i transfer some funds"
발화 불일치 "i want to transfer"
( … ) 패턴을 포함합니다. 예를 들어, 패턴이나 패턴의 일부가 이 괄호 안에 있으면 [ ] 및 { }와는 다른 패턴으로 이를 취급합니다.
이것은 기본 설정입니다. 즉, 패턴 word1 word2가 있으면 [ ] 또는 { } 안에 하위 패턴을 정의하는 데
일반적으로 명시적으로 사용되는 (word1 word2)로 처리됩니다.
샘플 패턴 "( transfer fund )"
발화 일치 "transfer funds from my account"
발화 불일치 "i would like to initiate fund transfer"
<< … >> 순서로 단어를 찾는 데 사용됩니다.
잘못된 긍정으로 실행될 수 있는 위험으로 인해, 이 패턴을 사용하지 않는 것이 좋습니다.
샘플 패턴 "<< transfer fund >>"
발화 일치 – "transfer funds from my account"
– "i would like to initiate fund transfer"
발화 불일치 "i want to transfer"
word1 단어를 인용하거나 정식 형식이 아닌 단어를 사용하는 경우, 시스템은 패턴에서 사용한 것으로 제한됩니다
샘플 패턴 "'like to transfer fund"
발화 일치 "I would like to ransfer funds from my account"
발화 불일치 "I really liked transfer funds process"
word1~concept2
~concept1~concept2
(ver8.0부터)
단어(word1) 또는 콘셉트(concept1)는 다른 개념(concept2)의 멤버인 경우에만 일치시킬 수 있습니다. 가장 일반적인 용도는 각각의 POS 태그에 동적으로 추가되는 시스템 콘셉트를 통해 하는 것입니다.
샘플 패턴 "schedule~verb"
발화 일치 "schedule a meeting"
발화 불일치 "show my schedule"

패턴 연산자

  • AND: ( X Y ): 순서대로 정렬된 단어 관계입니다. 이것은 기본 설정입니다. 즉, 패턴을 취소 순서로 지정하면 이는 (취소 순서)와 같습니다.
    예를 들어 (주문 취소)전화 주문 취소와 일치하지만 iPhone X에 대한 보류 중인 주문이 있습니다. 취소할 수 있나요와는 일치하지 않습니다. 봇 빌더 도구는 단어 사이에 와일드카드를 많이 사용하는 패턴을 사용합니다(의도에 따라 최대 3개). 따라서 주문 취소 패턴이 일치할 수 있습니다.
    • cancel order
    • cancel my order
    • cancel that last order
    • cancel last weeks big order
  • OR: [X Y Z]: 이 중 어느 것이든 사용자의 발화에서 혼용될 수 있습니다. 예를 들어 ([get make] me [food drink dessert])는 아래의 모든 발화와 일치합니다:
    • Get me food
    • Make me a drink
    • Get me a drink
    • Get me a dessert
    • Make me some quick food
  • NOT: !X: 의도 일치에 대한 사용자 발화에 표시되지 않아야 하는 단어입니다. 예를 들어, (!forecast)는 현재 날씨 가져오기라는 이름의 의도 패턴으로 표시되며 봇은 3일간의 일기 예보라 불리는 또 다른 의도를 지원합니다.
    • 사용자 발화: 캘리포니아 여행을 계획하고 있어 보를 받아줘
      • 현재 날씨 가져오기와 일치하지 않습니다
      • 3일간의 일기 예보와 일치합니다.
        !word는이 시점 이후를 의미하지 않습니다. 따라서 (!forecast the weather) 및 (get the weather !forecast)는 다릅니다. 이 발화는 첫 번째가 아닌 두 번째 날씨와 일치하는 날씨에 대한 예보를 가져오기 합니다.
  • 선택 사항: {X}: 예를 들어, {phone} 사용자 발화가 전화번호 받기 또는 번호 받기일 경우 플랫폼에서 동일하게 처리합니다.
  • 구문 적용: X_Y: 사용자 발화에서 중간에 아무 단어 없이 해당 구문의 발생을 강제합니다. 예: transfer_funds. 발화 transfer funds 또는 I want to transfer funds 는 일치하지만 Can I transfer some funds와는 일치하지 않습니다.
  • 콘셉트: ~: 플랫폼에는 개발자가 패턴을 정의하는 데 사용할 수 있는 많은 기본 제공 콘셉트가 있습니다. 예를 들어 (I [like love] ~world_country)는 다음과 일치합니다
    • I like India
    • I love traveling to Australia
    • I would like to visit an African country
  • 무작위: <<, >>: 임의의 순서로 단어를 찾는 데 사용됩니다. 예를 들어, <<Cancel Order>>는 Cancel my phone order와 일치하며 I have a pending order for an iPhone X, can I cancel와도 일치합니다.
  • 문장 시작/끝: <, >: 예를 들어, (transfer fund >)는 I want to transfer funds과 일치하지만 transfer funds today와는 일치하지 않습니다.
  • 인용: ‘ –: 단어를 인용하거나 정식 형식이 아닌 단어를 사용하는 경우, 시스템은 패턴에서 사용한 것으로 제한됩니다. 예를 들어, (like to transfer funds) 이것은 I would like to transfer funds from my account 와 일치하지만 I really liked transfer funds process와는 일치하지 않습니다.

네거티브 패턴

네거티브 패턴은 구문이 있는 상태에서 탐지된 의도를 제거하는 데 사용할 수 있습니다. 이렇게 하면 잘못된 긍정에 일치하는 의도를 필터링 할 수 있습니다.

사용자 발화: "I was transferring funds when I got network failure error"
의도 감지됨자금 이체
의도된 의도컴플레인 등록

자금 이체
사용자 발화 의도에 대한 부정적인 패턴 (network failure) (error) (technical issue)을 추가합니다: "I was transferring funds when I got network failure error"
또는 "I was transferring funds when I faced a technical issue"
또는 "I got an error during transfer funds process."
의도 거부됨자금 이체
의도 트리거 됨: 컴플레인 등록

엔터티 추출 패턴

패턴을 사용하면 사용자 발화 내 위치 및 발생에 따라 사용자 발화에서의 엔티티의 값을 식별할 수 있습니다.

{…}, […], !, ~콘셉트와 같은 의도 패턴 연산자는 엔티티 추출을 위해 사용될 수 있습니다. 다음은 패턴을 적용할 수 있는 몇 가지 활용 사례입니다.

모든 엔티티 패턴에는 플랫폼에서 엔티티 값을 찾아야 하는 위치를 나타내는 * (일부 형식의)가 포함되어야 합니다.

자금 이체 의도를 포함한 뱅킹 봇 예제를 계속합니다. 이 의도는 ToAccountFromAccount의 두 엔티티가 필요합니다. 이를 달성하는 방법을 살펴보겠습니다.

패턴 1: word1 * word2

이 와일드카드를 엔티티의 예상 위치를 나타내는 위치 와일드카드로 사용할 수 있습니다.
ToAccount 엔티티 패턴: to * from
사용자 발화Transfer funds to ABC123 from my account.
추출된 엔티티ToAccount = ABC123
사용자 발화를 통해 엔티티 추출되지 않음: "transfer funds for ABC123 from my account"

패턴 2: word1 * n

이것은 지정된 word1 뒤의 단어 수에 따라 엔티티의 예상 위치를 나타내는 위치 와일드카드 * 로 사용할 수 있습니다. 즉, word1 뒤에 있는 n 단어는 엔터티로 간주됩니다. n 단어가 없다면 word1의 다음 발생을 찾습니다.
ToAccount 엔티티 패턴: From *2
사용자 발화Transfer funds to ABC123 from my account.
추출된 엔티티: FromAccount = 내 계좌
사용자 발화: Transfer funds to ABC123 from XYZ321 that is from my account.
추출된 엔티티
: FromAccount = 내 계좌
사용자 발화를 통해 엔티티 추출 되지 않음
: "transfer funds to ABC123 using my account"

패턴 2에 대한 확장자: word1 *~n

위(패턴 2)와 유사하지만 해당 단어 개수를 사용할 수 있다면 최대 n개의 숫자를 추출합니다. 엔티티가 무언가를 추출해야 하므로 *~1이 실제로 * 1과 같습니다.

패턴 3: word1*word2와 word3*n의 조합입니다

이는 사용자 발화에서 엔티티 값을 찾을 수 있는 위치에 대한 패턴과 엔티티에 기여하는 단어 수를 조합하는 것으로 사용될 수 있습니다.
ToAccount 엔티티 패턴: "to * from""from to *1"
FromAccount 엔티티에 대한 패턴: "From * to" 및 "to From * 2"
사용자 발화Transfer funds to ABC123 from my account.
또는 Transfer funds from my account to ABC123.
추출된 엔티티ToAccount=ABC123FromAccount=my account
사용자 발화를 통해 엔티티 추출 되지 않음: "transfer funds for ABC123 using my account"

패턴 4: [ word1 word2 ] *

이는 말에서 하나 이상의 단어가 있어야 하는 일련의 단어 또는 콘셉트를 사용하는 패턴일 수 있습니다. 그룹 내 순서는 중요합니다(자세한 내용은 위의 의도 감지에서 참조).
ToAccount 엔티티 패턴: "to * [ using from ]""[ using from ] to *1"
FromAccount 엔티티에 대한 패턴: "[ using from ] * to" 및 "to [ using from ] *"
사용자 발화Transfer funds to ABC123 from my account.
또는Transfer funds using my account to ABC123.
추출된 엔티티ToAccount=ABC123FromAccount=my account
사용자 발화를 통해 엔티티 추출 되지 않음: "transfer funds for ABC123 using my account"

패턴 5: ~CustomConcept *

이는 개념 사용을 위한 것입니다. 커스텀 콘셉트를 생성하여 패턴을 정의하는 데 사용할 수 있습니다.
ToAccount 엔티티 패턴: "to * from""from to *"
FromAccount 엔티티에 대한 패턴: "~in * to" 및 "to ~in *"
커스텀 콘셉트: ~in(using) (from)
사용자 발화Transfer funds to ABC123 using my account.
또는 Transfer funds from my account to ABC123.
추출된 엔티티ToAccount = ABC123 및 FromAccount = my account
사용자 발화를 통해 엔티티 추출 되지 않음: "transfer funds to ABC123 of my account"

패턴 6: ~intent

엔티티 패턴 및 커스텀 엔티티에 유용합니다
인텐트 식별에 사용되는 단어는 동적으로 ~intent 콘셉트를 사용하여 표시됩니다. 그러면 이 점을 일부 엔티티 패턴의 고정점 또는 참조점으로 사용할 수 있습니다.
샘플 패턴"~intent~meeting~plural"
사용자 발화를 통해 엔티티 추출되지 않음: show my meetings.
사용자 발화가 엔티티를 표시할 수 있습니다. "schedule a presentation called Meeting the Sales Goals"

패턴 7: $currentEntity

엔티티가 실제로 처리될 때까지 패턴 평가를 지연시킬 때 유용합니다. 일반적으로 엔티티 패턴은 대화가 시작될 때 그리고 엔티티가 처리될 때까지 단어를 보호해야 하는지 확인하기 위해 새 입력 시 평가됩니다. 특히 문자열의 경우 항상 바람직한 것은 아닙니다.
패턴"$currentEntity=TaskTitle 'called *"
대화 흐름이 TaskTitle 노드에 도달하면 위의 규칙이 패턴을 평가합니다.

메뉴