KR102518901B1 - Method and apparatus for providing chatbot service using block component - Google Patents
Method and apparatus for providing chatbot service using block component Download PDFInfo
- Publication number
- KR102518901B1 KR102518901B1 KR1020200122354A KR20200122354A KR102518901B1 KR 102518901 B1 KR102518901 B1 KR 102518901B1 KR 1020200122354 A KR1020200122354 A KR 1020200122354A KR 20200122354 A KR20200122354 A KR 20200122354A KR 102518901 B1 KR102518901 B1 KR 102518901B1
- Authority
- KR
- South Korea
- Prior art keywords
- slot
- block
- intent
- component
- masking
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 93
- 230000009471 action Effects 0.000 claims abstract description 129
- 238000012545 processing Methods 0.000 claims abstract description 63
- 230000000873 masking effect Effects 0.000 claims description 100
- 230000004044 response Effects 0.000 claims description 72
- 238000013507 mapping Methods 0.000 claims description 47
- 238000012795 verification Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 abstract description 50
- 238000013461 design Methods 0.000 abstract description 20
- 235000013353 coffee beverage Nutrition 0.000 description 53
- 238000010586 diagram Methods 0.000 description 44
- 230000006870 function Effects 0.000 description 34
- 238000004891 communication Methods 0.000 description 28
- 235000017281 sodium acetate Nutrition 0.000 description 23
- 238000012790 confirmation Methods 0.000 description 15
- 238000004590 computer program Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 238000013515 script Methods 0.000 description 6
- 235000015109 caffè americano Nutrition 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010304 firing Methods 0.000 description 4
- 238000005111 flow chemistry technique Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000010295 mobile communication Methods 0.000 description 4
- 238000003058 natural language processing Methods 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012913 prioritisation Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 235000015116 cappuccino Nutrition 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 235000015114 espresso Nutrition 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 210000001525 retina Anatomy 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002269 spontaneous effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/50—Business processes related to the communications industry
-
- G06Q50/30—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
- G06F16/3329—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/258—Heading extraction; Automatic titling; Numbering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/02—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Business, Economics & Management (AREA)
- Human Computer Interaction (AREA)
- Tourism & Hospitality (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Economics (AREA)
- Operations Research (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Machine Translation (AREA)
- Stored Programmes (AREA)
Abstract
블록 컴포넌트를 이용한 챗봇 서비스 제공 방법 및 장치가 개시된다. 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은, 슬롯 컴포넌트를 생성하는 단계, 액션 컴포넌트를 생성하는 단계 및 슬롯 컴포넌트 및 액션 컴포넌트를 기반으로 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성하는 단계를 포함한다. 이에 따라, 사용자가 챗봇 구동을 위한 프로세스를 설계할 때 보다 유연하고 효과적으로 챗봇 프로세스를 설계할 수 있다.A method and apparatus for providing a chatbot service using block components are disclosed. A chatbot service providing method according to an embodiment of the present invention includes generating a slot component, generating an action component, and an execution block for processing an intent corresponding to a user conversation based on the slot component and the action component. It includes the steps of creating Accordingly, when a user designs a process for driving a chatbot, the chatbot process can be designed more flexibly and effectively.
Description
본 발명은 챗봇(chatbot) 서비스 제공 방법 및 장치에 관한 것으로, 특히 챗봇 서비스를 설계하는 과정에서 슬롯 컴포넌트와 액션 컴포넌트를 이용하여 인텐트를 처리하기 위한 실행블록을 생성하는 기술에 관한 것이다.The present invention relates to a method and apparatus for providing a chatbot service, and more particularly, to a technique for generating an execution block for processing an intent using a slot component and an action component in a process of designing a chatbot service.
본 명세서에서 달리 표시되지 않는 한, 이 섹션에 설명되는 내용들은 이 출원의 청구항들에 대한 종래 기술이 아니며, 이 섹션에 포함된다고 하여 종래 기술이라고 인정되는 것은 아니다.Unless otherwise indicated herein, material described in this section is not prior art to the claims in this application, and inclusion in this section is not an admission that it is prior art.
챗봇(chatbot)은 문자나 음성으로 대화하는 기능이 구비된 컴퓨터 프로그램이나 인공지능을 말하며, 사람처럼 자연스러운 대화를 진행하기 위해 단어나 구(句)의 매칭만을 이용하는 단순한 챗봇부터 복잡하고 정교한 자연어 처리 기술을 적용한 챗봇까지 다양한 수준의 챗봇들이 존재한다.A chatbot refers to a computer program or artificial intelligence equipped with the ability to communicate by text or voice. It ranges from simple chatbots that use only word or phrase matching to complex and sophisticated natural language processing technology to conduct natural conversations like humans. There are various levels of chatbots, including chatbots that apply .
챗봇을 이용한 대화형 AI 에이전트 시스템은 사용자의 입력에 대해 사용자가 원하는 서비스가 어떤 것인지를 파악하고 그 응답을 제공한다. 이 때, 사용자가 자연스러운 문장을 통하여 입력을 제공한 경우, 입력에 처리를 위해 자연어 처리 기술이 적용될 수 있다. 이를 위해, 사용자의 의도(intent)가 동일한 발화 예시 문장들 여러 개를 모아서 하나의 인텐트로 분류한다. 이렇게 분류된 인텐트들 각각에 대응하는 봇 응답을 매핑(mapping)하거나 서비스 API 호출 등의 동작을 정의함으로써 사용자의 다양한 자연 발화를 처리할 수 있는 챗봇 서비스 제공이 가능하다.A conversational AI agent system using a chatbot identifies the service the user wants in response to the user's input and provides a response. In this case, when the user provides an input through a natural sentence, natural language processing technology may be applied to the input for processing. To this end, several utterance example sentences with the same user intent are collected and classified into one intent. It is possible to provide a chatbot service capable of handling various spontaneous speeches of users by mapping bot responses corresponding to each of the thus classified intents or defining operations such as service API calls.
하나의 사용자의 발화 단위(인텐트)별로 하나의 봇 응답 단위(실행블록)를 매핑하는 경우, 서비스 기능이 늘어날수록 봇 응답들과 이에 대응하는 인텐트들도 늘어나게 된다. 인텐트들에 할당되게 되고, 의도 분류시 복수의 근소한 스코어(score) 차이를 가지는 인텐트들이 발생하게 되어 의도 분류에서 오류가 발생할 가능성이 높아진다. When one bot response unit (execution block) is mapped for each user's utterance unit (intent), bot responses and corresponding intents increase as service functions increase. It is assigned to intents, and when intent is classified, a plurality of intents having a slight score difference are generated, which increases the possibility of error in intent classification.
인텐트의 개수가 늘어나지 않더라도, 사용자의 자연스러운 다양한 발화를 인식하기 위해 인텐트에 다양한 발화 패턴을 등록하게 되면, 유사한 패턴이 여러 인텐트에 등록되게 되므로 자연어 처리기에서 서로 다른 인텐트간에 유사한 발화를 정확히 처리하기 어려워서 의도 분류에 오류가 발생하기 쉽다. Even if the number of intents does not increase, if various utterance patterns are registered in the intent to recognize the user's various natural utterances, similar patterns are registered in multiple intents, so that the natural language processor accurately identifies similar utterances between different intents. Difficult to process, prone to errors in intent classification.
즉, 인텐트와 봇 응답 단위가 1:1로 매핑되는 상황에 맞추어 발화를 분류하게 되면 인텐트 개수가 늘어나거나 인텐트에 등록된 예시 발화 문장의 개수가 늘어날수록 자연어 처리기의 성능이 떨어지는 문제가 발생하고, 자연어 처리기의 성능을 보장하기 위해 발화를 분류하게 되면 인텐트 하나에 유사한 발화 패턴을 모두 정의하게 되어 해당 인텐트에 매핑되는 블록의 구현이 매우 복잡해지고 실제 제공되는 여러 기능이 블록 하나에 매핑되는 상황이 되어 관리상의 어려움이 불가피하다.That is, if utterances are classified according to the situation in which intents and bot response units are mapped 1:1, the performance of the natural language processor decreases as the number of intents increases or the number of example utterances registered in the intent increases. occurrence, and when utterances are classified to ensure the performance of the natural language processor, all similar utterance patterns are defined in one intent, which makes the implementation of blocks mapped to the intent very complicated, and many actually provided functions are included in one block. As it becomes a mapping situation, difficulties in management are inevitable.
또한, 대부분의 챗봇은 사용자 발화시 모든 인텐트를 대상으로 서치(search)하여 봇의 동작을 프로세싱하는데, 이와 같이 모든 인텐트를 대상으로 서치하는 경우에는 자연어 처리기의 결과 처리 문제와 봇 응답 및 액션 구성이 복잡해지는 문제가 발생한다.In addition, most chatbots process bot actions by searching for all intents when the user utters them. In the case of searching for all intents in this way, the problem of processing results of natural language processors and bot responses and actions There is a problem that complicates the configuration.
따라서, 인텐트와 봇 응답 단위를 보다 자유롭게 매핑할 수 있는 새로운 챗봇 서비스 제공 기술의 필요성이 절실하게 대두된다.Therefore, there is an urgent need for a new chatbot service providing technology that can more freely map intents and bot response units.
본 발명의 목적은, 복잡한 챗봇 기능들을 수용하면서도 효과적으로 관리가 가능한 챗봇 동작 프로세스 설계 환경을 제공하는 것이다. An object of the present invention is to provide a chatbot operating process design environment capable of effectively managing complex chatbot functions while accommodating them.
또한, 본 발명의 목적은, 봇 처리와 슬롯 필링을 번갈아 처리할 수 있는 챗봇 설계 환경을 제공함으로써 유저 발화와 상관없이 슬롯 필링을 취소하거나 다양한 처리 상황에 따라 유연하게 슬롯 필링을 설정할 수 있도록 하는 것이다.In addition, an object of the present invention is to provide a chatbot design environment capable of alternately processing bot processing and slot filling, so that slot filling can be canceled regardless of user utterance or slot filling can be flexibly set according to various processing situations. .
또한, 본 발명의 목적은, 챗봇 서비스 제공 과정에서 수집되는 개인정보를 마스킹하는 기능을 제공함으로써 외부로 노출될 수 있는 개인정보를 보호하여 정보 보안성을 향상시키는 것이다.In addition, an object of the present invention is to improve information security by protecting personal information that may be exposed to the outside by providing a function of masking personal information collected in the process of providing a chatbot service.
또한, 본 발명의 목적은, 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 N: N(N은 자연수) 매핑이 가능하도록 하여, 여러가지 다른 발화들로 하나의 기능을 실행할 수 있고, 반대로 유사한 발화들로 전혀 다른 기능을 수행할 수 있도록 하는 것이다.In addition, an object of the present invention is to enable N:N (N is a natural number) mapping between intents classified as suitable for a natural language processor and execution blocks processing the intents, so that a single It is to be able to execute a function, and conversely, to be able to perform a completely different function with similar utterances.
또한, 본 발명의 목적은 하나 이상의 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계가 가능해지도록 하는 것이다.Also, an object of the present invention is to enable various intent-execution block mapping relationships by using an intent mapping list including an intent identifier and a slot condition for each one or more intents.
또한, 본 발명의 목적은 상술한 바와 같은 목적들로 한정되지 않으며, 이하의 설명으로부터 또 다른 목적이 도출될 수도 있음은 자명하다.In addition, the object of the present invention is not limited to the objects as described above, and it is obvious that another object may be derived from the following description.
상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법은 슬롯 컴포넌트를 생성하는 단계; 액션 컴포넌트를 생성하는 단계; 및 상기 슬롯 컴포넌트 및 상기 액션 컴포넌트를 기반으로 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성하는 단계를 포함한다.A chatbot service providing method using a block component according to an embodiment of the present invention for achieving the above object includes generating a slot component; creating an action component; and generating an execution block for processing an intent corresponding to a user dialogue based on the slot component and the action component.
이 때, 슬롯 컴포넌트는 상기 실행블록 내의 슬롯 필링을 설정하고, 상기 액션 컴포넌트는 상기 실행블록 내의 액션을 설정할 수 있다.At this time, the slot component may set slot filling in the execution block, and the action component may set an action in the execution block.
이 때, 슬롯 컴포넌트를 생성하는 단계는 상기 슬롯 필링을 위해 프롬프트 메시지 조건, 슬롯 검증, 인텐트 매핑 및 슬롯 재사용 여부 중 적어도 하나를 설정할 수 있다.In this case, the step of generating the slot component may set at least one of a prompt message condition, slot validation, intent mapping, and slot reuse for the slot filling.
이 때, 슬롯 컴포넌트를 생성하는 단계는 슬롯에 입력 가능한 개인정보 유형 별 마스킹 설정 정보를 고려하여 슬롯 마스킹 설정을 수행할 수 있다.At this time, in the step of generating the slot component, slot masking may be set in consideration of masking setting information for each type of personal information that can be input into the slot.
이 때, 액션은 봇 응답, 블록 흐름 제어, 슬롯 제어 및 API 연동 중 적어도 하나를 포함할 수 있다.At this time, the action may include at least one of bot response, block flow control, slot control, and API interworking.
이 때, 마스킹 설정 정보는 마스킹 범위, 추천 마스킹 값, 마스킹 범위에 따른 노출 설정 및 마스킹 해제 가능 여부를 포함할 수 있다.In this case, the masking setting information may include a masking range, a recommended masking value, an exposure setting according to the masking range, and whether masking can be released.
이 때, 슬롯 컴포넌트는 슬롯 마스킹이 실행되면 원본 메시지와 마스킹 메시지를 생성하되, 상기 마스킹 해제 가능 여부를 고려하여 마스킹 해제가 불가능한 경우에는 상기 원본 메시지에도 상기 마스킹 메시지와 동일하게 마스킹된 값을 입력할 수 있다.At this time, the slot component generates an original message and a masking message when slot masking is executed, but if it is impossible to release the masking in consideration of whether the masking can be released, the same masked value as the masking message is input to the original message can
이 때, 액션 컴포넌트를 생성하는 단계는 복수개의 액션들이 설정되는 경우, 상기 복수개의 액션들의 실행을 위한 동작 우선순위를 설정할 수 있다.In this case, in the step of creating an action component, when a plurality of actions are set, operation priorities for execution of the plurality of actions may be set.
이 때, 슬롯 컴포넌트와 상기 액션 컴포넌트는 순서에 상관없이 생성 가능할 수 있다.At this time, the slot component and the action component may be generated regardless of order.
또한, 본 발명의 일실시예에 따른 블록 컴포넌트를 이용한 챗봇 서비스 제공 장치는, 하나 이상의 프로세서; 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리; 를 포함하고, 상기 적어도 하나 이상의 프로그램은, 슬롯 컴포넌트를 생성하고, 액션 컴포넌트를 생성하고, 상기 슬롯 컴포넌트 및 상기 액션 컴포넌트를 기반으로 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성한다.In addition, an apparatus for providing a chatbot service using a block component according to an embodiment of the present invention includes one or more processors; and an execution memory storing one or more programs executed by the one or more processors. The at least one program generates a slot component, an action component, and an execution block for processing an intent corresponding to a user conversation based on the slot component and the action component.
이 때, 슬롯 컴포넌트는 상기 실행블록 내의 슬롯 필링을 설정하고, 상기 액션 컴포넌트는 상기 실행블록 내의 액션을 설정할 수 있다.At this time, the slot component may set slot filling in the execution block, and the action component may set an action in the execution block.
이 때, 적어도 하나 이상의 프로그램은 상기 슬롯 필링을 위해 프롬프트 메시지 조건, 슬롯 검증, 인텐트 매핑 및 슬롯 재사용 여부 중 적어도 하나를 설정할 수 있다.In this case, at least one or more programs may set at least one of a prompt message condition, slot verification, intent mapping, and slot reuse for the slot filling.
이 때, 적어도 하나 이상의 프로그램은 슬롯에 입력 가능한 개인정보 유형 별 마스킹 설정 정보를 고려하여 슬롯 마스킹 설정을 수행할 수 있다.At this time, at least one or more programs may perform slot masking setting in consideration of masking setting information for each type of personal information that can be input to the slot.
이 때, 액션은 봇 응답, 블록 흐름 제어, 슬롯 제어 및 API 연동 중 적어도 하나를 포함할 수 있다.At this time, the action may include at least one of bot response, block flow control, slot control, and API interworking.
이 때, 마스킹 설정 정보는 마스킹 범위, 추천 마스킹 값, 마스킹 범위에 따른 노출 설정 및 마스킹 해제 가능 여부를 포함할 수 있다.In this case, the masking setting information may include a masking range, a recommended masking value, an exposure setting according to the masking range, and whether masking can be released.
이 때, 슬롯 컴포넌트는 슬롯 마스킹이 실행되면 원본 메시지와 마스킹 메시지를 생성하되, 상기 마스킹 해제 가능 여부를 고려하여 마스킹 해제가 불가능한 경우에는 상기 원본 메시지에도 상기 마스킹 메시지와 동일하게 마스킹된 값을 입력할 수 있다.At this time, the slot component generates an original message and a masking message when slot masking is executed, but if it is impossible to release the masking in consideration of whether the masking can be released, the same masked value as the masking message is input to the original message can
이 때, 적어도 하나 이상의 프로그램은 복수개의 액션들이 설정되는 경우, 상기 복수개의 액션들의 실행을 위한 동작 우선순위를 설정할 수 있다.In this case, when a plurality of actions are set, at least one or more programs may set operation priorities for execution of the plurality of actions.
이 때, 슬롯 컴포넌트와 상기 액션 컴포넌트는 순서에 상관없이 생성 가능할 수 있다.At this time, the slot component and the action component may be generated regardless of order.
본 발명에 따르면, 복잡한 챗봇 기능들을 수용하면서도 효과적으로 관리가 가능한 챗봇 동작 프로세스 설계 환경을 제공할 수 있다.According to the present invention, it is possible to provide a chatbot operation process design environment capable of effectively managing complex chatbot functions while accommodating them.
또한, 본 발명은 봇 처리와 슬롯 필링을 번갈아 처리할 수 있는 챗봇 설계 환경을 제공함으로써 유저 발화와 상관없이 슬롯 필링을 취소하거나 다양한 처리 상황에 따라 유연하게 슬롯 필링을 설정할 수 있도록 할 수 있다.In addition, the present invention provides a chatbot design environment capable of alternately processing bot processing and slot filling, so that slot filling can be canceled regardless of user speech or slot filling can be flexibly set according to various processing situations.
또한, 본 발명은 챗봇 서비스 제공 과정에서 수집되는 개인정보를 마스킹하는 기능을 제공함으로써 외부로 노출될 수 있는 개인정보를 보호하여 정보 보안성을 향상시킬 수 있다.In addition, the present invention can improve information security by protecting personal information that may be exposed to the outside by providing a function of masking personal information collected in the course of providing a chatbot service.
또한, 본 발명은 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 N: N(N은 자연수) 매핑이 가능하도록 하여, 여러가지 다른 발화들로 하나의 기능을 실행할 수 있고, 반대로 유사한 발화들로 전혀 다른 기능을 수행할 수 있다.In addition, the present invention enables N:N (N is a natural number) mapping between intents classified as suitable for a natural language processor and execution blocks processing the intents, so that one function can be executed with various different utterances. and conversely, similar utterances can perform completely different functions.
또한, 본 발명은 하나 이상의 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계를 정의하는 것이 가능하다.Also, according to the present invention, it is possible to define various intent-execution block mapping relationships by using an intent mapping list including an intent identifier and a slot condition for each one or more intents.
본 실시 예들의 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The effects of the present embodiments are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the description of the claims.
도 1은 본 발명의 일실시예에 따른 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법을 나타낸 동작 흐름도이다.
도 2는 본 발명에 따른 블록 컴포넌트 기반의 봇 설계 인터페이스의 실시 예를 나타낸 도면이다.
도 3은 도 2에 도시된 봇 설계 인터페이스 중 슬롯 컴포넌트 영역의 일 예를 나타낸 도면이다.
도 4는 도 2에 도시된 봇 설계 인터페이스 중 액션 컴포넌트 영역의 일 예를 나타낸 도면이다.
도 5는 본 발명에 따른 실행블록 '커피 주문'의 일 예를 나타낸 도면이다.
도 6은 도 5에 도시된 실행블록에 적용된 슬롯 필링 설정의 일 예를 나타낸 도면이다.
도 7은 본 발명에 따른 마스킹 설정 정보의 일 예를 나타낸 도면이다.
도 8 내지 도 9는 본 발명에 따른 슬롯 마스킹 설정 인터페이스의 실시 예를 나타낸 도면이다.
도 10은 본 발명에 따른 슬롯 마스킹 처리 과정의 일 예를 나타낸 동작흐름도이다.
도 11은 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치를 나타낸 블록도이다.
도 12는 본 발명의 일실시예에 따른 챗봇 서비스 시스템을 나타낸 블록도이다.
도 13은 본 발명의 일실시예에 따른 '커피 주문' 시나리오의 블록 다이어그램을 나타낸 도면이다.
도 14는 도 13에 도시된 시나리오에 사용되는 인텐트들의 일 예를 나타낸 도면이다.
도 15은 복수개의 인텐트들과 복수개의 실행블록들 사이의 연결을 나타낸 블록도이다.
도 16은 도 14에 도시된 실행블록 커피 선택의 일 예를 나타낸 도면이다.
도 17은 도 14에 도시된 실행블록 핫아이스확인의 일 예를 나타낸 도면이다.
도 18은 도 14에 도시된 실행블록 테이크아웃확인의 일 예를 나타낸 도면이다.
도 19는 도 14 내지 도 18에 도시된 실행블록들의 연결관계를 나타낸 블록도이다.
도 20은 실행블록에서 사용자 응답 대기 상태를 정의하여 블록들을 연결하는 일 예를 도시한 도면이다.
도 21은 발화 패턴별로 정의된 인텐트를 블록에 매핑하는 일 예를 나타낸 도면이다.
도 22는 인텐트와 실행블록을 1:1 매핑하는 경우를 나타낸 도면이다.
도 23은 본 발명의 일실시예에 따른 인텐트 분류 및 블록 매핑의 일 예를 나타낸 도면이다.
도 24는 도 23에 도시된 응답들에 상응하는 실행블록들을 나타낸 도면이다.
도 25는 도 13 내지 도 19에서 예시된 커피주문 시나리오에 상응하는 조건의 포함관계에 따른 우선순위 정렬 예를 나타낸 도면이다.
도 26은 챗봇 실행에 필요한 모듈들의 일 예를 나타낸 블록도이다.
도 27은 챗봇 실행 중 인텐트와 블록을 검색하는 과정을 나타낸 도면이다.
도 28은 본 발명의 다른 실시예에 따른 챗봇 서비스 제공 방법을 나타낸 동작 흐름도이다.
도 29는 발화 패턴수 증가에 따른 자연어 처리기 성능을 나타낸 그래프이다.1 is an operational flowchart illustrating a method of providing a chatbot service using a block component according to an embodiment of the present invention.
2 is a diagram showing an embodiment of a block component-based bot design interface according to the present invention.
FIG. 3 is a diagram illustrating an example of a slot component area of the bot design interface shown in FIG. 2 .
FIG. 4 is a diagram showing an example of an action component region in the bot design interface shown in FIG. 2 .
5 is a diagram showing an example of an execution block 'coffee order' according to the present invention.
FIG. 6 is a diagram showing an example of slot filling settings applied to the execution block shown in FIG. 5 .
7 is a diagram showing an example of masking setting information according to the present invention.
8 to 9 are diagrams illustrating an embodiment of a slot masking setting interface according to the present invention.
10 is an operational flowchart illustrating an example of a slot masking process according to the present invention.
11 is a block diagram showing a chatbot service providing apparatus according to an embodiment of the present invention.
12 is a block diagram illustrating a chatbot service system according to an embodiment of the present invention.
13 is a block diagram of a 'coffee order' scenario according to an embodiment of the present invention.
FIG. 14 is a diagram illustrating an example of intents used in the scenario shown in FIG. 13 .
15 is a block diagram showing connections between a plurality of intents and a plurality of execution blocks.
FIG. 16 is a diagram illustrating an example of the execution block coffee selection shown in FIG. 14 .
FIG. 17 is a diagram illustrating an example of hot ice checking of the execution block shown in FIG. 14 .
FIG. 18 is a diagram illustrating an example of execution block takeout confirmation shown in FIG. 14 .
19 is a block diagram showing a connection relationship between execution blocks shown in FIGS. 14 to 18;
20 is a diagram illustrating an example of connecting blocks by defining a waiting state for a user response in an execution block.
21 is a diagram illustrating an example of mapping intents defined for each speech pattern to blocks.
22 is a diagram illustrating a case of 1:1 mapping between intents and execution blocks.
23 is a diagram illustrating an example of intent classification and block mapping according to an embodiment of the present invention.
FIG. 24 is a diagram showing execution blocks corresponding to the responses shown in FIG. 23 .
FIG. 25 is a diagram illustrating an example of prioritization according to inclusion relationships of conditions corresponding to the coffee ordering scenarios illustrated in FIGS. 13 to 19 .
26 is a block diagram illustrating an example of modules necessary for executing a chatbot.
27 is a diagram illustrating a process of searching for intents and blocks while the chatbot is running.
28 is an operational flowchart illustrating a method of providing a chatbot service according to another embodiment of the present invention.
29 is a graph showing performance of a natural language processor according to an increase in the number of speech patterns.
이하 본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 상세히 설명한다. 다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, detailed descriptions of well-known functions or configurations that may obscure the gist of the present invention will be omitted in the following description and accompanying drawings. In addition, it should be noted that the same components are indicated by the same reference numerals throughout the drawings as much as possible.
이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위한 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다. 또한 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하기 위해 사용하는 것으로, 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용될 뿐, 상기 구성요소들을 한정하기 위해 사용되지 않는다.The terms or words used in this specification and claims described below should not be construed as being limited to a conventional or dictionary meaning, and the inventors should appropriate the concept of terms to describe their invention in the best way. It should be interpreted as a meaning and concept consistent with the technical spirit of the present invention based on the principle that it can be defined in the following way. Therefore, the embodiments described in this specification and the configurations shown in the drawings are only one of the most preferred embodiments of the present invention, and do not represent all of the technical ideas of the present invention, so various alternatives can be made at the time of this application. It should be understood that there may be equivalents and variations. In addition, terms such as first and second are used to describe various components, and are used only for the purpose of distinguishing one component from another, and are not used to limit the components.
챗봇 서비스 제공 시, 사용자에 의한 발화 인식 이후에 봇이 대화를 처리하는 과정을 어떻게 구조화하느냐에 따라 봇 빌더의 사용성이 크게 좌우될 수 있다. When a chatbot service is provided, the usability of the bot builder can be greatly influenced by how the bot handles the conversation after recognizing the utterance by the user.
본 발명은 이를 위해 슬롯과 액션 단위로 기능을 구조화하여 봇이 사용자 대화에 대응하는 순서를 설계함으로써 복잡한 챗봇 서비스의 기능들을 모두 수용하면서도 효과적으로 관리할 수 있는 챗봇 서비스 제공 기술을 제안하고자 한다. To this end, the present invention intends to propose a chatbot service providing technology that can accommodate all complex chatbot service functions and effectively manage them by designing an order in which a bot responds to user conversations by structuring functions in units of slots and actions.
도 1은 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법을 나타낸 동작 흐름도이다.1 is an operational flowchart illustrating a method of providing a chatbot service according to an embodiment of the present invention.
도 1을 참조하면, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 슬롯 컴포넌트를 생성한다(S110).Referring to FIG. 1 , a method for providing a chatbot service according to an embodiment of the present invention creates a slot component (S110).
또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 액션 컴포넌트를 생성한다(S120).In addition, the method for providing a chatbot service according to an embodiment of the present invention creates an action component (S120).
이 때, 슬롯 및 액션은 챗봇 서비스에서 봇 실행 단위인 블록을 설정하는 단위에 해당할 수 있다.At this time, the slot and action may correspond to a unit of setting a block, which is a unit of bot execution in the chatbot service.
이 때, 슬롯 컴포넌트는 실행블록 내의 슬롯 필링을 설정할 수 있고, 액션 컴포넌트는 실행블록 내의 액션을 설정할 수 있다.At this time, the slot component can set slot filling in the execution block, and the action component can set the action in the execution block.
이 때, 슬롯 컴포넌트와 액션 컴포넌트는 순서에 상관없이 생성 가능할 수 있다. 즉, 본 발명에서는 슬롯 컴포넌트에 의한 슬롯 필링과 액션 컴포넌트에 의한 봇 처리 액션을 순서에 상관없이 번갈아 가면서 수행할 수 있다. At this time, slot components and action components may be created regardless of order. That is, in the present invention, slot filling by a slot component and bot processing action by an action component can be alternately performed regardless of order.
예를 들어, 액션 처리가 먼저 필요하면 액션 처리를 먼저 설정하고, 나중에 슬롯 필링을 설정할 수도 있다. For example, if action processing is required first, action processing may be set first, and slot filling may be set later.
이러한 특징을 기반으로, 인텐트 분류, 슬롯 필링, 봇 처리의 순서대로 슬롯 필링을 수행하는 기존 기술에 비해 사용자에 의해 입력되는 유저 발화와 상관없이 슬롯 필링을 취소하거나 다양한 처리 상황에 따라 유연하게 슬롯 필링을 설정할 수 있다는 장점이 발생한다. Based on these characteristics, compared to existing technologies that perform slot filling in the order of intent classification, slot filling, and bot processing, slot filling can be canceled regardless of user input input by the user or slot filling can be flexibly performed according to various processing situations. The advantage of being able to set the filling arises.
예를 들어, Xmind와 같은 툴(tool)을 이용해 작성한 시나리오의 흐름 순서에 따라 한 블록 내에서 프로세스를 모두 처리할 수 있다. 이 때, 봇 디자이너가 설계한 흐름에 따라 프로세스가 처리되므로 봇이 실제로 프로세스를 처리하는 순서를 보다 쉽게 이해할 수 있다.For example, a tool such as Xmind can handle all the processes within one block according to the flow order of the scenario created. At this time, the process is processed according to the flow designed by the bot designer, so it is easier to understand the order in which the bot actually handles the process.
도 2는 본 발명에 따른 블록 컴포넌트 기반의 봇 설계 인터페이스의 실시 예를 나타낸 것으로, 도 2를 참조하면, '로밍 요금제 추천'시나리오 중 슬롯 필링 설정이나 액션 설정이 수행되어야 하는 순간에 챗봇 서비스 제공 시스템으로부터 봇 설계 인터페이스(200)를 제공받아 봇 동작 프로세스를 설계하는 것을 알 수 있다. FIG. 2 shows an embodiment of a block component-based bot design interface according to the present invention. Referring to FIG. 2, a chatbot service providing system at the moment when slot filling setting or action setting is to be performed in a 'roaming rate plan recommendation' scenario It can be seen that the
이 때, 봇 설계 인터페이스(200)는 도 3 내지 도 4에 도시된 것처럼 슬롯 컴포넌트 영역(210, 211)과 액션 컴포넌트 영역(310, 311)을 포함할 수 있다.At this time, the
예를 들어, 도 2에 도시된 것처럼, '로밍 요금제 추천' 시나리오 중에서 로밍에 사용될 회선 종류($line_type)에 대한 슬롯 필링을 설정하기 위해 슬롯 컴포넌트 영역(210, 211)이 활성화되어 제공될 수 있다. For example, as shown in FIG. 2 ,
다른 예를 들어, 도 2에 도시된 것처럼, '로밍 요금제 추천' 시나리오 중에서 로밍에 사용될 회선 종류 체크를 위한 봇 액션이나 선택된 회선 종류에 대한 선택이 완료된 이후 프로세스에 대한 봇 액션을 설정하기 위해 액션 컴포넌트 영역(310, 311)이 활성화되어 제공될 수 있다. For another example, as shown in FIG. 2, an action component for setting a bot action for checking a line type to be used for roaming in a 'roaming rate plan recommendation' scenario or a bot action for a process after selection of a selected line type is completed Areas 310 and 311 may be activated and provided.
이 때, 슬롯 필링은 봇이 사용자 발화에 대한 응답을 출력해주기 위해서 사용자에게 받아야 하는 정보를 획득하는 것에 상응할 수 있다. 종래의 슬롯 필링 기술은 슬롯 값을 채워야 할 슬롯에 대한 유도 메시지와 필수 여부에 대한 설정만을 지원하였기 때문에 봇이 필요로 하는 슬롯 값을 획득하기 위해 질문을 반복해야 하거나, 봇이 다양한 케이스를 처리하기 위해 처리 과정을 여러 블록으로 쪼개서 수행해야 하는 불편함이 존재하였다.In this case, slot filling may correspond to acquiring information that the bot should receive from the user in order to output a response to the user's speech. Since the conventional slot filling technology supported only the induction message for the slot to be filled with the slot value and the setting of whether it was necessary, it is necessary to repeat the question to obtain the slot value required by the bot or to handle various cases. There was an inconvenience in that the processing process had to be divided into several blocks.
본 발명에서는 이러한 문제점을 해결하기 위해 이하에서 설명하는 슬롯 필링의 고급 기능을 제공하고자 한다.In order to solve this problem, the present invention intends to provide an advanced function of slot filling described below.
이 때, 슬롯 필링을 위해 프롬프트 메시지 조건, 슬롯 검증, 인텐트 매핑 및 슬롯 재사용 여부 중 적어도 하나를 설정할 수 있다. At this time, at least one of prompt message conditions, slot verification, intent mapping, and slot reuse may be set for slot filling.
이 때, 프롬프트 메시지 조건 설정은 슬롯 필링을 위해 사용자에게 제공되는 유도 메시지 or 프롬프트 메시지에 조건을 설정하는 것에 상응할 수 있다. In this case, prompt message condition setting may correspond to setting conditions for a prompt message or a prompt message provided to the user for slot filling.
이 때, 슬롯 검증 설정은 해당 슬롯에 채워진 슬롯 값이 유효한지에 대한 검증을 수행하는 것에 상응할 수 있다. At this time, the slot verification setting may correspond to verifying whether a slot value filled in the corresponding slot is valid.
이 때, 인텐트 매핑 설정은 슬롯마다 다양한 발화를 인식할 수 있도록 인텐트를 매핑해주는 것으로, 현재 블록에 포함되지 않은 봇 응답을 제공해줄 수 있기 때문에 하나의 블록이 여러가지 블록의 역할을 수행할 수 있다.At this time, the intent mapping setting maps intents to recognize various utterances for each slot, and since it can provide bot responses that are not included in the current block, one block can play the role of multiple blocks. there is.
예를 들어, 슬롯 필링의 중간에 다른 인텐트나 액션이 포함되는 복잡한 시나리오의 경우, 인텐트 매핑 설정을 통해 블록 단위의 효율적인 설계가 가능할 수 있다. For example, in the case of complex scenarios in which other intents or actions are included in the middle of slot filling, efficient block-by-block design may be possible through intent mapping settings.
이 때, 슬롯 재사용 여부 설정은 슬롯 값으로 한번 입력된 값을 재사용할지 여부를 설정하는 것으로, 시나리오에 따라 컨텐스트 흐름을 유지할 필요가 있는 경우에 사용될 수 있다. At this time, setting whether or not to reuse a slot is to set whether to reuse a value once input as a slot value, and can be used when it is necessary to maintain a content flow according to a scenario.
예를 들어, 도 5에 도시된 것과 같은 '커피 주문' 실행블록(500)을 실행하는 도중에는 사용자로부터 "카푸치노로 바꿔주세요" or "테이크 아웃으로 바꿔주세요"와 같은 발화가 발생할 가능성이 있다. 따라서, 이러한 발화를 처리하기 위해서 '커피 주문'실행블록(500)에서는 '$coffee' 슬롯, '$hotice' 슬롯, '$takeout' 슬롯에 상응하는 슬롯 컴포넌트(511, 512, 513)에 슬롯 재사용 설정을 수행함으로써 해당 슬롯에 입력된 슬롯 값을 재사용 가능한 것으로 설정하여 사용할 수 있다. For example, during execution of the 'coffee order'
이 때, 프롬프트 메시지 조건, 슬롯 검증, 인텐트 매핑 및 슬롯 재사용 등의 설정은 각각 블록에 포함되는 슬롯 컴포넌트에서 수행될 수 있다. At this time, settings such as prompt message conditions, slot verification, intent mapping, and slot reuse may be performed in slot components included in each block.
예를 들어, 도 5 내지 도 6을 참조하면, 본 발명의 일실시예에 따른 '커피 주문' 실행블록(500)은 슬롯 필링을 위한 슬롯 컴포넌트들(511, 512, 513)와 액션 컴포넌트(521)를 포함할 수 있다. 이 때, '커피 주문' 실행블록(500)에 연결된 인텐트 목록에 포함된 인텐트들('order_coffee', 'order_hotice', 'order_takeout')은 인텐트 매핑 리스트를 기반으로 '커피 주문' 실행블록(500)에 매핑된 인텐트들에 상응할 수 있다.For example, referring to FIGS. 5 and 6, the 'coffee order'
이 때, 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비될 수 있고, 적어도 하나 이상의 인텐트에 상응할 수 있다. In this case, the intent mapping list may be provided for each of the execution blocks and may correspond to at least one or more intents.
이 때, 도 5 내지 도 6에 도시된 제2 슬롯 컴포넌트(512)를 참조하면, 프롬프트 메시지 조건(610)과 슬롯 검증(620)이 설정되어 설정된 조건에 따라 프롬프트 메시지가 출력되고, 입력된 슬롯 값에 대해 검증이 수행됨을 알 수 있다. At this time, referring to the
즉, 프롬프트 메시지 조건(610)에 따라 '$coffee' 슬롯에 입력된 슬롯 값이 '에스프레소'가 아닌 경우에 프롬프트 메시지인 "따뜻한걸로 드릴까요? 아이스로 드릴까요?"가 출력되도록 설정할 수 있다. That is, according to the
이 때, 도 5 내지 도 6에 도시된 제3 슬롯 컴포넌트(513)를 참조하면, 인텐트 매핑(630)이 설정되어 '커피 주문' 실행블록(500)에 연결되지 않은 인텐트들('order_togo', 'order_eatin', 'followup.yes', 'followup.no')들이 제3 슬롯 컴포넌트(513)에 연결된 것을 알 수 있다. At this time, referring to the
즉, '커피 주문' 실행블록(500)만으로도 'order_togo', 'order_eatin', 'followup.yes', 'followup.no'등의 인텐트를 처리하는 다른 실행블록의 역할을 수행할 수 있다. That is, the 'order coffee'
도 5 내지 도 6에 도시된 블록 설계에 따르면, 3개의 블록이 필요한 상황을 1개의 블록만으로도 처리함으로써 하나의 블록 내에서 복잡한 슬롯 필링을 처리할 수 있다. According to the block design shown in FIGS. 5 and 6 , complicated slot filling can be processed within one block by processing a situation requiring three blocks with only one block.
종래의 챗봇 빌더 기술에서는 슬롯 단위로 개인정보 유형 별 마스킹을 수행하는 설정을 지원하지 않았기 때문에 챗봇 서비스 제공을 위한 서버에서 직접 개인정보로 인식되는 값들에 대한 보안처리를 수행할 수 밖에 없었다. 그러나, 이러한 처리는 서비스를 제공하는 서버의 부하를 가중시킬 수 있어 서비스를 원활하게 제공하는데 방해되는 요소로 작용될 수 있다. Since the conventional chatbot builder technology did not support setting for masking per personal information type in units of slots, it was inevitable to perform security processing on values recognized as personal information directly in the server for providing chatbot service. However, such processing may increase the load of the server providing the service, which may act as an obstacle to smoothly providing the service.
따라서, 본 발명에서는 슬롯 자체에 정의되는 슬롯 마스킹 기능을 통해 서버에 부담을 주지 않으면서, 서비스 유형별로 상이한 마스킹 정책에 따른 마스킹을 수행하기 위한 기능을 제공하고자 한다.Accordingly, the present invention intends to provide a function for performing masking according to different masking policies for each service type without burdening the server through a slot masking function defined in the slot itself.
이 때, 슬롯에 입력 가능한 개인정보 유형 별 마스킹 설정 정보를 고려하여 슬롯 마스킹 설정을 수행할 수 있다. At this time, slot masking can be set in consideration of masking setting information for each type of personal information that can be input to the slot.
예를 들어, API 연동하거나 메신저 단에서의 처리를 지원하는 방식으로 슬롯 마스킹이 수행되도록 할 수 있다.For example, slot masking may be performed in a manner that interoperates with an API or supports processing at a messenger level.
이 때, 마스킹 설정 정보는 마스킹 범위, 추천 마스킹 값, 마스킹 범위에 따른 노출 설정 및 마스킹 해제 가능 여부를 포함할 수 있다. In this case, the masking setting information may include a masking range, a recommended masking value, an exposure setting according to the masking range, and whether masking can be released.
예를 들어, 도 7에 도시된 것처럼, 이름, 전화번호, 휴대폰번호, 주민등록번호, 이메일, 카드번호, 우편번호, 비밀번호와 같은 8가지 개인정보 유형마다 각각 마스킹 설정 정보를 입력하고, 입력된 마스킹 설정 정보를 참고하여 슬롯 마스킹 설정된 슬롯의 슬롯 값을 마스킹할 수 있다. 이 때, 도 8 내지 도 9에 도시된 것처럼, 마스킹 설정 정보에 포함된 값들을 설정할 수 있는 사용자 인터페이스(User Interface)를 제공함으로써 봇 디자이너가 서비스 별 마스킹 정책에 적합한 슬롯 마스킹 설정을 수행할 수 있도록 할 수 있다.For example, as shown in FIG. 7, masking setting information is input for each of eight types of personal information such as name, phone number, mobile phone number, resident registration number, e-mail, card number, zip code, and password, and the input masking setting A slot value of a slot set for slot masking may be masked by referring to the information. At this time, as shown in FIGS. 8 and 9, by providing a user interface capable of setting values included in the masking setting information, the bot designer can perform slot masking settings suitable for masking policies for each service. can do.
이 때, 도 7 내지 도9에 도시된 것처럼 슬롯 마스킹은 필수 여부와 상관없이 모든 슬롯에 대해 부분 마스킹 또는 전체 마스킹에 상응하게 마스킹 범위를 설정할 수 있고, 마스킹 범위는 슬롯 값에 해당하는 개인정보의 노출 설정을 기준으로 설정될 수 있다.At this time, as shown in FIGS. 7 to 9, regardless of whether slot masking is essential, the masking range can be set corresponding to partial masking or full masking for all slots, and the masking range is the amount of personal information corresponding to the slot value. It can be set based on the exposure settings.
예를 들어, 도 7 내지 도 9를 참조하면, 부분 마스킹의 경우에는 노출 설정에서 노출할 문자열을 설정할 수 있고, 시작점 자리, 자릿수 등을 이용하여 노출할 문자열을 설정할 수 있다. 이 때, 자릿수를 카운팅하는 경우, 개인정보 유형에 따라 특수기호는 무시하고 카운팅될 수 있다. For example, referring to FIGS. 7 to 9 , in the case of partial masking, a character string to be exposed can be set in exposure settings, and a character string to be exposed can be set using a starting point digit, number of digits, and the like. At this time, when counting the number of digits, special symbols may be ignored and counted depending on the type of personal information.
이 때, 슬롯 컴포넌트는 슬롯 마스킹이 실행되면 원본 메시지와 마스킹 메시지를 생성하되, 마스킹 해제 가능 여부를 고려하여 마스킹 해제가 불가능한 경우에는 원본 메시지에도 마스킹 메시지와 동일하게 마스킹된 값을 입력할 수 있다. At this time, the slot component generates an original message and a masking message when slot masking is executed. However, if unmasking is impossible in consideration of whether or not masking can be released, the same masked value as the masking message can be input to the original message.
예를 들어, 도 7에 도시된 이름, 이메일, 전화번호, 휴대폰번호, 우편번호와 같이 마스킹 해제가 가능한 것으로 설정된 경우, 특정 권한을 가진 관리자는 마스킹이 해제된 슬롯 값을 확인할 수 있다. 그러나, 주민등록번호, 카드번호, 비밀번호와 같이 마스킹 해제가 불가능한 것으로 설정된 경우, 특정 권한을 가진 관리자라고 해도 슬롯 값의 원본 내용을 확인할 수 없다. For example, if masking can be unmasked, such as name, e-mail, phone number, mobile phone number, and postal code shown in FIG. 7, an administrator with specific authority can check the unmasked slot value. However, if it is set to something that cannot be unmasked, such as a resident registration number, card number, or password, the original content of the slot value cannot be confirmed even by an administrator with specific authority.
이하에서는 도 10을 참조하여 본 발명의 일실시예에 따른 슬롯 마스킹 처리 과정을 보다 상세하게 설명하도록 한다.Hereinafter, a slot masking process according to an embodiment of the present invention will be described in more detail with reference to FIG. 10 .
먼저, 본 발명의 일실시예에 따른 슬롯 마스킹은 사용자 발화에 의해 입력된 사용자 메시지를 분석하고, 이를 처리할 대상 블록을 찾은 직후에 수행될 수 있다(S1010).First, slot masking according to an embodiment of the present invention may be performed immediately after analyzing a user message input by a user's speech and finding a target block to process it (S1010).
이 후, 마스킹 메시지(masked_message)와 원본 메시지(original_message)에 각각 사용자가 입력한 메시지(user_message)를 기본값으로 입력하여 초기화할 수 있다(S1020). 즉, 슬롯 마스킹이 동작하지 않는 조건에서는 마스킹 메시지(masked_message)와 원본 메시지(original_message)가 모두 사용자가 입력한 메시지(user_message)와 동일할 수 있다.Thereafter, the message input by the user (user_message) may be input as a default value to each of the masked message (masked_message) and the original message (original_message) to be initialized (S1020). That is, under the condition that slot masking does not operate, both the masked message (masked_message) and the original message (original_message) may be the same as the message input by the user (user_message).
이 후, 대상 블록(target_block)에 포함된 모든 슬롯 컴포넌트(slot_component)들에 대해 슬롯 마스킹이 설정되어 있는지 여부를 판단할 수 있다(S1030, S1035).Subsequently, it may be determined whether slot masking is set for all slot components (slot_components) included in the target block (target_block) (S1030 and S1035).
단계(S1035)의 판단결과 슬롯 마스킹이 설정되어 있지 않은 슬롯 컴포넌트(slot_component)에 대해서는 마스킹을 수행하지 않고, 아직 슬롯 마스킹 설정 여부를 확인하지 않은 슬롯 컴포넌트(slot_component)가 남아 있는지 반복적으로 판단하여(S1085) 대상 블록(target_block)에 포함된 모든 슬롯 컴포넌트(slot_component)들을 체크할 수 있다.As a result of the determination in step S1035, masking is not performed on slot components (slot_component) for which slot masking is not set, and it is repeatedly determined whether slot components (slot_component) for which slot masking has not yet been set remain (S1085 ) All slot components (slot_components) included in the target block (target_block) can be checked.
만약, 단계(S1035)의 판단결과 슬롯 마스킹이 설정된 슬롯 컴포넌트일 경우, 슬롯 컴포넌트에 포함된 슬롯들 중 사용자가 입력한 메시지(user_message)에서 추출된 모든 슬롯(msg_slot)을 기준으로(S1040) 이름이 동일한 슬롯이 존재하는지 여부를 판단한다(S1045).If, as a result of the determination in step S1035, it is a slot component for which slot masking is set, the name is based on all slots (msg_slot) extracted from the message (user_message) input by the user among the slots included in the slot component (S1040) It is determined whether the same slot exists (S1045).
단계(S1045)의 판단결과 이름이 동일한 슬롯이 없다면, 마스킹이 설정된 슬롯 컴포넌트 중 사용자가 입력한 메시지(user_message)에서 추출된 모든 슬롯(msg_slot)들과 슬롯 이름이 동일한지 여부를 확인하지 않은 슬롯 컴포넌트(slot_component)가 남아 있는지 반복적으로 판단하여(S1075) 대상 블록(target_block)에 포함되고 마스킹이 설정된 모든 슬롯 컴포넌트(slot_component)들을 체크할 수 있다.If there is no slot with the same name as a result of the determination in step S1045, a slot component that does not check whether the slot name is the same as all slots (msg_slot) extracted from the message (user_message) input by the user among the slot components in which masking is set It is repeatedly determined whether (slot_component) remains (S1075), and all slot components (slot_components) included in the target block (target_block) and for which masking is set may be checked.
즉, 본 발명에 따르면, 하나의 블록에서 여러 번 슬롯 입력이 발생하는 경우, 사용자와 메시지를 주고받으며 다음 슬롯에 대한 슬롯 필링을 처리할 수 있지만, 슬롯 마스킹은 사용자가 메시지를 입력할 때마다 사용자 메시지에 포함된 모든 슬롯과 현재 블록에 포함된 모든 슬롯을 대상으로 수행될 수 있다. That is, according to the present invention, when slot input occurs multiple times in one block, slot filling for the next slot can be processed by exchanging messages with the user. It can be performed for all slots included in the message and all slots included in the current block.
만약, 단계(S1045)의 판단결과 이름이 동일한 슬롯이 존재한다면, 해당 슬롯에 대한 마스킹 설정 정보를 기반으로 마스킹 해제 가능 여부가 마스킹 해제 가능(unmask_allowed)으로 설정되었는지 여부를 판단할 수 있다(S1055).If, as a result of the determination in step S1045, a slot having the same name exists, it is possible to determine whether or not masking can be released is set to unmasking allowed (unmask_allowed) based on the masking setting information for the corresponding slot (S1055) .
단계(S1055)의 판단결과 마스킹 해제 가능(unmask_allowed)으로 설정된 경우, 마스킹 메시지(masked_massage)에 저장된 사용자 입력 메시지(user_message)는 마스킹하고, 원본 메시지(original_message)에 저장된 사용자 입력 메시지는 마스킹하지 않을 수 있다(S1060). If the determination result of step S1055 is set to unmasking allowed (unmask_allowed), the user input message (user_message) stored in the masking message (masked_massage) may be masked, and the user input message stored in the original message (original_message) may not be masked. (S1060).
그러나, 단계(S1055)의 판단결과 마스킹 해제 불가능으로 설정된 경우, 원본 메시지(original_message)에 저장된 사용자 입력 메시지(user_message)도 마스킹 메시지와 동일하게 마스킹할 수 있다(S1070).However, as a result of the determination in step S1055, when unmasking is set to be impossible, the user input message (user_message) stored in the original message (original_message) can also be masked in the same way as the masking message (S1070).
단계(S1075) 단계(S1085)에 의한 반복 과정을 거쳐 대상 블록에 포함된 모든 슬롯들에 대한 마스킹 처리가 완료된 이후에는 사용자 메시지 내역(message history)은 마스킹 메시지가 보이도록 업데이트하고, 마스킹 해제 권한이 있거나 개인정보 열람권한을 가지는 관리자가 마스킹 해제 가능한 원본 메시지를 볼 수 있도록 설정할 수 있다(S1090).After the masking process for all slots included in the target block is completed through the iterative process of step S1075 and step S1085, the user message history is updated to show the masking message, and the unmasking authority It is possible to set so that an administrator who has the right to view personal information can view the original message that can be unmasked (S1090).
즉, 마스킹 해제 권한이 있거나 개인정보 열람권한을 가지는 관리자라 하더라도 마스킹 해제가 불가능한 슬롯의 마스킹되지 않은 원본 메시지는 확인할 수 없다.That is, even if the manager has the right to unmask or the right to view personal information, the unmasked original message of the slot that cannot be unmasked cannot be checked.
상기와 같은 슬롯 마스킹 처리를 완료한 이후에는 일반적인 대화 흐름 처리(액션 실행, 슬롯 필링, 폴백처리 등)를 위한 다음 프로세스를 수행할 수 있다.After completing the slot masking process, the next process for general conversation flow processing (action execution, slot filling, fallback processing, etc.) can be performed.
또한, 본 발명의 일실시예에 따른 액션 컴포넌트에서는 액션을 실행할 조건을 설정하여, 조건이 만족되었을 때 설정된 액션이 실행되도록 할 수도 있는데, 액션 컴포넌트에 의해 설정된 조건에 따라 액션을 설계하여 봇의 구동을 설정할 수 있다. In addition, the action component according to an embodiment of the present invention may set a condition to execute an action so that the set action is executed when the condition is satisfied. can be set.
이 때, 액션은 봇 응답, 블록 흐름 제어, 슬롯 제어 및 API 연동 중 적어도 하나를 포함할 수 있다. At this time, the action may include at least one of bot response, block flow control, slot control, and API interworking.
이 때, 봇 응답 액션은 사용자 발화에 대한 봇의 응답 메시지에 해당하는 것으로, 액션 컴포넌트에서는 다양한 사용자 발화 각각에 대응하는 봇 응답 액션을 설정함으로써 챗봇 서비스를 이용하는 사용자에게 컨텍스트 상황에 적절한 봇 응답을 출력해줄 수 있다. At this time, the bot response action corresponds to the bot's response message to the user's utterance, and the action component outputs a bot response appropriate to the context situation to the user using the chatbot service by setting bot response actions corresponding to each of various user utterances. can do it
이 때, 블록 흐름 제어 액션은 현재 블록 이후에 실행될 블록을 결정하는 것으로, 현재 블록에서 블록 흐름 제어 액션 이후에 설정된 액션들은 실행되지 않을 수 있다. 블록 흐름 제어 액션은 사용자 응답 대기 액션, 스탑(stop) 액션, 백(Back) 액션 등을 포함할 수 있다. At this time, the block flow control action determines a block to be executed after the current block, and actions set after the block flow control action in the current block may not be executed. The block flow control action may include a user response waiting action, a stop action, a back action, and the like.
이 때, 사용자 응답 대기 액션은 현재 블록 이후에 실행 가능한 복수개의 블록들을 지정하여 연결시키는 액션에 해당하는 것으로, 같은 시나리오에 포함된 블록으로 연결하는 링크(Link) 액션, 다른 시나리오의 메인 블록으로 연결하는 점프(Jump) 액션, 다른 시나리오의 모든 메인 블록들로 연결하는 시나리오(Scenario) 액션 등을 포함할 수 있다.At this time, the user response waiting action corresponds to an action that designates and connects a plurality of blocks that can be executed after the current block, such as a Link action that connects to blocks included in the same scenario, and a link to the main block of another scenario. It can include a jump action to do, a scenario action to connect all main blocks of other scenarios, and the like.
이 때, 스탑(stop) 액션은 시나리오에 따른 봇 처리 중간에 시나리오 상 처리할 수 없는 상황이 발생했을 경우에 시나리로 흐름을 중단하는 액션에 상응할 수 있다.In this case, the stop action may correspond to an action of stopping the flow of the scenario when a situation that cannot be handled according to the scenario occurs in the middle of processing the bot according to the scenario.
이 때, 백(Back) 액션은 시나리오 상에서 이전 단계의 입력으로 이동하는 액션에 상응할 수 있다. 예를 들어, Back:1, Back:2 ??, Back: n 등으로 여러 개의 back 액션을 지정해 둠으로써 이전 단계 중 어느 단계로 이동할지 지정할 수 있다.In this case, the Back action may correspond to an action of moving to an input of a previous step in the scenario. For example, by specifying several back actions, such as Back:1, Back:2 ??, Back: n, etc., you can specify which step to move to among the previous steps.
이 때, 슬롯 제어 액션은 슬롯 값 자체를 설정하는 것으로, 어사인(Assign) 액션, 리셋(Reset) 액션, 리프롬프트(Re-prompt) 액션 등을 포함할 수 있다. At this time, the slot control action is to set the slot value itself, and may include an assign action, a reset action, a re-prompt action, and the like.
이 때, 어사인(Assign) 액션은 슬롯 값을 변경하는 액션에 상응하는 것으로, 현재 슬롯 값이 있는 슬롯 및 아직 슬롯 값이 없는 슬롯에 대해 실행될 수 있다.At this time, the assign action corresponds to an action of changing a slot value, and can be executed for a slot with a current slot value and a slot without a slot value yet.
이 때, 리셋(Reset) 액션은 슬롯 값을 초기화하는 액션에 상응하는 것으로, 슬롯 값을 삭제(empty)할 수 있다.At this time, the reset action corresponds to an action for initializing the slot value, and the slot value can be deleted (empty).
이 때, 리프롬프트(Re-prompt) 액션은 이전 슬롯 필링을 재입력하는 액션에 상응하는 것으로, 슬롯 필링을 수행할 슬롯 컴포넌트를 다시 동작하게 할 수 있다.At this time, the Re-prompt action corresponds to the action of re-inputting the previous slot filling, and can cause the slot component to perform slot filling to operate again.
예를 들어, 커피 주문 시나리오 상에서 '$커피' 슬롯에 대한 슬롯 필링을 수행하여 슬롯 값으로 '아메리카노'를 입력하였으나, 현재 '아메리카노'를 제공 불가능한 상황이라고 가정할 수 있다. 이 때, 리프롬프트 액션을 통해 '$커피' 슬롯에 대한 슬롯 필링을 수행하는 슬롯 컴포넌트를 다시 동작하게 함으로써 '아메리카노'가 아닌 다른 값을 슬롯 값으로 입력할 수 있다.For example, it can be assumed that 'Americano' is entered as a slot value by performing slot filling on the '$coffee' slot in the coffee ordering scenario, but 'Americano' cannot currently be provided. At this time, a value other than 'Americano' can be input as a slot value by re-operating the slot component that performs slot filling for the '$coffee' slot through a re-prompt action.
이 때, API 연동 액션은 외부 데이터베이스나 API를 연동하는 것으로, http 액션, 스크립트 액션 등을 이용하여 API 액션을 정의할 수 있다.In this case, the API interworking action is to interoperate with an external database or API, and the API action may be defined using an http action, a script action, or the like.
이 때, http 액션은 외부 API를 http 형식으로 호출하는 동작을 실행하는 액션에 상응하는 것으로, 클라이언트가 데이터를 요청(requeat)하면 서버가 요청을 처리하여 클라이언트에게 응답(response)하는 방식으로 동작할 수 있다. At this time, the http action corresponds to an action that executes an operation of calling an external API in an http format. When a client requests data, the server processes the request and responds to the client. can
이 때, 스크립트 액션은 스크립트 언어로 작성된 복잡한 동작을 실행하는 액션에 상응하는 것으로, 스크립트는 설계 과정에서 봇 디자이너가 직접 작성할 수도 있다.At this time, the script action corresponds to an action that executes a complex operation written in a script language, and the script may be directly written by a bot designer during the design process.
이 때, 복수개의 액션들이 설정되는 경우, 복수개의 액션들의 실행을 위한 동작 우선순위를 설정할 수 있다. At this time, when a plurality of actions are set, operation priorities for execution of the plurality of actions may be set.
예를 들어, 하나의 액션 컴포넌트 내에 봇 응답 이외에 stop, assign 과 같은 액션들이 조합되어 있는 경우, 미리 설정된 동작 우선순위에 따라 액션들을 실행할 수 있다. For example, when actions such as stop and assign are combined in one action component in addition to a bot response, the actions can be executed according to preset action priorities.
또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 슬롯 컴포넌트와 액션 컴포넌트를 기반으로 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성한다(S130).In addition, the chatbot service providing method according to an embodiment of the present invention generates an execution block for processing an intent corresponding to a user conversation based on a slot component and an action component (S130).
이와 같은 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법을 통해 복잡한 챗봇 기능들을 수용하면서도 효과적으로 관리가 가능한 챗봇 동작 프로세스 설계 환경을 제공할 수 있다.Through such a chatbot service providing method using block components, it is possible to provide a chatbot operation process design environment that can accommodate complex chatbot functions and manage them effectively.
또한, 봇 처리와 슬롯 필링을 번갈아 처리할 수 있는 챗봇 설계 환경을 제공함으로써 유저 발화와 상관없이 슬롯 필링을 취소하거나 다양한 처리 상황에 따라 유연하게 슬롯 필링을 설정할 수 있도록 할 수 있다.In addition, by providing a chatbot design environment capable of processing bot processing and slot filling alternately, slot filling can be canceled regardless of user utterance or slot filling can be flexibly set according to various processing situations.
도 11은 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치를 나타낸 블록도이다.11 is a block diagram showing a chatbot service providing apparatus according to an embodiment of the present invention.
도 11을 참조하면, 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치는, 프로세서(1120) 및 실행메모리(1130)를 포함한다. 실시예에 따라, 챗봇 서비스 제공 장치는 통신부(1110)를 더 포함할 수 있다.Referring to FIG. 11 , an apparatus for providing a chatbot service according to an embodiment of the present invention includes a
통신부(1110)는 네트워크와 같은 통신망을 통해 다수의 다른 장치들과 챗봇 서비스와 관련된 정보를 송신하는 역할을 할 수 있다. 이 때, 네트워크는 장치들간에 데이터를 전달하는 통로를 제공하는 것으로서, 기존에 이용되는 네트워크 및 향후 개발 가능한 네트워크를 모두 포괄하는 개념이다.The
예를 들면, 네트워크는 인터넷 프로토콜(IP)을 통하여 대용량 데이터의 송수신 서비스 및 끊기는 현상이 없는 데이터 서비스를 제공하는 아이피망, 아이피를 기반으로 서로 다른 망을 통합한 아이피망 구조인 올 아이피(All IP)망 등일 수 있으며, 유선망, Wibro(Wireless Broadband)망, WCDMA를 포함하는 3세대 이동통신망, HSDPA(High Speed Downlink Packet Access)망 및 LTE 망을 포함하는 3.5세대 이동통신망, LTE advanced를 포함하는 4세대 이동통신망, 위성통신망 및 와이파이(Wi-Fi)망 중에서 하나 이상을 결합하여 이루어질 수 있다.For example, the network is an IP network that provides large data transmission and reception services and data services without disconnection through the Internet Protocol (IP), and All IP, an IP network structure that integrates different networks based on IP. ) network, and can be a wired network, Wibro (Wireless Broadband) network, 3G mobile communication network including WCDMA, 3.5G mobile communication network including HSDPA (High Speed Downlink Packet Access) network and LTE network, 4 including LTE advanced It may be achieved by combining one or more of a household mobile communication network, a satellite communication network, and a Wi-Fi network.
예를 들어, 네트워크는 한정된 지역 내에서 각종 정보장치들의 통신을 제공하는 유무선근거리 통신망, 이동체 상호 간 및 이동체와 이동체 외부와의 통신을 제공하는 이동통신망, 위성을 이용해 지구국과 지구국간 통신을 제공하는 위성통신망이거나 유무선 통신망 중에서 어느 하나이거나, 둘 이상의 결합으로 이루어질 수 있다. 한편, 네트워크의 전송 방식 표준은, 기존의 전송 방식 표준에 한정되는 것은 아니며, 향후 개발될 모든 전송 방식 표준을 포함할 수 있다.For example, the network includes a wired and wireless local area network that provides communication between various information devices within a limited area, a mobile communication network that provides communication between mobile bodies and between mobile bodies and the outside of the mobile body, and a satellite that provides communication between earth stations and earth stations. It may be a satellite communication network or any one of wired and wireless communication networks, or a combination of two or more. Meanwhile, the transmission method standards of the network are not limited to existing transmission method standards, and may include all transmission method standards to be developed in the future.
실행메모리(1130)는 프로세서(1120)에 의해 실행되는 적어도 하나 이상의 프로그램을 저장한다.The
이 때, 적어도 하나 이상의 프로그램은 슬롯 컴포넌트를 생성하고, 액션 컴포넌트를 생성하고, 슬롯 컴포넌트 및 액션 컴포넌트를 기반으로 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성한다. At this time, at least one program creates a slot component, an action component, and an execution block for processing an intent corresponding to a user conversation based on the slot component and the action component.
이 때, 슬롯 컴포넌트는 상기 실행블록 내의 슬롯 필링을 설정하고, 상기 액션 컴포넌트는 상기 실행블록 내의 액션을 설정할 수 있다.At this time, the slot component may set slot filling in the execution block, and the action component may set an action in the execution block.
이 때, 적어도 하나 이상의 프로그램은 상기 슬롯 필링을 위해 프롬프트 메시지 조건, 슬롯 검증, 인텐트 매핑 및 슬롯 재사용 여부 중 적어도 하나를 설정할 수 있다.In this case, at least one or more programs may set at least one of a prompt message condition, slot verification, intent mapping, and slot reuse for the slot filling.
이 때, 적어도 하나 이상의 프로그램은 슬롯에 입력 가능한 개인정보 유형 별 마스킹 설정 정보를 고려하여 슬롯 마스킹 설정을 수행할 수 있다.At this time, at least one or more programs may perform slot masking setting in consideration of masking setting information for each type of personal information that can be input to the slot.
이 때, 액션은 봇 응답, 블록 흐름 제어, 슬롯 제어 및 API 연동 중 적어도 하나를 포함할 수 있다.At this time, the action may include at least one of bot response, block flow control, slot control, and API interworking.
이 때, 마스킹 설정 정보는 마스킹 범위, 추천 마스킹 값, 마스킹 범위에 따른 노출 설정 및 마스킹 해제 가능 여부를 포함할 수 있다.In this case, the masking setting information may include a masking range, a recommended masking value, an exposure setting according to the masking range, and whether masking can be released.
이 때, 슬롯 컴포넌트는 슬롯 마스킹이 실행되면 원본 메시지와 마스킹 메시지를 생성하되, 상기 마스킹 해제 가능 여부를 고려하여 마스킹 해제가 불가능한 경우에는 상기 원본 메시지에도 상기 마스킹 메시지와 동일하게 마스킹된 값을 입력할 수 있다.At this time, the slot component generates an original message and a masking message when slot masking is executed, but if it is impossible to release the masking in consideration of whether the masking can be released, the same masked value as the masking message is input to the original message can
이 때, 적어도 하나 이상의 프로그램은 복수개의 액션들이 설정되는 경우, 상기 복수개의 액션들의 실행을 위한 동작 우선순위를 설정할 수 있다.In this case, when a plurality of actions are set, at least one or more programs may set operation priorities for execution of the plurality of actions.
이 때, 슬롯 컴포넌트와 상기 액션 컴포넌트는 순서에 상관없이 생성 가능할 수 있다.At this time, the slot component and the action component may be generated regardless of order.
도 11에 도시된 장치는 숫자 및 문자 정보 등의 다양한 정보를 입력 받고, 각종 기능을 설정 및 장치의 기능 제어와 관련하여 입력되는 신호를 입력부를 통해 프로세서(1120)로 전달할 수 있다. 또한, 입력부는 사용자의 터치 또는 조작에 따른 입력 신호를 발생하는 키패드와 터치패드 중 적어도 하나를 포함하여 구성할 수 있다. 이 때, 장치의 입력부는 표시부와 함께 하나의 터치패널(또는 터치 스크린(touch screen))의 형태로 구성되어 입력과 표시 기능을 동시에 수행할 수 있다. 또한, 입력부는 키보드, 키패드, 마우스, 조이스틱 등과 같은 입력 장치 외에도 향후 개발될 수 있는 모든 형태의 입력 수단이 사용될 수 있다.The device shown in FIG. 11 may receive various types of information, such as number and character information, and transmit input signals related to setting various functions and controlling functions of the device to the
또한, 표시부는 장치의 기능 수행 중에 발생하는 일련의 동작상태 및 동작결과 등에 대한 정보를 표시할 수 있다. 또한, 표시부는 장치의 메뉴 및 사용자가 입력한 사용자 데이터 등을 표시할 수 있다. 여기서, 표시부는 액정표시장치(LCD, Liquid Crystal Display), 초박막 액정표시장치(TFT-LCD, Thin Film Transistor LCD), 발광다이오드(LED, Light Emitting Diode), 유기 발광다이오드(OLED, Organic LED), 능동형 유기발광다이오드(AMOLED, Active Matrix OLED), 레티나 디스플레이(Retina Display), 플렉시블 디스플레이(Flexible display) 및 3차원(3Dimension) 디스플레이 등으로 구성될 수 있다. 이 때, 표시부가 터치스크린 형태로 구성된 경우, 표시부는 입력부의 기능 중 일부 또는 전부를 수행할 수 있다.In addition, the display unit may display information about a series of operation states and operation results that occur while performing functions of the device. Also, the display unit may display menus of the device and user data input by the user. Here, the display unit includes a liquid crystal display (LCD), a thin film transistor LCD (TFT-LCD), a light emitting diode (LED), an organic light emitting diode (OLED), It can be composed of an active organic light emitting diode (AMOLED, Active Matrix OLED), a Retina Display, a flexible display, and a 3D display. At this time, when the display unit is configured in the form of a touch screen, the display unit may perform some or all of the functions of the input unit.
또한, 장치의 저장부는 데이터를 저장하기 위한 장치로, 주 기억장치 및 보조 기억장치를 포함하고, 장치의 기능 동작에 필요한 응용 프로그램을 저장할 수 있다. 이러한 저장부는 크게 프로그램 영역과 데이터 영역을 포함할 수 있다. 여기서, 장치는 사용자의 요청에 상응하여 각 기능을 활성화하는 경우, 프로세서(1120)의 제어 하에 해당 응용 프로그램들을 실행하여 각 기능을 제공하게 된다.In addition, the storage unit of the device is a device for storing data, includes a main memory device and an auxiliary memory device, and may store application programs required for functional operation of the device. This storage unit may largely include a program area and a data area. Here, when the device activates each function in response to a user's request, the corresponding application programs are executed under the control of the
또한, 통신부(1110)는 네트워크을 통해 데이터를 송수신하기 위한 기능을 수행할 수 있다. 여기서 통신부(1110)는 송신되는 신호의 주파수를 상승 변환 및 증폭하는 RF 송신 수단과 수신되는 신호를 저잡음 증폭하고 주파수를 하강 변환하는 RF 수신 수단 등을 포함할 수 있다. 이러한 통신부(1810)는 무선통신 모듈 및 유선 통신 모듈 중 적어도 하나를 포함할 수 있다. 그리고, 무선통신 모듈은 무선 통신 방법에 따라 데이터를 송수신하기 위한 구성이며, 장치가 무선 통신을 이용하는 경우, 무선망 통신 모듈, 무선랜 통신 모듈 및 무선팬 통신 모듈 중 어느 하나를 이용하여 데이터를 장치로 송수신할 수 있다. 또한, 유선통신 모듈은 유선으로 데이터를 송수신하기 위한 것이다. 유선통신 모듈은 유선을 통해 네트워크에 접속하여, 장치에 데이터를 송수신할 수 있다. 즉 장치는 무선통신 모듈 또는 유선통신 모듈을 이용하여 네트워크에 접속하며, 네트워크을 통해 다른 장치와 데이터를 송수신할 수 있다.In addition, the
또한, 프로세서(1120)는 운영 체제(OS, Operation System) 및 각 구성을 구동시키는 프로세스 장치가 될 수 있다.In addition, the
상술한 구성에 의하여, 본 발명의 일실시예에 따른 블록 컴포넌트를 이용한 챗봇 서비스 제공 장치는 복잡한 챗봇 기능들을 수용하면서도 효과적으로 관리가 가능한 챗봇 동작 프로세스 설계 환경을 제공할 수 있다.According to the above configuration, the chatbot service providing apparatus using block components according to an embodiment of the present invention can provide a chatbot operating process design environment capable of effectively managing complex chatbot functions while accommodating them.
또한, 본 발명의 일실시예에 따른 블록 컴포넌트를 이용한 챗봇 서비스 제공 장치는 봇 처리와 슬롯 필링을 번갈아 처리할 수 있는 챗봇 설계 환경을 제공함으로써 유저 발화와 상관없이 슬롯 필링을 취소하거나 다양한 처리 상황에 따라 유연하게 슬롯 필링을 설정할 수 있도록 할 수 있다.In addition, an apparatus for providing a chatbot service using a block component according to an embodiment of the present invention provides a chatbot design environment capable of alternately processing bot processing and slot filling, thereby canceling slot filling regardless of user utterance or in various processing situations. According to this, slot filling can be set flexibly.
또한, 본 발명의 일실시예에 따른 블록 컴포넌트를 이용한 챗봇 서비스 제공 장치는 챗봇 서비스 제공 과정에서 수집되는 개인정보를 마스킹하는 기능을 제공함으로써 외부로 노출될 수 있는 개인정보를 보호하여 정보 보안성을 향상시킬 수 있다.In addition, the chatbot service providing apparatus using a block component according to an embodiment of the present invention provides a function of masking personal information collected in the process of providing a chatbot service, thereby protecting personal information that may be exposed to the outside, thereby improving information security. can improve
또한, 본 발명은 대화형 AI 에이전트 시스템에 의해 수행되는 자연어 처리에 따라 자연어의 입력에 대응하는 인텐트를 유사한 속성에 따라 분류하고, 분류된 복수의 인텐트들을 봇의 처리 단위인 블록에 매핑하는 기술에 관한 것이다.In addition, according to the present invention, according to natural language processing performed by a conversational AI agent system, intents corresponding to natural language inputs are classified according to similar properties, and a plurality of classified intents are mapped to a block, which is a processing unit of a bot. It's about technology.
유용한 챗봇 서비스를 위해서는 사업이나 서비스 도메인별 용어들에 대한 자연어 처리 능력 및 제공되는 기능이나 업무에 대한 처리 능력을 지속적으로 향상시킬 필요가 있다.For a useful chatbot service, it is necessary to continuously improve the ability to process natural language for terms by business or service domain and the processing ability for provided functions or tasks.
이를 위해, 다양한 도메인별 용어들과 문장들이 자연어 처리기에 의하여 처리될 수 있도록 자연어 처리기를 학습시킬 필요가 있는데, 이 때 자연어 처리기에서 유사 발화들 간의 충돌이 발생하지 않도록 인텐트들을 분류해야 한다. 즉, 기능이나 업무 단위로만 인텐트를 정의하는 것이 아니라 자연어 처리(Natural Language Understanding; NLU)의 관점에서의 인텐트 정의가 필요한 것이다.To this end, it is necessary to train the natural language processor so that various domain-specific terms and sentences can be processed by the natural language processor. At this time, the natural language processor needs to classify intents so that collisions between similar utterances do not occur. In other words, it is necessary to define intent from the perspective of Natural Language Understanding (NLU), rather than defining intent only by function or task.
한편, 기능이나 업무에 대한 처리가 효과적으로 이루어지기 위해서는 세부 처리 단계나 흐름이 실행블록들로 정의되어야 하고, 정의된 실행블록들의 연결관계(선후관계)가 정의될 필요가 있다. 이 때, 연결관계는 리스트나 트리 형태보다는 여러 실행블록들을 자유롭게 연결하기 위한 그래프 형태로 정의되는 것이 바람직하다. 이 때, 실행블록들은 자연어 처리의 관점보다는 서비스가 제공하는 기능에 적합하게 정의되는 것이 바람직하다.On the other hand, in order to efficiently process functions or tasks, detailed processing steps or flows need to be defined as execution blocks, and a connection (order relationship) between the defined execution blocks needs to be defined. At this time, it is preferable that the connection relationship be defined in the form of a graph for freely connecting various execution blocks rather than in the form of a list or tree. At this time, it is preferable that the execution blocks are defined to suit the function provided by the service rather than from the perspective of natural language processing.
이와 같이, 각각의 목적에 맞게 적합한 형태로 정의된 인텐트들과 블록들을 자유롭게(N:N) 맵핑할 수 있어야, 사용자의 의도에 부합하는 챗봇 서비스를 효율적으로 제공할 수 있다. 즉, 인텐트 하나가 여러 블록에 쓰일 수 있고, 또 블록 하나가 여러 인텐트들을 처리할 수 있어야 하고, 이를 위해서는 인텐트들과 블록들이 1:1 매핑이 아닌 N: N으로 매핑될 수 있어야 한다.In this way, it is necessary to be able to freely (N:N) map intents and blocks defined in a form suitable for each purpose in order to efficiently provide a chatbot service that meets the user's intention. In other words, one intent can be written to several blocks, and one block must be able to handle multiple intents. To this end, intents and blocks must be mapped N:N rather than 1:1. .
많은 양의 발화 패턴들이 다양한 인 텐트들로 분류된 대량의 데이터를 처리할 때, 유사 발화들 간의 충돌이 발생하고 이에 대한 검증과 처리가 필요하다.When processing a large amount of data in which a large amount of utterance patterns are classified into various intents, collisions between similar utterances occur, which requires verification and processing.
이 때, 유사 발화 패턴들을 같은 인 텐트로 묶고, 슬롯을 기준으로 조건을 주어 서로 다른 봇 응답이 가능하도록 대응할 수 있다.At this time, similar utterance patterns can be grouped into the same intent, and conditions can be given based on slots to enable different bot responses.
또한, 유사 발화는 아니지만, 같은 응답으로 처리 가능할 수 있도록, 하나의 봇 응답 단위(실행블록)에 복수 개의 사용자 발화단위들을 매핑하는 것이 가능하도록 하면, 발화 유형이 다르더라도 같은 응답으로 처리하는 것이 가능하게 되어 효율적인 인텐트 관리가 가능하다.In addition, if it is possible to map a plurality of user speech units to one bot response unit (execution block) so that they can be processed with the same response, even though they are not similar speech, it is possible to process them with the same response even if the speech type is different. This enables efficient intent management.
이하에서, 챗봇 서비스는 사용자의 음성을 기반으로 하는 음성 서비스뿐만 아니라 사용자로부터 입력된 텍스트를 기반으로 하는 메신저 서비스를 커버하는 개념이다.Hereinafter, a chatbot service is a concept covering not only a voice service based on a user's voice but also a messenger service based on text input from a user.
챗봇의 설계 및 구현은, 크게 챗봇 빌더, 자연어 처리(Natural Language Understanding; NLU) 및 대화흐름처리(Dialog Management; DM)의 3부분으로 나눌 수 있다. 이 때, 챗봇 빌더에서는 대화흐름처리(DM)가 동작하기 위한 데이터를 구조화하고 정의하여 이를 제공하고, 대화흐름처리(DM)에서는 이 데이터를 기반으로 봇 대응을 처리한다.Chatbot design and implementation can be largely divided into three parts: chatbot builder, natural language understanding (NLU), and dialog management (DM). At this time, the chatbot builder structures and defines data for the dialog flow processing (DM) to operate and provides it, and the dialog flow processing (DM) processes the bot response based on this data.
챗봇 프로세스가 구동을 위해 크게 두 개의 작업영역이 필요할 수 있는데, 하나는 봇 디자이너가 봇 구동 프로세스를 정의하는 작업영역이고, 다른 하나는 정의된 프로세스를 실행하는 실행영역이다.A chatbot process may require two workspaces to run. One is a workspace where the bot designer defines the bot driving process, and the other is an execution area where the defined process is executed.
도 12는 본 발명의 일실시예에 따른 챗봇 서비스 시스템을 나타낸 블록도이다.12 is a block diagram illustrating a chatbot service system according to an embodiment of the present invention.
도 12를 참조하면, 챗봇 서비스 시스템은 챗봇(1210), 자연어 처리기(1220), 챗봇 리소스 데이터베이스(1230) 및 챗봇 빌더(1240)를 포함한다.Referring to FIG. 12 , the chatbot service system includes a
챗봇(1210)은 사용자로부터 발화문장을 입력 받고, 이에 대한 응답을 생성하여 사용자에게 챗봇 응답을 제공한다.The
자연어 처리기(1220)는 챗봇으로부터 발화문장을 제공 받고, 챗봇 리소스 데이터베이스(1230)로부터 인텐트 정의 정보를 제공 받아서 인텐트 분류 결과 및 슬롯 추출 결과를 생성하여 챗봇(1210)으로 제공한다.The
챗봇 리소스 데이터베이스(1230)는 챗봇 빌더로부터 인텐트 정의 정보, 블록 정보, 응답 정보 및 시나리오 정보 등을 제공 받고, 챗봇(1210)으로 블록 정보, 응답 정보 및 시나리오 정보를 제공하고, 자연어 처리기(1220)로 인텐트 정의 정보를 제공한다.The chatbot resource database 1230 receives intent definition information, block information, response information, and scenario information from the chatbot builder, provides block information, response information, and scenario information to the
챗봇 빌더(1240)는 봇디자이너로부터 챗봇 리소스에 관한 입력을 제공 받고, 챗봇(1210)을 생성하고, 챗봇 리소스 데이터베이스(1230)로 인텐트 정의 정보, 블록 정보, 응답 정보 및 시나리오 정보 등을 제공한다.The
챗봇 빌더(1240)에서 학습 발화문장과 봇 처리의 중요정보인 슬롯(slot)을 인텐트로 정의하고, 정의된 인텐트를 실행블록에 매핑하고 실행블록에서 조건을 설정하고 이에 따른 봇의 액션을 정의할 수 있다. 또한, 챗봇 빌더(1240)에서 응답대기상태에서 처리할 수 있는 블록들이 설정되고, 이 블록들이 그래프 형태의 시나리오로 정의될 수 있다.In the
이 때, 봇 디자이너는 챗봇 빌더(1240)를 통해 봇 구동 프로세스를 정의하는 작업을 하는데, 먼저 주요 업무처리에 대한 봇 시나리오들이 그래프 형태로 정의된 블록 다이어그램이 제공될 수 있다.At this time, the bot designer works to define the bot driving process through the
도 13은 본 발명의 일실시예에 따른 '커피 주문' 시나리오의 블록 다이어그램을 나타낸 도면이다.13 is a block diagram of a 'coffee order' scenario according to an embodiment of the present invention.
도 13을 참조하면, 커피 주문 챗봇의 블록 발화 시나리오에서는 먼저 사용자의 "커피 주문할게요"라는 발화가 수신된다(1311).Referring to FIG. 13 , in the block speech scenario of the coffee ordering chatbot, a user's speech "I will order coffee" is first received (1311).
또한, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 "무슨 커피 드릴까요?"라는 발화를 실행한다(1321).In addition, in the block speech scenario of the coffee ordering chatbot, the chatbot executes the speech "What kind of coffee would you like?" (1321).
챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 원하는 커피 이름을 발화한다(1312).In response to the chatbot's speech, in the coffee ordering chatbot's block speech scenario, the user's desired coffee name is spoken (1312).
사용자의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 "따뜻한걸로 드릴까요? 아이스로 드릴까요?"라는 발화를 실행한다(1322).In response to the user's speech, in the block speech scenario of the coffee ordering chatbot, the chatbot executes the speech "Would you like something warm or iced?" (1322).
챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 핫(hot) 또는 아이스(ice)를 선택한다(1313).In response to the conversation of the chatbot, the user selects hot or ice in the scenario of the coffee ordering chatbot's block speech (1313).
사용자의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 "드시고가실건가요?"라는 발화를 실행한다(1323).In response to the user's speech, in the block speech scenario of the coffee ordering chatbot, the chatbot executes the speech "Are you going to eat?" (1323).
챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 매장식사 또는 테이크아웃을 선택한다(1314).In response to the chatbot's utterance, in the coffee ordering chatbot's block utterance scenario, the user selects in-store dining or takeout (1314).
$(커피이름), $(핫아이스) 및 $(테이크아웃)의 3개 슬롯들이 모두 입력되면, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 주문을 확인하는 발화를 실행한다(1324).When all three slots of $ (coffee name), $ (hot ice), and $ (takeout) are input, the chatbot executes an utterance to confirm the order in a block utterance scenario of the coffee ordering chatbot (1324).
챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 '예'(1315) 또는 '아니오'(1316)를 발화하고, 사용자가 '예'라고 발화한 경우에는 챗봇이 커피 주문을 실행하는 커스텀 액션(custom action)을 실행하고(1325) 주문내용을 확인하는 발화를 실행하고(1326), 사용자가 '아니오'라고 발화한 경우에는 챗봇이 "주문을 취소합니다."라는 발화를 실행(1327)한 후 동작을 종료한다.In response to the chatbot's utterance, in the coffee ordering chatbot block firing scenario, the user utters 'yes' (1315) or 'no' (1316), and if the user utters 'yes', the chatbot executes the coffee order executes a custom action (1325) and executes an utterance to confirm the order (1326), and if the user utters 'No', the chatbot executes the utterance "Cancel the order" ( 1327), and then the operation ends.
도 13에서 "User"는 사용자의 발화를 나타내고, "templete"는 챗봇의 발화를 나타내고, "Custom Action"은 실행블록에 의하여 정의된 봇의 동작 처리를 나타낸다.In FIG. 13, "User" represents a user's utterance, "templete" represents a chatbot's utterance, and "Custom Action" represents a bot action process defined by an execution block.
도 13에 도시된 예에서, $(커피이름), $(핫아이스), $(테이크아웃) 및 $(주문번호)는 필수 슬롯에 해당하고, 도 13에는 명시적으로 도시되지 아니하였으나, 커피 주문 챗봇의 블록 발화 시나리오에서는 옵션슬롯이 더 사용될 수 있다. 이 때, 필수 슬롯 및/또는 옵션 슬롯은 사용자의 발화로부터 생성된 것일 수도 있고, 기타 챗봇 시스템의 상태를 나타내는 슬롯이거나 블록에서 조건에 따라 생성된 것일 수도 있다.In the example shown in FIG. 13, $ (coffee name), $ (hot ice), $ (takeout), and $ (order number) correspond to required slots, and although not explicitly shown in FIG. 13, coffee Option slots may be further used in the block firing scenario of the ordering chatbot. In this case, the required slot and/or the optional slot may be generated from the user's speech, or may be slots indicating the status of other chatbot systems or generated according to conditions in the block.
도 13에 도시된 바와 같은 다이어그램을 토대로 각 블록에서 처리할 수 있는 모든 발화 패턴들을 수집하고, 자연어 처리기가 분류하기 용이한 형태로 패턴들을 그룹핑할 수 있다. 또한, 그룹핑된 정보를 기준으로 인텐트가 분류되고 발화 패턴별로 슬롯을 태깅하여 인텐트가 설정되면, 그룹핑되어 분류된 인텐트를 기준으로 발화 패턴들을 학습 의도에 맞게 자연어 처리기(NLU)의 학습 데이터로 사용할 수 있다.Based on the diagram shown in FIG. 13, all speech patterns that can be processed in each block can be collected, and the patterns can be grouped in a form that is easy for the natural language processor to classify. In addition, when an intent is classified based on grouped information and an intent is set by tagging slots for each utterance pattern, the utterance patterns based on the grouped and classified intents are matched to the learning intent of the natural language processor (NLU) learning data. can be used as
시나리오는 블록들을 그래프 형태로 연결한 것으로 볼 수 있고, 각 블록에서는 처리할 수 있는 인텐트들의 목록이 정의될 수 있다.Scenarios can be viewed as connecting blocks in the form of a graph, and a list of intents that can be processed can be defined in each block.
도 14는 도 13에 도시된 시나리오에 사용되는 인텐트들의 일 예를 나타낸 도면이다.FIG. 14 is a diagram illustrating an example of intents used in the scenario shown in FIG. 13 .
도 14를 참조하면, 커피 주문 시나리오에 사용되는 인텐트들은 인텐트 order_coffee(1410), 인텐트 order_hotice(1420), 인텐트 order_takeout(1430), 인텐트 order_togo(1440) 및 인텐트 order_eatin(1450)를 포함하는 것을 알 수 있다.Referring to FIG. 14, the intents used in the coffee ordering scenario include the intent order_coffee (1410), the intent order_hotice (1420), the intent order_takeout (1430), the intent order_togo (1440), and the intent order_eatin (1450). can be found to contain.
이 때, 인텐트 order_coffee(1410)에 대해서는 슬롯 $coffee, 슬롯 $hotice 및 슬롯 $takeout이 정의되고, 인텐트 order_hotice(1420)에 대해서는 슬롯 $hotice이 정의되고, 인텐트 order_takeout(1430)에 대해서는 슬롯 $takeout이 정의되고, 인텐트 order_togo(1440) 및 인텐트 order_eatin(1450)에 대해서는 슬롯이 정의되지 않을 수 있다.At this time, slot $coffee, slot $hotice, and slot $takeout are defined for intent order_coffee(1410), slot $hotice is defined for intent order_hotice(1420), and slot $hotice is defined for intent order_takeout(1430). $takeout is defined, and slots may not be defined for intent order_togo (1440) and intent order_eatin (1450).
도 14에 도시된 인텐트들을 봇이 처리할 때, 블록(처리블록)이라는 단위로 처리하게 되는데, 하나의 블록에 복수개의 인텐트들이 매핑되어 처리될 수 있다. 또한, 하나의 인텐트가 복수개의 블록들에 매핑될 수도 있다.When the bot processes the intents shown in FIG. 14, they are processed in units called blocks (processing blocks). A plurality of intents can be mapped to and processed in one block. Also, one intent may be mapped to a plurality of blocks.
도 15 내지 도 18은 도 13에 도시된 시나리오에 사용되는 실행블록들의 일 예를 나타낸 도면이다.15 to 18 are diagrams illustrating examples of execution blocks used in the scenario shown in FIG. 13 .
도 15는 복수개의 인텐트들과 복수개의 실행블록들 사이의 연결을 나타낸 블록도이다.15 is a block diagram showing connections between a plurality of intents and a plurality of execution blocks.
도 15를 참조하면, 인텐트 order_coffee(1410), 인텐트 order_hotice(1420) 및 인텐트 order_takeout(1430)이 실행블록 커피 선택(1510)에 연결된 것을 알 수 있다. 이 때, 실행블록 커피 선택(1510)의 인텐트 매핑 리스트에는 인텐트 order_coffee(1410), 인텐트 order_hotice(1420) 및 인텐트 order_takeout(1430)에 상응하는 인텐트 식별자들이 포함될 수 있다.Referring to FIG. 15 , it can be seen that the
이 때, 인텐트 order_hotice(1420) 및 인텐트 order_takeout(1430)은 실행블록 핫아이스확인(1520)에도 연결된다. At this time, the intent order_hotice (1420) and the intent order_takeout (1430) are also connected to the execution block check hotice (1520).
이 때, 인텐트 order_takeout(1430)는 실행블록 테이크아웃확인(1530)에도 연결된다.At this time, the intent order_takeout (1430) is also connected to the execution block takeout confirmation (1530).
인텐트 order_togo(1440), 인텐트 order_eatin(1450), 인텐트 followup.yes(1460) 및 인텐트 followup.no(1470)는 실행블록 테이크아웃확인(1530)에 연결된다.The intent order_togo (1440), the intent order_eatin (1450), the intent followup.yes (1460), and the intent followup.no (1470) are connected to the action block takeout confirmation (1530).
도 15에 도시된 바와 같이, 인텐트들이 그 실행을 위한 블록들에 매핑되고, 매핑된 인텐트별로 슬롯이라는 변수를 기준으로 조건을 문법식으로 정의하여, 봇이 사용자 발화별 의도 분류로만 발화를 처리하지 않고 조건을 통해 적절한 세부처리가 가능하다.As shown in FIG. 15, intents are mapped to blocks for their execution, and conditions are defined as a grammar expression based on a variable called a slot for each mapped intent, so that the bot can utterances only by classifying intentions for each user utterance. Appropriate detailed processing is possible through conditions without processing.
도 15에 도시된 바와 같이, 하나의 블록에 복수개의 인텐트들이 연결될 수도 있고(N: 1), 복수개의 블록들이 하나의 인텐트에 연결될 수도 있어서(1:N), 인텐트와 블록간의 자유로운 매핑(N:N)이 가능하다.As shown in FIG. 15, a plurality of intents may be connected to one block (N: 1), or a plurality of blocks may be connected to one intent (1:N), so that there is freedom between intents and blocks. Mapping (N:N) is possible.
나아가, 하나의 실행블록은 이후 실행가능한 다른 실행블록들과의 연결관계를 가질 수 있다. 예를 들어, 실행블록 커피 선택(1510)은 실행블록 핫아이스확인(1520) 및 실행블록 테이크아웃확인(1530)과 연결될 수 있고, 실행블록 핫아이스확인(1520)은 실행블록 테이크아웃확인(1530)과 연결될 수 있다.Furthermore, one execution block may have a connection relationship with other execution blocks that can be executed later. For example, select
도 16은 도 15에 도시된 실행블록 커피선택의 일 예를 나타낸 도면이다.FIG. 16 is a diagram showing an example of the execution block coffee selection shown in FIG. 15 .
도 16을 참조하면, 실행블록 커피선택(1510)은 연결된 인텐트 목록, 슬롯, 슬롯 필링 및 액션 정보를 포함할 수 있다.Referring to FIG. 16, the execution
이 때, 연결된 인텐트 목록은 인텐트 매핑 리스트에 포함될 수 있고, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다. 이 때, 슬롯 조건은 하나 이상의 슬롯에 관련된 조건문에 상응하는 것일 수 있고, 널(NULL) 조건을 포함할 수 있다.In this case, the connected intent list may be included in the intent mapping list, and the intent mapping list may include an intent identifier and a slot condition for each intent. In this case, the slot condition may correspond to conditional statements related to one or more slots and may include a null condition.
도 16에 도시된 슬롯들($coffee, $hotice, $takeout)은 실행블록 커피선택(1510)이 연결된 인텐트들(order_coffee, order_hotice, order_takeout)에 상응하는 모든 슬롯들의 합집합을 포함할 수 있다.The slots ($coffee, $hotice, and $takeout) shown in FIG. 16 may include the union of all slots corresponding to the intents (order_coffee, order_hotice, and order_takeout) to which the execution
슬롯 필링순위 정보는 실행블록 커피선택(1510)의 슬롯들의 필링순위에 관한 정보 및 해당 슬롯을 먼저 필링하기 위해 필요한 발화정보를 포함할 수 있다.The slot filling order information may include information on the filling order of the slots of the execution
액션 정보는 조건(condition)과 해당 조건이 만족되는 경우의 응답(response)으로 이루어질 수 있다. 이 때, 조건은 슬롯을 이용한 하나 이상의 조건문에 상응하는 것일 수 있고, 응답은 다른 블록을 호출하는 링크(link)를 포함할 수 있다.Action information may include a condition and a response when the condition is satisfied. At this time, the condition may correspond to one or more conditional sentences using slots, and the response may include a link calling another block.
예를 들어, 실행블록 커피 선택(1510)은 슬롯 $hotice를 이용한 조건 판단에 기반하여 실행블록 핫아이스확인(1520)을 연결할 수 있다.For example, the execution
예를 들어, 실행블록 커피 선택(1510)은 슬롯 $takeout을 이용한 조건 판단에 기반하여 실행블록 테이크아웃확인(1530)을 연결할 수 있다.For example, the execution
도 17은 도 15에 도시된 실행블록 핫아이스확인의 일 예를 나타낸 도면이다.FIG. 17 is a diagram illustrating an example of hot ice checking of the execution block shown in FIG. 15 .
도 17을 참조하면, 실행블록 핫아이스확인(1520)은 연결된 인텐트 목록, 슬롯, 슬롯 필링 및 액션 정보를 포함할 수 있다.Referring to FIG. 17 , the execution block
도 17에 도시된 슬롯들($hotice, $takeout)은 실행블록 핫아이스확인(1520)이 연결된 인텐트들(order_hotice, order_takeout)에 상응하는 모든 슬롯들의 합집합을 포함할 수 있다.The slots ($hotice, $takeout) shown in FIG. 17 may include the union of all slots corresponding to the intents (order_hotice, order_takeout) to which the execution
슬롯 필링순위 정보는 실행블록 핫아이스확인(1520)의 슬롯들의 필링순위에 관한 정보 및 해당 슬롯을 먼저 필링하기 위해 필요한 발화정보를 포함할 수 있다.The slot filling order information may include information on the filling order of slots of the execution block
액션 정보는 조건(condition)과 해당 조건이 만족되는 경우의 응답(response)으로 이루어질 수 있다. 이 때, 조건은 슬롯을 이용한 하나 이상의 조건문에 상응하는 것일 수 있고, 응답은 다른 블록을 호출하는 링크(link)를 포함할 수 있다.Action information may include a condition and a response when the condition is satisfied. At this time, the condition may correspond to one or more conditional sentences using slots, and the response may include a link calling another block.
예를 들어, 실행블록 핫아이스확인(1520)은 슬롯 $takeout을 이용한 조건 판단에 기반하여 실행블록 테이크아웃확인(1530)을 연결할 수 있다.For example, the execution block
도 18은 도 15에 도시된 실행블록 테이크아웃확인의 일 예를 나타낸 도면이다.FIG. 18 is a diagram illustrating an example of execution block takeout confirmation shown in FIG. 15 .
도 18을 참조하면, 실행블록 테이크아웃확인(1530)은 연결된 인텐트 목록, 슬롯, 슬롯 필링 및 액션 정보를 포함할 수 있다.Referring to FIG. 18 , execution
도 18에 도시된 슬롯($takeout)은 실행블록 테이크아웃확인(1530)이 연결된 인텐트들(order_takeout, order_togo, order_eatin, followup.yes, followup.no)에 상응하는 모든 슬롯들의 합집합을 포함할 수 있다.The slot ($takeout) shown in FIG. 18 may include the union of all slots corresponding to the intents (order_takeout, order_togo, order_eatin, followup.yes, followup.no) to which the execution
슬롯 필링순위 정보는 실행블록 테이크아웃확인(1530)의 슬롯들의 필링순위에 관한 정보 및 해당 슬롯을 먼저 필링하기 위해 필요한 발화정보를 포함할 수 있다.The slot filling order information may include information on the filling order of slots in the execution
액션 정보는 조건(condition)과 해당 조건이 만족되는 경우의 응답(response)으로 이루어질 수 있다. 이 때, 조건은 슬롯을 이용한 하나 이상의 조건문에 상응하는 것일 수 있고, 응답은 다른 블록을 호출하는 링크(link)를 포함할 수 있다.Action information may include a condition and a response when the condition is satisfied. At this time, the condition may correspond to one or more conditional sentences using slots, and the response may include a link calling another block.
도 19는 도 15 내지 도 18에 도시된 실행블록들의 연결관계를 나타낸 블록도이다.19 is a block diagram showing a connection relationship between execution blocks shown in FIGS. 15 to 18;
도 19를 참조하면, 실행블록 커피 선택(1510), 실행블록 핫아이스확인(1520) 및 실행블록 테이크아웃확인(1530)이 그래프 형태로 연결된 것을 알 수 있다.Referring to FIG. 19 , it can be seen that an execution
이 때, 실행블록들간의 연결은 특정 현재블록에서 사용자 발화대기 상태에 진입할 때, 사용자의 발화를 처리가능한 다음 실행블록들과의 연결을 의미할 수 있다. 즉, 특정 현재블록에서 사용자 발화가 수신되는 경우 발생가능한 상황은 현재블록과 연결된 실행블록들이므로 이들 실행블록들과 연결된 인텐트들만이 사용자 발화 처리가 필요한 인텐트들로 서칭 대상이 될 수 있다. 사용자 발화 대기 상태에서 현재 블록 기준으로 연결된 하위 블록들에 포함된 인텐트들만을 수집하여 자연어 처리기를 통해 인텐트를 검색하면 모든 인텐트를 서칭 대상으로 하는 경우에 비하여 훨씬더 신속하고 정확하게 발화에 해당하는 인텐트를 식별할 수 있게 된다.In this case, the connection between the execution blocks may mean a connection with next execution blocks capable of processing the user's speech when entering the user's speech standby state in a specific current block. That is, since a situation that can occur when a user speech is received in a specific current block is execution blocks connected to the current block, only intents connected to these execution blocks can be searched as intents requiring user speech processing. In the state of waiting for user utterance, if you collect only the intents included in the sub-blocks connected based on the current block and search for the intents through the natural language processor, they correspond to utterances much more quickly and accurately than when all intents are searched. Intent can be identified.
도 19에 도시된 예에서, 실행블록 커피 선택(1510)은 실행블록 핫아이스선택(1520) 및 실행블록 테이크아웃확인(1530)과 연결되므로, 실행블록 커피 선택(1510)의 상태에서 사용자 발화가 입력되는 경우 다음 상태는 실행블록 핫아이스선택(1520) 또는 실행블록 테이크아웃확인(1530)이 될 수 있다.In the example shown in FIG. 19, since the execution
또한, 실행블록 핫아이스선택(1520)의 상태에서 사용자 발화가 입력되는 경우 다음 상태는 실행블록 테이크아웃확인(1530)이 될 수 있다.In addition, when user utterance is input in the state of execution block
사용자 발화로부터 사용자 인텐트가 식별되면, 식별된 인텐트를 포함하는 블록들의 인텐트 조건들의 우선순위 및/또는 봇 설계자가 정의한 우선순위 순으로 정렬하여 블록들을 검색할 수 있다.If a user intent is identified from the user's speech, the blocks may be searched by arranging them in the order of priority of intent conditions of blocks including the identified intent and/or a priority defined by a bot designer.
조건에 맞는 블록이 검색되면, 해당 블록으로 이동하여 해당 블록 설정에 따라 정의된 동작을 수행하고, 다시 액션의 조건에 따라 사용자 응답 대기 상태로 돌아갈 수 있다.When a block that satisfies the conditions is searched for, it moves to the corresponding block, performs an operation defined according to the corresponding block setting, and returns to a state of waiting for a user response according to the condition of the action.
블록과 블록을 연결하는 것은 사용자 응답 대기 상태로 진입했을 때, 현재 블록에서 다음에 처리될 블록들을 나열하는 것으로 정의될 수 있으며, 하나의 블록에 여러 개의 사용자 응답 대기 상태들이 정의될 수도 있다.Connecting blocks to blocks may be defined as enumerating blocks to be processed next from the current block when a user response waiting state is entered, and several user response waiting states may be defined in one block.
도 20은 실행블록에서 사용자 응답 대기 상태를 정의하여 블록들을 연결하는 일 예를 도시한 도면이다.20 is a diagram illustrating an example of connecting blocks by defining a waiting state for a user response in an execution block.
도 20을 참조하면, 하나의 블록이 그래프 형태로 복수의 다른 블록들과 연결될 수 있는 것을 알 수 있다.Referring to FIG. 20 , it can be seen that one block can be connected to a plurality of other blocks in the form of a graph.
도 20에 도시된 블록 1(Block 1)은 블록 2(Block 2), 블록 3(Block 3), 블록 4(Block 4) 및 블록 5(Block 5)와 연결된다. 이 때, 블록 1(Block 1)은 조건 4(Condition 4)에 의하여 블록 2(Block 2) 및 블록 3(Block 3)과 연결되고, 조건 5(Condition 5)에 의하여 블록 3(Block 3), 블록 4(Block 4) 및 블록 5(Block 5)와 연결될 수 있다. 따라서, 블록 1(Block 1) 이후에는 블록 2(Block 2), 블록 3(Block 3), 블록 4(Block 4) 및 블록 5(Block 5)의 상황이 발생할 수 있다.
블록 2(Block 2)는 블록 6(Block 6)과 연결된다. 따라서, 블록 2(Block 2) 이후에는 블록 6(Block 6)의 상황이 발생할 수 있다.
블록 3(Block 3)은 블록 6(Block 6) 및 블록 7(Block 7)과 연결된다. 따라서, 블록 3(Block 3) 이후에는 블록 6(Block 6) 및 블록 7(Block 7)의 상황이 발생할 수 있다.
블록 5(Block 5)는 블록 6(Block 6) 및 블록 7(Block 7)과 연결된다. 따라서, 블록 5(Block 5) 이후에는 블록 6(Block 6) 및 블록 7(Block 7)의 상황이 발생할 수 있다.
예를 들어, 현재 상태가 블록 2(Block 2)에 해당하는 상태라면, 이후 사용자의 발화는 블록 6(Block 6)에 해당하는 인텐트들만을 대상으로 인텐트를 서치하면 충분하고, 발생가능성이 없는 블록 7(Block 7)에 해당하는 인텐트들을 대상으로 사용자 발화 매칭을 수행할 필요가 없다.For example, if the current state corresponds to Block 2, it is sufficient to search for intents targeting only the intents corresponding to Block 6 for subsequent utterances, and the possibility of occurrence is high. There is no need to perform user utterance matching for intents corresponding to Block 7 that do not exist.
하나의 인텐트와 하나의 실행 블록을 매핑하는 경우, 하나의 인텐트가 복수개의 발화 패턴을 포함해야 할 수 있다. When one intent and one execution block are mapped, one intent may need to include a plurality of firing patterns.
예를 들어, 인텐트(I1: 가입 의도)가 학습문장들 "써보고 싶어요"(패턴분류 P1), "쓰려면 어떻게 해요"(패턴분류 P1), "가입 방법이 궁금해요"(패턴분류 P3) 및 "가입방법 문의 좀"(패턴분류 P3)을 포함하고, 인텐트(I2: 탈퇴 의도)가 학습문장들 "그만 쓰고 싶어요"(패턴분류 P2), "이제 안쓸래요"(패턴분류 P2), "탈퇴 방법 궁금해요"(패턴분류 P3) 및 "탈퇴 방법 문의합니다"(패턴분류 P3)를 포함할 수 있다.For example, the intent (I1: intent to sign up) is the learning sentences "I want to write" (pattern classification P1), "How do I write" (pattern classification P1), "I'm curious about how to sign up" (pattern classification P3) and "Inquire about how to sign up" (pattern classification P3), and the intent (I2: withdrawal intention) includes the learning sentences "I want to stop writing" (pattern classification P2), "I don't want to write anymore" (pattern classification P2), It may include "I'm curious about how to cancel" (pattern classification P3) and "Inquire about how to cancel" (pattern classification P3).
이 때, 인텐트(I1: 가입 의도)에 블록 하나가 연결되고, 인텐트(I2: 탈퇴 의도)에 블록 하나가 연결될 수 있으나, 인텐트들이 복수개의 발화 패턴들을 포함하게 되어 자연어 처리기의 성능이 저하될 수 있다.At this time, one block may be connected to the intent (I1: intent to join) and one block may be connected to the intent (I2: intent to leave), but the performance of the natural language processor may deteriorate as the intents include a plurality of speech patterns may be lowered
따라서, 자연어 처리기의 성능 저하를 방지하기 위해서는 하나의 인텐트에 복수개의 발화 패턴들이 포함되는 것을 피하는 것이 바람직하다. 예를 들어, 인텐트(I1: 가입 의도)는 학습문장들 "써보고 싶어요"(패턴분류 P1) 및 "쓰려면 어떻게 해요"(패턴분류 P1)만을 포함하고, 인텐트(I2: 탈퇴 의도)는 학습문장들 "그만 쓰고 싶어요"(패턴분류 P2) 및 "이제 안쓸래요"(패턴분류 P2)만을 포함하고, 인텐트(I3: 문의 의도)가 학습문장들 "<가입> 방법이 궁금해요"(패턴분류 P3), "<가입> 방법 문의 좀"(패턴분류 P3), "<탈퇴> 방법 궁금해요"(패턴분류 P3) 및 "<탈퇴> 방법 문의합니다"(패턴분류 P3)를 포함할 수 있다.Therefore, in order to prevent degradation of the performance of the natural language processor, it is desirable to avoid including a plurality of speech patterns in one intent. For example, the intent (I1: subscription intent) includes only the learning sentences "I want to write" (pattern classification P1) and "how to write" (pattern classification P1), and the intent (I2: withdrawal intent) It includes only the learning sentences "I want to stop writing" (pattern classification P2) and "I don't want to use anymore" (pattern classification P2), and the intent (I3: inquiry intent) is the learning sentences "I'm curious about the <sign up> method" ( Pattern classification P3), "Inquire about how to <register>" (pattern classification P3), "I'm curious about the <withdrawal> method" (pattern classification P3), and "Inquire about how to <subscribe>" (pattern classification P3). there is.
이와 같이 자연어 처리기에서 효과적으로 처리될 수 있도록 인텐트를 분류하는 경우, 인텐트들과 처리 블록들이 보다 다양한 형태로 연결될 필요가 있다. 이를 위해, 블록의 인텐트들은 각각 조건을 가질 수 있고, 이 조건은 슬롯값들을 비교하는 구문들로 정의될 수 있다. 즉, 블록과 인텐트 매핑 정보는 인텐트와 슬롯 조건을 쌍으로 묶인 목록(인텐트 매핑 리스트)의 형태로 블록에 정의될 수 있다.In this way, when an intent is classified so that it can be effectively processed by a natural language processor, it is necessary to connect the intents and processing blocks in more diverse forms. To this end, each of the block's intents may have a condition, and this condition may be defined as statements comparing slot values. That is, block and intent mapping information may be defined in a block in the form of a list (intent mapping list) in which intents and slot conditions are paired.
도 21은 발화 패턴별로 정의된 인텐트를 블록에 매핑하는 일 예를 나타낸 도면이다.21 is a diagram illustrating an example of mapping intents defined for each speech pattern to blocks.
도 21을 참조하면, 인텐트와 슬롯 조건의 쌍으로 3개의 인텐트들이 2개의 블록들에 연결된 것을 알 수 있다.Referring to FIG. 21 , it can be seen that three intents are connected to two blocks as a pair of intent and slot condition.
이 때, 슬롯 조건에 사용되는 슬롯들은 현재 인텐트에서 정의된 슬롯뿐만 아니라, 이전 대화를 실행하면서 설정된 다른 블록의 슬롯이나, 시스템에서 제공되는 슬롯들을 포함할 수 있다.At this time, the slots used for the slot condition may include not only slots defined in the current intent, but also slots of other blocks set while executing a previous conversation, or slots provided by the system.
도 21에 도시된 예에서 인텐트 1(Intent 1)은 발화 패턴 1(Pattern 1)에 상응하고, 인텐트 2(Intent 2)는 발화 패턴 2(Pattern 2)에 상응하고, 인텐트 3(Intent 3)은 발화 패턴 3(Pattern 3)에 상응하는 것을 알 수 있다.In the example shown in FIG. 21,
도 21에 도시된 예에서, 블록 1(Block 1)의 인텐트 매핑 리스트에는 인텐트 1(Intent 1)과 조건 1(Condition 1)의 쌍 및 인텐트 3(Intent 3)과 조건 2(Condition 2)의 쌍의 두 개의 엘리먼트들이 존재한다. 따라서, 블록 1(Block 1)은 두 개의 인텐트들(Intent 1, Intent 3)과 연결된다.In the example shown in FIG. 21, the intent mapping list of
블록 2(Block 2)의 인텐트 매핑 리스트에는 인텐트 2(Intent 2)와 조건 3(Condition 3)의 쌍 및 인텐트 3(Intent 3)과 조건 4(Condition 4)의 쌍의 두 개의 엘리먼트들이 존재한다. 따라서, 블록 2(Block 2)은 두 개의 인텐트들(Intent 2, Intent 3)과 연결된다.In the intent mapping list of
도 22는 인텐트와 실행블록을 1:1 매핑하는 경우를 나타낸 도면이다.22 is a diagram illustrating a case of 1:1 mapping between intents and execution blocks.
도 22를 참조하면, 3개의 인텐트들(I1, I2, I3)이 각각 4개씩의 발화 패턴을 포함하는 것을 알 수 있다.Referring to FIG. 22 , it can be seen that each of the three intents I1, I2, and I3 includes four firing patterns.
즉, 인텐트 I1(가입 의도)는 발화 패턴들 "써보고 싶어요", "쓰려면 어떻게 해요", "가입 방법이 궁금해요" 및 "가입 방법 문의 좀"을 포함한다.That is, intent I1 (subscription intention) includes speech patterns "I want to try", "How do I write", "I'm curious about how to sign up", and "Inquire how to sign up".
인텐트 I2(탈퇴 의도)는 발화 패턴들 "그만 쓰고 싶어요", "이제 안쓸래요", 탈퇴 방법이 궁금해요" 및 "탈퇴하는 법 문의합니다"를 포함한다.Intent I2 (withdrawal intent) includes the utterance patterns "I want to stop using", "I don't want to use anymore", I'm curious about how to unsubscribe, and "Inquire about how to unsubscribe".
인텐트 I3(정회원 문의 의도)는 발화 패턴들 "정회원이 되고 싶어요", "정회원으로 승급하고 싶어요", 정회원 가입 방법이 궁금해요", "정회원 가입하는 방법은"을 포함한다.Intent I3 (intent to inquire about regular membership) includes speech patterns "I want to become a regular member", "I want to be promoted to a regular member", "I'm curious about how to become a regular member", and "How to become a regular member".
인텐트(의도)와 응답(실행블록)이 1:1로 매핑되면, "*** 궁금해요"와 같은 문장이 여러 인텐트에 등장하는 경우, 자연어 처리기(NLU)가 이들 유사한 문장들을 구분하기 어렵다. 예를 들어, "저 처음인데 가입하는 법 문의합니다"와 같은 문장은 상황에 따라 자연어 처리기에 의해 탈퇴 의도의 "탈퇴하는 법 문의합니다"와 유사한 문장으로 처리되어 잘못된 의도 인식이 발생할 수 있다.When intents (intents) and responses (execution blocks) are mapped 1:1, when a sentence like "*** I'm curious" appears in multiple intents, the natural language processor (NLU) can distinguish between these similar sentences. difficult. For example, a sentence such as “I am new, ask how to sign up” is processed by the natural language processor as a sentence similar to “inquire how to sign up” of the withdrawal intent, depending on the circumstances, resulting in false intention recognition.
즉, 사용자의 의도 분류는 자연어 처리기(NLU)에 의해 처리되기 쉬운 의도 분류와는 상이할 수 있는데, 실제 사용자의 의도 하나가 자연어 처리기가 처리하기 용이한 의도들 여러 개로 분리될 수 있고 또 반대로 여러 개의 사용자의 의도들이 자연어 처리기가 처리하기 용이한 하나의 의도로 분류될 수도 있다.That is, the user's intent classification may be different from the intent classification that is easy to be processed by a natural language processor (NLU). One actual user's intent may be divided into several intents that are easy to be processed by a natural language processor, and conversely, several The intentions of the user may be classified into one intention that is easy for the natural language processor to process.
도 23은 본 발명의 일실시예에 따른 인텐트 분류 및 블록 매핑의 일 예를 나타낸 도면이다.23 is a diagram illustrating an example of intent classification and block mapping according to an embodiment of the present invention.
도 23을 참조하면, 자연어 처리기(NLU)가 처리하기 용이한 형태로 문장들이 분류되고, 필요한 슬롯을 태깅하여 조건에 따라 응답들(responses)이 매핑된 것을 알 수 있다.Referring to FIG. 23 , it can be seen that the sentences are classified into a form that is easy to process by a natural language processor (NLU), and responses are mapped according to conditions by tagging necessary slots.
도 23에 도시된 예에서, 4개의 인텐트들(I1, I2, I3, I4)이 3개의 응답들(R1, R2, R3)에 연결된다.In the example shown in FIG. 23 , four intents (I1, I2, I3, and I4) are linked to three responses (R1, R2, and R3).
이 때, 인텐트 1(I1)은 가입 안내 응답(R1)에 연결된다. 이 때, 슬롯 조건은 널(NULL) 조건일 수 있다.At this time, Intent 1 (I1) is connected to the subscription information response (R1). At this time, the slot condition may be a null condition.
이 때, 인텐트 4(I4)는 가입 안내 응답(R1), 탈퇴 안내 응답(R2) 및 정회원 안내 응답(R3)에 연결된다. 이 때, 인텐트 4(I4)는 슬롯 조건 $service == "가입"에 의해 가입 안내 응답(R1)에 연결될 수 있다. 이 때, 인텐트 4(I4)는 슬롯 조건 $service == "탈퇴"에 의해 탈퇴 안내 응답(R2)에 연결될 수 있다. 이 때, 인텐트 4(I4)는 슬롯 조건 $level == "정회원" and $service == "가입"에 의해 정회원 안내 응답(R3)에 연결될 수 있다.At this time, Intent 4 (I4) is connected to a subscription guide response (R1), a withdrawal guide response (R2), and a member guide response (R3). At this time, intent 4 (I4) can be connected to the subscription information response (R1) by the slot condition $service == "subscription". At this time, intent 4 (I4) may be connected to the withdrawal guidance response (R2) by the slot condition $service == "withdrawal". At this time, intent 4 (I4) can be connected to regular member information response (R3) by slot conditions $level == "regular member" and $service == "subscription".
이 때, 인텐트 2(I2)는 탈퇴 안내 응답(R2)에 연결된다. 이 때, 슬롯 조건은 널(NULL) 조건일 수 있다.At this time, Intent 2 (I2) is connected to the withdrawal guidance response (R2). At this time, the slot condition may be a null condition.
이 때, 인텐트 3(I3)는 정회원 안내 응답(R3)에 연결된다. 이 때, 슬롯 조건은 널(NULL) 조건일 수 있다.At this time, Intent 3 (I3) is connected to the regular member information response (R3). At this time, the slot condition may be a null condition.
도 23에 도시된 응답들은 각각 하나의 실행블록에 상응하는 것일 수 있다.The responses shown in FIG. 23 may each correspond to one execution block.
이 때, 실행블록은 인텐트와 슬롯 조건 및 챗봇의 응답 처리를 포함하여 정의될 수 있다.At this time, the execution block may be defined including intent, slot conditions, and response processing of the chatbot.
도 24는 도 23에 도시된 응답들에 상응하는 실행블록들을 나타낸 도면이다.FIG. 24 is a diagram showing execution blocks corresponding to the responses shown in FIG. 23 .
도 24를 참조하면, 각 실행블록들은 적어도 하나의 인텐트와 슬롯 조건의 쌍을 포함하는 인텐트 매핑 리스트 및 동작 정보를 포함한다.Referring to FIG. 24 , each execution block includes an intent mapping list including a pair of at least one intent and a slot condition and action information.
도 24에 도시된 바와 같이, 슬롯 조건은 "조건없음"에 해당하는 널(NULL) 조건을 포함할 수 있고, 하나 이상의 슬롯을 이용한 조건문을 포함할 수 있다.As shown in FIG. 24 , the slot condition may include a null condition corresponding to “no condition” and may include conditional statements using one or more slots.
챗봇이 대화 처리를 수행하게 되면, 먼저 사용자가 입력한 문장으로부터 자연어 처리기가 인텐트를 분류하고 슬롯을 추출한 뒤, 분류된 인텐트를 포함하는 블록에 나열된 조건들을 검사해가면서 매칭되는 블록을 찾게 된다.When the chatbot performs conversation processing, the natural language processor first classifies the intent from the sentence input by the user, extracts the slot, and then finds a matching block by examining the conditions listed in the block containing the classified intent. .
도 23 및 도 24에 도시된 예에서, "I4: 문의 의도"로 인텐트가 분류된 경우, 이 인텐트를 포함하고 있는 블록은 B1, B2 및 B3이며, 조건에 따라 매칭되는 블록들은 아래 표 1과 같다.In the examples shown in FIGS. 23 and 24, when an intent is classified as “I4: Intent of inquiry,” the blocks containing this intent are B1, B2, and B3, and the blocks matched according to the conditions are listed in the table below. Same as 1.
조건을 검사하는 순서는 블록을 나열하는 순서등을 사용자가 지정함으로써 정해질 수 있다. 만약, 표 1과 같이 단순히 사용자가 나열한 순서대로만 처리되는 경우, 정회원 가입과 같은 문장은 $level == "정회원" and $service == "가입" 이라는 조건을 만족하지만, 동시에 논리적으로는 $service == "가입" 이라는 조건도 만족하게 되고, 조건 검사 순위가 높은 B1 블록이 실행될 수 있고 이는 바람직한 결과가 아닐 수 있다.The order of checking conditions can be determined by the user designating the order of listing blocks. If, as shown in Table 1, processing is performed in the order listed by the user, a sentence such as regular member registration satisfies the conditions of $level == "regular member" and $service == "registration", but at the same time logically $service = = "subscription" condition is also satisfied, and block B1 having a higher condition check order may be executed, which may not be a desirable result.
이 문제를 해결하기 위해 조건의 포함관계를 고려하여 다시 우선 순위를 부여하면 하기 표 2와 같이 정해질 수 있다.In order to solve this problem, if priority is given again in consideration of the inclusive relationship of conditions, it can be determined as shown in Table 2 below.
이 때, 조건의 포함관계는 조건식 내에 사용된 슬롯들의 집합의 포함관계로 결정될 수 있는데, 포함하고 있는 쪽(큰 집합)이 포함되는 쪽(작은 집합)보다 우선적으로 처리되고, 서로 포함관계가 없으면 사용자가 지정한 우선순위가 유지될 수 있다. 표 2의 예에서, level과 service를 모두 검사하는 B3의 조건이 service만 검사하는 B1, B2보다 조건 포함관계 순위가 더 높아서, B1이나 B2보다 B3가 우선적으로 처리될 수 있다.At this time, the inclusion relationship of the condition can be determined by the inclusion relationship of the set of slots used in the conditional expression. The inclusive side (large set) is processed with priority over the included side (small set), and if there is no inclusion relationship with each other, Priorities designated by the user may be maintained. In the example of Table 2, the condition of B3, which inspects both level and service, has a higher order of condition inclusion than B1 and B2, which inspect only service, so B3 can be processed with priority over B1 or B2.
도 25는 도 13 내지 도 19에서 예시된 커피주문 시나리오에 상응하는 조건의 포함관계에 따른 우선순위 정렬 예를 나타낸 도면이다.FIG. 25 is a diagram illustrating an example of prioritization according to inclusion relationships of conditions corresponding to the coffee ordering scenarios illustrated in FIGS. 13 to 19 .
도 25를 참조하면, coffee 슬롯 하나에 해당하는 조건보다 coffee 슬롯 및 takeout 슬롯 두 개에 해당하는 조건이 우선순위가 높은 것을 알 수 있다.Referring to FIG. 25, it can be seen that the condition corresponding to two coffee slots and the takeout slot has higher priority than the condition corresponding to one coffee slot.
따라서, 사용자가 "아메리카노 테이크아웃할래요"라고 발화하면 슬롯 coffee이 "아메리카노"로 채워지고, 슬롯 takeout이 "테이크아웃"으로 채워지므로 실행블록 테이크아웃확인보다 실행블록 커피 주문이 우선적으로 실행되게 된다.Therefore, when the user says "I want to take Americano takeout", the slot coffee is filled with "Americano" and the slot takeout is filled with "Takeout", so the execution block coffee order takes precedence over the execution block takeout confirmation.
챗봇 프로세스가 실행될 때는, 현재 사용자 응답 대기 상태에서 연결된 블록들에서 인텐트들을 수집하고, 자연어 처리기를 통해 수집된 인텐트들 중에서 적합한 인텐트를 검색할 수 있다.When the chatbot process is executed, it collects intents from connected blocks in the current user response waiting state, and can search for an appropriate intent among the intents collected through the natural language processor.
인텐트로 블록을 찾을 때는 인텐트를 포함하고 있는 블록들의 인텐트 조건들의 우선순위, 사용자가 정의한 우선순위 순으로 정렬하여 적합한 블록을 검색할 수 있다.When searching for a block by intent, a suitable block can be searched by arranging in the order of the priority of the intent conditions of the blocks that contain the intent and the priority defined by the user.
조건에 맞지 않아 적합한 블록을 찾지 못했을 때는 다음으로 적합한 인텐트를 사용하여 위 방법을 반복할 수 있다.If a suitable block is not found because the condition is not met, the above method can be repeated using the next suitable intent.
조건이 맞는 블록을 찾았을 때는 해당 블록으로 이동한 후 챗봇의 응답 프로세스에 정해진 동작을 수행하고 조건에 따라 다음 사용자 응답 대기 상태로 진입할 수 있다.When a block that satisfies the conditions is found, it moves to the corresponding block, performs a predetermined action in the chatbot's response process, and enters the state of waiting for the next user response according to the condition.
도 26은 챗봇 실행에 필요한 모듈들의 일 예를 나타낸 블록도이다.26 is a block diagram illustrating an example of modules necessary for executing a chatbot.
도 26을 참조하면, 봇 디자이너가 정의한 리소스들을 챗봇이 실행할 때 필요한 모듈들은 대화 흐름 처리기를 중심으로 크게 나눈다면, 메시지 입출력을 제어하는 부분, 블록 상태를 관리하는 부분, 자연어를 처리하는 부분, 블록 조건들을 처리하는 부분 및 블록들을 실행하는 부분으로 볼 수 있다.Referring to FIG. 26, if the modules required when the chatbot executes the resources defined by the bot designer are largely divided around the conversation flow processor, the part that controls message input and output, the part that manages block status, the part that processes natural language, and the block It can be seen as a part that processes conditions and a part that executes blocks.
도 26의 예에서, 챗봇 실행에 필요한 모듈들은 대화 흐름 처리기, 블록 상태 관리기, 메시지 입력 게이트웨이, 메시지 출력 게이트웨이, 응답 메시지 생성기, 블록 프로세스 실행기, NLU 검색기, 블록 검색기, 의도 분류기, 슬롯 추출기, 자연어 처리기, NLU 우선 순위 관리자, 조건 해석기 및 블록 조건 우선순위 관리자를 포함할 수 있다.In the example of FIG. 26, the modules required to run the chatbot include a dialog flow processor, a block state manager, a message input gateway, a message output gateway, a response message generator, a block process executor, an NLU searcher, a block searcher, an intent classifier, a slot extractor, and a natural language processor. , NLU priority manager, condition resolver and block condition priority manager.
도 27은 챗봇 실행 중 인텐트와 블록을 검색하는 과정을 나타낸 도면이다.27 is a diagram illustrating a process of searching for intents and blocks while the chatbot is running.
도 27을 참조하면, 챗봇이 사용자 입력을 대기중인 상태에서 사용자의 발화가 입력되면, 먼저 현재 위치에서 실행 가능한 블록들이 서칭된다. 이 때, 현재 (실행)블록에 연결된 하위 블록들이 먼저 서칭되고, 시나리오의 메인블록들이 서칭될 수 있다. 이 때, 메인블록이란 대화 초기 상태에서 동작할 블록들의 목록을 의미하며, 사용자가 최초 발화시 봇이 서칭하는 대상 블록들이 된다. 즉, 현재 블록 이후에 실행가능성이 있는 하위블록들과, 새로 실행가능한 메인블록들만을 대상으로 인텐트를 식별하게 되면, 효율적인 대화 흐름 처리가 가능하다.Referring to FIG. 27 , when a user's utterance is input while the chatbot is waiting for a user's input, blocks executable at the current location are first searched. At this time, sub-blocks connected to the current (execution) block may be searched first, and then main blocks of the scenario may be searched. At this time, the main block means a list of blocks to be operated in the initial state of the conversation, and becomes the target blocks that the bot searches for when the user first speaks. That is, if the intent is identified only for the subblocks that are executable after the current block and the main blocks that are newly executable, efficient dialog flow processing is possible.
블록이 서칭되면, 서칭된 블록에 매핑된 인텐트들을 나열하여 처리 우선순위를 검사하게 된다. 이 때, 서칭된 블록들에 정의된 인텐트들이 나열되고, 자연어 처리기를 사용하여 사용자 발화에 해당하는 인텐트들의 매칭 스코어(score)를 결정한다. 정의된 인텐트 패턴 문턱 스코어(threshold score) 목록을 순차적으로 조회하면서, 인텐트들의 이름과 매칭 점수를 비교하여, 패턴과 문턱 스코어를 만족하는 인텐트들 중 매칭 점수가 가장 높은 인텐트를 가장 먼저 추출한다.When a block is searched, the processing priority is checked by enumerating intents mapped to the searched block. At this time, intents defined in the searched blocks are listed, and matching scores of intents corresponding to the user's speech are determined using a natural language processor. The defined intent pattern threshold score list is sequentially searched, and the names of intents and matching scores are compared, and the intent with the highest matching score among the intents that satisfy the pattern and threshold score is selected first. extract
매칭된 인텐트가 속한 블록이 1개 이상인 경우, 정의된 인텐트 매핑 조건에 따라 처리 우선순위를 정렬하고, 조건의 우선순위가 동일한 경우는 사용자가 직접 정의한 시나리오 및 블록의 우선순위를 따른다. 이 때, 조건의 우선순위는 조건 비교 구문의 포함 관계에 따라 우선 순위가 매겨질 수 있다. 즉, 사용자의 발화로부터 추출된 슬롯을 기반으로 조건을 구성하는 경우, 조건을 구성하는 비교 구문은 사용자가 언급한 슬롯들 위주로 구성되고 언급되지 않은 슬롯은 생략되므로, 많은 슬롯을 포함하고 있는 조건이 사용자의 의도를 더 잘 반영한 것이라고 볼 수 있다. 즉, 조건 구문 내에 참인 조건이 여러 개인 경우, 제약 사항이나 슬롯을 더 많이 포함하는 조건이 우선 순위가 더 높은 것으로 간주될 수 있다.If there is one or more blocks to which the matched intent belongs, the processing priorities are sorted according to the defined intent mapping condition, and if the conditions have the same priority, the scenario and block priorities defined by the user are followed. At this time, the priority of the condition may be prioritized according to the inclusion relationship of the condition comparison phrase. That is, when the condition is constructed based on the slots extracted from the user's utterance, the comparison syntax constituting the condition is composed mainly of the slots mentioned by the user and the slots not mentioned are omitted, so a condition containing many slots It can be seen as a better reflection of the user's intention. That is, when there are several conditions that are true in the conditional statement, the condition that includes more constraints or slots may be considered higher in priority.
정렬된 조건들을 우선순위에 따라 검사하여, 가장 첫 번째 순서로 만족하는 조건이 속한 블록을 실행 블록으로 처리한다. 만약 조건을 만족하는 블록을 찾을 수 없을 때는 다음 우선 순위의 인텐트로 다시 인텐트가 속한 블록들을 찾고 조건의 우선 순위 판단 및 조건 검사 과정을 반복하여 블록을 찾는다.The sorted conditions are inspected in order of priority, and the block to which the condition satisfied in the first order belongs is treated as an execution block. If a block that satisfies the condition is not found, the blocks to which the intent belongs are searched again with the intent of the next priority, and the block is found by repeating the process of determining the priority of the condition and checking the condition.
도 28은 본 발명의 다른 실시예에 따른 챗봇 서비스 제공 방법을 나타낸 동작 흐름도이다.28 is an operational flowchart illustrating a method of providing a chatbot service according to another embodiment of the present invention.
도 28을 참조하면, 본 발명의 다른 실시예에 따른 챗봇 서비스 제공 방법은 사용자 대화에 상응하는 인텐트를 결정한다(S2810).Referring to FIG. 28 , a chatbot service providing method according to another embodiment of the present invention determines an intent corresponding to a user conversation (S2810).
이 때, 사용자 대화에 상응하는 인텐트는 현재 블록과 그래프(graph)를 통해 연결된 하나 이상의 후보블록 또는 메인블록에 연결된 인텐트 후보 내에서 선택될 수 있다.In this case, an intent corresponding to the user dialogue may be selected from one or more candidate blocks connected to the current block through a graph or from among intent candidates connected to the main block.
이 때, 사용자 대화에 상응하는 인텐트는 상기 후보블록에 연결된 제1 인텐트 후보가 상기 메인블록에 연결된 제2 인텐트 후보보다 우선적으로 고려되어 결정될 수 있다.In this case, the intent corresponding to the user dialogue may be determined by considering the first intent candidate linked to the candidate block with priority over the second intent candidate linked to the main block.
또한, 본 발명의 다른 실시예에 따른 챗봇 서비스 제공 방법은 인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택한다(S2820).In addition, in the chatbot service providing method according to another embodiment of the present invention, an execution block corresponding to the intent is selected using an intent mapping list (S2820).
이 때, 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응하는 것일 수 있다.In this case, the intent mapping list is provided for each of the execution blocks and may correspond to one or more intents.
이 때, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다.In this case, the intent mapping list may include an intent identifier and a slot condition for each intent.
이 때, 슬롯 조건은 하나 이상의 슬롯(slot)에 관련된 조건문에 상응하는 것일 수 있다.In this case, the slot condition may correspond to conditional statements related to one or more slots.
이 때, 슬롯 조건은 널(NULL) 조건을 포함할 수 있다.At this time, the slot condition may include a null condition.
이 때, 인텐트 매핑 리스트는 복수의 인텐트들에 상응하는 인텐트 식별자들 및 슬롯 조건들을 포함하는 경우가 있고(N:1), 상기 인텐트는 서로 상이한 실행블록들이 동일한 인텐트 식별자를 가지는 경우에 상기 슬롯 조건들이 상이하면 서로 상이한 실행블록들에 연결(1:N)될 수 있다.In this case, the intent mapping list may include intent identifiers and slot conditions corresponding to a plurality of intents (N:1), and the intent is that different execution blocks have the same intent identifier. In this case, if the slot conditions are different, they may be connected (1:N) to different execution blocks.
이 때, 실행블록에 상응하는 슬롯들은, 상기 인텐트 매핑 리스트를 통해 상기 실행블록과 연결된 인텐트들의 슬롯들을 포함할 수 있다.In this case, the slots corresponding to the execution block may include slots of intents connected to the execution block through the intent mapping list.
이 때, 인텐트에 상응하는 실행블록은 상기 사용자 대화에 상응하는 인텐트가 복수개의 실행블록들과 연결되는 경우, 큰 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제1 실행블록이 상기 큰 집합에 포함되는 작은 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제2 실행블록보다 우선적으로 고려되어 선택될 수 있다. 이 때, 슬롯 조건의 포함관계는 슬롯 조건에 포함된 슬롯들의 포함관계일 수 있다. 예를 들어, $level == "정회원" and $service == "가입"에 해당하는 실행블록이 $service == "가입"에 해당하는 실행블록보다 우선적으로 고려되어 선택될 수 있다.At this time, the execution block corresponding to the intent is a first execution block having an inclusion relationship of the slot condition corresponding to the large set when the intent corresponding to the user dialogue is connected to a plurality of execution blocks. It can be selected with priority over the second execution block having an inclusion relationship of slot conditions corresponding to a small set included in . In this case, the inclusion relationship of the slot condition may be the inclusion relationship of slots included in the slot condition. For example, an execution block corresponding to $level == "regular member" and $service == "subscription" may be selected with priority over an execution block corresponding to $service == "subscription".
또한, 본 발명의 다른 실시예에 따른 챗봇 서비스 제공 방법은 상기 실행블록에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행한다(S2830).In addition, the chatbot service providing method according to another embodiment of the present invention performs conversation processing corresponding to the intent based on the execution block (S2830).
상술한 구성에 의하여, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 N:N(N은 자연수) 매핑이 가능하도록 하여, 여러가지 다른 발화들로 하나의 기능을 실행할 수 있고, 반대로 유사한 발화들로 전혀 다른 기능을 수행할 수 있다.According to the above configuration, the chatbot service providing method according to an embodiment of the present invention has N:N (N is a natural number) mapping between intents classified as suitable for a natural language processor and execution blocks processing the intents. This allows several different utterances to perform one function, and conversely, similar utterances to perform completely different functions.
또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계를 정의하는 것이 가능하다.In addition, in the chatbot service providing method according to an embodiment of the present invention, it is possible to define various intent-execution block mapping relationships by using an intent mapping list including an intent identifier and a slot condition for each intent.
또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 사용자 대화에 상응하는 인텐트를 식별할 때, 현재 실행블록 이후에 실행될 수 있는 후보블록들을 식별하고, 후보블록들과 연결된 인텐트들만을 식별 대상으로 하여 빠르고 정확한 인텐트 식별이 가능하다.In addition, in the method for providing a chatbot service according to an embodiment of the present invention, when an intent corresponding to a user conversation is identified, candidate blocks that can be executed after the current execution block are identified, and only intents connected to the candidate blocks are identified. Fast and accurate intent identification is possible by targeting the identification.
도 29는 발화 패턴수 증가에 따른 자연어 처리기 성능을 나타낸 그래프이다.29 is a graph showing performance of a natural language processor according to an increase in the number of speech patterns.
도 29를 참조하면, 인텐트를 챗봇이 제공하는 기능별로 구분하는 경우, 다양한 발화 문장들이 추가될 경우 비슷한 발화 패턴이 여러 인텐트들에 자주 나타나게 되고, A와 같이 자연어 처리기(NLU)의 인텐트 분류 성능이 급격히 저하되는 것을 알 수 있다.Referring to FIG. 29, when intents are classified according to functions provided by a chatbot, when various spoken sentences are added, similar speech patterns often appear in several intents, and natural language processor (NLU) intents as shown in A It can be seen that the classification performance is rapidly degraded.
이런 문제를 해결하기 위해 자연어 처리기가 처리하기 적합한 형태로 유사한 발화 패턴별로 인텐트를 정의할 수 있도록 함으로써, 발화 패턴이 늘어나더라도 B과 같이 자연어 처리기 성능을 높게 유지할 수 있다.In order to solve this problem, by defining an intent for each similar speech pattern in a form suitable for processing by the natural language processor, even if the speech pattern increases, the performance of the natural language processor can be maintained high as in B.
또한, 서로 다른 발화패턴을 '블록'이라는 단위에 매핑하여 조건에 의하여 봇이 적절히 처리할 수 있도록 함으로써, 다양한 발화 패턴이 효율적으로 처리될 수 있다.In addition, by mapping different speech patterns to a unit called 'block' so that the bot can properly process them according to conditions, various speech patterns can be efficiently processed.
블록들은 그래프 형태로 연결되고 조건에 따라 응답 대기 상태를 여러 개로 정의할 수 있어서, 조건에 따라 처리 흐름이나 단계가 다양한 업무 처리를 적은 수의 블록들로도 가시적으로 정의할 수 있다.Blocks are connected in the form of a graph, and several response waiting states can be defined according to conditions, so that work processes with various processing flows or steps can be visually defined with a small number of blocks.
본 명세서에서 설명하는 기능적인 동작과 주제의 구현물들은 디지털 전자 회로로 구현되거나, 본 명세서에서 개시하는 구조 및 그 구조적인 등가물들을 포함하는 컴퓨터 소프트웨어, 펌웨어 혹은 하드웨어로 구현되거나, 이들 중 하나 이상의 결합으로 구현 가능하다. 본 명세서에서 설명하는 주제의 구현물들은 하나 이상의 컴퓨터 프로그램 제품, 다시 말해 처리 시스템의 동작을 제어하기 위하여 혹은 이것에 의한 실행을 위하여 유형의 프로그램 저장매체 상에 인코딩된 컴퓨터 프로그램 명령에 관한 하나 이상의 모듈로서 구현될 수 있다.Implementations of the functional operations and subject matter described herein may be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed herein and their structural equivalents, or in a combination of one or more of the foregoing. can be implemented Implementations of the subject matter described herein are one or more computer program products, that is, one or more modules of computer program instructions encoded on a tangible program storage medium for execution by or for controlling the operation of a processing system. can be implemented
컴퓨터로 판독 가능한 매체는 기계로 판독 가능한 저장 장치, 기계로 판독 가능한 저장 기판, 메모리 장치, 기계로 판독 가능한 전파형 신호에 영향을 미치는 물질의 조성물 혹은 이들 중 하나 이상의 조합일 수 있다.A computer readable medium may be a machine readable storage device, a machine readable storage substrate, a memory device, a composition of matter that affects a machine readable propagating signal, or a combination of one or more of these.
본 명세서에서 '시스템'이나 '장치'라 함은 예컨대 프로그래머블 프로세서, 컴퓨터 혹은 다중 프로세서나 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 기구, 장치 및 기계를 포괄한다. 처리 시스템은, 하드웨어에 부가하여, 예컨대 프로세서 펌웨어를 구성하는 코드, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제 혹은 이들 중 하나 이상의 조합 등 요청 시 컴퓨터 프로그램에 대한 실행 환경을 형성하는 코드를 포함할 수 있다.In this specification, the term 'system' or 'apparatus' encompasses all devices, devices, and machines for processing data, including, for example, a programmable processor, computer, or multiple processors or computers. A processing system may include, in addition to hardware, code that forms an execution environment for computer programs on demand, such as, for example, code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of these. .
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 혹은 코드로도 알려져 있음)은 컴파일되거나 해석된 언어나 선험적 혹은 절차적 언어를 포함하는 프로그래밍 언어의 어떠한 형태로도 작성될 수 있으며, 독립형 프로그램이나 모듈, 컴포넌트, 서브루틴 혹은 컴퓨터 환경에서 사용하기에 적합한 다른 유닛을 포함하여 어떠한 형태로도 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 반드시 대응하는 것은 아니다. 프로그램은 요청된 프로그램에 제공되는 단일 파일 내에, 혹은 다중의 상호 작용하는 파일(예컨대, 하나 이상의 모듈, 하위 프로그램 혹은 코드의 일부를 저장하는 파일) 내에, 혹은 다른 프로그램이나 데이터를 보유하는 파일의 일부(예컨대, 마크업 언어 문서 내에 저장되는 하나 이상의 스크립트) 내에 저장될 수 있다. 컴퓨터 프로그램은 하나의 사이트에 위치하거나 복수의 사이트에 걸쳐서 분산되어 통신 네트워크에 의해 상호 접속된 다중 컴퓨터나 하나의 컴퓨터 상에서 실행되도록 전개될 수 있다.A computer program (also known as a program, software, software application, script or code) may be written in any form of programming language, including compiled or interpreted language, a priori or procedural language, and may be a stand-alone program or module; It may be deployed in any form including components, subroutines, or other units suitable for use in a computer environment. A computer program does not necessarily correspond to a file in a file system. A program may be in a single file provided to the requested program, or in multiple interacting files (e.g., one or more modules, subprograms, or files that store portions of code), or parts of files that hold other programs or data. (eg, one or more scripts stored within a markup language document). A computer program may be deployed to be executed on a single computer or multiple computers located at one site or distributed across multiple sites and interconnected by a communication network.
한편, 컴퓨터 프로그램 명령어와 데이터를 저장하기에 적합한 컴퓨터로 판독 가능한 매체는, 예컨대 EPROM, EEPROM 및 플래시메모리 장치와 같은 반도체 메모리 장치, 예컨대 내부 하드디스크나 외장형 디스크와 같은 자기 디스크, 자기광학 디스크 및 CD-ROM과 DVD-ROM 디스크를 포함하여 모든 형태의 비휘발성 메모리, 매체 및 메모리 장치를 포함할 수 있다. 프로세서와 메모리는 특수 목적의 논리 회로에 의해 보충되거나, 그것에 통합될 수 있다.On the other hand, computer-readable media suitable for storing computer program instructions and data include, for example, semiconductor memory devices such as EPROM, EEPROM and flash memory devices, magnetic disks such as internal hard disks or external disks, magneto-optical disks and CDs. - may include all forms of non-volatile memory, media and memory devices, including ROM and DVD-ROM disks. The processor and memory may be supplemented by, or incorporated into, special purpose logic circuitry.
본 명세서에서 설명한 주제의 구현물은 예컨대 데이터 서버와 같은 백엔드 컴포넌트를 포함하거나, 예컨대 어플리케이션 서버와 같은 미들웨어 컴포넌트를 포함하거나, 예컨대 사용자가 본 명세서에서 설명한 주제의 구현물과 상호 작용할 수 있는 웹 브라우저나 그래픽 유저 인터페이스를 갖는 클라이언트 컴퓨터와 같은 프론트엔드 컴포넌트 혹은 그러한 백엔드, 미들웨어 혹은 프론트엔드 컴포넌트의 하나 이상의 모든 조합을 포함하는 연산 시스템에서 구현될 수도 있다. 시스템의 컴포넌트는 예컨대 통신 네트워크와 같은 디지털 데이터 통신의 어떠한 형태나 매체에 의해서도 상호 접속 가능하다.Implementations of the subject matter described herein may include back-end components, such as, for example, data servers, or may include middleware components, such as, for example, application servers, or may include, for example, web browsers or graphical users through which users may interact with implementations of the subject matter described herein. It may also be implemented in a computing system that includes a front-end component, such as a client computer having an interface, or any combination of one or more of such back-ends, middleware, or front-end components. The components of the system are interconnectable by any form or medium of digital data communication, such as, for example, a communication network.
본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 마찬가지로, 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.Although this specification contains many specific implementation details, they should not be construed as limiting on the scope of any invention or what is claimed, but rather as a description of features that may be unique to a particular embodiment of a particular invention. It should be understood. Likewise, certain features that are described in this specification in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments individually or in any suitable subcombination. Further, while features may operate in particular combinations and be initially depicted as such claimed, one or more features from a claimed combination may in some cases be excluded from that combination, and the claimed combination is a subcombination. or sub-combination variations.
또한, 본 명세서에서는 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 시스템 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 시스템들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징될 수 있다는 점을 이해하여야 한다In addition, although operations are depicted in the drawings in a specific order in this specification, it is not to be understood that such operations must be performed in the specific order shown or sequential order or that all illustrated operations must be performed in order to obtain desired results. Can not be done. In certain cases, multitasking and parallel processing can be advantageous. Further, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and the program components and systems described may generally be integrated together into a single software product or packaged into multiple software products. It should be understood that you can
이와 같이, 본 명세서는 그 제시된 구체적인 용어에 본 발명을 제한하려는 의도가 아니다. 따라서, 상술한 예를 참조하여 본 발명을 상세하게 설명하였지만, 당업자라면 본 발명의 범위를 벗어나지 않으면서도 본 예들에 대한 개조, 변경 및 변형을 가할 수 있다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.As such, this specification is not intended to limit the invention to the specific terms presented. Therefore, although the present invention has been described in detail with reference to the above-described examples, those skilled in the art may make alterations, changes, and modifications to the present examples without departing from the scope of the present invention. The scope of the present invention is indicated by the following claims rather than the detailed description above, and all changes or modifications derived from the meaning and scope of the claims and their equivalent concepts should be interpreted as being included in the scope of the present invention. do.
이상에서와 같이 본 발명에 따른 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법 및 장치는 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.As described above, the method and apparatus for providing a chatbot service using block components according to the present invention are not limited to the configuration and method of the embodiments described above, but the embodiments can be modified in various ways All or part of each embodiment may be configured by selectively combining them.
본 발명에 의하면 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법 및 장치가 개시된다. 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은, 슬롯 컴포넌트를 생성하는 단계, 액션 컴포넌트를 생성하는 단계 및 슬롯 컴포넌트 및 액션 컴포넌트를 기반으로 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성하는 단계를 포함한다. 이에 따라, 봇 디자이너가 챗봇 빌더 혹은 챗봇 서비스 제공 장치를 이용하여 봇 처리를 설계하는 경우, 액션 컴포넌트와 슬롯 컴포넌트를 유연하게 활용하여 챗봇을 효과적으로 설계하는 것이 가능하다.According to the present invention, a method and apparatus for providing a chatbot service using a block component are disclosed. A method for providing a chatbot service according to an embodiment of the present invention includes generating a slot component, generating an action component, and an execution block for processing an intent corresponding to a user conversation based on the slot component and the action component. It includes the steps of creating Accordingly, when a bot designer designs bot processing using a chatbot builder or a chatbot service providing device, it is possible to effectively design a chatbot by flexibly utilizing action components and slot components.
1110: 통신부 1120: 프로세서
1130: 메모리 1210: 챗봇
1220: 자연어 처리기 1230: 챗봇 리소스 DB
1240: 챗봇 빌더1110: communication unit 1120: processor
1130: memory 1210: chatbot
1220: natural language processor 1230: chatbot resource DB
1240: chatbot builder
Claims (10)
슬롯 컴포넌트를 생성하는 단계;
액션 컴포넌트를 생성하는 단계; 및
상기 슬롯 컴포넌트 및 상기 액션 컴포넌트를 기반으로 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성하는 단계를 포함하고,
상기 슬롯 컴포넌트는 상기 실행블록 내의 슬롯 필링을 설정하고, 상기 액션 컴포넌트는 상기 실행블록 내의 액션을 설정하고,
상기 슬롯 컴포넌트를 생성하는 단계는
상기 슬롯 필링을 위해 프롬프트 메시지 조건, 슬롯 검증, 인텐트 매핑 및 슬롯 재사용 여부 중 적어도 하나를 설정하고,
상기 인텐트 매핑은
상기 실행블록에 연결된 인텐트, 적어도 하나의 다른 실행블록에 연결된 인텐트 및 상기 실행블록이나 적어도 하나의 다른 실행블록에 연결되지 않은 인텐트를 상기 슬롯 컴포넌트에 연결하는 것에 상응하는 것을 특징으로 하는 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법.A chatbot service providing device using a block component,
creating a slot component;
creating an action component; and
Generating an execution block for processing an intent corresponding to a user conversation based on the slot component and the action component;
The slot component sets slot filling in the execution block, the action component sets an action in the execution block,
The step of creating the slot component is
At least one of a prompt message condition, slot verification, intent mapping, and slot reuse is set for the slot filling;
The intent mapping is
A block characterized in that it corresponds to connecting an intent connected to the execution block, an intent connected to at least one other execution block, and an intent not connected to the execution block or at least one other execution block to the slot component. A method of providing chatbot service using components.
상기 슬롯 컴포넌트를 생성하는 단계는
슬롯에 입력 가능한 개인정보 유형 별 마스킹 설정 정보를 고려하여 슬롯 마스킹 설정을 수행하는 것을 특징으로 하는 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법.The method of claim 2,
The step of creating the slot component is
A method of providing a chatbot service using a block component, characterized in that performing slot masking setting in consideration of masking setting information for each type of personal information that can be input to the slot.
상기 액션은
봇 응답, 블록 흐름 제어, 슬롯 제어 및 API 연동 중 적어도 하나를 포함하는 것을 특징으로 하는 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법.The method of claim 2,
The action
A method of providing a chatbot service using a block component, comprising at least one of bot response, block flow control, slot control, and API interworking.
상기 마스킹 설정 정보는
마스킹 범위, 추천 마스킹 값, 마스킹 범위에 따른 노출 설정 및 마스킹 해제 가능 여부를 포함하는 것을 특징으로 하는 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법.The method of claim 4,
The masking setting information
A method of providing a chatbot service using a block component, comprising a masking range, a recommended masking value, exposure setting according to the masking range, and whether or not masking can be released.
상기 슬롯 컴포넌트는
슬롯 마스킹이 실행되면 원본 메시지와 마스킹 메시지를 생성하되, 상기 마스킹 해제 가능 여부를 고려하여 마스킹 해제가 불가능한 경우에는 상기 원본 메시지에도 상기 마스킹 메시지와 동일하게 마스킹된 값을 입력하는 것을 특징으로 하는 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법.The method of claim 6,
The slot component is
When slot masking is executed, an original message and a masking message are generated, but if masking is impossible to unmask in consideration of whether or not the masking can be unmasked, a masked value identical to that of the masking message is input to the original message Block component characterized in that How to provide chatbot service using
상기 액션 컴포넌트를 생성하는 단계는
복수개의 액션들이 설정되는 경우, 상기 복수개의 액션들의 실행을 위한 동작 우선순위를 설정하는 것을 특징으로 하는 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법.The method of claim 2,
Creating the action component
When a plurality of actions are set, a method of providing a chatbot service using a block component, characterized in that for setting an operation priority for the execution of the plurality of actions.
상기 슬롯 컴포넌트와 상기 액션 컴포넌트는 순서에 상관없이 생성 가능한 것을 특징으로 하는 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법.The method of claim 2,
The method of providing a chatbot service using a block component, characterized in that the slot component and the action component can be generated in any order.
상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리; 를 포함하고,
상기 적어도 하나 이상의 프로그램은,
슬롯 컴포넌트를 생성하고, 액션 컴포넌트를 생성하고, 상기 슬롯 컴포넌트 및 상기 액션 컴포넌트를 기반으로 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성하고,
상기 슬롯 컴포넌트는 상기 실행블록 내의 슬롯 필링을 설정하고, 상기 액션 컴포넌트는 상기 실행블록 내의 액션을 설정하고,
상기 슬롯 필링을 위해 프롬프트 메시지 조건, 슬롯 검증, 인텐트 매핑 및 슬롯 재사용 여부 중 적어도 하나를 설정하고,
상기 인텐트 매핑은
상기 실행블록에 연결된 인텐트, 적어도 하나의 다른 실행블록에 연결된 인텐트 및 상기 실행블록이나 적어도 하나의 다른 실행블록에 연결되지 않은 인텐트를 상기 슬롯 컴포넌트에 연결하는 것에 상응하는 것을 특징으로 하는 블록 컴포넌트를 이용한 챗봇 서비스 제공 장치.one or more processors; and
an execution memory storing at least one or more programs executed by the one or more processors; including,
The at least one or more programs,
Create a slot component, create an action component, and create an execution block for processing an intent corresponding to a user conversation based on the slot component and the action component,
The slot component sets slot filling in the execution block, the action component sets an action in the execution block,
At least one of a prompt message condition, slot verification, intent mapping, and slot reuse is set for the slot filling;
The intent mapping is
A block characterized in that it corresponds to connecting an intent connected to the execution block, an intent connected to at least one other execution block, and an intent not connected to the execution block or at least one other execution block to the slot component. A chatbot service providing device using a component.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200122354A KR102518901B1 (en) | 2020-09-22 | 2020-09-22 | Method and apparatus for providing chatbot service using block component |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200122354A KR102518901B1 (en) | 2020-09-22 | 2020-09-22 | Method and apparatus for providing chatbot service using block component |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220039340A KR20220039340A (en) | 2022-03-29 |
KR102518901B1 true KR102518901B1 (en) | 2023-04-07 |
Family
ID=80995889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200122354A KR102518901B1 (en) | 2020-09-22 | 2020-09-22 | Method and apparatus for providing chatbot service using block component |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102518901B1 (en) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10171898A (en) * | 1996-12-06 | 1998-06-26 | Hitachi Ltd | Remote consultation method |
KR102289917B1 (en) * | 2017-06-30 | 2021-08-12 | 삼성에스디에스 주식회사 | Method for processing dialogue using dialogue act information and Apparatus thereof |
KR102445382B1 (en) | 2017-07-10 | 2022-09-20 | 삼성전자주식회사 | Voice processing method and system supporting the same |
KR102619621B1 (en) * | 2018-02-07 | 2023-12-29 | 삼성전자주식회사 | Electronic device and method for communicating with chatbot |
KR20190118995A (en) * | 2019-10-01 | 2019-10-21 | 엘지전자 주식회사 | Speech processing method and apparatus therefor |
-
2020
- 2020-09-22 KR KR1020200122354A patent/KR102518901B1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR20220039340A (en) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11657797B2 (en) | Routing for chatbots | |
KR102189855B1 (en) | Parameter collection and automatic dialog generation in dialog systems | |
US10540965B2 (en) | Semantic re-ranking of NLU results in conversational dialogue applications | |
US11315560B2 (en) | Method for conducting dialog between human and computer | |
EP3513324B1 (en) | Computerized natural language query intent dispatching | |
US9607102B2 (en) | Task switching in dialogue processing | |
WO2021082836A1 (en) | Robot dialogue method, apparatus and device, and computer-readable storage medium | |
CN103700369B (en) | Phonetic navigation method and system | |
US20200053035A1 (en) | Electronic communication message coaching service | |
CN114424185A (en) | Stop word data augmentation for natural language processing | |
US11216579B2 (en) | Natural language processor extension transmission data protection | |
US20120253789A1 (en) | Conversational Dialog Learning and Correction | |
KR20140094282A (en) | Method and system for providing multi-user messenger service | |
EP3891596A1 (en) | Expediting interaction with a digital assistant by predicting user responses | |
KR20180108973A (en) | Method and for providing automatic translation in user conversation using multiple languages | |
US20200227025A1 (en) | Entity-Level Clarification In Conversation Services | |
US20200175449A1 (en) | Personalized task box listing | |
KR102102287B1 (en) | Method for crowdsourcing data of chat model for chatbot | |
CN116235164A (en) | Out-of-range automatic transition for chat robots | |
KR102566822B1 (en) | Method and apparatus for providing chatbot service | |
KR20220155957A (en) | Method and apparatus for providing chatbot service based on slot filling | |
US11393475B1 (en) | Conversational system for recognizing, understanding, and acting on multiple intents and hypotheses | |
KR102655058B1 (en) | Method and apparatus for providing chatbot service using condition expression generated interface | |
KR102518901B1 (en) | Method and apparatus for providing chatbot service using block component | |
CN117112064A (en) | Large model plug-in calling method, device, equipment and medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |