KR20220039339A - Method and apparatus for providing chatbot service based on slot filling - Google Patents

Method and apparatus for providing chatbot service based on slot filling Download PDF

Info

Publication number
KR20220039339A
KR20220039339A KR1020200122353A KR20200122353A KR20220039339A KR 20220039339 A KR20220039339 A KR 20220039339A KR 1020200122353 A KR1020200122353 A KR 1020200122353A KR 20200122353 A KR20200122353 A KR 20200122353A KR 20220039339 A KR20220039339 A KR 20220039339A
Authority
KR
South Korea
Prior art keywords
slot
intent
block
execution
filling
Prior art date
Application number
KR1020200122353A
Other languages
Korean (ko)
Other versions
KR102466947B1 (en
Inventor
배용주
조은주
Original Assignee
에스케이플래닛 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이플래닛 주식회사 filed Critical 에스케이플래닛 주식회사
Priority to KR1020200122353A priority Critical patent/KR102466947B1/en
Publication of KR20220039339A publication Critical patent/KR20220039339A/en
Priority to KR1020220148686A priority patent/KR20220155957A/en
Application granted granted Critical
Publication of KR102466947B1 publication Critical patent/KR102466947B1/en

Links

Images

Classifications

    • G06Q50/50
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/30Transportation; Communications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3329Natural language query formulation or dialogue systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/247Thesauruses; Synonyms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/258Heading extraction; Automatic titling; Numbering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/02User-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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages

Abstract

Disclosed are a method and device for providing a chatbot service based on slot filling. According to one embodiment of the present invention, the method for providing a chatbot service includes the steps of: determining an intent corresponding to the user conversation; selecting an execution block corresponding to the intent using an intent mapping list; performing slot filling corresponding to the execution block; and performing conversation processing corresponding to the intent based on the slot filling. The intent mapping list is provided for each of the execution blocks, and the intent mapping list corresponds to at least one intent. Accordingly, the chatbot can effectively respond to various user conversation patterns.

Description

슬롯 필링 기반의 챗봇 서비스 제공 방법 및 장치 {METHOD AND APPARATUS FOR PROVIDING CHATBOT SERVICE BASED ON SLOT FILLING}Slot filling-based chatbot service provision method and device {METHOD AND APPARATUS FOR PROVIDING CHATBOT SERVICE BASED ON SLOT FILLING}

본 발명은 챗봇(chatbot) 서비스 제공 방법 및 장치에 관한 것으로, 특히 사용자가 처음부터 말하기 어려운 정보나 사용자와 대화를 진행하면서 추가된 정보들에 대해서도 슬롯 필링이 가능한 슬롯 필링 기반의 챗봇 서비스 제공 기술에 관한 것이다.The present invention relates to a method and apparatus for providing a chatbot service, in particular, to a slot filling-based chatbot service providing technology that allows slot filling for information that is difficult for a user to speak from the beginning or information added during a conversation with the user. it's about

본 명세서에서 달리 표시되지 않는 한, 이 섹션에 설명되는 내용들은 이 출원의 청구항들에 대한 종래 기술이 아니며, 이 섹션에 포함된다고 하여 종래 기술이라고 인정되는 것은 아니다.Unless otherwise indicated herein, the material described in this section is not prior art to the claims of this application, and inclusion in this section is not an admission that it is prior art.

챗봇(chatbot)은 문자나 음성으로 대화하는 기능이 구비된 컴퓨터 프로그램이나 인공지능을 말하며, 사람처럼 자연스러운 대화를 진행하기 위해 단어나 구(句)의 매칭만을 이용하는 단순한 챗봇부터 복잡하고 정교한 자연어 처리 기술을 적용한 챗봇까지 다양한 수준의 챗봇들이 존재한다.A chatbot is a computer program or artificial intelligence equipped with the ability to communicate through text or voice. There are chatbots of various levels, including chatbots to which .

챗봇을 이용한 대화형 AI 에이전트 시스템은 사용자의 입력에 대해 사용자가 원하는 서비스가 어떤 것인지를 파악하고 그 응답을 제공한다. 이 때, 사용자가 자연스러운 문장을 통하여 입력을 제공한 경우, 입력에 처리를 위해 자연어 처리 기술이 적용될 수 있다. 이를 위해, 사용자의 의도(intent)가 동일한 발화 예시 문장들 여러 개를 모아서 하나의 인텐트로 분류한다. 이렇게 분류된 인텐트들 각각에 대응하는 봇 응답을 매핑(mapping)하거나 서비스 API 호출 등의 동작을 정의함으로써 사용자의 다양한 자연 발화를 처리할 수 있는 챗봇 서비스 제공이 가능하다.Conversational AI agent system using chatbot identifies which service the user wants in response to user 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 having the same user intent are collected and classified into one intent. It is possible to provide a chatbot service that can handle various spontaneous utterances of a user by mapping a bot response corresponding to each of the classified intents or defining an operation such as a service API call.

하나의 사용자의 발화 단위(인텐트)별로 하나의 봇 응답 단위(실행블록)를 매핑하는 경우, 서비스 기능이 늘어날수록 봇 응답들과 이에 대응하는 인텐트들도 늘어나게 된다. 인텐트들에 할당되게 되고, 의도 분류시 복수의 근소한 스코어(score) 차이를 가지는 인텐트들이 발생하게 되어 의도 분류에서 오류가 발생할 가능성이 높아진다. When one bot response unit (execution block) is mapped for each utterance unit (intent) of one user, as the service function increases, bot responses and corresponding intents also increase. Intents are allocated to intents, and when intent classification is performed, a plurality of intents having a slight score difference are generated, thereby increasing the possibility of an error in intention classification.

인텐트의 개수가 늘어나지 않더라도, 사용자의 자연스러운 다양한 발화를 인식하기 위해 인텐트에 다양한 발화 패턴을 등록하게 되면, 유사한 패턴이 여러 인텐트에 등록되게 되므로 자연어 처리기에서 서로 다른 인텐트간에 유사한 발화를 정확히 처리하기 어려워서 의도 분류에 오류가 발생하기 쉽다. Even if the number of intents does not increase, if various utterance patterns are registered in an intent to recognize various natural utterances of the user, similar patterns are registered in several intents, so that the natural language processor accurately detects similar utterances between different intents. It is difficult to handle, so it is prone to errors in intent classification.

즉, 인텐트와 봇 응답 단위가 1:1로 매핑되는 상황에 맞추어 발화를 분류하게 되면 인텐트 개수가 늘어나거나 인텐트에 등록된 예시 발화 문장의 개수가 늘어날수록 자연어 처리기의 성능이 떨어지는 문제가 발생하고, 자연어 처리기의 성능을 보장하기 위해 발화를 분류하게 되면 인텐트 하나에 유사한 발화 패턴을 모두 정의하게 되어 해당 인텐트에 매핑되는 블록의 구현이 매우 복잡해지고 실제 제공되는 여러 기능이 블록 하나에 매핑되는 상황이 되어 관리상의 어려움이 불가피하다.In other words, if utterances are classified according to the situation in which the intent and the bot response unit are mapped 1:1, the performance of the natural language processor decreases as the number of intents increases or the number of example utterance sentences registered in the intent increases. When utterances are classified to ensure the performance of the natural language processor, similar utterance patterns are all defined in one intent, which makes the implementation of the block mapped to the corresponding intent very complicated, and several functions actually provided are in one block. It becomes a mapping situation, and management difficulties are inevitable.

또한, 대부분의 챗봇은 사용자 발화시 모든 인텐트를 대상으로 서치(search)하여 봇의 동작을 프로세싱하는데, 이와 같이 모든 인텐트를 대상으로 서치하는 경우에는 자연어 처리기의 결과 처리 문제와 봇 응답 및 액션 구성이 복잡해지는 문제가 발생한다.In addition, most chatbots process the bot's actions by searching for all intents when a user utters a utterance. A problem arises in which the configuration becomes complicated.

따라서, 인텐트와 봇 응답 단위를 보다 자유롭게 매핑할 수 있는 새로운 챗봇 서비스 제공 기술의 필요성이 절실하게 대두된다.Therefore, there is an urgent need for a new chatbot service providing technology that can map intents and bot response units more freely.

한국 공개 특허 제10-2019-0006403호, 2019년 1월 18일 공개 (명칭: 음성 처리 방법 및 이를 지원하는 시스템)Korean Patent Laid-Open Patent No. 10-2019-0006403, published on January 18, 2019 (Title: Voice processing method and system supporting the same)

본 발명의 목적은, 동일한 인텐트가 서로 다른 실행블록에서 사용되는 경우에 실행블록에 정의된 슬롯 필링을 기반으로 다르게 동작하도록 설정함으로써 다양한 사용자 대화 패턴에 대해 챗봇이 효과적으로 대응하도록 하는 것이다.An object of the present invention is to enable a chatbot to effectively respond to various user conversation patterns by setting it to operate differently based on the slot filling defined in the execution block when the same intent is used in different execution blocks.

또한, 본 발명의 목적은, 하나의 슬롯에 매핑된 여러 개의 엔티티들을 이용하여 인텐트에 존재하는 슬롯뿐만 아니라 전혀 새로운 슬롯에 대한 슬롯 필링을 수행할 수 있고, 이를 통해 사용자가 처음부터 말하기 어려운 정보나 대화를 진행하면서 추가된 정보들에 대해서도 슬롯 필링이 가능하게 하는 것이다. In addition, it is an object of the present invention to perform slot filling not only for slots existing in the intent but also for completely new slots using multiple entities mapped to one slot, and through this, information that is difficult for a user to say from the beginning It is to enable slot filling for information added during conversation.

또한, 본 발명의 목적은, 슬롯 재사용 기능을 제공함으로써 컨텍스트 흐름을 유지하기 위한 과정을 간소화하고, 컨텍스트 흐름 유지를 위해 설정되는 슬롯 값들을 보다 효과적으로 관리하는 것이다.Another object of the present invention is to simplify a process for maintaining a context flow by providing a slot reuse function, and to more effectively manage slot values set for maintaining a context flow.

또한, 본 발명의 목적은, 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 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 appropriately for a natural language processor and execution blocks that process intents, so that one It is to be able to execute a function and, conversely, to perform a completely different function with similar utterances.

또한, 본 발명의 목적은 하나 이상의 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계가 가능해지도록 하는 것이다.Another 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 other objects may be derived from the following description.

상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 방법은 사용자 대화에 상응하는 인텐트를 결정하는 단계; 인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택하는 단계; 상기 실행블록에 상응하는 슬롯 필링을 수행하는 단계; 상기 슬롯 필링에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행하는 단계를 포함하고, 상기 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응한다.According to an embodiment of the present invention for achieving the above object, a method for providing a slot filling-based chatbot service includes determining an intent corresponding to a user conversation; selecting an execution block corresponding to the intent by using an intent mapping list; performing slot filling corresponding to the execution block; and performing dialog processing corresponding to the intent based on the slot filling, wherein the intent mapping list is provided for each of the execution blocks and corresponds to at least one intent.

이 때, 슬롯 필링을 수행하는 단계는 슬롯에 매핑된 엔티티, 상기 실행블록에 상응하는 슬롯들 및 슬롯의 인텐트 매핑 정보 중 적어도 하나를 기반으로 슬롯 필링을 수행할 수 있다.In this case, performing slot filling may include performing slot filling based on at least one of an entity mapped to a slot, slots corresponding to the execution block, and intent mapping information of the slot.

이 때, 인텐트 매핑 정보는 슬롯에 매핑된 인텐트 이름, 슬롯에 매핑된 인텐트의 슬롯 이름, 슬롯에 매핑된 인텐트의 슬롯 값 및 슬롯에 매핑된 인텐트의 슬롯 값에 의한 결과 값 중 적어도 하나를 포함할 수 있다.In this case, the intent mapping information includes an intent name mapped to a slot, a slot name of an intent mapped to a slot, a slot value of an intent mapped to a slot, and a result value based on a slot value of an intent mapped to a slot. It may include at least one.

이 때, 실행블록에 상응하는 슬롯들은 상기 인텐트 매핑 리스트를 통해 상기 실행블록과 연결된 인텐트들의 슬롯들을 포함할 수 있다.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.

이 때, 슬롯 필링을 수행하는 단계는 상기 슬롯에 매핑된 엔티티에 대한 동의어 매칭을 수행하여 슬롯 값을 추출할 수 있다.In this case, performing the slot filling may extract a slot value by performing synonym matching on the entity mapped to the slot.

이 때, 하나의 슬롯은 복수개의 엔티티들과 매핑 가능할 수 있다.In this case, one slot may be mappable to a plurality of entities.

이 때, 실행블록이 포함되는 시나리오를 고려하여 슬롯 컨텍스트를 유지하기 위한 슬롯 재사용 설정을 수행하는 단계를 더 포함할 수 있다.In this case, the method may further include performing a slot reuse setting for maintaining a slot context in consideration of a scenario in which an execution block is included.

이 때, 슬롯 재사용 설정이 수행된 실행블록과 연결된 인텐트들의 슬롯들은 상기 시나리오가 종료된 후 다시 실행했을 때에도 슬롯 값이 삭제되지 않을 수 있다.In this case, the slot values of the slots of the intents connected to the execution block in which the slot reuse setting has been performed may not be deleted even when the scenario is re-executed after the end of the scenario.

이 때, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다.In this case, the intent mapping list may include an intent identifier and a slot condition for each intent.

또한, 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 장치는, 하나 이상의 프로세서; 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리; 를 포함하고, 상기 적어도 하나 이상의 프로그램은, 사용자 대화에 상응하는 인텐트를 결정하고, 인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택하고, 상기 실행블록에 상응하는 슬롯 필링을 수행하고, 상기 슬롯 필링에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행하되, 상기 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응한다.In addition, the slot filling-based chatbot service providing apparatus according to an embodiment of the present invention, one or more processors; and an execution memory for storing at least one or more programs executed by the one or more processors; wherein the at least one program determines an intent corresponding to a user conversation, selects an execution block corresponding to the intent using an intent mapping list, and performs slot filling corresponding to the execution block. and performs dialog processing corresponding to the intent based on the slot filling, wherein the intent mapping list is provided for each of the execution blocks and corresponds to at least one intent.

이 때, 상기 적어도 하나 이상의 프로그램은 슬롯에 매핑된 엔티티, 상기 실행블록에 상응하는 슬롯들 및 슬롯의 인텐트 매핑 정보 중 적어도 하나를 기반으로 슬롯 필링을 수행할 수 있다.In this case, the at least one program may perform slot filling based on at least one of an entity mapped to a slot, slots corresponding to the execution block, and intent mapping information of the slot.

이 때, 인텐트 매핑 정보는 슬롯에 매핑된 인텐트 이름, 슬롯에 매핑된 인텐트의 슬롯 이름, 슬롯에 매핑된 인텐트의 슬롯 값 및 슬롯에 매핑된 인텐트의 슬롯 값에 의한 결과 값 중 적어도 하나를 포함할 수 있다.In this case, the intent mapping information includes an intent name mapped to a slot, a slot name of an intent mapped to a slot, a slot value of an intent mapped to a slot, and a result value based on a slot value of an intent mapped to a slot. It may include at least one.

이 때, 실행블록에 상응하는 슬롯들은 상기 인텐트 매핑 리스트를 통해 상기 실행블록과 연결된 인텐트들의 슬롯들을 포함할 수 있다.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.

이 때, 상기 적어도 하나 이상의 프로그램은 상기 슬롯에 매핑된 엔티티에 대한 동의어 매칭을 수행하여 슬롯 값을 추출할 수 있다.In this case, the at least one program may extract a slot value by performing synonym matching on the entity mapped to the slot.

이 때, 하나의 슬롯은 복수개의 엔티티들과 매핑 가능할 수 있다.In this case, one slot may be mappable to a plurality of entities.

이 때, 상기 적어도 하나 이상의 프로그램은 실행블록이 포함되는 시나리오를 고려하여 슬롯 컨텍스트를 유지하기 위한 슬롯 재사용 설정을 수행할 수 있다.In this case, the at least one program may perform slot reuse setting for maintaining a slot context in consideration of a scenario in which an execution block is included.

이 때, 슬롯 재사용 설정이 수행된 실행블록과 연결된 인텐트들의 슬롯들은 상기 시나리오가 종료된 후 다시 실행했을 때에도 슬롯 값이 삭제되지 않을 수 있다.In this case, the slot values of the slots of the intents connected to the execution block in which the slot reuse setting has been performed may not be deleted even when the scenario is re-executed after the end of the scenario.

이 때, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다.In this case, the intent mapping list may include an intent identifier and a slot condition for each intent.

본 발명에 따르면, 동일한 인텐트가 서로 다른 실행블록에서 사용되는 경우에 실행블록에 정의된 슬롯 필링을 기반으로 다르게 동작하도록 설정함으로써 다양한 사용자 대화 패턴에 대해 챗봇이 효과적으로 대응할 수 있다.According to the present invention, when the same intent is used in different execution blocks, the chatbot can effectively respond to various user conversation patterns by setting it to operate differently based on the slot filling defined in the execution blocks.

또한, 본 발명은 하나의 슬롯에 매핑된 여러 개의 엔티티들을 이용하여 인텐트에 존재하는 슬롯뿐만 아니라 전혀 새로운 슬롯에 대한 슬롯 필링을 수행할 수 있고, 이를 통해 사용자가 처음부터 말하기 어려운 정보나 대화를 진행하면서 추가된 정보들에 대해서도 슬롯 필링이 가능하게 할 수 있다.In addition, the present invention can perform slot filling not only for slots existing in the intent but also for completely new slots using multiple entities mapped to one slot, and through this, information or conversation that is difficult for a user to speak from the beginning can be performed. Slot filling may be enabled for information added during the process.

또한, 본 발명은 슬롯 재사용 기능을 제공함으로써 컨텍스트 흐름을 유지하기 위한 과정을 간소화하고, 컨텍스트 흐름 유지를 위해 설정되는 슬롯 값들을 보다 효과적으로 관리할 수 있다.In addition, the present invention can simplify a process for maintaining a context flow by providing a slot reuse function, and more effectively manage slot values set for maintaining a context flow.

또한, 본 발명은 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 N: N(N은 자연수) 매핑이 가능하도록 하여, 여러가지 다른 발화들로 하나의 기능을 실행할 수 있고, 반대로 유사한 발화들로 전혀 다른 기능을 수행할 수 있다.In addition, the present invention enables N:N (N is a natural number) mapping between intents classified appropriately for a natural language processor and execution blocks processing the intents, thereby executing one function with various different utterances. Conversely, similar utterances may 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.

본 실시 예들의 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.Effects of the present embodiments are not limited to the above-mentioned effects, 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는 도 3에 도시된 인텐트를 기반으로 인텐트 매핑 정보의 일 예를 나타낸 도면이다.
도 5는 본 발명에 따른 슬롯 필링 처리 과정의 일 예를 나타낸 동작흐름도이다.
도 6은 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 장치를 나타낸 블록도이다.
도 7은 본 발명의 일실시예에 따른 챗봇 서비스 시스템을 나타낸 블록도이다.
도 8은 본 발명의 일실시예에 따른 '커피 주문' 시나리오의 블록 다이어그램을 나타낸 도면이다.
도 9는 도 8에 도시된 시나리오에 사용되는 인텐트들의 일 예를 나타낸 도면이다.
도 10은 복수개의 인텐트들과 복수개의 실행블록들 사이의 연결을 나타낸 블록도이다.
도 11은 도 9에 도시된 실행블록 커피 선택의 일 예를 나타낸 도면이다.
도 12는 도 9에 도시된 실행블록 핫아이스확인의 일 예를 나타낸 도면이다.
도 13은 도 9에 도시된 실행블록 테이크아웃확인의 일 예를 나타낸 도면이다.
도 9는 도 9 내지 도 13에 도시된 실행블록들의 연결관계를 나타낸 블록도이다.
도 10은 실행블록에서 사용자 응답 대기 상태를 정의하여 블록들을 연결하는 일 예를 도시한 도면이다.
도 16은 발화 패턴별로 정의된 인텐트를 블록에 매핑하는 일 예를 나타낸 도면이다.
도 17은 인텐트와 실행블록을 1:1 매핑하는 경우를 나타낸 도면이다.
도 18은 본 발명의 일실시예에 따른 인텐트 분류 및 블록 매핑의 일 예를 나타낸 도면이다.
도 19는 도 27에 도시된 응답들에 상응하는 실행블록들을 나타낸 도면이다.
도 20은 도 8 내지 도 9에서 예시된 커피주문 시나리오에 상응하는 조건의 포함관계에 따른 우선순위 정렬 예를 나타낸 도면이다.
도 21은 챗봇 실행에 필요한 모듈들의 일 예를 나타낸 블록도이다.
도 22는 챗봇 실행 중 인텐트와 블록을 검색하는 과정을 나타낸 도면이다.
도 23은 본 발명의 다른 실시예에 따른 챗봇 서비스 제공 방법을 나타낸 동작 흐름도이다.
도 24는 발화 패턴수 증가에 따른 자연어 처리기 성능을 나타낸 그래프이다.
1 is an operation flowchart illustrating a method for providing a slot filling-based chatbot service according to an embodiment of the present invention.
2 is a diagram illustrating an example of an entity according to the present invention.
3 is a diagram illustrating an example of an intent to which the entity shown in FIG. 2 is applied.
FIG. 4 is a diagram illustrating an example of intent mapping information based on the intent shown in FIG. 3 .
5 is an operation flowchart illustrating an example of a slot filling process according to the present invention.
6 is a block diagram illustrating an apparatus for providing a slot filling-based chatbot service according to an embodiment of the present invention.
7 is a block diagram illustrating a chatbot service system according to an embodiment of the present invention.
8 is a diagram illustrating a block diagram of a 'coffee order' scenario according to an embodiment of the present invention.
9 is a diagram illustrating an example of intents used in the scenario shown in FIG. 8 .
10 is a block diagram illustrating a connection between a plurality of intents and a plurality of execution blocks.
11 is a view showing an example of the execution block coffee selection shown in FIG.
12 is a diagram illustrating an example of the execution block hot ice check shown in FIG.
13 is a diagram illustrating an example of execution block takeout confirmation shown in FIG. 9 .
9 is a block diagram illustrating a connection relationship between the execution blocks shown in FIGS. 9 to 13 .
10 is a diagram illustrating an example of connecting blocks by defining a user response standby state in an execution block.
16 is a diagram illustrating an example of mapping intents defined for each utterance pattern to a block.
17 is a diagram illustrating a case of 1:1 mapping of intents and execution blocks.
18 is a diagram illustrating an example of intent classification and block mapping according to an embodiment of the present invention.
19 is a diagram illustrating execution blocks corresponding to the responses shown in FIG. 27 .
20 is a view showing an example of prioritization according to the inclusion of the condition corresponding to the coffee order scenario illustrated in FIGS. 8 to 9 .
21 is a block diagram illustrating an example of modules required to execute a chatbot.
22 is a diagram illustrating a process of searching for an intent and a block while the chatbot is running.
23 is an operation flowchart illustrating a method for providing a chatbot service according to another embodiment of the present invention.
24 is a graph showing the performance of a natural language processor according to an increase in the number of utterance 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 in the following description and accompanying drawings will be omitted. Also, it should be noted that, throughout the drawings, the same components are denoted by the same reference numerals as much as possible.

이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위한 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다. 또한 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하기 위해 사용하는 것으로, 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용될 뿐, 상기 구성요소들을 한정하기 위해 사용되지 않는다.The terms or words used in the present specification and claims described below should not be construed as being limited to their ordinary or dictionary meanings, and the inventor is appropriate as a concept of terms for describing his invention in the best way. It should be interpreted as meaning and concept consistent with the technical idea of the present invention based on the principle that it can be defined in Therefore, the embodiments described in this specification and the configurations shown in the drawings are only the most preferred embodiment of the present invention, and do not represent all the technical spirit of the present invention, so at the time of the present application, various It should be understood that there may be equivalents and variations. In addition, terms such as 1st, 2nd, etc. are used to describe various components, and are used only for the purpose of distinguishing one component from other components, and are not used to limit the components.

종래의 챗봇 서비스에서는 사용자의 최초 발화만을 이용하거나 슬롯에 매핑된 하나의 엔티티만을 기반으로 동의어 매칭을 수행하여 슬롯 값을 추출하였기 때문에 사용자가 처음부터 말하기 어려운 정보라던지 챗봇이 사용자와 대화를 진행하면서 추가된 정보들에 대해서는 슬롯 필링이 어렵다는 단점이 존재하였다. In the conventional chatbot service, the slot value is extracted by using only the user's initial utterance or by performing synonym matching based on only one entity mapped to the slot. There was a disadvantage in that slot filling was difficult for the added information.

또한, 슬롯 필링 수행 시, 단순히 인텐트에 종속된 슬롯의 필수 여부나 유도 메시지(prompt message)를 설정하는 것만으로는, 동일한 인텐트가 기능이 다른 실행블록에서도 모두 동일하게 슬롯을 처리하게 만들어서 오히려 비효율적인 결과를 야기하기도 하였다.In addition, when performing slot filling, simply setting whether a slot dependent on an intent or a prompt message It can also lead to inefficient results.

따라서, 본 발명에서는 상술한 문제점들을 해소할 수 있는 슬롯 필링 기반의 챗봇 서비스 제공 기술을 제안하고자 한다.Accordingly, the present invention intends to propose a slot filling-based chatbot service providing technology that can solve the above problems.

도 1은 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 방법을 나타낸 동작 흐름도이다.1 is an operation flowchart illustrating a method for providing a slot filling-based chatbot service according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 방법은 사용자 대화에 상응하는 인텐트를 결정한다(S110).Referring to FIG. 1 , in the method for providing a chatbot service based on slot filling according to an embodiment of the present invention, an intent corresponding to a user conversation is determined ( S110 ).

이 때, 사용자 대화에 상응하는 인텐트는 현재 블록과 그래프(graph)를 통해 연결된 하나 이상의 후보블록 또는 메인블록에 연결된 인텐트 후보 내에서 선택될 수 있다.In this case, an intent corresponding to the user conversation may be selected from among intent candidates connected to one or more candidate blocks or main blocks connected to the current block through a graph.

이 때, 사용자 대화에 상응하는 인텐트는 후보블록에 연결된 제1 인텐트 후보가 메인블록에 연결된 제2 인텐트 후보보다 우선적으로 고려되어 결정될 수 있다.In this case, the intent corresponding to the user conversation may be determined by considering the first intent candidate connected to the candidate block in preference to the second intent candidate connected to the main block.

또한, 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 방법은 인텐트 매핑 리스트를 이용하여 인텐트에 상응하는 실행블록을 선택한다(S120).Also, in the slot filling-based chatbot service providing method according to an embodiment of the present invention, an execution block corresponding to an intent is selected using an intent mapping list (S120).

이 때, 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응하는 것일 수 있다.In this case, the intent mapping list is provided for each of the execution blocks, and may correspond to at least one intent.

이 때, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다. 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 a conditional statement related to one or more slots.

이 때, 슬롯 조건은 널(NULL) 조건을 포함할 수 있다.In this case, 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 in the case of an intent, execution blocks different from each other have the same intent identifier. If the slot conditions are different, it can 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 == "가입"에 해당하는 실행블록보다 우선적으로 고려되어 선택될 수 있다.In this case, the execution block corresponding to the intent is a first execution block having a slot condition inclusion relationship corresponding to the large set when the intent corresponding to the user conversation is connected to a plurality of execution blocks. A second execution block having an inclusion relationship of a slot condition corresponding to a small set to be included may be considered and selected with priority. 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 considered and selected prior to an execution block corresponding to $service == "subscription".

또한, 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 방법은 실행블록에 상응하는 슬롯 필링을 수행한다(S130).In addition, the slot filling-based chatbot service providing method according to an embodiment of the present invention performs slot filling corresponding to the execution block (S130).

이 때, 슬롯 필링은 슬롯에 입력 가능한 슬롯 값을 사용자로부터 입력 받는 과정을 의미할 수 있다. In this case, the slot filling may refer to a process of receiving an input of a slot value that can be inputted into the slot from the user.

이 때, 슬롯에 매핑된 엔티티, 실행블록에 상응하는 슬롯들 및 슬롯의 인텐트 매핑 정보 중 적어도 하나를 기반으로 슬롯 필링을 수행할 수 있다. In this case, slot filling may be performed based on at least one of an entity mapped to a slot, slots corresponding to an execution block, and intent mapping information of the slot.

예를 들어, 사용자가 챗봇과의 대화를 통해 슬롯 값을 정확하게 말했을 경우에는 슬롯에 매핑된 엔티티를 기반으로 슬롯 필링을 수행할 수 있고, 사용자가 현재 실행블록에 상응하는 인텐트에 해당하는 문장을 말했을 경우에는 실행블록에 상응하는 슬롯들을 기반으로 슬롯 필링을 수행할 수 있다. For example, if the user correctly said the slot value through a conversation with the chatbot, slot filling can be performed based on the entity mapped to the slot, and the user's sentence corresponding to the intent corresponding to the current execution block. , slot filling can be performed based on slots corresponding to the execution block.

이 때, 슬롯에 매핑된 엔티티에 대한 동의어 매칭을 수행하여 슬롯 값을 추출할 수 있다. 즉, 슬롯에 매핑된 엔티티들은 슬롯에 어떤 슬롯 값이 입력될 수 있는지를 나타낼 수 있다. In this case, the slot value may be extracted by performing synonym matching on the entity mapped to the slot. That is, entities mapped to the slot may indicate which slot value can be input to the slot.

예를 들어, 'order_coffee'라는 인텐트가 포함하는 $coffee 슬롯에 '커피' 엔티티가 매핑되어 있다고 가정하면, $coffee 슬롯의 슬롯 값에는 '커피' 엔티티에 상응하게 슬롯 값이 입력될 수 있다. For example, assuming that the 'coffee' entity is mapped to the $coffee slot included in the 'order_coffee' intent, a slot value corresponding to the 'coffee' entity may be input to the slot value of the $coffee slot.

다른 예를 들어, 'order_juice'라는 인텐트가 포함하는 $juice 슬롯에 '주스' 엔티티가 매핑되어 있다고 가정하면, $juice 슬롯의 슬롯 값에는 '주스' 엔티티에 상응하게 슬롯 값이 입력될 수 있다.For another example, assuming that the 'juice' entity is mapped to the $juice slot included in the 'order_juice' intent, a slot value corresponding to the 'juice' entity may be input to the slot value of the $juice slot. .

이 때, 하나의 슬롯은 복수개의 엔티티들과 매핑 가능할 수 있다. In this case, one slot may be mappable to a plurality of entities.

이 때, 본 발명에서는 하나의 슬롯에 복수개의 엔티티들을 매핑함으로써 사용자 발화를 통해 발생할 수 있는 다양한 상황에 대응할 수 있다. In this case, in the present invention, by mapping a plurality of entities to one slot, it is possible to respond to various situations that may occur through user utterance.

예를 들어, '커피 주문'이나 '주스 주문'처럼 카테고리가 정해진 인텐트가 아니라 '음료 주문'처럼 커피와 주스 등의 음료를 모두 주문 가능한 경우에는 'order_drink' 인텐트가 포함하는 $drink 슬롯에 '커피' 엔티티, '주스' 엔티티, '음료' 엔티티 등을 복수로 매핑함으로써 사용자가 발화하는 다양한 음료를 정의할 수 있도록 한다. For example, if you can order both coffee and juice, such as 'order a drink' instead of an intent with a set category, such as 'order coffee' or 'order juice', it is stored in the $drink slot included by the 'order_drink' intent. By mapping a plurality of 'coffee' entities, 'juice' entities, and 'drinks' entities, it is possible to define various beverages that the user utters.

이 때, 본 발명에 일실시예에 따라 엔티티가 매핑되지 않은 슬롯이 존재할 수도 있는데, 이러한 경우에는 엔티티 동의어 매칭 이외의 방식을 기반으로 사용자의 발화 내용에서 자유롭게 슬롯 값을 설정할 수도 있다. At this time, according to an embodiment of the present invention, a slot to which an entity is not mapped may exist. In this case, the slot value may be freely set in the user's utterance based on a method other than entity synonym matching.

이 때, 엔티티에 대한 동의어 매칭은, 사용자 발화 내용 중 엔티티의 동의어로 설정되어 있는 값이 존재하는지 여부를 매칭하는 것으로, 사용자 발화 내용 중 엔티티의 동의어가 검출되었다면, 해당 엔티티에 상응하게 슬롯 값을 입력할 수 있다. In this case, the synonym matching for the entity is matching whether a value set as a synonym of the entity in the user's speech content exists. If a synonym of the entity is detected in the user's speech content, a slot value corresponding to the entity can be entered.

예를 들어, 'member_action' 인텐트가 포함하는 $action 슬롯에 대해 도 2에 도시된 join 엔티티, register 엔티티, cancel 엔티티, withdraw 엔티티가 매핑되어 있다고 가정할 수 있다. 이 때 만약, 사용자로부터 "가입할래요"라는 발화가 입력되면, 엔티티 동의어 매칭을 수행하여 join 엔티티에 상응하는 대표어 'join'을 슬롯 값으로 입력할 수 있다. For example, it may be assumed that the join entity, register entity, cancel entity, and withdraw entity shown in FIG. 2 are mapped to the $action slot included in the 'member_action' intent. At this time, if an utterance "I want to join" is input from the user, entity synonym matching is performed to input the representative word 'join' corresponding to the join entity as a slot value.

이 때, 본 발명에서는 현재 실행블록에 상응하는 인텐트에는 존재하지 않는 인텐트들에 대해서도 추가적으로 슬롯 필링을 수행하기 위해서 슬롯의 인텐트 매핑 정보 기반으로 슬롯 필링을 수행할 수 있다. In this case, in the present invention, slot filling may be performed based on the intent mapping information of the slot in order to additionally perform slot filling even for intents that do not exist in the intent corresponding to the current execution block.

이 때, 본 발명에서는 슬롯 필링을 수행할 때 인텐트 매핑 정보를 기반으로 인텐트에 존재하는 슬롯뿐만 아니라 전혀 새로운 슬롯에 대해서도 슬롯 필링을 수행할 수 있으며, 이 때에도 마찬가지로 슬롯에 엔티티를 지정하여 사용할 수 있다. 이러한 과정을 통해 사용자 발화에 의해 발생할 수 있는 다양한 상황을 챗봇이 유연하게 대응하여 처리하는 것이 가능하다. At this time, in the present invention, when performing slot filling, based on the intent mapping information, slot filling can be performed not only on slots existing in the intent but also on completely new slots. can Through this process, it is possible for the chatbot to respond flexibly to various situations that may occur due to user utterance.

예를 들어, 사용자가 "HDMI 연결이 안돼요"라고 말했을 때, 챗봇이 "모델 확인을 위해 뒷면의 시리얼 번호를 입력해주세요"라고 응답할 수 있다. For example, when the user says "HDMI connection is not working", the chatbot can respond "Please enter the serial number on the back to confirm the model".

다른 예를 들어, 사용자가 "구매 취소해주세요"라고 말했을 때, 챗봇이 사용자의 휴대폰으로 인증번호를 발송하고 나서"본인확인을 위해 휴대폰으로 발송된 인증 번호를 입력해주세요"라고 응답할 수 있다. For another example, when the user says "Please cancel the purchase", the chatbot may send a verification code to the user's mobile phone, and then respond "Please enter the verification code sent to the mobile phone to verify your identity."

즉, 사용자가 처음부터 말하기 어려운 정보나, 대화를 진행하면서 추가된 정보들도 슬롯 필링을 수행할 수 있다.That is, information that is difficult for the user to speak from the beginning or information added during a conversation may also be slot-filled.

이 때, 인텐트 매핑 정보는 슬롯에 매핑된 인텐트 이름, 슬롯에 매핑된 인텐트의 슬롯 이름, 슬롯에 매핑된 인텐트의 슬롯 값 및 슬롯에 매핑된 인텐트의 슬롯 값에 의한 결과 값 중 적어도 하나를 포함할 수 있다. In this case, the intent mapping information includes an intent name mapped to a slot, a slot name of an intent mapped to a slot, a slot value of an intent mapped to a slot, and a result value based on a slot value of an intent mapped to a slot. It may include at least one.

이하에서는, 도 2 내지 도 4를 참조하여 인텐트 매핑 정보를 기반으로 슬롯 필링을 수행하는 과정을 상세하게 설명하도록 한다. Hereinafter, a process of performing slot filling based on intent mapping information will be described in detail with reference to FIGS. 2 to 4 .

예를 들어, 도 2에 도시된 것처럼 엔티티가 정의되어 있고, 도 3에 도시된 것처럼 인텐트와 슬롯이 정의되어 있는 상태라고 가정한다면, 'join_confirm' 슬롯에는 join 엔티티와 cancel 엔티티가 매핑되어 있으므로 'join_confirm' 슬롯에 대한 인텐트 매핑 정보는 도 4에 도시된 것처럼 정의될 수 있다. For example, assuming that an entity is defined as shown in FIG. 2 and an intent and a slot are defined as shown in FIG. 3, since the join entity and the cancel entity are mapped in the 'join_confirm' slot, ' Intent mapping information for the 'join_confirm' slot may be defined as shown in FIG. 4 .

예를 들어, 도 4에 도시된 인텐트들 중 첫번째 위치하는 'join_confirm' 인텐트의 경우, 슬롯에 매핑된 인텐트 이름을 이용하여 매핑된 것일 수 있다.For example, in the case of a 'join_confirm' intent located first among the intents shown in FIG. 4 , it may be mapped using an intent name mapped to a slot.

이 때, 도 3을 참조하면 'join_confirm' 인텐트에 'join_confirm'슬롯이 포함되어 있으므로, 'join_confirm' 인텐트에 상응하게 슬롯 값을 입력할 수 있다. At this time, referring to FIG. 3 , since the 'join_confirm' slot is included in the 'join_confirm' intent, a slot value can be input corresponding to the 'join_confirm' intent.

다른 예를 들어, 도 4에 도시된 인텐트들 중 두번째 위치하는 'positive' 인텐트의 경우, 슬롯에 매핑된 인텐트 이름과 슬롯에 매핑된 인텐트의 슬롯 값에 의한 결과 값을 이용하여 매핑된 것일 수 있다.For another example, in the case of a 'positive' intent located second among the intents shown in FIG. 4, mapping is performed using a result value based on the intent name mapped to the slot and the slot value of the intent mapped to the slot. it may have been

즉, 봇의 "가입하시겠습니까?"라는 질문에 대해 사용자가 "예"라고 대답하였다면, 도 3을 기반으로 'positive' 인텐트로 분류될 수 있고, 인텐트 매핑 정보에 따라 결과 값인 'join'이 join_confirm'슬롯의 슬롯 값으로 입력될 수 있다.That is, if the user answers "yes" to the bot's "Do you want to join?" question, it can be classified as a 'positive' intent based on FIG. 3, and the result value of 'join' according to the intent mapping information It can be entered as the slot value of the 'join_confirm' slot.

다른 예를 들어, 도 4에 도시된 인텐트들 중 세번째 위치하는 'member_action' 인텐트의 경우, 슬롯에 매핑된 인텐트 이름과 슬롯에 매핑된 인텐트의 슬롯 이름을 이용하여 매핑된 것일 수 있다. As another example, in the case of the 'member_action' intent located at the third position among the intents shown in FIG. 4, it may be mapped using the intent name mapped to the slot and the slot name of the intent mapped to the slot. .

즉, 봇의 "가입하시겠습니까?"라는 질문에 대해 사용자가 "가입할래요"라고 대답하였다면, 도 3을 기반으로 'member_action' 인텐트로 분류될 수 있다. 이 때, 'member_action' 인텐트의 'action' 슬롯은 '가입'을 동의어로 매칭할 수 있는 'join' 엔티티가 매핑되어 있으므로, 엔티티 대표어에 해당하는 'join'이 'join_confirm'슬롯의 슬롯 값으로 입력될 수 있다.That is, if the user answers "Do you want to join?" to the bot's "Do you want to join?" question, it may be classified as a 'member_action' intent based on FIG. 3 . At this time, the 'action' slot of the 'member_action' intent is mapped with a 'join' entity that can match 'join' as a synonym, so 'join', which corresponds to the entity representative word, is the slot value of the 'join_confirm' slot. can be entered as

다른 예를 들어, 도 4에 도시된 인텐트들 중 네번째 위치하는 'member_action' 인텐트의 경우, 슬롯에 매핑된 인텐트 이름, 슬롯에 매핑된 인텐트의 슬롯 이름, 슬롯에 매핑된 인텐트의 슬롯 값 및 슬롯에 매핑된 인텐트의 슬롯 값에 의한 결과 값을 모두 이용하여 매핑된 것일 수 있다.For another example, in the case of the 'member_action' intent located at the fourth position among the intents shown in FIG. 4 , the intent name mapped to the slot, the slot name of the intent mapped to the slot, and the intent mapped to the slot The mapping may be performed using both the slot value and the result value of the slot value of the intent mapped to the slot.

즉, 봇의 "가입하시겠습니까?"라는 질문에 대해 사용자가 "수영 등록할래요"라고 대답하였다면, 도 3을 기반으로 'member_action' 인텐트로 분류될 수 있다. 이 때, 'member_action' 인텐트의 'action' 슬롯은 '등록'을 동의어로 매칭할 수 있는 'register' 엔티티가 매핑되어 있고, 'member_action' 인텐트의 'action' 슬롯의 슬롯 값이 'register'인 경우의 결과 값으로 'join'이 매핑되어 있으므로, 'join_confirm'슬롯의 슬롯 값에도 'join'이 입력될 수 있다. That is, if the user answers "Would you like to register for swimming" to the bot's "Do you want to join?" question, it may be classified as a 'member_action' intent based on FIG. 3 . At this time, the 'action' slot of the 'member_action' intent is mapped with a 'register' entity that can match 'registration' as a synonym, and the slot value of the 'action' slot of the 'member_action' intent is 'register' Since 'join' is mapped to the result value in the case of 'join', 'join' may also be input to the slot value of the 'join_confirm' slot.

이하에서는 도 5를 참조하여, 본 발명의 일실시예에 따른 슬롯 필링 처리 과정을 보다 상세하게 설명하도록 한다. Hereinafter, a slot filling process according to an embodiment of the present invention will be described in more detail with reference to FIG. 5 .

본 발명의 일실시예에 따르면, 실행블록 내의 컴포넌트들을 순서대로 처리하면서 슬롯 컴포넌트에서 지정한 슬롯에 대한 슬롯 필링이 필요한지 여부를 판단하고(S502), 슬롯 값이 비어있어 슬롯 필링이 필요한 경우에는 챗봇이 프롬프트 메시지(Bot Prompt)를 통해 사용자에게 입력을 요청한 후(S504) 사용자의 응답을 대기(Slot Listen)할 수 있다(S506).According to an embodiment of the present invention, it is determined whether or not slot filling is required for the slot designated by the slot component while sequentially processing the components in the execution block (S502), and when the slot value is empty and slot filling is required, the chatbot After requesting an input from the user through a prompt message (Bot Prompt) (S504), the user may wait for a response (Slot Listen) (S506).

이 후, 사용자가 발화에 의해 사용자 메시지가 입력되면(S508), 입력된 메시지 해당하는 문장에 대해 슬롯 필링을 수행할 대상 슬롯에 매핑된 엔티티의 동의어들과 동의어 매칭을 수행할 수 있다(S510).Thereafter, when a user message is input by the user by utterance (S508), synonym matching may be performed with synonyms of an entity mapped to a target slot to perform slot filling on a sentence corresponding to the input message (S510) .

이 후, 엔티티 동의어 매칭에 의해 추출되는 슬롯 값이 존재하는지 여부를 판단하고(S512), 단계(S512)의 판단결과 엔티티 동의어 매칭에 의해 추출되는 슬롯 값이 존재하면, action validation을 수행하여 슬롯 값에 대한 검증을 수행한 뒤(S522) 검증이 성공하면 다음 블록 컴포넌트를 실행할 수 있다.After that, it is determined whether there is a slot value extracted by entity synonym matching (S512), and if there is a slot value extracted by entity synonym matching as a result of the determination in step S512, action validation is performed to determine the slot value After performing verification for ( S522 ), if the verification is successful, the next block component can be executed.

이 때, 단계(S512)의 판단결과 엔티티 동의어 매칭에 실패하여 엔티티 동의어 매칭에 의해 추출되는 슬롯 값이 존재하지 않으면, 실행블록에 선언된 인텐트들(block intent)을 기반으로 슬롯 값을 추출할 수 있다(S514).At this time, if, as a result of determination in step S512, entity synonym matching fails and there is no slot value extracted by entity synonym matching, the slot value is extracted based on the intents declared in the execution block. It can be (S514).

즉, 실행블록에 선언된 인텐트들이 포함하는 슬롯들을 기반으로 슬롯 값을 추출할 수 있다. That is, the slot value can be extracted based on the slots included in the intents declared in the execution block.

이 후, 실행블록에 선언된 인텐트들(block intent)을 기반으로 추출되는 슬롯 값이 존재하는지 여부를 판단하고(S516), 단계(S516)의 판단결과 실행블록에 선언된 인텐트들(block intent)을 기반으로 추출되는 슬롯 값이 존재하면, action validation을 수행하여 슬롯 값에 대한 검증을 수행한 뒤(S522) 검증이 성공하면 다음 블록 컴포넌트를 실행할 수 있다.After that, it is determined whether there is a slot value extracted based on the block intents declared in the execution block (S516), and as a result of the determination in step S516, the block intents declared in the execution block are determined. intent), after performing action validation to verify the slot value (S522), if the verification is successful, the next block component can be executed.

이 때, 단계(S516)의 판단결과 실행블록에 선언된 인텐트들(block intent)을 사용한 추출이 실패하여 실행블록에 선언된 인텐트들(block intent)을 기반으로 추출되는 슬롯 값이 존재하지 않으면, 대상 슬롯의 인텐트 매핑 정보를 사용하여 슬롯 값을 추출할 수 있다(S518).At this time, as a result of the determination in step S516, extraction using the block intents declared in the execution block fails, and there is no slot value extracted based on the block intents declared in the execution block. Otherwise, the slot value may be extracted using the intent mapping information of the target slot (S518).

이 후, 인텐트 매핑 정보를 이용해 추출되는 슬롯 값이 존재하는지 여부를 판단하고(S520), 단계(S520)의 판단결과 인텐트 매핑 정보를 이용해 추출되는 슬롯 값이 존재하면, action validation을 수행하여 슬롯 값에 대한 검증을 수행한 뒤(S522) 검증이 성공하면 다음 블록 컴포넌트를 실행할 수 있다.After that, it is determined whether there is a slot value extracted using the intent mapping information (S520), and if there is a slot value extracted using the intent mapping information as a result of the determination in step S520, action validation is performed After verifying the slot value ( S522 ), if the verification is successful, the next block component may be executed.

이 때, 단계(S520)의 판단결과 인텐트 매핑 정보를 이용한 추출이 실패하여 대상 슬롯의 슬롯 값을 채울 수 없다면, 슬롯 필링 재시도 여부를 판단할 수 있다(S524).At this time, if it is determined in step S520 that the extraction using the intent mapping information fails to fill the slot value of the target slot, it may be determined whether or not to retry slot filling (S524).

단계(S524)의 판단결과 슬롯 필링을 재시도할 수 있으면, 사용자에게 재시도를 안내하여 다시 입력할 것을 요청하고(S526), 단계(S504)부터 다시 수행할 수 있다. If it is determined in step S524 that slot filling can be re-attempted, the user is guided to retry and requested to re-enter (S526), and the process can be performed again from step S504.

이 때, 단계(S524)의 판단결과 재시도 횟수를 초과하였거나 재시도 불가능한 경우에는 슬롯 필링이 실패한 것으로 처리할 수 있다.In this case, if the number of retries exceeds the number of retries as a result of the determination in step S524 or retry is impossible, the slot filling may be treated as failed.

또한, 본 발명의 일실시예에 따르면, 대상 슬롯에 대한 슬롯 값이 채워지고 단계(S522)에 상응하게 action validation을 수행하였으나 슬롯 값에 대한 검증이 실패하는 경우에도 슬롯 필링 재시도 여부를 판단할 수 있다(S528).In addition, according to an embodiment of the present invention, even if the slot value for the target slot is filled and action validation is performed according to step S522, but the verification of the slot value fails, whether to retry slot filling is determined. It can be (S528).

단계(S528)의 판단결과 슬롯 필링을 재시도할 수 있으면, 재시도를 안내하여 다시 입력할 것을 요청하고(S530), 단계(S504)부터 다시 수행할 수 있다. If it is determined in step S528 that slot filling can be re-attempted, the retry is guided and requested to be input again (S530), and the process can be performed again from step S504.

이 때, 단계(S528)의 판단결과 재시도 횟수를 초과하였거나 재시도 불가능한 경우에는 슬롯 필링이 실패한 것으로 처리할 수 있다.In this case, if the number of retries exceeds the number of retries as a result of the determination in step S528 or retry is impossible, the slot filling may be treated as failed.

또한, 도 1에는 도시하지 아니하였으나, 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 방법은 실행블록이 포함되는 시나리오를 고려하여 슬롯 컨텍스트를 유지하기 위한 슬롯 재사용 설정을 수행할 수 있다. In addition, although not shown in FIG. 1, the slot filling-based chatbot service provision method according to an embodiment of the present invention may perform slot reuse setting to maintain a slot context in consideration of a scenario including an execution block. .

즉, 사용자가 발화했을 때, 실행되는 블록에 연결된 슬롯의 재사용 설정 정보에 따라 해당 슬롯의 슬롯 값을 재사용할지 또는 새로 입력 받을지를 결정할 수 있다.That is, when the user utters a utterance, it is possible to determine whether to reuse the slot value of the corresponding slot or to receive a new input according to reuse setting information of the slot connected to the block to be executed.

이 때, 슬롯 재사용 설정은 시나리오의 종류에 따른 다양한 상황을 고려하여 수행될 수 있다. In this case, the slot reuse setting may be performed in consideration of various situations according to the type of scenario.

예를 들어, '커피 주문'시나리오의 경우에는 시나리오가 종료되어 커피 주문을 위한 슬롯 값을 모두 입력한 이후, '커피 주문 변경'시나리오가 동작할 수도 있다. 이러한 경우에는 '커피 주문 변경'시나리오를 실행하면서 슬롯 필링을 위해 처음부터 다시 질문하도록 하기 위해 슬롯 재사용을 설정하지 않아야 한다. For example, in the case of the 'coffee order' scenario, the 'coffee order change' scenario may operate after the scenario ends and all slot values for coffee order are input. In this case, you should not set up slot reuse to force you to re-query from scratch for filling the slot while running the 'change coffee order' scenario.

상세한 예를 들어 설명하면, '커피 주문'시나리오에서는 먼저 사용자의 "커피 주세요"라는 발화가 수신되면, 챗봇이 "무슨 커피 드릴까요?"라고 응답할 수 있다.As a detailed example, in the 'coffee order' scenario, when the user's utterance of "coffee please" is first received, the chatbot may respond with "what coffee would you like?"

이 후, 사용자로부터 "{아메리카노:coffee} 주세요"라는 발화가 수신되면, 챗봇이 "따뜻하게 드릴까요? 아이스로 드릴까요?"라고 응답할 수 있다. After that, when an utterance of “{Americano:coffee} please” is received from the user, the chatbot may respond with “Would you like some warm or iced?”

이 후, 사용자로부터 "{아이스:hotice}로 주세요"라는 발화가 수신되면, 챗봇이 "드시고 가실 건가요?"라고 응답할 수 있다. After that, when an utterance of "Please send to {ice: hotice}" is received from the user, the chatbot may respond with "Are you going to eat?"

이 후, 사용자로부터 "{테이크아웃:takeout}이요"라는 발화가 수신되면, 챗봇이 각 슬롯들($coffee, $hotice, $takeout)에 입력된 슬롯 값을 이용하여 "아이스 아메리카노 테이크아웃 주문되었습니다"라고 주문을 확인하는 발화를 실행하면서 '커피 주문'시나리오가 종료될 수 있다. After that, when an utterance "{takeout:takeout}" is received from the user, the chatbot uses the slot value entered in each slot ($coffee, $hotice, $takeout) to say "Iced Americano takeout order has been placed" ', the 'order coffee' scenario may end by executing an utterance confirming the order.

이 때 만약, 각 슬롯들($coffee, $hotice, $takeout)에 대해 슬롯 재사용 설정이 되어있고, 사용자로부터 "{라떼:coffee}로 변경할게요"라는 발화가 수신되었다고 가정한다면, '커피 주문 변경'시나리오에서는 사용자가 말하지 않은 슬롯들인 $hotice와 $takeout의 슬롯 값이 유지되어서, 챗봇이 "아이스 라떼 테이크아웃으로 변경되었습니다"라고 바로 응답할 수 있다. At this time, assuming that slot reuse is set for each slot ($coffee, $hotice, $takeout) and an utterance "I will change to {latte:coffee}" is received from the user, 'Coffee order change' 'In the scenario, the slot values of $hotice and $takeout, which are slots that the user did not say, are maintained, so that the chatbot can immediately respond with "Changed to ice latte takeout".

즉, 이러한 경우에는 $hotice와 $takeout의 슬롯 값에 대해서도 다시 슬롯 필링이 수행되어야 하므로, 슬롯을 재사용하지 않도록 설정할 수 있다.That is, in this case, since slot filling must be performed again on the slot values of $hotice and $takeout, it is possible to set not to reuse the slot.

따라서, 각 슬롯들($coffee, $hotice, $takeout)에 대해 슬롯 재사용 설정이 되어있지 않고, 상기와 같은 주문 이후에 다시 사용자로부터 "{카푸치노:coffee} 주세요"라는 발화가 수신되었다면, 사용자가 말하지 않은 슬롯들인 $hotice와 $takeout의 슬롯 값을 초기화되어 지워지고, 지워진 슬롯 값들을 다시 채우기 위해 챗봇이 사용자에게 질문할 수 있다. Therefore, if slot reuse is not set for each of the slots ($coffee, $hotice, $takeout) and an utterance "{cappuccino:coffee} please" is received from the user again after the above order, the user The slot values of $hotice and $takeout, which are unspoken slots, are initialized and erased, and the chatbot can ask the user to refill the deleted slot values.

종래에는 슬롯 컨텍스트를 유지하기 위해 인텐트 단위 별로 input, output 속성을 설정하고, 앞/뒤 인텐트마다 매번 설정된 값을 관리해주어야 했기 때문에 시나리오에 따라 슬롯 컨텍스트 유지 여부가 변경되는 경우에는 관리가 어려운 문제가 있었다. Conventionally, in order to maintain the slot context, input and output properties were set for each intent unit, and the set values had to be managed each time before/after the intent. Therefore, it is difficult to manage when whether or not to maintain the slot context is changed according to the scenario. there was

본 발명에서는 슬롯 재사용 설정을 통해 이러한 문제점을 해결하고, 보다 효과적으로 이전 인텐트에 의한 컨텍스트를 유지할 수 있다. In the present invention, this problem can be solved through the slot reuse setting, and the context by the previous intent can be maintained more effectively.

이 때, 슬롯 재사용 설정이 수행된 실행블록과 연결된 인텐트들의 슬롯들은 시나리오가 종료된 후 다시 실행했을 때에도 슬롯 값이 삭제되지 않을 수 있다. In this case, the slot values of the slots of the intents connected to the execution block for which the slot reuse setting has been performed may not be deleted even when the scenario is executed again after the end of the scenario.

예를 들어, 본 발명에 따르면 사용자 대화에 상응하게 매핑된 인텐트로부터 슬롯을 추출할 때에 슬롯 재사용 설정되어 있는 슬롯들의 경우, 사용자가 말하지 않은 슬롯이라면 이미 채워진 슬롯 값을 삭제하지 않고 기억하고 있다가 처리할 수 있다. 이 때, 시나리오가 종료된 이후에도 슬롯 컨텍스트를 유지해야 하므로 컨텍스트에 존재하는 슬롯 값들은 여전히 삭제하지 않고 계속 유지할 수 있다. For example, according to the present invention, when extracting a slot from an intent mapped corresponding to a user conversation, in the case of slots that are set for slot reuse, if the user does not say a slot, the already filled slot value is stored without deleting it. can be processed In this case, since the slot context needs to be maintained even after the scenario ends, the slot values existing in the context can be maintained without being deleted.

또한, 슬롯 재사용이 설정되지 않은 슬롯들은, 사용자 대화에 상응하게 매핑된 인텐트로부터 슬롯을 추출할 때에 사용자가 말하지 않은 슬롯이라면 슬롯 값을 초기화 시킬 수도 있다.In addition, in the slots for which slot reuse is not set, if the slot is not mentioned by the user when extracting the slot from the intent mapped to correspond to the user conversation, the slot value may be initialized.

이와 같은 처리 과정을 통해 별도의 input, output 속성을 관리하지 않고도 컨텍스트를 유지할 수 있으므로, 챗봇 서버에 부담을 주지 않으면서 효율적으로 서비스를 제공할 수 있다. Through this process, the context can be maintained without managing separate input and output properties, so that the service can be efficiently provided without burdening the chatbot server.

이 때, 슬롯에 설정된 조건을 고려하여 필요한 경우에는 어사인(assign) 액션이나 리셋(reset) 액션 등을 이용하여 슬롯 값을 직접 변경할 수도 있다.In this case, if necessary in consideration of the conditions set in the slot, the slot value may be directly changed by using an assign action or a reset action.

또한, 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 방법은 슬롯 필링에 기반하여 인텐트에 상응하는 대화 처리를 수행한다(S140).Also, in the method for providing a chatbot service based on slot filling according to an embodiment of the present invention, a conversation process corresponding to an intent is performed based on the slot filling ( S140 ).

이와 같이 본 발명은, 인텐트에서는 슬롯 정보를 자연어 처리 관점에서 필요한 정보 위주로만 정의하고, 기능을 실행하는데 필요한 슬롯 필링 정보는 실행블록에서 정의하도록 분리함으로써 동일한 슬롯이 사용되는 다른 실행블록들이 각각의 실행블록에 정의된 슬롯 필링 정보에 따라 다르게 동작할 수 있다. As described above, according to the present invention, in the intent, slot information is defined only based on information necessary from the point of view of natural language processing, and slot filling information required to execute a function is defined in the execution block, so that other execution blocks using the same slot are separated from each other. It may operate differently according to the slot filling information defined in the execution block.

즉, 인텐트에서 정의된 슬롯 정보는 완전히 픽스(fix)된 것이 아니라 디폴트(default) 설정 정도의 의미일 수 있으며, 실행블록에 의해 재정의 될 수 있는 개념에 상응할 수 있다. That is, the slot information defined in the intent may not be completely fixed, but may mean a default setting level, and may correspond to a concept that can be redefined by an execution block.

상술한 구성에 의하여, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 동일한 인텐트가 서로 다른 실행블록에서 사용되는 경우에 실행블록에 정의된 슬롯 필링을 기반으로 다르게 동작하도록 설정함으로써 다양한 사용자 대화 패턴에 대해 챗봇이 효과적으로 대응하도록 할 수 있다. With the above configuration, in the chatbot service providing method according to an embodiment of the present invention, when the same intent is used in different execution blocks, various user dialogs are set to operate differently based on the slot filling defined in the execution blocks. You can make your chatbot respond effectively to patterns.

또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 하나의 슬롯에 매핑된 여러 개의 엔티티들을 이용하여 인텐트에 존재하는 슬롯뿐만 아니라 전혀 새로운 슬롯에 대한 슬롯 필링을 수행할 수 있고, 이를 통해 사용자가 처음부터 말하기 어려운 정보나 대화를 진행하면서 추가된 정보들에 대해서도 슬롯 필링이 가능하게 할 수 있다.In addition, the chatbot service providing method according to an embodiment of the present invention can perform slot filling not only for slots existing in the intent but also for completely new slots by using a plurality of entities mapped to one slot, through which Slot filling may be enabled for information that is difficult for the user to say from the beginning or information added while conducting a conversation.

또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 슬롯 재사용 기능을 제공함으로써 컨텍스트 흐름을 유지하기 위한 과정을 간소화하고, 컨텍스트 흐름 유지를 위해 설정되는 슬롯 값들을 보다 효과적으로 관리할 수 있다.In addition, the chatbot service providing method according to an embodiment of the present invention can simplify the process for maintaining the context flow by providing a slot reuse function, and more effectively manage slot values set for maintaining the context flow.

도 6은 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치를 나타낸 블록도이다.6 is a block diagram illustrating an apparatus for providing a chatbot service according to an embodiment of the present invention.

도 6을 참조하면, 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치는, 프로세서(620) 및 실행메모리(630)를 포함한다. 실시예에 따라, 챗봇 서비스 제공 장치는 통신부(610)를 더 포함할 수 있다.Referring to FIG. 6 , an apparatus for providing a chatbot service according to an embodiment of the present invention includes a processor 620 and an execution memory 630 . According to an embodiment, the chatbot service providing apparatus may further include a communication unit 610 .

통신부(610)는 네트워크와 같은 통신망을 통해 다수의 다른 장치들과 챗봇 서비스와 관련된 정보를 송신하는 역할을 할 수 있다. 이 때, 네트워크는 장치들간에 데이터를 전달하는 통로를 제공하는 것으로서, 기존에 이용되는 네트워크 및 향후 개발 가능한 네트워크를 모두 포괄하는 개념이다.The communication unit 610 may serve to transmit information related to a chatbot service with a plurality of other devices through a communication network such as a network. In this case, the network provides a path for transferring data between devices, and is a concept that encompasses both an existing network and a network that can be developed in the future.

예를 들면, 네트워크는 인터넷 프로토콜(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 IP Network, which provides large-capacity data transmission and reception service and data service without interruption through Internet Protocol (IP), and All IP, which is an IP network structure that integrates different networks based on IP. ) network, etc., wired network, Wibro (Wireless Broadband) network, 3G mobile communication network including WCDMA, HSDPA (High Speed Downlink Packet Access) network and 3.5G mobile communication network including LTE network, 4 including LTE advanced It may be achieved by combining one or more of a generation mobile communication network, a satellite communication network, and a Wi-Fi network.

예를 들어, 네트워크는 한정된 지역 내에서 각종 정보장치들의 통신을 제공하는 유무선근거리 통신망, 이동체 상호 간 및 이동체와 이동체 외부와의 통신을 제공하는 이동통신망, 위성을 이용해 지구국과 지구국간 통신을 제공하는 위성통신망이거나 유무선 통신망 중에서 어느 하나이거나, 둘 이상의 결합으로 이루어질 수 있다. 한편, 네트워크의 전송 방식 표준은, 기존의 전송 방식 표준에 한정되는 것은 아니며, 향후 개발될 모든 전송 방식 표준을 포함할 수 있다.For example, a network is a wired/wireless local area network that provides communication of various information devices within a limited area, a mobile communication network that provides communication between and between mobile devices and between a mobile device and the outside of the mobile device, and provides communication between an earth station and an earth station using satellites. It may be either a satellite communication network or a wired/wireless communication network, or a combination of two or more. Meanwhile, the transmission method standard of the network is not limited to the existing transmission method standard, and may include all transmission method standards to be developed in the future.

실행메모리(630)는 프로세서(620)에 의해 실행되는 적어도 하나 이상의 프로그램을 저장한다.The execution memory 630 stores at least one or more programs executed by the processor 620 .

이 때, 적어도 하나의 프로그램은 사용자 대화에 상응하는 인텐트를 결정하고, 인텐트 매핑 리스트를 이용하여 인텐트에 상응하는 실행블록을 선택하고, 실행블록에 상응하는 슬롯 필링을 수행하고, 슬롯 필링에 기반하여 인텐트에 상응하는 대화 처리를 수행한다.In this case, the at least one program determines an intent corresponding to the user conversation, selects an execution block corresponding to the intent using the intent mapping list, performs slot filling corresponding to the execution block, and slot filling Conversation processing corresponding to the intent is performed based on

이 때, 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응할 수 있다.In this case, the intent mapping list is provided for each of the execution blocks, and may correspond to at least one intent.

이 때, 상기 적어도 하나 이상의 프로그램은 슬롯에 매핑된 엔티티, 상기 실행블록에 상응하는 슬롯들 및 슬롯의 인텐트 매핑 정보 중 적어도 하나를 기반으로 슬롯 필링을 수행할 수 있다.In this case, the at least one program may perform slot filling based on at least one of an entity mapped to a slot, slots corresponding to the execution block, and intent mapping information of the slot.

이 때, 인텐트 매핑 정보는 슬롯에 매핑된 인텐트 이름, 슬롯에 매핑된 인텐트의 슬롯 이름, 슬롯에 매핑된 인텐트의 슬롯 값 및 슬롯에 매핑된 인텐트의 슬롯 값에 의한 결과 값 중 적어도 하나를 포함할 수 있다.In this case, the intent mapping information includes an intent name mapped to a slot, a slot name of an intent mapped to a slot, a slot value of an intent mapped to a slot, and a result value based on a slot value of an intent mapped to a slot. It may include at least one.

이 때, 실행블록에 상응하는 슬롯들은 상기 인텐트 매핑 리스트를 통해 상기 실행블록과 연결된 인텐트들의 슬롯들을 포함할 수 있다.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.

이 때, 상기 적어도 하나 이상의 프로그램은 상기 슬롯에 매핑된 엔티티에 대한 동의어 매칭을 수행하여 슬롯 값을 추출할 수 있다.In this case, the at least one program may extract a slot value by performing synonym matching on the entity mapped to the slot.

이 때, 하나의 슬롯은 복수개의 엔티티들과 매핑 가능할 수 있다.In this case, one slot may be mappable to a plurality of entities.

이 때, 상기 적어도 하나 이상의 프로그램은 실행블록이 포함되는 시나리오를 고려하여 슬롯 컨텍스트를 유지하기 위한 슬롯 재사용 설정을 수행할 수 있다.In this case, the at least one program may perform slot reuse setting for maintaining a slot context in consideration of a scenario in which an execution block is included.

이 때, 슬롯 재사용 설정이 수행된 실행블록과 연결된 인텐트들의 슬롯들은 상기 시나리오가 종료된 후 다시 실행했을 때에도 슬롯 값이 삭제되지 않을 수 있다.In this case, the slot values of the slots of the intents connected to the execution block in which the slot reuse setting has been performed may not be deleted even when the scenario is re-executed after the end of the scenario.

이 때, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다.In this case, the intent mapping list may include an intent identifier and a slot condition for each intent.

도 6에 도시된 장치는 숫자 및 문자 정보 등의 다양한 정보를 입력 받고, 각종 기능을 설정 및 장치의 기능 제어와 관련하여 입력되는 신호를 입력부를 통해 프로세서(620)로 전달할 수 있다. 또한, 입력부는 사용자의 터치 또는 조작에 따른 입력 신호를 발생하는 키패드와 터치패드 중 적어도 하나를 포함하여 구성할 수 있다. 이 때, 장치의 입력부는 표시부와 함께 하나의 터치패널(또는 터치 스크린(touch screen))의 형태로 구성되어 입력과 표시 기능을 동시에 수행할 수 있다. 또한, 입력부는 키보드, 키패드, 마우스, 조이스틱 등과 같은 입력 장치 외에도 향후 개발될 수 있는 모든 형태의 입력 수단이 사용될 수 있다.The device illustrated in FIG. 6 may receive various information such as number and character information, and may transmit signals input in connection with setting various functions and controlling functions of the device to the processor 620 through the input unit. In addition, the input unit may be configured to include at least one of a keypad and a touch pad that generate an input signal according to a user's touch or manipulation. In this case, the input unit of the device may be configured in the form of a single touch panel (or touch screen) together with the display unit to simultaneously perform input and display functions. In addition, as the input unit, all types of input means that may be developed in the future may be used in addition to input devices such as a keyboard, a keypad, a mouse, and a joystick.

또한, 표시부는 장치의 기능 수행 중에 발생하는 일련의 동작상태 및 동작결과 등에 대한 정보를 표시할 수 있다. 또한, 표시부는 장치의 메뉴 및 사용자가 입력한 사용자 데이터 등을 표시할 수 있다. 여기서, 표시부는 액정표시장치(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 the function of the device is performed. In addition, the display unit may display a menu of the device, user data input by a user, and the like. Here, the display unit is a liquid crystal display (LCD, Liquid Crystal Display), an ultra-thin liquid crystal display (TFT-LCD, Thin Film Transistor LCD), a light emitting diode (LED, Light Emitting Diode), an organic light emitting diode (OLED, Organic LED), It may be composed of an active organic light emitting diode (AMOLED, Active Matrix OLED), a retina display, a flexible display, and a three-dimensional display. In this case, 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.

또한, 장치의 저장부는 데이터를 저장하기 위한 장치로, 주 기억장치 및 보조 기억장치를 포함하고, 장치의 기능 동작에 필요한 응용 프로그램을 저장할 수 있다. 이러한 저장부는 크게 프로그램 영역과 데이터 영역을 포함할 수 있다. 여기서, 장치는 사용자의 요청에 상응하여 각 기능을 활성화하는 경우, 프로세서(620)의 제어 하에 해당 응용 프로그램들을 실행하여 각 기능을 제공하게 된다.In addition, the storage unit of the device is a device for storing data, and includes a main storage device and an auxiliary storage device, and may store an application program necessary for a functional operation of the device. The storage unit may largely include a program area and a data area. Here, when each function is activated in response to a user's request, the device executes corresponding application programs under the control of the processor 620 to provide each function.

또한, 통신부(610)는 네트워크을 통해 데이터를 송수신하기 위한 기능을 수행할 수 있다. 여기서 통신부(610)는 송신되는 신호의 주파수를 상승 변환 및 증폭하는 RF 송신 수단과 수신되는 신호를 저잡음 증폭하고 주파수를 하강 변환하는 RF 수신 수단 등을 포함할 수 있다. 이러한 통신부(1810)는 무선통신 모듈 및 유선 통신 모듈 중 적어도 하나를 포함할 수 있다. 그리고, 무선통신 모듈은 무선 통신 방법에 따라 데이터를 송수신하기 위한 구성이며, 장치가 무선 통신을 이용하는 경우, 무선망 통신 모듈, 무선랜 통신 모듈 및 무선팬 통신 모듈 중 어느 하나를 이용하여 데이터를 장치로 송수신할 수 있다. 또한, 유선통신 모듈은 유선으로 데이터를 송수신하기 위한 것이다. 유선통신 모듈은 유선을 통해 네트워크에 접속하여, 장치에 데이터를 송수신할 수 있다. 즉 장치는 무선통신 모듈 또는 유선통신 모듈을 이용하여 네트워크에 접속하며, 네트워크을 통해 다른 장치와 데이터를 송수신할 수 있다.Also, the communication unit 610 may perform a function for transmitting and receiving data through a network. Here, the communication unit 610 may include an RF transmitting unit for up-converting and amplifying the frequency of the transmitted signal, and an RF receiving unit for low-noise amplifying the received signal and down-converting the frequency. The communication unit 1810 may include at least one of a wireless communication module and a wired communication module. In addition, the wireless communication module is a configuration for transmitting and receiving data according to a wireless communication method, and when the device uses wireless communication, the device transmits data using any one of a wireless network communication module, a wireless LAN communication module, and a wireless fan communication module. can be sent and received. In addition, the wired communication module is for transmitting and receiving data by wire. The wired communication module may connect to a network through a wire and transmit/receive data to/from the device. That is, the device accesses the network using a wireless communication module or a wired communication module, and may transmit/receive data to and from other devices through the network.

또한, 프로세서(620)는 운영 체제(OS, Operation System) 및 각 구성을 구동시키는 프로세스 장치가 될 수 있다.Also, the processor 620 may be an operating system (OS) and a process device for driving each component.

상술한 구성에 의하여, 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 장치는 동일한 인텐트가 서로 다른 실행블록에서 사용되는 경우에 실행블록에 정의된 슬롯 필링을 기반으로 다르게 동작하도록 설정함으로써 다양한 사용자 대화 패턴에 대해 챗봇이 효과적으로 대응할 수 있다.With the above configuration, the apparatus for providing a chatbot service based on slot filling according to an embodiment of the present invention is set to operate differently based on the slot filling defined in the execution block when the same intent is used in different execution blocks This allows the chatbot to effectively respond to various user conversation patterns.

또한, 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 장치는 하나의 슬롯에 매핑된 여러 개의 엔티티들을 이용하여 인텐트에 존재하는 슬롯뿐만 아니라 전혀 새로운 슬롯에 대한 슬롯 필링을 수행할 수 있고, 이를 통해 사용자가 처음부터 말하기 어려운 정보나 대화를 진행하면서 추가된 정보들에 대해서도 슬롯 필링이 가능하게 할 수 있다.In addition, the slot filling-based chatbot service providing apparatus according to an embodiment of the present invention can perform slot filling not only for slots existing in the intent but also for completely new slots by using several entities mapped to one slot. Through this, slot filling can be made possible even for information that is difficult for the user to say from the beginning or information added while conducting a conversation.

또한, 본 발명의 일실시예에 따른 슬롯 필링 기반의 챗봇 서비스 제공 장치는 슬롯 재사용 기능을 제공함으로써 컨텍스트 흐름을 유지하기 위한 과정을 간소화하고, 컨텍스트 흐름 유지를 위해 설정되는 슬롯 값들을 보다 효과적으로 관리할 수 있다.In addition, the apparatus for providing a slot filling-based chatbot service according to an embodiment of the present invention provides a slot reuse function, thereby simplifying the process for maintaining the context flow, and more effectively managing the slot values set for maintaining the context flow. can

또한, 본 발명은 대화형 AI 에이전트 시스템에 의해 수행되는 자연어 처리에 따라 자연어의 입력에 대응하는 인텐트를 유사한 속성에 따라 분류하고, 분류된 복수의 인텐트들을 봇의 처리 단위인 블록에 매핑하는 기술에 관한 것이다.In addition, the present invention classifies intents corresponding to natural language input according to similar properties according to natural language processing performed by an interactive AI agent system, and maps a plurality of classified intents to blocks that are processing units of bots. It's about technology.

유용한 챗봇 서비스를 위해서는 사업이나 서비스 도메인별 용어들에 대한 자연어 처리 능력 및 제공되는 기능이나 업무에 대한 처리 능력을 지속적으로 향상시킬 필요가 있다.For a useful chatbot service, it is necessary to continuously improve the natural language processing ability for terms by business or service domain and the processing ability for the 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. In other words, it is necessary to define intents from the point of view of Natural Language Understanding (NLU) rather than defining intents only in units of functions or tasks.

한편, 기능이나 업무에 대한 처리가 효과적으로 이루어지기 위해서는 세부 처리 단계나 흐름이 실행블록들로 정의되어야 하고, 정의된 실행블록들의 연결관계(선후관계)가 정의될 필요가 있다. 이 때, 연결관계는 리스트나 트리 형태보다는 여러 실행블록들을 자유롭게 연결하기 위한 그래프 형태로 정의되는 것이 바람직하다. 이 때, 실행블록들은 자연어 처리의 관점보다는 서비스가 제공하는 기능에 적합하게 정의되는 것이 바람직하다.On the other hand, in order to effectively process functions or tasks, detailed processing steps or flows need to be defined as execution blocks, and a connection relationship (precedence relationship) between the defined execution blocks needs to be defined. In this case, the connection relationship is preferably defined in the form of a graph for freely connecting various execution blocks rather than in the form of a list or tree. In this case, it is preferable that the execution blocks are defined appropriately for the function provided by the service rather than from the point of view 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. That is, one intent can be used for multiple blocks, and one block must be able to process multiple intents. For this, intents and blocks must be mapped N:N rather than 1:1 mapping .

많은 양의 발화 패턴들이 다양한 인 텐트들로 분류된 대량의 데이터를 처리할 때, 유사 발화들 간의 충돌이 발생하고 이에 대한 검증과 처리가 필요하다.When a large amount of utterance patterns process a large amount of data classified into various intents, collisions between similar utterances occur, and verification and processing are required.

이 때, 유사 발화 패턴들을 같은 인 텐트로 묶고, 슬롯을 기준으로 조건을 주어 서로 다른 봇 응답이 가능하도록 대응할 수 있다.In this case, similar utterance patterns can be grouped with the same intent, and conditions can be given based on slots to respond so that different bot responses are possible.

또한, 유사 발화는 아니지만, 같은 응답으로 처리 가능할 수 있도록, 하나의 봇 응답 단위(실행블록)에 복수 개의 사용자 발화단위들을 매핑하는 것이 가능하도록 하면, 발화 유형이 다르더라도 같은 응답으로 처리하는 것이 가능하게 되어 효율적인 인텐트 관리가 가능하다.In addition, if it is possible to map a plurality of user utterance units to one bot response unit (execution block) so that it can be processed with the same response although it is not a similar utterance, it is possible to process the same response even if the utterance types are different This enables efficient intent management.

이하에서, 챗봇 서비스는 사용자의 음성을 기반으로 하는 음성 서비스뿐만 아니라 사용자로부터 입력된 텍스트를 기반으로 하는 메신저 서비스를 커버하는 개념이다.Hereinafter, the chatbot service is a concept that covers not only the voice service based on the user's voice but also the messenger service based on the text input by the user.

챗봇의 설계 및 구현은, 크게 챗봇 빌더, 자연어 처리(Natural Language Understanding; NLU) 및 대화흐름처리(Dialog Management; DM)의 3부분으로 나눌 수 있다. 이 때, 챗봇 빌더에서는 대화흐름처리(DM)가 동작하기 위한 데이터를 구조화하고 정의하여 이를 제공하고, 대화흐름처리(DM)에서는 이 데이터를 기반으로 봇 대응을 처리한다.The design and implementation of a chatbot can be largely divided into three parts: a chatbot builder, a natural language processing (NLU), and a dialog management (DM). At this time, the chatbot builder structures and defines the data for the dialogue flow processing (DM) to operate, and the dialogue flow processing (DM) processes the bot response based on this data.

챗봇 프로세스가 구동을 위해 크게 두 개의 작업영역이 필요할 수 있는데, 하나는 봇 디자이너가 봇 구동 프로세스를 정의하는 작업영역이고, 다른 하나는 정의된 프로세스를 실행하는 실행영역이다.A chatbot process may need two work areas to run. One is the work area where the bot designer defines the bot driving process, and the other is the execution area where the defined process is executed.

도 7은 본 발명의 일실시예에 따른 챗봇 서비스 시스템을 나타낸 블록도이다.7 is a block diagram illustrating a chatbot service system according to an embodiment of the present invention.

도 7을 참조하면, 챗봇 서비스 시스템은 챗봇(710), 자연어 처리기(720), 챗봇 리소스 데이터베이스(730) 및 챗봇 빌더(740)를 포함한다.Referring to FIG. 7 , the chatbot service system includes a chatbot 710 , a natural language processor 720 , a chatbot resource database 730 , and a chatbot builder 740 .

챗봇(710)은 사용자로부터 발화문장을 입력 받고, 이에 대한 응답을 생성하여 사용자에게 챗봇 응답을 제공한다.The chatbot 710 receives an utterance sentence from a user, generates a response thereto, and provides a chatbot response to the user.

자연어 처리기(720)는 챗봇으로부터 발화문장을 제공 받고, 챗봇 리소스 데이터베이스(730)로부터 인텐트 정의 정보를 제공 받아서 인텐트 분류 결과 및 슬롯 추출 결과를 생성하여 챗봇(710)으로 제공한다.The natural language processor 720 receives the spoken sentence from the chatbot, receives the intent definition information from the chatbot resource database 730, generates an intent classification result and a slot extraction result, and provides it to the chatbot 710 .

챗봇 리소스 데이터베이스(730)는 챗봇 빌더로부터 인텐트 정의 정보, 블록 정보, 응답 정보 및 시나리오 정보 등을 제공 받고, 챗봇(710)으로 블록 정보, 응답 정보 및 시나리오 정보를 제공하고, 자연어 처리기(720)로 인텐트 정의 정보를 제공한다.The chatbot resource database 730 receives intent definition information, block information, response information and scenario information, etc. from the chatbot builder, and provides block information, response information and scenario information to the chatbot 710, and a natural language processor 720 to provide intent definition information.

챗봇 빌더(740)는 봇디자이너로부터 챗봇 리소스에 관한 입력을 제공 받고, 챗봇(710)을 생성하고, 챗봇 리소스 데이터베이스(730)로 인텐트 정의 정보, 블록 정보, 응답 정보 및 시나리오 정보 등을 제공한다.The chatbot builder 740 receives an input about the chatbot resource from the bot designer, generates the chatbot 710, and provides intent definition information, block information, response information and scenario information to the chatbot resource database 730. .

챗봇 빌더(740)에서 학습 발화문장과 봇 처리의 중요정보인 슬롯(slot)을 인텐트로 정의하고, 정의된 인텐트를 실행블록에 매핑하고 실행블록에서 조건을 설정하고 이에 따른 봇의 액션을 정의할 수 있다. 또한, 챗봇 빌더(740)에서 응답대기상태에서 처리할 수 있는 블록들이 설정되고, 이 블록들이 그래프 형태의 시나리오로 정의될 수 있다.In the chatbot builder 740, a slot, which is important information for learning speech sentences and bot processing, is defined as an intent, the defined intent is mapped to an execution block, and conditions are set in the execution block, and the action of the bot is performed accordingly. can be defined In addition, blocks that can be processed in the response waiting state in the chatbot builder 740 are set, and these blocks may be defined as a graph-type scenario.

이 때, 봇 디자이너는 챗봇 빌더(740)를 통해 봇 구동 프로세스를 정의하는 작업을 하는데, 먼저 주요 업무처리에 대한 봇 시나리오들이 그래프 형태로 정의된 블록 다이어그램이 제공될 수 있다.At this time, the bot designer works to define the bot driving process through the chatbot builder 740 . First, a block diagram in which bot scenarios for main business processing are defined in a graph form may be provided.

도 8은 본 발명의 일실시예에 따른 '커피 주문' 시나리오의 블록 다이어그램을 나타낸 도면이다.8 is a diagram illustrating a block diagram of a 'coffee order' scenario according to an embodiment of the present invention.

도 8을 참조하면, 커피 주문 챗봇의 블록 발화 시나리오에서는 먼저 사용자의 "커피 주문할게요"라는 발화가 수신된다(811).Referring to FIG. 8 , in the block utterance scenario of the coffee ordering chatbot, the user's utterance "I will order coffee" is first received (811).

또한, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 "무슨 커피 드릴까요?"라는 발화를 실행한다(821).Also, in the block utterance scenario of the coffee ordering chatbot, the chatbot executes the utterance "What coffee would you like?" (821).

챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 원하는 커피 이름을 발화한다(812).In response to the chatbot's utterance, in the block utterance scenario of the coffee ordering chatbot, the user utters the desired coffee name (812).

사용자의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 "따뜻한걸로 드릴까요? 아이스로 드릴까요?"라는 발화를 실행한다(822).In response to the user's utterance, in the block utterance scenario of the coffee ordering chatbot, the chatbot executes the utterance "Would you like something hot or iced?" (822).

챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 핫(hot) 또는 아이스(ice)를 선택한다(813).In response to the chatbot's utterance, in the block utterance scenario of the coffee ordering chatbot, the user selects hot or ice (813).

사용자의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 "드시고가실건가요?"라는 발화를 실행한다(823).In response to the user's utterance, in the block utterance scenario of the coffee ordering chatbot, the chatbot executes the utterance "Would you like to eat and go?" (823).

챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 매장식사 또는 테이크아웃을 선택한다(814).In response to the chatbot's utterance, in the block utterance scenario of the coffee ordering chatbot, the user selects in-store dining or takeout (814).

$(커피이름), $(핫아이스) 및 $(테이크아웃)의 3개 슬롯들이 모두 입력되면, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 주문을 확인하는 발화를 실행한다(1324).When all three slots of $ (coffee name), $ (hot ice), and $ (takeout) are input, in the block utterance scenario of the coffee ordering chatbot, the chatbot executes an utterance confirming the order (1324).

챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 '예'(815) 또는 '아니오'(816)를 발화하고, 사용자가 '예'라고 발화한 경우에는 챗봇이 커피 주문을 실행하는 커스텀 액션(custom action)을 실행하고(825) 주문내용을 확인하는 발화를 실행하고(826), 사용자가 '아니오'라고 발화한 경우에는 챗봇이 "주문을 취소합니다."라는 발화를 실행(827)한 후 동작을 종료한다.In response to the chatbot's utterance, in the coffee order chatbot's block utterance scenario, the user utters 'yes' (815) or 'no' (816), and when the user says 'yes', the chatbot executes a coffee order Execute a custom action (825) to confirm the order details (826), and when the user says 'no', the chatbot executes the utterance "Cancel the order" ( 827), then the operation is terminated.

도 8에서 "User"는 사용자의 발화를 나타내고, "templete"는 챗봇의 발화를 나타내고, "Custom Action"은 실행블록에 의하여 정의된 봇의 동작 처리를 나타낸다.In FIG. 8 , “User” indicates a user’s utterance, “templete” indicates a chatbot utterance, and “Custom Action” indicates an action processing of the bot defined by an execution block.

도 8에 도시된 예에서, $(커피이름), $(핫아이스), $(테이크아웃) 및 $(주문번호)는 필수 슬롯에 해당하고, 도 8에는 명시적으로 도시되지 아니하였으나, 커피 주문 챗봇의 블록 발화 시나리오에서는 옵션슬롯이 더 사용될 수 있다. 이 때, 필수 슬롯 및/또는 옵션 슬롯은 사용자의 발화로부터 생성된 것일 수도 있고, 기타 챗봇 시스템의 상태를 나타내는 슬롯이거나 블록에서 조건에 따라 생성된 것일 수도 있다.In the example shown in FIG. 8 , $ (coffee name), $ (hot ice), $ (takeout), and $ (order number) correspond to required slots, and although not explicitly shown in FIG. 8 , coffee In the block firing scenario of the order chatbot, more option slots can be used. In this case, the mandatory slot and/or the optional slot may be generated from the user's utterance, or may be a slot indicating the status of other chatbot systems, or generated according to a condition in a block.

도 8에 도시된 바와 같은 다이어그램을 토대로 각 블록에서 처리할 수 있는 모든 발화 패턴들을 수집하고, 자연어 처리기가 분류하기 용이한 형태로 패턴들을 그룹핑할 수 있다. 또한, 그룹핑된 정보를 기준으로 인텐트가 분류되고 발화 패턴별로 슬롯을 태깅하여 인텐트가 설정되면, 그룹핑되어 분류된 인텐트를 기준으로 발화 패턴들을 학습 의도에 맞게 자연어 처리기(NLU)의 학습 데이터로 사용할 수 있다.Based on the diagram shown in FIG. 8 , all utterance patterns that can be processed in each block may be collected, and the patterns may be grouped in a form that is easy for the natural language processor to classify. In addition, when an intent is classified based on the grouped information and an intent is set by tagging a slot for each utterance pattern, learning data of a natural language processor (NLU) according to the learning intention based on the grouped and classified intent can be used as

시나리오는 블록들을 그래프 형태로 연결한 것으로 볼 수 있고, 각 블록에서는 처리할 수 있는 인텐트들의 목록이 정의될 수 있다.Scenarios can be viewed as connecting blocks in the form of a graph, and in each block, a list of intents that can be processed can be defined.

도 9는 도 13에 도시된 시나리오에 사용되는 인텐트들의 일 예를 나타낸 도면이다.9 is a diagram illustrating an example of intents used in the scenario shown in FIG. 13 .

도 9를 참조하면, 커피 주문 시나리오에 사용되는 인텐트들은 인텐트 order_coffee(910), 인텐트 order_hotice(920), 인텐트 order_takeout(930), 인텐트 order_togo(940) 및 인텐트 order_eatin(950)를 포함하는 것을 알 수 있다.Referring to FIG. 9 , the intents used in the coffee order scenario include intent order_coffee 910 , intent order_hotice 920 , intent order_takeout 930 , intent order_togo 940 , and intent order_eatin 950 . It can be seen that it contains

이 때, 인텐트 order_coffee(910)에 대해서는 슬롯 $coffee, 슬롯 $hotice 및 슬롯 $takeout이 정의되고, 인텐트 order_hotice(920)에 대해서는 슬롯 $hotice이 정의되고, 인텐트 order_takeout(930)에 대해서는 슬롯 $takeout이 정의되고, 인텐트 order_togo(940) 및 인텐트 order_eatin(950)에 대해서는 슬롯이 정의되지 않을 수 있다.At this time, the slot $coffee, the slot $hotice, and the slot $takeout are defined for the intent order_coffee 910, the slot $hotice is defined for the intent order_hotice 920, and the slot for the intent order_takeout 930 $takeout is defined, and slots may not be defined for intent order_togo 940 and intent order_eatin 950 .

도 9에 도시된 인텐트들을 봇이 처리할 때, 블록(처리블록)이라는 단위로 처리하게 되는데, 하나의 블록에 복수개의 인텐트들이 매핑되어 처리될 수 있다. 또한, 하나의 인텐트가 복수개의 블록들에 매핑될 수도 있다.When the bot processes the intents shown in FIG. 9, it is processed in a unit called a block (processing block), and a plurality of intents may be mapped to one block and processed. Also, one intent may be mapped to a plurality of blocks.

도 10 내지 도 13은 도 9에 도시된 시나리오에 사용되는 실행블록들의 일 예를 나타낸 도면이다.10 to 13 are diagrams illustrating examples of execution blocks used in the scenario shown in FIG. 9 .

도 10은 복수개의 인텐트들과 복수개의 실행블록들 사이의 연결을 나타낸 블록도이다.10 is a block diagram illustrating a connection between a plurality of intents and a plurality of execution blocks.

도 10을 참조하면, 인텐트 order_coffee(910), 인텐트 order_hotice(920) 및 인텐트 order_takeout(930)이 실행블록 커피 선택(1010)에 연결된 것을 알 수 있다. 이 때, 실행블록 커피 선택(1010)의 인텐트 매핑 리스트에는 인텐트 order_coffee(910), 인텐트 order_hotice(920) 및 인텐트 order_takeout(930)에 상응하는 인텐트 식별자들이 포함될 수 있다.Referring to FIG. 10 , it can be seen that the intent order_coffee 910 , the intent order_hotice 920 , and the intent order_takeout 930 are connected to the execution block coffee selection 1010 . In this case, the intent mapping list of the execution block coffee selection 1010 may include intent identifiers corresponding to the intent order_coffee 910 , the intent order_hotice 920 and the intent order_takeout 930 .

이 때, 인텐트 order_hotice(920) 및 인텐트 order_takeout(930)은 실행블록 핫아이스확인(1020)에도 연결된다. At this time, the intent order_hotice 920 and the intent order_takeout 930 are also connected to the execution block hot ice check 1020 .

이 때, 인텐트 order_takeout(930)는 실행블록 테이크아웃확인(1030)에도 연결된다.At this time, the intent order_takeout 930 is also connected to the execution block takeout check 1030 .

인텐트 order_togo(940), 인텐트 order_eatin(950), 인텐트 followup.yes(960) 및 인텐트 followup.no(970)는 실행블록 테이크아웃확인(1030)에 연결된다.The intent order_togo 940 , the intent order_eatin 950 , the intent followup.yes 960 , and the intent followup.no 970 are connected to the execution block takeout confirmation 1030 .

도 10에 도시된 바와 같이, 인텐트들이 그 실행을 위한 블록들에 매핑되고, 매핑된 인텐트별로 슬롯이라는 변수를 기준으로 조건을 문법식으로 정의하여, 봇이 사용자 발화별 의도 분류로만 발화를 처리하지 않고 조건을 통해 적절한 세부처리가 가능하다.As shown in FIG. 10 , intents are mapped to blocks for execution, and conditions are grammatically defined based on a variable called slot for each mapped intent, so that the bot can only classify utterances by user utterance. Appropriate detailed processing is possible through conditions without processing.

도 10에 도시된 바와 같이, 하나의 블록에 복수개의 인텐트들이 연결될 수도 있고(N: 1), 복수개의 블록들이 하나의 인텐트에 연결될 수도 있어서(1:N), 인텐트와 블록간의 자유로운 매핑(N: N)이 가능하다.As shown in FIG. 10 , a plurality of intents may be connected to one block (N: 1), and a plurality of blocks may be connected to one intent (1:N), so that there is free space between intents and blocks. Mapping (N:N) is possible.

나아가, 하나의 실행블록은 이후 실행가능한 다른 실행블록들과의 연결관계를 가질 수 있다. 예를 들어, 실행블록 커피 선택(1010)은 실행블록 핫아이스확인(1020) 및 실행블록 테이크아웃확인(1030)과 연결될 수 있고, 실행블록 핫아이스확인(1020)은 실행블록 테이크아웃확인(1030)과 연결될 수 있다.Furthermore, one execution block may have a connection relationship with other executable blocks that can be executed later. For example, the execution block coffee selection 1010 may be connected to the execution block hot ice confirmation 1020 and the execution block takeout confirmation 1030, and the execution block hot ice confirmation 1020 is the execution block takeout confirmation 1030 ) can be associated with

도 11은 도 10에 도시된 실행블록 커피선택의 일 예를 나타낸 도면이다.11 is a view showing an example of the execution block coffee selection shown in FIG.

도 11을 참조하면, 실행블록 커피선택(1010)은 연결된 인텐트 목록, 슬롯, 슬롯 필링 및 액션 정보를 포함할 수 있다.Referring to FIG. 11 , the execution block coffee selection 1010 may include a linked intent list, slot, slot filling, and action information.

이 때, 연결된 인텐트 목록은 인텐트 매핑 리스트에 포함될 수 있고, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다. 이 때, 슬롯 조건은 하나 이상의 슬롯에 관련된 조건문에 상응하는 것일 수 있고, 널(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 a conditional statement related to one or more slots, and may include a null condition.

도 11에 도시된 슬롯들($coffee, $hotice, $takeout)은 실행블록 커피선택(1010)이 연결된 인텐트들(order_coffee, order_hotice, order_takeout)에 상응하는 모든 슬롯들의 합집합을 포함할 수 있다.The slots ($coffee, $hotice, $takeout) shown in FIG. 11 may include the union of all slots corresponding to the intents (order_coffee, order_hotice, order_takeout) to which the execution block coffee selection 1010 is connected.

슬롯 필링순위 정보는 실행블록 커피선택(1010)의 슬롯들의 필링순위에 관한 정보 및 해당 슬롯을 먼저 필링하기 위해 필요한 발화정보를 포함할 수 있다.The slot filling order information may include information on the filling order of the slots of the execution block coffee selection 1010 and utterance information necessary to fill the corresponding slot first.

액션 정보는 조건(condition)과 해당 조건이 만족되는 경우의 응답(response)으로 이루어질 수 있다. 이 때, 조건은 슬롯을 이용한 하나 이상의 조건문에 상응하는 것일 수 있고, 응답은 다른 블록을 호출하는 링크(link)를 포함할 수 있다.The action information may consist of a condition and a response when the corresponding condition is satisfied. In this case, the condition may correspond to one or more conditional statements using slots, and the response may include a link that calls another block.

예를 들어, 실행블록 커피 선택(1010)은 슬롯 $hotice를 이용한 조건 판단에 기반하여 실행블록 핫아이스확인(1020)을 연결할 수 있다.For example, the execution block coffee selection 1010 may connect the execution block hot ice confirmation 1020 based on condition determination using the slot $hotice.

예를 들어, 실행블록 커피 선택(1010)은 슬롯 $takeout을 이용한 조건 판단에 기반하여 실행블록 테이크아웃확인(1030)을 연결할 수 있다.For example, the execution block coffee selection 1010 may connect the execution block takeout check 1030 based on condition determination using the slot $takeout.

도 12는 도 10에 도시된 실행블록 핫아이스확인의 일 예를 나타낸 도면이다.FIG. 12 is a diagram illustrating an example of the execution block hot ice check shown in FIG. 10 .

도 12를 참조하면, 실행블록 핫아이스확인(1020)은 연결된 인텐트 목록, 슬롯, 슬롯 필링 및 액션 정보를 포함할 수 있다.Referring to FIG. 12 , the execution block hot ice check 1020 may include connected intent list, slot, slot filling, and action information.

도 12에 도시된 슬롯들($hotice, $takeout)은 실행블록 핫아이스확인(1020)이 연결된 인텐트들(order_hotice, order_takeout)에 상응하는 모든 슬롯들의 합집합을 포함할 수 있다.The slots ($hotice, $takeout) shown in FIG. 12 may include the union of all slots corresponding to the intents (order_hotice, order_takeout) to which the execution block hot ice check 1020 is connected.

슬롯 필링순위 정보는 실행블록 핫아이스확인(1020)의 슬롯들의 필링순위에 관한 정보 및 해당 슬롯을 먼저 필링하기 위해 필요한 발화정보를 포함할 수 있다.The slot filling order information may include information on the filling order of the slots of the execution block hot ice check 1020 and utterance information required to fill the corresponding slot first.

액션 정보는 조건(condition)과 해당 조건이 만족되는 경우의 응답(response)으로 이루어질 수 있다. 이 때, 조건은 슬롯을 이용한 하나 이상의 조건문에 상응하는 것일 수 있고, 응답은 다른 블록을 호출하는 링크(link)를 포함할 수 있다.The action information may consist of a condition and a response when the corresponding condition is satisfied. In this case, the condition may correspond to one or more conditional statements using slots, and the response may include a link that calls another block.

예를 들어, 실행블록 핫아이스확인(1020)은 슬롯 $takeout을 이용한 조건 판단에 기반하여 실행블록 테이크아웃확인(1030)을 연결할 수 있다.For example, the execution block hot ice check 1020 may connect the execution block takeout check 1030 based on the condition determination using the slot $takeout.

도 13은 도 10에 도시된 실행블록 테이크아웃확인의 일 예를 나타낸 도면이다.13 is a diagram illustrating an example of execution block takeout confirmation shown in FIG. 10 .

도 13을 참조하면, 실행블록 테이크아웃확인(1030)은 연결된 인텐트 목록, 슬롯, 슬롯 필링 및 액션 정보를 포함할 수 있다.Referring to FIG. 13 , the execution block takeout check 1030 may include a linked intent list, slot, slot filling, and action information.

도 13에 도시된 슬롯($takeout)은 실행블록 테이크아웃확인(1030)이 연결된 인텐트들(order_takeout, order_togo, order_eatin, followup.yes, followup.no)에 상응하는 모든 슬롯들의 합집합을 포함할 수 있다.The slot $takeout shown in FIG. 13 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 block takeout check 1030 is connected. there is.

슬롯 필링순위 정보는 실행블록 테이크아웃확인(1030)의 슬롯들의 필링순위에 관한 정보 및 해당 슬롯을 먼저 필링하기 위해 필요한 발화정보를 포함할 수 있다.The slot filling order information may include information about the filling order of the slots of the execution block takeout check 1030 and utterance information necessary to fill the corresponding slot first.

액션 정보는 조건(condition)과 해당 조건이 만족되는 경우의 응답(response)으로 이루어질 수 있다. 이 때, 조건은 슬롯을 이용한 하나 이상의 조건문에 상응하는 것일 수 있고, 응답은 다른 블록을 호출하는 링크(link)를 포함할 수 있다.The action information may consist of a condition and a response when the corresponding condition is satisfied. In this case, the condition may correspond to one or more conditional statements using slots, and the response may include a link that calls another block.

도 14는 도 10 내지 도 13에 도시된 실행블록들의 연결관계를 나타낸 블록도이다.14 is a block diagram illustrating a connection relationship between the execution blocks shown in FIGS. 10 to 13 .

도 14를 참조하면, 실행블록 커피 선택(1010), 실행블록 핫아이스확인(1020) 및 실행블록 테이크아웃확인(1030)이 그래프 형태로 연결된 것을 알 수 있다.Referring to FIG. 14 , it can be seen that the execution block coffee selection 1010 , the execution block hot ice confirmation 1020 , and the execution block takeout confirmation 1030 are connected in a graph form.

이 때, 실행블록들간의 연결은 특정 현재블록에서 사용자 발화대기 상태에 진입할 때, 사용자의 발화를 처리가능한 다음 실행블록들과의 연결을 의미할 수 있다. 즉, 특정 현재블록에서 사용자 발화가 수신되는 경우 발생가능한 상황은 현재블록과 연결된 실행블록들이므로 이들 실행블록들과 연결된 인텐트들만이 사용자 발화 처리가 필요한 인텐트들로 서칭 대상이 될 수 있다. 사용자 발화 대기 상태에서 현재 블록 기준으로 연결된 하위 블록들에 포함된 인텐트들만을 수집하여 자연어 처리기를 통해 인텐트를 검색하면 모든 인텐트를 서칭 대상으로 하는 경우에 비하여 훨씬더 신속하고 정확하게 발화에 해당하는 인텐트를 식별할 수 있게 된다.In this case, the connection between the execution blocks may mean a connection with the next execution blocks capable of processing the user's utterance when entering the user utterance standby state in a specific current block. That is, when a user's utterance is received from a specific current block, possible situations are execution blocks connected to the current block, so only intents connected to these execution blocks can be searched as intents requiring user utterance processing. In the waiting state for user utterance, if only the intents included in the sub-blocks connected based on the current block are collected and the intent is searched through the natural language processor, it corresponds to the utterance much more quickly and accurately than when all intents are searched. Intent can be identified.

도 14에 도시된 예에서, 실행블록 커피 선택(1010)은 실행블록 핫아이스선택(1020) 및 실행블록 테이크아웃확인(1030)과 연결되므로, 실행블록 커피 선택(1010)의 상태에서 사용자 발화가 입력되는 경우 다음 상태는 실행블록 핫아이스선택(1020) 또는 실행블록 테이크아웃확인(1030)이 될 수 있다.In the example shown in FIG. 14 , the action block coffee selection 1010 is connected with the action block hot ice selection 1020 and the action block takeout confirmation 1030 , so that the user utterance in the state of the action block coffee selection 1010 is When input, the next state may be the execution block hot ice selection 1020 or the execution block takeout confirmation 1030 .

또한, 실행블록 핫아이스선택(1020)의 상태에서 사용자 발화가 입력되는 경우 다음 상태는 실행블록 테이크아웃확인(1030)이 될 수 있다.In addition, when a user utterance is input in the state of the execution block hot ice selection 1020 , the next state may be the execution block takeout confirmation 1030 .

사용자 발화로부터 사용자 인텐트가 식별되면, 식별된 인텐트를 포함하는 블록들의 인텐트 조건들의 우선순위 및/또는 봇 설계자가 정의한 우선순위 순으로 정렬하여 블록들을 검색할 수 있다.When the user intent is identified from the user utterance, 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 matching the condition is found, it can move to the block, perform an action defined according to the block setting, and return to the user response standby state according to the condition of the action.

블록과 블록을 연결하는 것은 사용자 응답 대기 상태로 진입했을 때, 현재 블록에서 다음에 처리될 블록들을 나열하는 것으로 정의될 수 있으며, 하나의 블록에 여러 개의 사용자 응답 대기 상태들이 정의될 수도 있다.Connecting a block to a block may be defined as listing blocks to be processed next in the current block when entering the user response waiting state, and several user response waiting states may be defined in one block.

도 15는 실행블록에서 사용자 응답 대기 상태를 정의하여 블록들을 연결하는 일 예를 도시한 도면이다.15 is a diagram illustrating an example of connecting blocks by defining a user response standby state in an execution block.

도 15를 참조하면, 하나의 블록이 그래프 형태로 복수의 다른 블록들과 연결될 수 있는 것을 알 수 있다.Referring to FIG. 15 , it can be seen that one block can be connected to a plurality of other blocks in a graph form.

도 15에 도시된 블록 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)의 상황이 발생할 수 있다.Block 1 (Block 1) shown in FIG. 15 is connected to block 2 (Block 2), block 3 (Block 3), block 4 (Block 4), and block 5 (Block 5). At this time, block 1 (Block 1) is connected to block 2 (Block 2) and block 3 (Block 3) by condition 4 (Condition 4), and block 3 (Block 3) by condition 5 (Condition 5), It can be connected to block 4 (Block 4) and block 5 (Block 5). Accordingly, after block 1 (Block 1), the situations of block 2 (Block 2), block 3 (Block 3), block 4 (Block 4), and block 5 (Block 5) may occur.

블록 2(Block 2)는 블록 6(Block 6)과 연결된다. 따라서, 블록 2(Block 2) 이후에는 블록 6(Block 6)의 상황이 발생할 수 있다.Block 2 (Block 2) is connected to block 6 (Block 6). Accordingly, after block 2 (Block 2), the situation of block 6 (Block 6) may occur.

블록 3(Block 3)은 블록 6(Block 6) 및 블록 7(Block 7)과 연결된다. 따라서, 블록 3(Block 3) 이후에는 블록 6(Block 6) 및 블록 7(Block 7)의 상황이 발생할 수 있다.Block 3 (Block 3) is connected to block 6 (Block 6) and block 7 (Block 7). Accordingly, after block 3 (Block 3), the situation of block 6 (Block 6) and block 7 (Block 7) may occur.

블록 5(Block 5)는 블록 6(Block 6) 및 블록 7(Block 7)과 연결된다. 따라서, 블록 5(Block 5) 이후에는 블록 6(Block 6) 및 블록 7(Block 7)의 상황이 발생할 수 있다.Block 5 (Block 5) is connected to block 6 (Block 6) and block 7 (Block 7). Accordingly, after block 5 (Block 5), the situations of block 6 (Block 6) and block 7 (Block 7) may occur.

예를 들어, 현재 상태가 블록 2(Block 2)에 해당하는 상태라면, 이후 사용자의 발화는 블록 6(Block 6)에 해당하는 인텐트들만을 대상으로 인텐트를 서치하면 충분하고, 발생가능성이 없는 블록 7(Block 7)에 해당하는 인텐트들을 대상으로 사용자 발화 매칭을 수행할 필요가 없다.For example, if the current state is a state corresponding to Block 2, it is sufficient to search for an intent for only the intents corresponding to Block 6 for subsequent utterance by the user, and the possibility of occurrence is high. There is no need to perform user utterance matching on intents corresponding to the absent Block 7 .

하나의 인텐트와 하나의 실행 블록을 매핑하는 경우, 하나의 인텐트가 복수개의 발화 패턴을 포함해야 할 수 있다. When one intent and one execution block are mapped, one intent may have to include a plurality of utterance patterns.

예를 들어, 인텐트(I1: 가입 의도)가 학습문장들 "써보고 싶어요"(패턴분류 P1), "쓰려면 어떻게 해요"(패턴분류 P1), "가입 방법이 궁금해요"(패턴분류 P3) 및 "가입방법 문의 좀"(패턴분류 P3)을 포함하고, 인텐트(I2: 탈퇴 의도)가 학습문장들 "그만 쓰고 싶어요"(패턴분류 P2), "이제 안쓸래요"(패턴분류 P2), "탈퇴 방법 궁금해요"(패턴분류 P3) 및 "탈퇴 방법 문의합니다"(패턴분류 P3)를 포함할 수 있다.For example, the intent (I1: signup intention) is the learning sentences "I want to try" (pattern classification P1), "How to write" (pattern classification P1), "I am curious about how to join" (pattern classification P3) and "Inquiry on how to join" (pattern classification P3), and the intent (I2: intention to withdraw) is the learning sentences "I want to stop writing" (pattern classification P2), "I don't want to use it anymore" (pattern classification P2), It can include "I want to know how to withdraw" (Pattern classification P3) and "Inquire about withdrawal method" (Pattern classification P3).

이 때, 인텐트(I1: 가입 의도)에 블록 하나가 연결되고, 인텐트(I2: 탈퇴 의도)에 블록 하나가 연결될 수 있으나, 인텐트들이 복수개의 발화 패턴들을 포함하게 되어 자연어 처리기의 성능이 저하될 수 있다.In this case, one block may be connected to the intent (I1: join intention) and one block may be connected to the intent (I2: leave intention), but the intents include a plurality of utterance patterns, so that the performance of the natural language processor is reduced. can be lowered

따라서, 자연어 처리기의 성능 저하를 방지하기 위해서는 하나의 인텐트에 복수개의 발화 패턴들이 포함되는 것을 피하는 것이 바람직하다. 예를 들어, 인텐트(I1: 가입 의도)는 학습문장들 "써보고 싶어요"(패턴분류 P1) 및 "쓰려면 어떻게 해요"(패턴분류 P1)만을 포함하고, 인텐트(I2: 탈퇴 의도)는 학습문장들 "그만 쓰고 싶어요"(패턴분류 P2) 및 "이제 안쓸래요"(패턴분류 P2)만을 포함하고, 인텐트(I3: 문의 의도)가 학습문장들 "<가입> 방법이 궁금해요"(패턴분류 P3), "<가입> 방법 문의 좀"(패턴분류 P3), "<탈퇴> 방법 궁금해요"(패턴분류 P3) 및 "<탈퇴> 방법 문의합니다"(패턴분류 P3)를 포함할 수 있다.Accordingly, in order to prevent degradation of the performance of the natural language processor, it is desirable to avoid including a plurality of utterance patterns in one intent. For example, the intent (I1: intention to join) includes only the learning sentences "I want to try" (pattern classification P1) and "how to write" (pattern classification P1), and the intent (I2: intention to withdraw) is Include only the learning sentences "I want to stop writing" (pattern classification P2) and "I don't want to write anymore" (pattern classification P2), and the intent (I3: Inquiry) is the learning sentence "I am curious about how to <join>" ( Pattern classification P3), "Inquire about how to <join>" (Pattern classification P3), "I want to know how to <withdraw>" (Pattern classification P3), and "Inquire about <withdrawal> method" (Pattern classification P3) there is.

이와 같이 자연어 처리기에서 효과적으로 처리될 수 있도록 인텐트를 분류하는 경우, 인텐트들과 처리 블록들이 보다 다양한 형태로 연결될 필요가 있다. 이를 위해, 블록의 인텐트들은 각각 조건을 가질 수 있고, 이 조건은 슬롯값들을 비교하는 구문들로 정의될 수 있다. 즉, 블록과 인텐트 매핑 정보는 인텐트와 슬롯 조건을 쌍으로 묶인 목록(인텐트 매핑 리스트)의 형태로 블록에 정의될 수 있다.In the case of classifying intents so that they can be effectively processed by the natural language processor as described above, intents and processing blocks need to be connected in more various forms. To this end, each intent of the block may have a condition, and this condition may be defined as statements comparing slot values. That is, the block and intent mapping information may be defined in the block in the form of a list (intent mapping list) in which intents and slot conditions are paired.

도 16은 발화 패턴별로 정의된 인텐트를 블록에 매핑하는 일 예를 나타낸 도면이다.16 is a diagram illustrating an example of mapping intents defined for each utterance pattern to a block.

도 16을 참조하면, 인텐트와 슬롯 조건의 쌍으로 3개의 인텐트들이 2개의 블록들에 연결된 것을 알 수 있다.Referring to FIG. 16 , it can be seen that three intents are connected to two blocks as a pair of intent and slot condition.

이 때, 슬롯 조건에 사용되는 슬롯들은 현재 인텐트에서 정의된 슬롯뿐만 아니라, 이전 대화를 실행하면서 설정된 다른 블록의 슬롯이나, 시스템에서 제공되는 슬롯들을 포함할 수 있다.In this case, the slots used for the slot condition may include not only the slots defined in the current intent, but also slots of other blocks set while executing a previous conversation or slots provided by the system.

도 16에 도시된 예에서 인텐트 1(Intent 1)은 발화 패턴 1(Pattern 1)에 상응하고, 인텐트 2(Intent 2)는 발화 패턴 2(Pattern 2)에 상응하고, 인텐트 3(Intent 3)은 발화 패턴 3(Pattern 3)에 상응하는 것을 알 수 있다.In the example shown in FIG. 16 , intent 1 corresponds to utterance pattern 1, intent 2 corresponds to utterance pattern 2, and intent 3 It can be seen that 3) corresponds to the firing pattern 3 (Pattern 3).

도 16에 도시된 예에서, 블록 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. 16 , in the intent mapping list of block 1, a pair of intent 1 and condition 1 and intent 3 and condition 2 are included. ), there are two elements of the pair. Accordingly, Block 1 is connected to two intents Intent 1 and Intent 3 .

블록 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 block 2, two elements of a pair of intent 2 and condition 3 and a pair of intent 3 and condition 4 are exist. Accordingly, the block 2 (Block 2) is connected to the two intents (Intent 2, Intent 3).

도 17은 인텐트와 실행블록을 1:1 매핑하는 경우를 나타낸 도면이다.17 is a diagram illustrating a case of 1:1 mapping of intents and execution blocks.

도 17을 참조하면, 3개의 인텐트들(I1, I2, I3)이 각각 4개씩의 발화 패턴을 포함하는 것을 알 수 있다.Referring to FIG. 17 , it can be seen that each of the three intents I1 , I2 , and I3 includes four utterance patterns.

즉, 인텐트 I1(가입 의도)는 발화 패턴들 "써보고 싶어요", "쓰려면 어떻게 해요", "가입 방법이 궁금해요" 및 "가입 방법 문의 좀"을 포함한다.That is, the intent I1 (join intent) includes the utterance patterns "I want to try", "How to write", "I want to know how to join", and "Inquire about how to join".

인텐트 I2(탈퇴 의도)는 발화 패턴들 "그만 쓰고 싶어요", "이제 안쓸래요", 탈퇴 방법이 궁금해요" 및 "탈퇴하는 법 문의합니다"를 포함한다.Intent I2 (withdrawal intention) includes utterance patterns "I want to stop using it", "I don't want to use it anymore", I want to know how to leave, and "I want to ask how to leave".

인텐트 I3(정회원 문의 의도)는 발화 패턴들 "정회원이 되고 싶어요", "정회원으로 승급하고 싶어요", 정회원 가입 방법이 궁금해요", "정회원 가입하는 방법은"을 포함한다.Intent I3 (intention to inquire about active members) includes the utterance patterns "I want to become a full member", "I want to be promoted to a full member", I want to know how to become a full member", and "How to become a full member".

인텐트(의도)와 응답(실행블록)이 1:1로 매핑되면, "*** 궁금해요"와 같은 문장이 여러 인텐트에 등장하는 경우, 자연어 처리기(NLU)가 이들 유사한 문장들을 구분하기 어렵다. 예를 들어, "저 처음인데 가입하는 법 문의합니다"와 같은 문장은 상황에 따라 자연어 처리기에 의해 탈퇴 의도의 "탈퇴하는 법 문의합니다"와 유사한 문장으로 처리되어 잘못된 의도 인식이 발생할 수 있다.If the intent (intent) and response (action block) are mapped 1:1, the natural language processor (NLU) is able to distinguish between these similar sentences when a sentence such as "*** I'm curious" appears in multiple intents. it's difficult. For example, a sentence such as "I am the first to ask how to join" may be processed by a natural language processor as a sentence similar to "I am asking how to unsubscribe" of the intention to leave, depending on the situation, resulting in incorrect intention recognition.

즉, 사용자의 의도 분류는 자연어 처리기(NLU)에 의해 처리되기 쉬운 의도 분류와는 상이할 수 있는데, 실제 사용자의 의도 하나가 자연어 처리기가 처리하기 용이한 의도들 여러 개로 분리될 수 있고 또 반대로 여러 개의 사용자의 의도들이 자연어 처리기가 처리하기 용이한 하나의 의도로 분류될 수도 있다.That is, the user's intention classification may be different from the intention classification that is easy to be processed by a natural language processor (NLU). The user's intentions may be classified as one intention that is easy to be processed by the natural language processor.

도 18은 본 발명의 일실시예에 따른 인텐트 분류 및 블록 매핑의 일 예를 나타낸 도면이다.18 is a diagram illustrating an example of intent classification and block mapping according to an embodiment of the present invention.

도 18을 참조하면, 자연어 처리기(NLU)가 처리하기 용이한 형태로 문장들이 분류되고, 필요한 슬롯을 태깅하여 조건에 따라 응답들(responses)이 매핑된 것을 알 수 있다.Referring to FIG. 18 , it can be seen that sentences are classified in a form that is easy for the natural language processor (NLU) to process, and responses are mapped according to conditions by tagging necessary slots.

도 18에 도시된 예에서, 4개의 인텐트들(I1, I2, I3, I4)이 3개의 응답들(R1, R2, R3)에 연결된다.In the example shown in FIG. 18 , four intents I1 , I2 , I3 , I4 are connected to three responses R1 , R2 , R3 .

이 때, 인텐트 1(I1)은 가입 안내 응답(R1)에 연결된다. 이 때, 슬롯 조건은 널(NULL) 조건일 수 있다.At this time, the intent 1 (I1) is connected to the subscription guidance response (R1). In this case, 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 the subscription guidance response (R1), the withdrawal guidance response (R2), and the regular member guidance response (R3). In this case, the intent 4 (I4) may be connected to the subscription guidance response (R1) by the slot condition $service == "subscription". In this case, the intent 4 (I4) may be connected to the withdrawal guidance response (R2) by the slot condition $service == "withdrawal". In this case, the intent 4 (I4) may be connected to the regular member guidance response R3 by the slot conditions $level == "regular member" and $service == "subscription".

이 때, 인텐트 2(I2)는 탈퇴 안내 응답(R2)에 연결된다. 이 때, 슬롯 조건은 널(NULL) 조건일 수 있다.At this time, the intent 2 (I2) is connected to the withdrawal guidance response (R2). In this case, the slot condition may be a null condition.

이 때, 인텐트 3(I3)는 정회원 안내 응답(R3)에 연결된다. 이 때, 슬롯 조건은 널(NULL) 조건일 수 있다.At this time, the intent 3 (I3) is connected to the regular member guidance response (R3). In this case, the slot condition may be a null condition.

도 18에 도시된 응답들은 각각 하나의 실행블록에 상응하는 것일 수 있다.Each of the responses shown in FIG. 18 may correspond to one execution block.

이 때, 실행블록은 인텐트와 슬롯 조건 및 챗봇의 응답 처리를 포함하여 정의될 수 있다.In this case, the execution block may be defined including intent and slot conditions and response processing of the chatbot.

도 19는 도 18에 도시된 응답들에 상응하는 실행블록들을 나타낸 도면이다.19 is a diagram illustrating execution blocks corresponding to the responses shown in FIG. 18 .

도 19를 참조하면, 각 실행블록들은 적어도 하나의 인텐트와 슬롯 조건의 쌍을 포함하는 인텐트 매핑 리스트 및 동작 정보를 포함한다.Referring to FIG. 19 , each execution block includes an intent mapping list including a pair of at least one intent and a slot condition, and operation information.

도 19에 도시된 바와 같이, 슬롯 조건은 "조건없음"에 해당하는 널(NULL) 조건을 포함할 수 있고, 하나 이상의 슬롯을 이용한 조건문을 포함할 수 있다.19 , the slot condition may include a null condition corresponding to “no condition” and may include a conditional statement using one or more slots.

챗봇이 대화 처리를 수행하게 되면, 먼저 사용자가 입력한 문장으로부터 자연어 처리기가 인텐트를 분류하고 슬롯을 추출한 뒤, 분류된 인텐트를 포함하는 블록에 나열된 조건들을 검사해가면서 매칭되는 블록을 찾게 된다.When the chatbot performs dialog processing, the natural language processor first classifies the intent from the sentence input by the user, extracts a slot, and then finds a matching block by examining the conditions listed in the block including the classified intent. .

도 18 및 도 19에 도시된 예에서, "I4: 문의 의도"로 인텐트가 분류된 경우, 이 인텐트를 포함하고 있는 블록은 B1, B2 및 B3이며, 조건에 따라 매칭되는 블록들은 아래 표 1과 같다.In the example shown in FIGS. 18 and 19, when the intent is classified as "I4: Intent of inquiry", blocks including this intent are B1, B2, and B3, and blocks matched according to the condition are shown in the table below. equal to 1.

조건condition 블록block 사용자 지정 조건 검사 순서Custom condition check order $service == "가입"$service == "Subscribe" B1:가입 안내B1: Registration Information 1One $service == "탈퇴"$service == "Withdraw" B2:탈퇴 안내B2: Notice of withdrawal 22 $level == "정회원" and $service == "가입"$level == "Full Member" and $service == "Sign Up" B3:정회원 안내B3: Regular member information 33

조건을 검사하는 순서는 블록을 나열하는 순서등을 사용자가 지정함으로써 정해질 수 있다. 만약, 표 1과 같이 단순히 사용자가 나열한 순서대로만 처리되는 경우, 정회원 가입과 같은 문장은 $level == "정회원" and $service == "가입" 이라는 조건을 만족하지만, 동시에 논리적으로는 $service == "가입" 이라는 조건도 만족하게 되고, 조건 검사 순위가 높은 B1 블록이 실행될 수 있고 이는 바람직한 결과가 아닐 수 있다.The order of checking the condition can be determined by the user designating the order in which blocks are listed. If, as shown in Table 1, processing is simply performed in the order listed by the user, a sentence such as regular membership registration satisfies the conditions of $level == "regular member" and $service == "join", but at the same time logically $service = = "join" is also satisfied, and the B1 block having a high condition check rank 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 inclusion relationship of conditions, it can be determined as shown in Table 2 below.

조건condition 블록block 사용자 지정 조건 검사 순서Custom condition check order 포함관계 고려 순위 재정렬Reordering ranking considering inclusion relationship $level == "정회원" and $service == "가입"$level == "Full Member" and $service == "Sign Up" B3:정회원 안내B3: Regular member information 33 1One $service == "가입"$service == "Subscribe" B1:가입 안내B1: Registration Information 1One 22 $service == "탈퇴"$service == "Withdraw" B2:탈퇴 안내B2: Notice of withdrawal 22 33

이 때, 조건의 포함관계는 조건식 내에 사용된 슬롯들의 집합의 포함관계로 결정될 수 있는데, 포함하고 있는 쪽(큰 집합)이 포함되는 쪽(작은 집합)보다 우선적으로 처리되고, 서로 포함관계가 없으면 사용자가 지정한 우선순위가 유지될 수 있다. 표 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, and the containing side (larger set) is treated with priority over the containing side (small set), and if there is no containment relation with each other, A user-specified priority may be maintained. In the example of Table 2, the condition of B3, which checks both level and service, has a higher condition inclusion relation order than B1 and B2, which checks only service, so that B3 can be processed preferentially over B1 or B2.

도 20는 도 9 내지 도 14에서 예시된 커피주문 시나리오에 상응하는 조건의 포함관계에 따른 우선순위 정렬 예를 나타낸 도면이다.20 is a view showing an example of prioritization according to the inclusion relationship of the condition corresponding to the coffee order scenario illustrated in FIGS. 9 to 14 .

도 20을 참조하면, coffee 슬롯 하나에 해당하는 조건보다 coffee 슬롯 및 takeout 슬롯 두 개에 해당하는 조건이 우선순위가 높은 것을 알 수 있다.Referring to FIG. 20 , it can be seen that a condition corresponding to two coffee slots and two takeout slots has a higher priority than a condition corresponding to one coffee slot.

따라서, 사용자가 "아메리카노 테이크아웃할래요"라고 발화하면 슬롯 coffee이 "아메리카노"로 채워지고, 슬롯 takeout이 "테이크아웃"으로 채워지므로 실행블록 테이크아웃확인보다 실행블록 커피 주문이 우선적으로 실행되게 된다.Therefore, when the user utters "I want to take out Americano", the slot coffee is filled with "Americano" and the slot takeout is filled with "Takeout", so the execution block coffee order is executed prior to the execution block takeout confirmation.

챗봇 프로세스가 실행될 때는, 현재 사용자 응답 대기 상태에서 연결된 블록들에서 인텐트들을 수집하고, 자연어 처리기를 통해 수집된 인텐트들 중에서 적합한 인텐트를 검색할 수 있다.When the chatbot process is executed, intents may be collected from connected blocks in a current user response waiting state, and a suitable intent may be searched for among intents collected through a natural language processor.

인텐트로 블록을 찾을 때는 인텐트를 포함하고 있는 블록들의 인텐트 조건들의 우선순위, 사용자가 정의한 우선순위 순으로 정렬하여 적합한 블록을 검색할 수 있다.When searching for a block by intent, a suitable block can be searched for by sorting in the order of the priority of intent conditions of the blocks including 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 meets the condition is found, it moves to the block, performs the action specified in the chatbot's response process, and enters the next user response waiting state according to the condition.

도 21은 챗봇 실행에 필요한 모듈들의 일 예를 나타낸 블록도이다.21 is a block diagram illustrating an example of modules required to execute a chatbot.

도 21을 참조하면, 봇 디자이너가 정의한 리소스들을 챗봇이 실행할 때 필요한 모듈들은 대화 흐름 처리기를 중심으로 크게 나눈다면, 메시지 입출력을 제어하는 부분, 블록 상태를 관리하는 부분, 자연어를 처리하는 부분, 블록 조건들을 처리하는 부분 및 블록들을 실행하는 부분으로 볼 수 있다.Referring to Figure 21, if the modules required for the chatbot to execute the resources defined by the bot designer are largely divided around the conversation flow processor, the part that controls the message input/output, the part that manages the block state, 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.

도 21의 예에서, 챗봇 실행에 필요한 모듈들은 대화 흐름 처리기, 블록 상태 관리기, 메시지 입력 게이트웨이, 메시지 출력 게이트웨이, 응답 메시지 생성기, 블록 프로세스 실행기, NLU 검색기, 블록 검색기, 의도 분류기, 슬롯 추출기, 자연어 처리기, NLU 우선 순위 관리자, 조건 해석기 및 블록 조건 우선순위 관리자를 포함할 수 있다.In the example of FIG. 21 , the modules required to run the chatbot are a dialog flow processor, block state manager, message input gateway, message output gateway, response message generator, block process executor, NLU searcher, block searcher, intent classifier, slot extractor, natural language processor , an NLU priority manager, a condition interpreter and a block condition priority manager.

도 22는 챗봇 실행 중 인텐트와 블록을 검색하는 과정을 나타낸 도면이다.22 is a diagram illustrating a process of searching for an intent and a block while the chatbot is running.

도 22를 참조하면, 챗봇이 사용자 입력을 대기중인 상태에서 사용자의 발화가 입력되면, 먼저 현재 위치에서 실행 가능한 블록들이 서칭된다. 이 때, 현재 (실행)블록에 연결된 하위 블록들이 먼저 서칭되고, 시나리오의 메인블록들이 서칭될 수 있다. 이 때, 메인블록이란 대화 초기 상태에서 동작할 블록들의 목록을 의미하며, 사용자가 최초 발화시 봇이 서칭하는 대상 블록들이 된다. 즉, 현재 블록 이후에 실행가능성이 있는 하위블록들과, 새로 실행가능한 메인블록들만을 대상으로 인텐트를 식별하게 되면, 효율적인 대화 흐름 처리가 가능하다.Referring to FIG. 22 , when a user's utterance is input while the chatbot is waiting for user input, blocks executable at the current location are first searched. In this case, lower blocks connected to the current (execution) block may be searched first, and main blocks of the scenario may be searched. In this case, the main block refers to a list of blocks to be operated in the initial state of the conversation, and becomes the target blocks searched by the bot when the user first utters it. That is, if the intent is identified for only sub-blocks that are executable after the current block and the main blocks that are newly executable, efficient conversation flow processing is possible.

블록이 서칭되면, 서칭된 블록에 매핑된 인텐트들을 나열하여 처리 우선순위를 검사하게 된다. 이 때, 서칭된 블록들에 정의된 인텐트들이 나열되고, 자연어 처리기를 사용하여 사용자 발화에 해당하는 인텐트들의 매칭 스코어(score)를 결정한다. 정의된 인텐트 패턴 문턱 스코어(threshold score) 목록을 순차적으로 조회하면서, 인텐트들의 이름과 매칭 점수를 비교하여, 패턴과 문턱 스코어를 만족하는 인텐트들 중 매칭 점수가 가장 높은 인텐트를 가장 먼저 추출한다.When a block is searched, the processing priority is checked by listing intents mapped to the searched block. In this case, intents defined in the searched blocks are listed, and a matching score of intents corresponding to the user's utterance is determined using a natural language processor. While sequentially searching the defined intent pattern threshold score list, comparing the names of intents and matching scores, the intent with the highest matching score among intents satisfying the pattern and threshold score is selected first. extract

매칭된 인텐트가 속한 블록이 1개 이상인 경우, 정의된 인텐트 매핑 조건에 따라 처리 우선순위를 정렬하고, 조건의 우선순위가 동일한 경우는 사용자가 직접 정의한 시나리오 및 블록의 우선순위를 따른다. 이 때, 조건의 우선순위는 조건 비교 구문의 포함 관계에 따라 우선 순위가 매겨질 수 있다. 즉, 사용자의 발화로부터 추출된 슬롯을 기반으로 조건을 구성하는 경우, 조건을 구성하는 비교 구문은 사용자가 언급한 슬롯들 위주로 구성되고 언급되지 않은 슬롯은 생략되므로, 많은 슬롯을 포함하고 있는 조건이 사용자의 의도를 더 잘 반영한 것이라고 볼 수 있다. 즉, 조건 구문 내에 참인 조건이 여러 개인 경우, 제약 사항이나 슬롯을 더 많이 포함하는 조건이 우선 순위가 더 높은 것으로 간주될 수 있다.If there is more than one block to which the matched intent belongs, processing priorities are sorted according to the defined intent mapping condition, and if the priorities of the conditions are the same, the priority of the scenario and block defined by the user is followed. In this case, the priority of the condition may be prioritized according to the inclusion relationship of the condition comparison phrase. That is, when a condition is configured based on a slot extracted from the user's utterance, the comparison syntax constituting the condition is mainly composed of the slots mentioned by the user and the unmentioned slots are omitted. It can be seen that this reflects the user's intention better. That is, when there are multiple conditions that are true in the conditional statement, the condition including more constraints or slots may be considered as having higher priority.

정렬된 조건들을 우선순위에 따라 검사하여, 가장 첫 번째 순서로 만족하는 조건이 속한 블록을 실행 블록으로 처리한다. 만약 조건을 만족하는 블록을 찾을 수 없을 때는 다음 우선 순위의 인텐트로 다시 인텐트가 속한 블록들을 찾고 조건의 우선 순위 판단 및 조건 검사 과정을 반복하여 블록을 찾는다.The sorted conditions are checked in order of priority, and the block containing the condition that is satisfied in the first order is treated as an execution block. If a block that satisfies the condition cannot be found, the block to which the intent belongs is found again with the intent of the next priority, and the process of determining the priority of the condition and checking the condition is repeated to find the block.

도 23은 본 발명의 다른 실시예에 따른 챗봇 서비스 제공 방법을 나타낸 동작 흐름도이다.23 is an operation flowchart illustrating a method of providing a chatbot service according to another embodiment of the present invention.

도 23을 참조하면, 본 발명의 다른 실시예에 따른 챗봇 서비스 제공 방법은 사용자 대화에 상응하는 인텐트를 결정한다(S2310).Referring to FIG. 23 , in the chatbot service providing method according to another embodiment of the present invention, an intent corresponding to a user conversation is determined ( S2310 ).

이 때, 사용자 대화에 상응하는 인텐트는 현재 블록과 그래프(graph)를 통해 연결된 하나 이상의 후보블록 또는 메인블록에 연결된 인텐트 후보 내에서 선택될 수 있다.In this case, an intent corresponding to the user conversation may be selected from among intent candidates connected to one or more candidate blocks or main blocks connected to the current block through a graph.

이 때, 사용자 대화에 상응하는 인텐트는 상기 후보블록에 연결된 제1 인텐트 후보가 상기 메인블록에 연결된 제2 인텐트 후보보다 우선적으로 고려되어 결정될 수 있다.In this case, the intent corresponding to the user conversation may be determined by considering a first intent candidate connected to the candidate block in preference to a second intent candidate connected to the main block.

또한, 본 발명의 다른 실시예에 따른 챗봇 서비스 제공 방법은 인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택한다(S2320).Also, in the chatbot service providing method according to another embodiment of the present invention, an execution block corresponding to the intent is selected using the intent mapping list (S2320).

이 때, 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응하는 것일 수 있다.In this case, the intent mapping list is provided for each of the execution blocks, and may correspond to at least one intent.

이 때, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다.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 a conditional statement related to one or more slots.

이 때, 슬롯 조건은 널(NULL) 조건을 포함할 수 있다.In this case, 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 indicates 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, when the intent corresponding to the user conversation is connected to a plurality of execution blocks, the execution block corresponding to the intent is the first execution block having the slot condition inclusion relationship corresponding to the large set. The second execution block having the inclusion relationship of the slot condition corresponding to the 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 considered and selected prior to an execution block corresponding to $service == "subscription".

또한, 본 발명의 다른 실시예에 따른 챗봇 서비스 제공 방법은 상기 실행블록에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행한다(S2330).In addition, the chatbot service providing method according to another embodiment of the present invention performs a conversation process corresponding to the intent based on the execution block (S2330).

상술한 구성에 의하여, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 N:N(N은 자연수) 매핑이 가능하도록 하여, 여러가지 다른 발화들로 하나의 기능을 실행할 수 있고, 반대로 유사한 발화들로 전혀 다른 기능을 수행할 수 있다.With the above configuration, in the chatbot service providing method according to an embodiment of the present invention, N:N (N is a natural number) mapping between intents classified suitable for a natural language processor and execution blocks processing the intents. By making this possible, one function can be performed with several different utterances, and conversely, a completely different function can be performed with similar utterances.

또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계를 정의하는 것이 가능하다.Also, 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 using an intent mapping list including an intent identifier and a slot condition for each intent.

또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 사용자 대화에 상응하는 인텐트를 식별할 때, 현재 실행블록 이후에 실행될 수 있는 후보블록들을 식별하고, 후보블록들과 연결된 인텐트들만을 식별 대상으로 하여 빠르고 정확한 인텐트 식별이 가능하다.In addition, the chatbot service providing method according to an embodiment of the present invention identifies candidate blocks that can be executed after the current execution block when identifying an intent corresponding to a user conversation, and uses only intents connected to the candidate blocks. It is possible to quickly and accurately identify an intent by using it as an identification target.

도 24는 발화 패턴수 증가에 따른 자연어 처리기 성능을 나타낸 그래프이다.24 is a graph showing the performance of a natural language processor according to an increase in the number of speech patterns.

도 24를 참조하면, 인텐트를 챗봇이 제공하는 기능별로 구분하는 경우, 다양한 발화 문장들이 추가될 경우 비슷한 발화 패턴이 여러 인텐트들에 자주 나타나게 되고, A와 같이 자연어 처리기(NLU)의 인텐트 분류 성능이 급격히 저하되는 것을 알 수 있다.Referring to FIG. 24 , when an intent is divided by a function provided by the chatbot, when various speech sentences are added, a similar speech pattern frequently appears in several intents, and as shown in A, the intent of the NLU It can be seen that the classification performance deteriorates rapidly.

이런 문제를 해결하기 위해 자연어 처리기가 처리하기 적합한 형태로 유사한 발화 패턴별로 인텐트를 정의할 수 있도록 함으로써, 발화 패턴이 늘어나더라도 B과 같이 자연어 처리기 성능을 높게 유지할 수 있다.In order to solve this problem, by enabling the natural language processor to define an intent for each similar utterance pattern in a form suitable for processing, it is possible to maintain high performance of the natural language processor like B, even if the utterance patterns increase.

또한, 서로 다른 발화패턴을 '블록'이라는 단위에 매핑하여 조건에 의하여 봇이 적절히 처리할 수 있도록 함으로써, 다양한 발화 패턴이 효율적으로 처리될 수 있다.In addition, various utterance patterns can be efficiently processed by mapping different utterance patterns to units called 'blocks' so that the bot can properly process them according to conditions.

블록들은 그래프 형태로 연결되고 조건에 따라 응답 대기 상태를 여러 개로 정의할 수 있어서, 조건에 따라 처리 흐름이나 단계가 다양한 업무 처리를 적은 수의 블록들로도 가시적으로 정의할 수 있다.Blocks are connected in a graph form and multiple response waiting states can be defined depending on conditions, so that business processes with various processing flows or steps can be visually defined with a small number of blocks depending on conditions.

본 명세서에서 설명하는 기능적인 동작과 주제의 구현물들은 디지털 전자 회로로 구현되거나, 본 명세서에서 개시하는 구조 및 그 구조적인 등가물들을 포함하는 컴퓨터 소프트웨어, 펌웨어 혹은 하드웨어로 구현되거나, 이들 중 하나 이상의 결합으로 구현 가능하다. 본 명세서에서 설명하는 주제의 구현물들은 하나 이상의 컴퓨터 프로그램 제품, 다시 말해 처리 시스템의 동작을 제어하기 위하여 혹은 이것에 의한 실행을 위하여 유형의 프로그램 저장매체 상에 인코딩된 컴퓨터 프로그램 명령에 관한 하나 이상의 모듈로서 구현될 수 있다.Implementations of the functional operations and subject matter described in this specification may be implemented as digital electronic circuits, implemented in computer software, firmware, or hardware including the structures disclosed herein and structural equivalents thereof, or a combination of one or more thereof. can be implemented Implementations of the subject matter described herein are one or more computer program products, ie one or more modules of computer program instructions encoded on a tangible program storage medium for controlling the operation of or for execution by a processing system. can be implemented.

컴퓨터로 판독 가능한 매체는 기계로 판독 가능한 저장 장치, 기계로 판독 가능한 저장 기판, 메모리 장치, 기계로 판독 가능한 전파형 신호에 영향을 미치는 물질의 조성물 혹은 이들 중 하나 이상의 조합일 수 있다.The 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 radio wave signal, or a combination of one or more thereof.

본 명세서에서 '시스템'이나 '장치'라 함은 예컨대 프로그래머블 프로세서, 컴퓨터 혹은 다중 프로세서나 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 기구, 장치 및 기계를 포괄한다. 처리 시스템은, 하드웨어에 부가하여, 예컨대 프로세서 펌웨어를 구성하는 코드, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제 혹은 이들 중 하나 이상의 조합 등 요청 시 컴퓨터 프로그램에 대한 실행 환경을 형성하는 코드를 포함할 수 있다.As used herein, the term 'system' or 'device' encompasses all devices, devices and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. A processing system may include, in addition to hardware, code that upon request forms an execution environment for a computer program, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more thereof. .

컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 혹은 코드로도 알려져 있음)은 컴파일되거나 해석된 언어나 선험적 혹은 절차적 언어를 포함하는 프로그래밍 언어의 어떠한 형태로도 작성될 수 있으며, 독립형 프로그램이나 모듈, 컴포넌트, 서브루틴 혹은 컴퓨터 환경에서 사용하기에 적합한 다른 유닛을 포함하여 어떠한 형태로도 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 반드시 대응하는 것은 아니다. 프로그램은 요청된 프로그램에 제공되는 단일 파일 내에, 혹은 다중의 상호 작용하는 파일(예컨대, 하나 이상의 모듈, 하위 프로그램 혹은 코드의 일부를 저장하는 파일) 내에, 혹은 다른 프로그램이나 데이터를 보유하는 파일의 일부(예컨대, 마크업 언어 문서 내에 저장되는 하나 이상의 스크립트) 내에 저장될 수 있다. 컴퓨터 프로그램은 하나의 사이트에 위치하거나 복수의 사이트에 걸쳐서 분산되어 통신 네트워크에 의해 상호 접속된 다중 컴퓨터나 하나의 컴퓨터 상에서 실행되도록 전개될 수 있다.A computer program (also known as a program, software, software application, script or code) may be written in any form of any programming language, including compiled or interpreted language or a priori or procedural language, and may be written as a stand-alone program or module; It can 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 (eg, files that store one or more modules, subprograms, or portions of code), or portions of files that hold other programs or data. (eg, one or more scripts stored within a markup language document). The computer program may be deployed to be executed on a single computer or multiple computers located at one site or distributed over a plurality of 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 EPROMs, EEPROMs and flash memory devices, such as magnetic disks such as internal hard disks or external disks, magneto-optical disks and CDs. -Can include all types of non-volatile memory, media and memory devices, including ROM and DVD-ROM disks. The processor and memory may be supplemented by, or integrated into, special purpose logic circuitry.

본 명세서에서 설명한 주제의 구현물은 예컨대 데이터 서버와 같은 백엔드 컴포넌트를 포함하거나, 예컨대 어플리케이션 서버와 같은 미들웨어 컴포넌트를 포함하거나, 예컨대 사용자가 본 명세서에서 설명한 주제의 구현물과 상호 작용할 수 있는 웹 브라우저나 그래픽 유저 인터페이스를 갖는 클라이언트 컴퓨터와 같은 프론트엔드 컴포넌트 혹은 그러한 백엔드, 미들웨어 혹은 프론트엔드 컴포넌트의 하나 이상의 모든 조합을 포함하는 연산 시스템에서 구현될 수도 있다. 시스템의 컴포넌트는 예컨대 통신 네트워크와 같은 디지털 데이터 통신의 어떠한 형태나 매체에 의해서도 상호 접속 가능하다.An implementation of the subject matter described herein may include a backend component, such as a data server, or a middleware component, such as an application server, or a web browser or graphical user, such as a user capable of interacting with an implementation of the subject matter described herein. It may be implemented in a front-end component, such as a client computer having an interface, or in a computing system including any combination of one or more of such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication, such as, for example, a communication network.

본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 마찬가지로, 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.While this specification contains numerous specific implementation details, they should not be construed as limitations on the scope of any invention or claim, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. should be understood Likewise, certain features that are described herein in the context of separate embodiments may be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment may also be implemented in multiple embodiments, either individually or in any suitable subcombination. Further, although features operate in a particular combination and may be initially depicted as claimed as such, one or more features from a claimed combination may in some cases be excluded from the combination, the claimed combination being a sub-combination. or a variant of a sub-combination.

또한, 본 명세서에서는 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 시스템 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 시스템들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징될 수 있다는 점을 이해하여야 한다Also, 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 or sequential order shown or that all illustrated operations must be performed in order to achieve desirable results. Can not be done. In certain cases, multitasking and parallel processing may be advantageous. Further, the separation of various system components of the above-described embodiments should not be construed 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

이와 같이, 본 명세서는 그 제시된 구체적인 용어에 본 발명을 제한하려는 의도가 아니다. 따라서, 상술한 예를 참조하여 본 발명을 상세하게 설명하였지만, 당업자라면 본 발명의 범위를 벗어나지 않으면서도 본 예들에 대한 개조, 변경 및 변형을 가할 수 있다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.As such, this specification is not intended to limit the invention to the specific terminology presented. Accordingly, although the present invention has been described in detail with reference to the above-described examples, those skilled in the art can make modifications, changes, and modifications to the 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 above detailed description, 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, in the method and apparatus for providing a slot filling-based chatbot service according to the present invention, the configuration and method of the embodiments described above are not limitedly applicable, but the embodiments are provided so that various modifications can be made. All or part of each embodiment may be selectively combined and configured.

본 발명에 의하면 슬롯 필링 기반의 챗봇 서비스 제공 방법 및 장치가 개시된다. 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은, 사용자 대화에 상응하는 인텐트를 결정하고, 인텐트 매핑 리스트를 이용하여 인텐트에 상응하는 실행블록을 선택하고, 실행블록에 상응하는 슬롯 필링을 수행하고, 슬롯 필링에 기반하여 인텐트에 상응하는 대화 처리를 수행하고, 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응한다. 이에 따라, 다양한 사용자 대화 패턴에 대해 챗봇이 효과적으로 대응할 수 있어, 효율적인 챗봇 서비스를 제공하는 것이 가능하다.According to the present invention, a method and apparatus for providing a slot filling-based chatbot service are disclosed. A chatbot service providing method according to an embodiment of the present invention determines an intent corresponding to a user conversation, selects an action block corresponding to the intent using an intent mapping list, and fills a slot corresponding to the action block , a dialog process corresponding to an intent is performed based on slot filling, and an intent mapping list is provided for each of the execution blocks and corresponds to at least one intent. Accordingly, the chatbot can effectively respond to various user conversation patterns, and it is possible to provide an efficient chatbot service.

610: 통신부 620: 프로세서
630: 메모리 710: 챗봇
720: 자연어 처리기 730: 챗봇 리소스 DB
740: 챗봇 빌더
610: communication unit 620: processor
630: memory 710: chatbot
720: natural language processor 730: chatbot resource DB
740: Chatbot Builder

Claims (10)

사용자 대화에 상응하는 인텐트를 결정하는 단계;
인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택하는 단계;
상기 실행블록에 상응하는 슬롯 필링을 수행하는 단계;
상기 슬롯 필링에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행하는 단계를 포함하고,
상기 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응하는 것을 특징으로 하는 슬롯 필링 기반의 챗봇 서비스 제공 방법.
determining an intent corresponding to the user conversation;
selecting an execution block corresponding to the intent by using an intent mapping list;
performing slot filling corresponding to the execution block;
Comprising the step of performing dialog processing corresponding to the intent based on the slot filling,
The intent mapping list is provided for each of the execution blocks, and the slot filling-based chatbot service providing method, characterized in that it corresponds to at least one intent.
청구항 1에 있어서,
상기 슬롯 필링을 수행하는 단계는
슬롯에 매핑된 엔티티, 상기 실행블록에 상응하는 슬롯들 및 슬롯의 인텐트 매핑 정보 중 적어도 하나를 기반으로 슬롯 필링을 수행하는 것을 특징으로 하는 슬롯 필링 기반의 챗봇 서비스 제공 방법.
The method according to claim 1,
The step of performing the slot filling is
A method for providing a slot filling-based chatbot service, characterized in that the slot filling is performed based on at least one of an entity mapped to a slot, slots corresponding to the execution block, and intent mapping information of the slot.
청구항 2에 있어서,
상기 인텐트 매핑 정보는
슬롯에 매핑된 인텐트 이름, 슬롯에 매핑된 인텐트의 슬롯 이름, 슬롯에 매핑된 인텐트의 슬롯 값 및 슬롯에 매핑된 인텐트의 슬롯 값에 의한 결과 값 중 적어도 하나를 포함하는 것을 특징으로 하는 슬롯 필링 기반의 챗봇 서비스 제공 방법.
3. The method according to claim 2,
The intent mapping information is
characterized by including at least one of an intent name mapped to a slot, a slot name of an intent mapped to a slot, a slot value of an intent mapped to a slot, and a result value based on a slot value of an intent mapped to a slot A method of providing a slot filling-based chatbot service.
청구항 2에 있어서,
상기 실행블록에 상응하는 슬롯들은
상기 인텐트 매핑 리스트를 통해 상기 실행블록과 연결된 인텐트들의 슬롯들을 포함하는 것을 특징으로 하는 슬롯 필링 기반의 챗봇 서비스 제공 방법.
3. The method according to claim 2,
Slots corresponding to the execution block are
Slot filling-based chatbot service providing method comprising slots of intents connected to the execution block through the intent mapping list.
청구항 2에 있어서,
상기 슬롯 필링을 수행하는 단계는
상기 슬롯에 매핑된 엔티티에 대한 동의어 매칭을 수행하여 슬롯 값을 추출하는 것을 특징으로 하는 슬롯 필링 기반의 챗봇 서비스 제공 방법.
3. The method according to claim 2,
The step of performing the slot filling is
A method for providing a slot filling-based chatbot service, characterized in that the slot value is extracted by performing synonym matching on the entity mapped to the slot.
청구항 2에 있어서,
하나의 슬롯은 복수개의 엔티티들과 매핑 가능한 것을 특징으로 하는 슬롯 필링 기반의 챗봇 서비스 제공 방법.
3. The method according to claim 2,
A slot filling-based chatbot service providing method, characterized in that one slot can be mapped with a plurality of entities.
청구항 1에 있어서,
상기 실행블록이 포함되는 시나리오를 고려하여 슬롯 컨텍스트를 유지하기 위한 슬롯 재사용 설정을 수행하는 단계를 더 포함하는 것을 특징으로 하는 슬롯 필링 기반의 챗봇 서비스 제공 방법.
The method according to claim 1,
Slot filling-based chatbot service providing method, characterized in that it further comprises the step of performing the slot reuse setting to maintain the slot context in consideration of the scenario in which the execution block is included.
청구항 7에 있어서,
상기 슬롯 재사용 설정이 수행된 실행블록과 연결된 인텐트들의 슬롯들은 상기 시나리오가 종료된 후 다시 실행했을 때에도 슬롯 값이 삭제되지 않는 것을 특징으로 하는 슬롯 필링 기반의 챗봇 서비스 제공 방법.
8. The method of claim 7,
Slot filling-based chatbot service providing method, characterized in that the slot values of the slots of the intents connected to the execution block for which the slot reuse setting is performed are not deleted even when the scenario is re-executed after the end of the scenario.
청구항 1에 있어서,
상기 인텐트 매핑 리스트는
인텐트별로 인텐트 식별자 및 슬롯 조건을 포함하는 것을 특징으로 하는 슬롯 필링 기반의 챗봇 서비스 제공 방법.
The method according to claim 1,
The intent mapping list is
A method for providing a slot filling-based chatbot service, comprising: an intent identifier and a slot condition for each intent.
하나 이상의 프로세서; 및
상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리; 를 포함하고,
상기 적어도 하나 이상의 프로그램은,
사용자 대화에 상응하는 인텐트를 결정하고, 인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택하고, 상기 실행블록에 상응하는 슬롯 필링을 수행하고, 상기 슬롯 필링에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행하되,
상기 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응하는 것을 특징으로 하는 슬롯 필링 기반의 챗봇 서비스 제공 장치.
one or more processors; and
an execution memory for storing at least one or more programs executed by the one or more processors; including,
The at least one or more programs,
An intent corresponding to a user conversation is determined, an action block corresponding to the intent is selected using an intent mapping list, a slot filling corresponding to the action block is performed, and the input is based on the slot filling. Conversation processing corresponding to the tent is performed,
The intent mapping list is provided for each of the execution blocks, and the slot filling-based chatbot service providing apparatus, characterized in that it corresponds to at least one intent.
KR1020200122353A 2020-09-22 2020-09-22 Method and apparatus for providing chatbot service based on slot filling KR102466947B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200122353A KR102466947B1 (en) 2020-09-22 2020-09-22 Method and apparatus for providing chatbot service based on slot filling
KR1020220148686A KR20220155957A (en) 2020-09-22 2022-11-09 Method and apparatus for providing chatbot service based on slot filling

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200122353A KR102466947B1 (en) 2020-09-22 2020-09-22 Method and apparatus for providing chatbot service based on slot filling

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020220148686A Division KR20220155957A (en) 2020-09-22 2022-11-09 Method and apparatus for providing chatbot service based on slot filling

Publications (2)

Publication Number Publication Date
KR20220039339A true KR20220039339A (en) 2022-03-29
KR102466947B1 KR102466947B1 (en) 2022-11-14

Family

ID=80995897

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200122353A KR102466947B1 (en) 2020-09-22 2020-09-22 Method and apparatus for providing chatbot service based on slot filling
KR1020220148686A KR20220155957A (en) 2020-09-22 2022-11-09 Method and apparatus for providing chatbot service based on slot filling

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220148686A KR20220155957A (en) 2020-09-22 2022-11-09 Method and apparatus for providing chatbot service based on slot filling

Country Status (1)

Country Link
KR (2) KR102466947B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114881046A (en) * 2022-05-23 2022-08-09 平安科技(深圳)有限公司 Training method and device of task session model, computer equipment and storage medium

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180017342A (en) * 2016-08-09 2018-02-21 주식회사 피노텍 Robot automatic counselling method and system with determined scenario using machine-learning
KR20190002891A (en) * 2017-06-30 2019-01-09 삼성에스디에스 주식회사 Method for processing dialogue using dialogue act information and Apparatus thereof
KR20190006403A (en) 2017-07-10 2019-01-18 삼성전자주식회사 Voice processing method and system supporting the same
KR102155739B1 (en) * 2019-10-24 2020-09-14 한경훈 Method, server, and system for providing chatbot service with adaptive reuse of question and answer dataset

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180017342A (en) * 2016-08-09 2018-02-21 주식회사 피노텍 Robot automatic counselling method and system with determined scenario using machine-learning
KR20190002891A (en) * 2017-06-30 2019-01-09 삼성에스디에스 주식회사 Method for processing dialogue using dialogue act information and Apparatus thereof
KR20190006403A (en) 2017-07-10 2019-01-18 삼성전자주식회사 Voice processing method and system supporting the same
KR102155739B1 (en) * 2019-10-24 2020-09-14 한경훈 Method, server, and system for providing chatbot service with adaptive reuse of question and answer dataset

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114881046A (en) * 2022-05-23 2022-08-09 平安科技(深圳)有限公司 Training method and device of task session model, computer equipment and storage medium
CN114881046B (en) * 2022-05-23 2023-07-25 平安科技(深圳)有限公司 Training method and device for task session model, computer equipment and storage medium

Also Published As

Publication number Publication date
KR102466947B1 (en) 2022-11-14
KR20220155957A (en) 2022-11-24

Similar Documents

Publication Publication Date Title
US10446137B2 (en) Ambiguity resolving conversational understanding system
US10585957B2 (en) Task driven user intents
US10297252B2 (en) Predicting and learning carrier phrases for speech input
US11823661B2 (en) Expediting interaction with a digital assistant by predicting user responses
US10375129B2 (en) Facilitating conversations with automated location mapping
US8868428B2 (en) Integration of embedded and network speech recognizers
CN109033223A (en) For method, apparatus, equipment and computer readable storage medium across type session
US11430443B2 (en) Developer platform for providing automated assistant in new domains
WO2021164244A1 (en) Voice interaction method and apparatus, device and computer storage medium
EP3513324A1 (en) Computerized natural language query intent dispatching
US10431202B2 (en) Simultaneous dialogue state management using frame tracking
US9258406B2 (en) Apparatus and method for controlling mobile device by conversation recognition, and apparatus for providing information by conversation recognition during meeting
US10643601B2 (en) Detection mechanism for automated dialog systems
KR20220155957A (en) Method and apparatus for providing chatbot service based on slot filling
US20160098994A1 (en) Cross-platform dialog system
KR102566822B1 (en) Method and apparatus for providing chatbot service
KR102475796B1 (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
KR102192447B1 (en) Method and for providing automatic translation in user conversation using multiple languages
EP3590050A1 (en) Developer platform for providing automated assistant in new domains
KR102655058B1 (en) Method and apparatus for providing chatbot service using condition expression generated interface
CN113407699A (en) Dialogue method, dialogue device, dialogue equipment and storage medium
US20230316807A1 (en) User awareness device, user awareness system, and user awareness method
CN117112064A (en) Large model plug-in calling method, device, equipment and medium
CN117112065A (en) Large model plug-in calling method, device, equipment and medium

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant