KR102655058B1 - Method and apparatus for providing chatbot service using condition expression generated interface - Google Patents

Method and apparatus for providing chatbot service using condition expression generated interface Download PDF

Info

Publication number
KR102655058B1
KR102655058B1 KR1020220166643A KR20220166643A KR102655058B1 KR 102655058 B1 KR102655058 B1 KR 102655058B1 KR 1020220166643 A KR1020220166643 A KR 1020220166643A KR 20220166643 A KR20220166643 A KR 20220166643A KR 102655058 B1 KR102655058 B1 KR 102655058B1
Authority
KR
South Korea
Prior art keywords
conditional expression
intent
block
parentheses
condition
Prior art date
Application number
KR1020220166643A
Other languages
Korean (ko)
Other versions
KR20220165234A (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 KR1020220166643A priority Critical patent/KR102655058B1/en
Publication of KR20220165234A publication Critical patent/KR20220165234A/en
Application granted granted Critical
Publication of KR102655058B1 publication Critical patent/KR102655058B1/en

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2423Interactive query statement specification based on a database schema
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2428Query predicate definition using graphical user interfaces, including menus and forms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2448Query languages for particular applications; for extensibility, e.g. user defined types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators
    • 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/3322Query formulation using system suggestions
    • G06F16/3323Query formulation using system suggestions using document space presentation or visualization, e.g. category, hierarchy or range presentation and selection
    • 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/3331Query processing
    • G06F16/334Query execution
    • G06F16/3341Query execution using boolean model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • G06Q50/50
    • 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

Abstract

조건식 생성 인터페이스를 이용한 챗봇 서비스 제공 방법 및 장치가 개시된다. 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은, 조건식 생성 인터페이스를 제공하는 단계, 및 상기 조건식 생성 인터페이스를 통해 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성하는 단계를 포함한다. 이에 따라, 사용자가 챗봇 구동을 위해 필요한 조건식을 효과적으로 작성하는 것이 가능하여 보다 향상된 챗봇 서비스를 제공할 수 있다.A method and device for providing a chatbot service using a conditional expression generation interface are disclosed. A chatbot service provision method according to an embodiment of the present invention includes providing a conditional expression creation interface, and generating an execution block for processing an intent corresponding to a user conversation through the conditional expression creation interface. Accordingly, it is possible for users to effectively write conditional expressions necessary to run a chatbot, thereby providing an improved chatbot service.

Description

조건식 생성 인터페이스를 이용한 챗봇 서비스 제공 방법 및 장치 {METHOD AND APPARATUS FOR PROVIDING CHATBOT SERVICE USING CONDITION EXPRESSION GENERATED INTERFACE}Method and device for providing chatbot service using conditional expression generation interface {METHOD AND APPARATUS FOR PROVIDING CHATBOT SERVICE USING CONDITION EXPRESSION GENERATED INTERFACE}

본 발명은 챗봇(chatbot) 서비스 제공 방법 및 장치에 관한 것으로, 특히 챗봇 디자이너가 작업영역에서 봇 구동을 위한 조건식을 작성하기 위한 인터페이스를 제공하여 봇 구동 프로세스를 정의하는 기술에 관한 것이다.The present invention relates to a method and device for providing a chatbot service, and particularly to a technology for defining a bot driving process by providing an interface for a chatbot designer to create conditional expressions for bot driving in a work area.

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

챗봇(chatbot)은 문자나 음성으로 대화하는 기능이 구비된 컴퓨터 프로그램이나 인공지능을 말하며, 사람처럼 자연스러운 대화를 진행하기 위해 단어나 구(句)의 매칭만을 이용하는 단순한 챗봇부터 복잡하고 정교한 자연어 처리 기술을 적용한 챗봇까지 다양한 수준의 챗봇들이 존재한다.A chatbot refers to a computer program or artificial intelligence with the ability to communicate through text or voice. It ranges from simple chatbots that only use word or phrase matching to complex and sophisticated natural language processing technology to conduct natural conversations like humans. There are various levels of chatbots, including chatbots that apply .

챗봇을 이용한 대화형 AI 에이전트 시스템은 사용자의 입력에 대해 사용자가 원하는 서비스가 어떤 것인지를 파악하고 그 응답을 제공한다. 이 때, 사용자가 자연스러운 문장을 통하여 입력을 제공한 경우, 입력에 처리를 위해 자연어 처리 기술이 적용될 수 있다. 이를 위해, 사용자의 의도(intent)가 동일한 발화 예시 문장들 여러 개를 모아서 하나의 인텐트로 분류한다. 이렇게 분류된 인텐트들 각각에 대응하는 봇 응답을 매핑(mapping)하거나 서비스 API 호출 등의 동작을 정의함으로써 사용자의 다양한 자연 발화를 처리할 수 있는 챗봇 서비스 제공이 가능하다.A conversational AI agent system using a chatbot identifies the service the user wants in response to the user's input and provides a response. At this time, if the user provides input through a natural sentence, natural language processing technology may be applied to process the input. For this purpose, several example utterance sentences with the same user intent are collected and classified into one intent. By mapping the bot response corresponding to each of these classified intents or defining actions such as calling the service API, it is possible to provide a chatbot service that can process a variety of user natural speech.

하나의 사용자의 발화 단위(인텐트)별로 하나의 봇 응답 단위(실행블록)를 매핑하는 경우, 서비스 기능이 늘어날수록 봇 응답들과 이에 대응하는 인텐트들도 늘어나게 된다. 인텐트들에 할당되게 되고, 의도 분류시 복수의 근소한 스코어(score) 차이를 가지는 인텐트들이 발생하게 되어 의도 분류에서 오류가 발생할 가능성이 높아진다. When mapping one bot response unit (execution block) to one user's speech unit (intent), as service functions increase, bot responses and corresponding intents also increase. They are assigned to intents, and when classifying intent, multiple intents with slight score differences are generated, increasing the possibility of errors occurring in intent classification.

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

즉, 인텐트와 봇 응답 단위가 1:1로 매핑되는 상황에 맞추어 발화를 분류하게 되면 인텐트 개수가 늘어나거나 인텐트에 등록된 예시 발화 문장의 개수가 늘어날수록 자연어 처리기의 성능이 떨어지는 문제가 발생하고, 자연어 처리기의 성능을 보장하기 위해 발화를 분류하게 되면 인텐트 하나에 유사한 발화 패턴을 모두 정의하게 되어 해당 인텐트에 매핑되는 블록의 구현이 매우 복잡해지고 실제 제공되는 여러 기능이 블록 하나에 매핑되는 상황이 되어 관리상의 어려움이 불가피하다.In other words, if utterances are classified according to a situation where intent and bot response units are mapped 1:1, the performance of the natural language processor deteriorates 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, all similar utterance patterns are defined for one intent, making the implementation of the block mapped to the intent very complicated and many functions actually provided in one block. As the situation becomes mapped, management difficulties are inevitable.

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

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

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

본 발명의 목적은, 챗봇의 구동을 위해 필요한 조건들을 설정할 때 슬롯 인식에 최적화된 키워드 표현식 기반의 조건식 문법을 적용한 인터페이스를 제공함으로써 조건식의 오류는 줄이고 가독성은 향상시키는 것이다.The purpose of the present invention is to reduce errors in conditional expressions and improve readability by providing an interface that applies conditional grammar based on keyword expressions optimized for slot recognition when setting conditions necessary for running a chatbot.

또한, 본 발명의 목적은, 괄호의 사용을 우선순위 설정에만 한정적으로 사용하여 조건식을 간결하게 작성하고, 봇 디자이너에 의해 작성되는 괄호에 대해 의미있는 괄호를 추천해 줌으로써 입력의 단계를 줄이고 의미없는 괄호의 사용으로 조건식이 복잡하게 작성되는 것을 방지하는 것이다.In addition, the purpose of the present invention is to write conditional expressions concisely by limiting the use of parentheses only to setting priorities, and to recommend meaningful parentheses for parentheses written by the bot designer, thereby reducing the number of input steps and eliminating meaningless ones. The use of parentheses prevents conditional expressions from being written in a complicated manner.

또한, 본 발명의 목적은, 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 N: N(N은 자연수) 매핑이 가능하도록 하여, 여러가지 다른 발화들로 하나의 기능을 실행할 수 있고, 반대로 유사한 발화들로 전혀 다른 기능을 수행할 수 있도록 하는 것이다.In addition, the purpose 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 the intents, so that several different utterances can be combined into one. It allows you to execute a function and, conversely, to perform a completely different function with similar utterances.

또한, 본 발명의 목적은 하나 이상의 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계가 가능해지도록 하는 것이다.Additionally, the purpose of the present invention is to enable various intent-execution block mapping relationships by using an intent mapping list that includes an intent identifier and a slot condition for each intent.

또한, 본 발명의 목적은 상술한 바와 같은 목적들로 한정되지 않으며, 이하의 설명으로부터 또 다른 목적이 도출될 수도 있음은 자명하다.In addition, the object of the present invention is not limited to the objects described above, and it is obvious that another object may be derived from the following description.

상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 조건식 생성 인터페이스를 제공하는 단계; 상기 조건식 생성 인터페이스를 통해 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성하는 단계를 포함한다.A method of providing a chatbot service according to an embodiment of the present invention to achieve the above object includes providing a conditional expression creation interface; It includes the step of creating an execution block for processing an intent corresponding to a user conversation through the conditional expression creation interface.

이 때, 조건식 생성 인터페이스를 통해 생성되는 조건식에 포함되는 적어도 하나의 조건은 조건 변수, 비교연산자 및 조건 값의 조합으로 구성될 수 있다.At this time, at least one condition included in the conditional expression created through the conditional expression creation interface may be composed of a combination of a condition variable, a comparison operator, and a condition value.

이 때, 조건식 생성 인터페이스는 입력된 조건 변수를 고려하여 적어도 하나의 비교연산자를 추천하고, 입력된 비교연산자를 고려하여 적어도 하나의 조건 값을 추천할 수 있다.At this time, the conditional expression creation interface may recommend at least one comparison operator in consideration of the input condition variable and may recommend at least one condition value in consideration of the input comparison operator.

이 때, 조건식 생성 인터페이스는 상기 조건식 중 임의의 위치에 입력된 괄호의 짝을 추천할 수 있다.At this time, the conditional expression creation interface may recommend a pair of parentheses entered at an arbitrary position in the conditional expression.

이 때, 조건식 생성 인터페이스는 함수호출 시 괄호를 사용하지 않을 수 있다.At this time, the conditional expression creation interface may not use parentheses when calling a function.

이 때, 조건식 생성 인터페이스는 상기 조건식의 결과를 변경시킬 수 있는 제1 유형 괄호, 상기 조건식의 결과를 변경시키지 않지만 불필요한 것으로 판단되는 제2 유형 괄호 및 상기 조건식의 결과를 변경시키지 않으면서 상기 제1 유형 괄호 및 상기 제2 유형 괄호에 해당하지 않는 제3 유형 괄호 중 적어도 하나를 상기 괄호의 짝으로 추천할 수 있다.At this time, the conditional expression creation interface includes a first type parenthesis that can change the result of the conditional expression, a second type parenthesis that does not change the result of the conditional expression but is judged to be unnecessary, and the first type parenthesis that does not change the result of the conditional expression. At least one of a type parenthesis and a third type parenthesis that does not correspond to the second type parenthesis may be recommended as a pair of the parentheses.

이 때, 제1 유형 괄호를 검색하는 방식은 조건식 결과 비교 테이블을 이용하는 방식을 포함할 수 있다.At this time, the method of searching for the first type of parentheses may include using a conditional expression result comparison table.

이 때, 조건식 생성 인터페이스는 상기 입력된 괄호의 짝을 추천하기 이전에 상기 입력된 괄호의 종류를 고려하여 상기 임의의 위치가 괄호 입력 가능 위치인지 여부를 판단하고, 상기 임의의 위치가 괄호 입력 가능 위치가 아닌 경우에 상기 입력된 괄호의 종류를 기반으로 상기 임의의 위치를 이동시켜 보정할 수 있다.At this time, before recommending a pair of input parentheses, the conditional expression creation interface determines whether the arbitrary position is a position where parentheses can be input by considering the type of the input parentheses, and determines whether the arbitrary position is a position where parentheses can be input. If the position is not correct, the random position can be moved and corrected based on the type of parentheses entered.

이 때, 조건식 생성 인터페이스는 상기 제1 유형 괄호, 상기 제2 유형 괄호 및 상기 제3 유형 괄호가 시각적으로 구별되도록 나타낼 수 있다.At this time, the conditional expression creation interface may display the first type parenthesis, the second type parenthesis, and the third type parenthesis so that they are visually distinguished.

또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치는, 하나 이상의 프로세서; 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리; 를 포함하고, 상기 적어도 하나 이상의 프로그램은 조건식 생성 인터페이스를 제공하고, 상기 조건식 생성 인터페이스를 통해 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성한다.Additionally, a chatbot service providing device according to an embodiment of the present invention includes one or more processors; and an execution memory storing at least one program executed by the one or more processors. It includes, wherein the at least one program provides a conditional expression creation interface and generates an execution block for processing an intent corresponding to a user conversation through the conditional expression creation interface.

이 때, 조건식 생성 인터페이스를 통해 생성되는 조건식에 포함되는 적어도 하나의 조건은 조건 변수, 비교연산자 및 조건 값의 조합으로 구성될 수 있다.At this time, at least one condition included in the conditional expression created through the conditional expression creation interface may be composed of a combination of a condition variable, a comparison operator, and a condition value.

이 때, 조건식 생성 인터페이스는 입력된 조건 변수를 고려하여 적어도 하나의 비교연산자를 추천하고, 입력된 비교연산자를 고려하여 적어도 하나의 조건 값을 추천할 수 있다.At this time, the conditional expression creation interface may recommend at least one comparison operator in consideration of the input condition variable and may recommend at least one condition value in consideration of the input comparison operator.

이 때, 조건식 생성 인터페이스는 상기 조건식 중 임의의 위치에 입력된 괄호의 짝을 추천할 수 있다.At this time, the conditional expression creation interface may recommend a pair of parentheses entered at an arbitrary position in the conditional expression.

이 때, 조건식 생성 인터페이스는 함수호출 시 괄호를 사용하지 않을 수 있다.At this time, the conditional expression creation interface may not use parentheses when calling a function.

이 때, 조건식 생성 인터페이스는 상기 조건식의 결과를 변경시킬 수 있는 제1 유형 괄호, 상기 조건식의 결과를 변경시키지 않지만 불필요한 것으로 판단되는 제2 유형 괄호 및 상기 조건식의 결과를 변경시키지 않으면서 상기 제1 유형 괄호 및 상기 제2 유형 괄호에 해당하지 않는 제3 유형 괄호 중 적어도 하나를 상기 괄호의 짝으로 추천할 수 있다.At this time, the conditional expression creation interface includes a first type parenthesis that can change the result of the conditional expression, a second type parenthesis that does not change the result of the conditional expression but is judged to be unnecessary, and the first type parenthesis that does not change the result of the conditional expression. At least one of a type parenthesis and a third type parenthesis that does not correspond to the second type parenthesis may be recommended as a pair of the parentheses.

이 때, 제1 유형 괄호를 검색하는 방식은 조건식 결과 비교 테이블을 이용하는 방식을 포함할 수 있다.At this time, the method of searching for the first type of parentheses may include using a conditional result comparison table.

이 때, 조건식 생성 인터페이스는 상기 입력된 괄호의 짝을 추천하기 이전에 상기 입력된 괄호의 종류를 고려하여 상기 임의의 위치가 괄호 입력 가능 위치인지 여부를 판단하고, 상기 임의의 위치가 괄호 입력 가능 위치가 아닌 경우에 상기 입력된 괄호의 종류를 기반으로 상기 임의의 위치를 이동시켜 보정할 수 있다.At this time, before recommending a pair of input parentheses, the conditional expression creation interface determines whether the arbitrary position is a position where parentheses can be input by considering the type of the input parentheses, and determines whether the arbitrary position is a position where parentheses can be input. If the position is not correct, the random position can be moved and corrected based on the type of parentheses entered.

이 때, 조건식 생성 인터페이스는 상기 제1 유형 괄호, 상기 제2 유형 괄호 및 상기 제3 유형 괄호가 시각적으로 구별되도록 나타낼 수 있다.At this time, the conditional expression creation interface may display the first type parenthesis, the second type parenthesis, and the third type parenthesis so that they are visually distinguished.

본 발명에 따르면, 챗봇의 구동을 위해 필요한 조건들을 설정할 때 슬롯 인식에 최적화된 키워드 표현식 기반의 조건식 문법을 적용한 인터페이스를 제공함으로써 조건식의 오류는 줄이고 가독성은 향상시킬 수 있다.According to the present invention, errors in conditional expressions can be reduced and readability can be improved by providing an interface that applies a keyword expression-based conditional grammar optimized for slot recognition when setting the conditions necessary for running a chatbot.

또한, 본 발명은 괄호의 사용을 우선순위 설정에만 한정적으로 사용하여 조건식을 간결하게 작성하고, 봇 디자이너에 의해 작성되는 괄호에 대해 의미있는 괄호를 추천해 줌으로써 입력의 단계를 줄이고 의미없는 괄호의 사용으로 조건식이 복잡하게 작성되는 것을 방지할 수 있다.In addition, the present invention uses parentheses only to set priorities to create conditional expressions concisely, and recommends meaningful parentheses for parentheses written by bot designers, thereby reducing the number of input steps and eliminating the use of meaningless parentheses. This can prevent conditional expressions from being written in a complicated manner.

또한, 본 발명은 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 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 that process the intents, allowing one function to be executed with various different utterances. Conversely, similar utterances can perform completely different functions.

또한, 본 발명은 하나 이상의 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계를 정의하는 것이 가능하다.Additionally, the present invention makes it possible to define various intent-execution block mapping relationships using an intent mapping list that includes an intent identifier and a slot condition for each intent.

본 실시 예들의 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The effects of the present embodiments are not limited to the effects mentioned above, and other effects not mentioned may be clearly understood by those skilled in the art from the description of the claims.

도 1은 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법을 나타낸 동작 흐름도이다.
도 2는 본 발명에 따른 조건식 생성 인터페이스의 실시 예를 나타낸 도면이다.
도 3은 본 발명에 따라 토큰화하여 분석된 조건식의 일 예를 나타낸 도면이다.
도 4 내지 도 5는 본 발명에 따라 괄호의 짝을 추천한 일 예를 나타낸 도면이다.
도 6은 본 발명에 따른 조건식 결과 비교 테이블의 일 예를 나타낸 도면이다.
도 7 내지 도 8은 본 발명에 따라 입력된 괄호의 위치 보정과 입력된 괄호의 짝 추천을 수행한 일 예를 나타낸 도면이다.
도 9는 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치를 나타낸 블록도이다.
도 10은 본 발명의 일실시예에 따른 챗봇 서비스 시스템을 나타낸 블록도이다.
도 11은 본 발명의 일실시예에 따른 '커피 주문' 시나리오의 블록 다이어그램을 나타낸 도면이다.
도 12는 도 11에 도시된 시나리오에 사용되는 인텐트들의 일 예를 나타낸 도면이다.
도 13은 복수개의 인텐트들과 복수개의 실행블록들 사이의 연결을 나타낸 블록도이다.
도 14는 도 13에 도시된 실행블록 커피 선택의 일 예를 나타낸 도면이다.
도 15는 도 13에 도시된 실행블록 핫아이스확인의 일 예를 나타낸 도면이다.
도 16은 도 13에 도시된 실행블록 테이크아웃확인의 일 예를 나타낸 도면이다.
도 17은 도 13 내지 도 16에 도시된 실행블록들의 연결관계를 나타낸 블록도이다.
도 18은 실행블록에서 사용자 응답 대기 상태를 정의하여 블록들을 연결하는 일 예를 도시한 도면이다.
도 19는 발화 패턴별로 정의된 인텐트를 블록에 매핑하는 일 예를 나타낸 도면이다.
도 20은 인텐트와 실행블록을 1:1 매핑하는 경우를 나타낸 도면이다.
도 21은 본 발명의 일실시예에 따른 인텐트 분류 및 블록 매핑의 일 예를 나타낸 도면이다.
도 22는 도 21에 도시된 응답들에 상응하는 실행블록들을 나타낸 도면이다.
도 23은 도 11 내지 도 17에서 예시된 커피주문 시나리오에 상응하는 조건의 포함관계에 따른 우선순위 정렬 예를 나타낸 도면이다.
도 24는 챗봇 실행에 필요한 모듈들의 일 예를 나타낸 블록도이다.
도 25는 챗봇 실행 중 인텐트와 블록을 검색하는 과정을 나타낸 도면이다.
도 26은 본 발명의 다른 실시예에 따른 챗봇 서비스 제공 방법을 나타낸 동작 흐름도이다.
도 27은 발화 패턴수 증가에 따른 자연어 처리기 성능을 나타낸 그래프이다.
Figure 1 is an operation flowchart showing a method of providing a chatbot service according to an embodiment of the present invention.
Figure 2 is a diagram showing an example of a conditional expression creation interface according to the present invention.
Figure 3 is a diagram showing an example of a conditional expression tokenized and analyzed according to the present invention.
Figures 4 and 5 are diagrams showing an example of recommended pairs of parentheses according to the present invention.
Figure 6 is a diagram showing an example of a conditional result comparison table according to the present invention.
Figures 7 and 8 are diagrams showing an example of position correction of input parentheses and pair recommendation of input parentheses according to the present invention.
Figure 9 is a block diagram showing a chatbot service providing device according to an embodiment of the present invention.
Figure 10 is a block diagram showing a chatbot service system according to an embodiment of the present invention.
Figure 11 is a block diagram of a 'coffee ordering' scenario according to an embodiment of the present invention.
FIG. 12 is a diagram illustrating an example of intents used in the scenario shown in FIG. 11.
Figure 13 is a block diagram showing the connection between a plurality of intents and a plurality of execution blocks.
FIG. 14 is a diagram illustrating an example of execution block coffee selection shown in FIG. 13.
FIG. 15 is a diagram illustrating an example of hot ice confirmation of an execution block shown in FIG. 13.
FIG. 16 is a diagram illustrating an example of execution block takeout confirmation shown in FIG. 13.
Figure 17 is a block diagram showing the connection relationship between execution blocks shown in Figures 13 to 16.
Figure 18 is a diagram showing an example of connecting blocks by defining a user response waiting state in an execution block.
Figure 19 is a diagram showing an example of mapping an intent defined for each speech pattern to a block.
Figure 20 is a diagram showing a case of 1:1 mapping between an intent and an execution block.
Figure 21 is a diagram showing an example of intent classification and block mapping according to an embodiment of the present invention.
FIG. 22 is a diagram showing execution blocks corresponding to the responses shown in FIG. 21.
Figure 23 is a diagram showing an example of priority sorting according to the inclusion relationship of conditions corresponding to the coffee ordering scenarios illustrated in Figures 11 to 17.
Figure 24 is a block diagram showing an example of modules required to run a chatbot.
Figure 25 is a diagram showing the process of searching intents and blocks while running a chatbot.
Figure 26 is an operation flowchart showing a chatbot service provision method according to another embodiment of the present invention.
Figure 27 is a graph showing natural language processor performance as the number of speech patterns increases.

이하 본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 상세히 설명한다. 다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the attached drawings. However, detailed descriptions of known functions or configurations that may obscure the gist of the present invention are omitted in the following description and attached drawings. Additionally, it should be noted that the same components throughout the drawings are indicated by the same reference numerals whenever possible.

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

본 발명은 챗봇 서비스를 제공하기 위해 봇 구동에 필요한 다양한 조건들을 설정하고, 이를 통해 챗봇 구동 프로세스를 정의하는 기술에 관한 것이다. The present invention relates to a technology for setting various conditions necessary for bot operation to provide a chatbot service and defining a chatbot operation process through these.

이하에서는 봇 구동 프로세서를 정의하기 위한 동작 플로우에 대해 보다 상세하게 설명하도록 한다.Below, the operation flow for defining the bot driving processor will be described in more detail.

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

도 1을 참조하면, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 조건식 생성 인터페이스를 제공한다(S110).Referring to Figure 1, the chatbot service provision method according to an embodiment of the present invention provides a conditional expression creation interface (S110).

이 때, 본 발명의 일실시예에 따른 조건식 생성 인터페이스는 챗봇 빌더에서 주로 사용되는 슬롯을 비교하는 작업이나 가독성을 감안한 표현식으로 특화된 조건식 문법을 적용하여 조건식을 생성할 수 있다. At this time, the conditional expression creation interface according to an embodiment of the present invention can generate a conditional expression by applying a specialized conditional grammar to compare slots mainly used in chatbot builders or expressions that take readability into account.

예를 들어, "회원번호" 슬롯이 전부 숫자이고, "별명" 슬롯이 "member"를 포함하거나 "guest"를 포함하지 않는 경우에 대한 조건식을 기존의 JavaScript 언어 문법으로 표현하면 다음과 같다.For example, the conditional expression for the case where the "membership number" slot is all numbers and the "nickname" slot contains "member" or does not contain "guest" can be expressed in the existing JavaScript language grammar as follows.

[JavaScript 언어 문법으로 표현한 조건식 예시][Example of conditional expression expressed in JavaScript language grammar]

/^[0-9]+$/.test(slot_value("회원번호")) && (slot_value("별명").includes("member") || !slot_value("별명").includes("guest"))/^[0-9]+$/.test(slot_value("Membership number")) && (slot_value("Nickname").includes("member") || !slot_value("Nickname").includes("guest "))

JavaScript 언어 문법으로 표현된 조건식을 살펴보면, 함수 호출에 사용되는 괄호와 조건 우선순위를 나타내기 위해 사용되는 괄호가 혼용되어 있어서 가독성이 떨어지는 문제점이 발생한다. 또한, 조건변수보다 조건 값이 앞에 쓰여져 있어 해당 값이 어떤 조건변수의 값인지 신속하게 파악하기 어렵다. When looking at conditional expressions expressed in JavaScript language grammar, the parentheses used for function calls and the parentheses used to indicate condition priorities are mixed, causing a problem of poor readability. Additionally, because the condition value is written before the condition variable, it is difficult to quickly determine which condition variable the value is.

본 발명에서는 이러한 문제점을 해결하기 위해 가독성을 향상시킬 수 있도록 특화된 조건식 문법을 적용하여 상기의 조건식을 아래와 같이 표현할 수 있다.In the present invention, in order to solve this problem, the above conditional expression can be expressed as follows by applying a specialized conditional grammar to improve readability.

[본 발명에서 제안하는 조건식 문법으로 표현한 조건식 예시][Examples of conditional expressions expressed using the conditional grammar proposed by the present invention]

$회원번호 regex "^[0-9]+$" and ($별명 not contain "guest" or $별명 contain "member")$member number regex "^[0-9]+$" and ($nickname not contain "guest" or $nickname contain "member")

이 때, 조건식 생성 인터페이스를 통해 생성되는 조건식에 포함되는 적어도 하나의 조건은 조건 변수, 비교연산자 및 조건 값의 조합으로 구성될 수 있다. At this time, at least one condition included in the conditional expression created through the conditional expression creation interface may be composed of a combination of a condition variable, a comparison operator, and a condition value.

상기의 조건식에 포함된 조건을 예로 설명하면, 조건 변수에 해당하는 "$회원번호", 비교연산자에 해당하는 "regex" 및 조건 값에 해당하는 " ^[0-9]+$"의 조합을 통해 하나의 조건인 $회원번호 regex "^[0-9]+$"를 구성할 수 있다. To explain the conditions included in the above conditional expression as an example, the combination of "$member number" corresponding to the condition variable, "regex" corresponding to the comparison operator, and "^[0-9]+$" corresponding to the condition value. You can configure one condition, $member number regex "^[0-9]+$".

이 때, 조건식 생성 인터페이스는 조건 변수, 비교연산자, 조건 값에 상응하는 순서로 조건을 생성할 수 있다. At this time, the conditional expression creation interface can create conditions in the order corresponding to the condition variable, comparison operator, and condition value.

상기의 조건식에 포함된 조건을 예로 설명하면, 조건 변수에 해당하는 "$회원번호"가 가장 앞에 표기되고, 이후 비교연산자 자리에 "regex"가 표기된 후 마지막으로 조건 값에 해당하는 " ^[0-9]+$"가 표기된 것을 확인할 수 있다.If we explain the conditions included in the above conditional expression as an example, "$member number" corresponding to the condition variable is written first, then "regex" is written in place of the comparison operator, and finally "^[0" corresponding to the condition value. You can see that “-9]+$” is displayed.

이와 같이 조건식에 포함되는 조건을 조건 변수, 비교연산자, 조건 값에 상응하는 순서로 생성함으로써 조건식에 대한 가독성을 향상시킬 수 있다.In this way, the readability of the conditional expression can be improved by creating the conditions included in the conditional expression in an order corresponding to the condition variable, comparison operator, and condition value.

이 때, 본 발명에서 제안하는 조건식 문법에서는 비교함수도 비교연산자처럼 텍스트로 표현되어 사용될 수 있다. 상기의 조건식을 예로 설명하면, JavaScript 언어 문법에서 사용된 정규식 test 메소드는 본 발명의 일실시예에 따른 조건식 문법에 따라 "regex"로 표기되고, JavaScript 언어 문법에서 사용된 includes 함수는 본 발명의 일실시예에 따른 조건식 문법에 따라"contain"으로 표시된 것을 확인할 수 있다. 이외에도 "empty" 및 "exist"와 같은 함수도 사용될 수 있다. At this time, in the conditional grammar proposed in the present invention, comparison functions can also be expressed in text and used like comparison operators. Taking the above conditional expression as an example, the regular expression test method used in the JavaScript language grammar is written as "regex" according to the conditional expression grammar according to an embodiment of the present invention, and the includes function used in the JavaScript language grammar is an example of the present invention. It can be confirmed that “contain” is displayed according to the conditional grammar according to the embodiment. In addition, functions such as "empty" and "exist" can also be used.

또한, 본 발명의 일실시예에 따른 조건식 문법에서는 부정조건 표시를 자연스럽게 하기 위해 "not"키워드를 사용한다. 상기의 조건식을 예로 설명하면, "별명" 슬롯이 "guest"를 포함하지 않는 경우를 표현할 경우, JavaScript 언어 문법에서 '!slot_value("별명").includes("guest"))'라고 표기한 것과 다르게 본 발명의 일실시예에 따른 조건식 문법에 따라 '$별명 not contain "guest"'로 표기할 수 있다.Additionally, in the conditional grammar according to one embodiment of the present invention, the “not” keyword is used to naturally display negative conditions. To explain the above conditional expression as an example, when expressing the case where the "alias" slot does not include "guest", in JavaScript language grammar, it is written as '!slot_value("alias").includes("guest"))'. Alternatively, it can be written as '$alias not contain "guest"' according to the conditional grammar according to an embodiment of the present invention.

이 때, 본 발명의 일실시예에 따른 조건식 문법에서는 부정조건 표시의 사용을 최소화하기 위해서 "not exist" 및 "not empty"는 사용하지 않고, "empty"와 "exist"를 사용한다. At this time, in the conditional grammar according to an embodiment of the present invention, “not exist” and “not empty” are not used, but “empty” and “exist” are used to minimize the use of negative condition marks.

본 발명의 일실시예에 따른 조건식 문법에서의 조건식 표기 규칙을 보다 상세하게 설명하면, 슬롯명은 $slot, 슬롯값은 "value", 조건연산은 ==, !=, <, >, <=, >=, contain, not contain, regex, empty, exist 등으로 표기할 수 있고, 논리 연산은 [표 1]과 같이 사용될 수 있다. To describe the conditional expression rules in the conditional grammar according to an embodiment of the present invention in more detail, the slot name is $slot, the slot value is "value", and the conditional operations are ==, !=, <, >, <=, It can be expressed as >=, contain, not contain, regex, empty, exist, etc., and logical operations can be used as shown in [Table 1].

비교연산자comparison operator 조건식 샘플Conditional expression sample 다음과 일치matches: $slot == "value" $slot == "value" 다음과 일치하지 않음does not match $slot != "value" $slot != "value" 다음보다 큼greater than $slot > "value $slot > "value 다음보다 크거나 같음greater than or equal to $slot >= "value" $slot >= "value" 다음보다 작음less than $slot < "value $slot < "value 다음보다 작거나 같음Less than or equal to $slot <= "value" $slot <= "value" 포함함Included $slot contain "value" $slot contains "value" 포함하지 않음Not included $slot not contain "value" $slot not contain "value" 정규식regular expression $slot regex "[0-9]+" $slot regex "[0-9]+" 존재하지 않음it does not exist $slot empty $slot empty 존재함exists $slot exist $slot exists

또한, 본 발명의 일실시예에 따른 조건식 작성 인터페이스를 통해 작성된 조건식은, 일 예로 [표 2]에 도시된 문법 규칙(parser grammar rules)과 같이 표현하고 사용될 수 있다.Additionally, a conditional expression written through the conditional expression writing interface according to an embodiment of the present invention can be expressed and used as, for example, the grammar rules (parser grammar rules) shown in [Table 2].

요소Element 표현 및 사용예시Expression and usage examples or_expressionor_expression or_expression 'or' and_expression
| and_expression
or_expression 'or' and_expression
| and_expression
and_expressionand_expression and_expression 'and' compare_expression
| compare_expression
and_expression 'and' compare_expression
| compare_expression
compare_expressioncompare_expression parameter COMPARE_OPERATOR value
| parameter 'regex' value
| parameter 'contain' value
| parameter 'not' 'contain' value
| parameter 'exist'
| parameter 'empty'
| '(' expression ')'
| value
parameter COMPARE_OPERATOR value
| parameter 'regex' value
| parameter 'contain' value
| parameter 'not''contain' value
| parameter 'exist'
| parameter 'empty'
| '(' expression ')'
| value
valuevalue STRING
| NUMBER
| PARAMETER
STRING
| NUMBER
| PARAMETER
COMPARE_OPERATORCOMPARE_OPERATOR '==' | '!= ' | '<=' | '>=' | '<' | '>''==' | '!= ' | '<=' | '>=' | '<' | '>' STRINGSTRING 따옴표로 둘러싼 일반 문자열: /"([^\\\"]|\\.)*"/Plain string surrounded by quotes: /"([^\\\"]|\\.)*"/ NUMBERNUMBER 일반 숫자(소수 포함): /[-+]? (\d*\.\d+|\d+)/Regular numbers (including decimals): /[-+]? (\d*\.\d+|\d+)/ PARAMETERPARAMETER $로 시작하는 변수(한글 포함): /\$[a-zA-Z\d가-\-_\.]+/Variables starting with $ (including Korean): /\$[a-zA-Z\d is- \-_\.]+/

이하에서는, 발명의 명확한 이해를 위해서, 본 발명의 일실시예에 따라 작성된 조건식을 상술한 설명을 기반으로 해석하도록 한다.Hereinafter, for a clear understanding of the invention, the conditional expression written according to an embodiment of the present invention will be interpreted based on the above description.

예를 들어, ("$svc_cat == "ok캐쉬백포인트" or "$svc_cat == "포인트") and "$action" == "적립"에 해당하는 조건식은, 조건변수 "svc_cat"의 조건 값이 "ok캐쉬백포인트" 또는 "포인트"에 해당하면서 조건변수 "action"의 조건 값이 "적립"에 해당하는 경우를 의미할 수 있다.For example, in the conditional expression corresponding to ("$svc_cat == "ok cashback points" or "$svc_cat == "points") and "$action" == "accumulation", the condition value of the condition variable "svc_cat" is This may mean a case where the condition value of the condition variable "action" corresponds to "accumulation" while corresponding to "ok cashback points" or "points".

다른 예를 들어, ($svc_cat=="ok캐쉬백포인트" or $svc_cat regex "[0-9]+") and $action=="적립"에 해당하는 조건식은, 조건변수 "svc_cat"의 조건 값이 "ok캐쉬백포인트"또는 전부 숫자에 해당하면서 조건변수 "action"의 조건 값이 "적립"에 해당하는 경우를 의미할 수 있다.For another example, the conditional expression corresponding to ($svc_cat=="ok cashback points" or $svc_cat regex "[0-9]+") and $action=="Accumulation" is the condition value of the condition variable "svc_cat" This may mean a case where the condition value of the condition variable "action" corresponds to "accumulation" while corresponding to "ok cashback points" or all numbers.

또 다른 예를 들어, $svc_cat=="ok캐쉬백포인트" and $location empty and $action =="적립"에 해당하는 조건식은, 조건변수 "svc_cat"의 조건 값이 "ok캐쉬백포인트"이면서 조건변수 "location"의 조건 값이 존재하지 않고 조건변수 "action"의 조건 값이 "적립"에 해당하는 경우를 의미할 수 있다.For another example, the conditional expression corresponding to $svc_cat=="ok cashback points" and $location empty and $action =="accumulated" is that the condition value of the condition variable "svc_cat" is "ok cashback points" and the condition variable This may mean a case where the condition value of “location” does not exist and the condition value of the condition variable “action” corresponds to “accumulation.”

이 때, 조건식 생성 인터페이스는 텍스트 기반 직접 입력 방식과 버튼 기반 추천 입력 방식을 지원할 수 있다. At this time, the conditional expression creation interface may support a text-based direct input method and a button-based recommended input method.

예를 들어, 텍스트 기반 직접 입력 방식은 봇 디자이너가 입력창에 직접 타이핑하여 조건식을 입력하는 것이고, 버튼 기반 추천 입력 방식은 조건식 생성 인터페이스에서 제공하는 입력 버튼을 봇 디자이너가 마우스나 기타 선택 방식으로 선택 및 클릭하여 입력하는 것을 수 있다. For example, in the text-based direct input method, the bot designer enters a conditional expression by typing directly into the input window, and in the button-based recommended input method, the bot designer selects the input button provided in the conditional expression creation interface with the mouse or other selection method. You can click and enter.

기존에 텍스트 기반으로 조건식을 입력하는 UI(User Interface)는 함수형 호출이 섞여 있기 때문에 변수의 위치가 일정하지 않고, 함수에 사용되는 괄호와 조건 우선순위를 위해 조건들을 그룹핑하는 괄호가 서로 혼용되어 구별하기 어렵다는 단점이 있다. The existing text-based UI (User Interface) for entering conditional expressions is a mixture of functional calls, so the positions of variables are not constant, and the parentheses used in functions and the parentheses that group conditions for condition priority are mixed together to distinguish them. The downside is that it is difficult to do.

또한, 버튼 입력을 통해 텍스트의 오류 없이 조건식 입력이 가능한 UI(User Interface)는 and/or 조건이 가능하더라도 중첩을 지원하지 않는 경우가 많기 때문에 조건식을 작성함에 있어서 불편함이 존재하였다. In addition, the UI (User Interface), which allows conditional expression input without text errors through button input, often does not support nesting even if and/or conditions are possible, so there was inconvenience in writing conditional expressions.

본 발명에서는 이러한 문제점들을 해결하기 위해서 직접적인 텍스트 입력이 가능하면서 버튼을 이용한 입력도 가능하여, 조건식이 미완성되거나 문법상에 오류가 발생하지 않도록 하는 조건식 생성 인터페이스를 제공하고자 한다. In order to solve these problems, the present invention seeks to provide a conditional expression creation interface that allows direct text input as well as input using buttons, thereby preventing incomplete conditional expressions or grammatical errors from occurring.

따라서, 본 발명의 일실시예에 따른 조건식 생성 인터페이스는 사전에 정의된 조건식 문법에 따라 직접 입력이 가능하면서 동시에 마우스 컨트롤을 통해 조건식 입력 지원이 가능한 인터페이스에 상응할 수 있다. Therefore, the conditional expression creation interface according to an embodiment of the present invention may correspond to an interface that allows direct input according to a predefined conditional expression grammar and at the same time supports conditional expression input through mouse control.

이 때, 조건식 생성 인터페이스는 입력된 조건 변수를 고려하여 적어도 하나의 비교연산자를 추천하고, 입력된 비교연산자를 고려하여 적어도 하나의 조건 값을 추천할 수 있다. At this time, the conditional expression creation interface may recommend at least one comparison operator in consideration of the input condition variable and may recommend at least one condition value in consideration of the input comparison operator.

예를 들어, 도 2에 도시된 본 발명의 일실시예에 따른 조건식 생성 인터페이스를 참조하면, 봇 디자이너가 입력창(220)에 조건 변수에 해당하는 슬롯명을 입력하면, 입력된 슬롯명을 고려하여 이에 적용할 수 있는 적어도 하나의 비교연산자를 자동으로 추천해줄 수 있다. 또한, 봇 디자이너가 추천을 통해 비교연산자를 선택 입력하였다고 가정한다면, 입력된 슬롯명과 비교연산자를 고려하여 조건 값에 해당하는 적어도 하나의 슬롯 값을 자동으로 추천해줄 수 있다.For example, referring to the conditional expression creation interface according to an embodiment of the present invention shown in Figure 2, when the bot designer inputs a slot name corresponding to a condition variable in the input window 220, the entered slot name is taken into consideration. Therefore, at least one comparison operator that can be applied to this can be automatically recommended. Additionally, assuming that the bot designer has selected and entered a comparison operator through recommendation, at least one slot value corresponding to the condition value can be automatically recommended by considering the entered slot name and comparison operator.

또한, 조건식 생성 인터페이스는 봇 디자이너가 마우스로 입력창(220)의 조건변수 영역을 포커스하는 경우에 적용할 수 있는 적어도 하나의 슬롯명을 자동으로 추천해줄 수 있다. Additionally, the conditional expression creation interface can automatically recommend at least one slot name that can be applied when the bot designer focuses the condition variable area of the input window 220 with the mouse.

또한, 조건식 생성 인터페이스는 봇 디자이너가 마우스로 입력창(220)의 비교연산자 영역을 포커스하는 경우에 적용할 수 있는 적어도 하나의 비교연산자를 자동으로 추천해줄 수 있다.Additionally, the conditional expression creation interface can automatically recommend at least one comparison operator that can be applied when the bot designer focuses the comparison operator area of the input window 220 with the mouse.

또한, 조건식 생성 인터페이스는 봇 디자이너가 마우스로 입력창(220)의 조건 값 영역을 포커스하는 경우에 적용할 수 있는 적어도 하나의 슬롯 값을 자동으로 추천해줄 수 있다.Additionally, the condition expression creation interface can automatically recommend at least one slot value that can be applied when the bot designer focuses the condition value area of the input window 220 with the mouse.

이 때, 포커싱된 영역이 어느 영역인지에 따라 입력창(220)에 적용된 다른 영역에 어떤 값이 입력되었는지 여부를 고려하여 추천이 수행될 수도 있다. At this time, depending on which area is the focused area, recommendation may be performed by taking into account what values have been entered in other areas applied to the input window 220.

또한, 조건식 생성 인터페이스는 봇 디자이너가 텍스트 기반 직접 입력 방식으로 입력창(220)에"$"를 입력하면 적용할 수 있는 적어도 하나의 슬롯명을 추천하고, 비교연산자의 첫 글자를 입력하면 입력된 글자로 시작하는 적어도 하나의 비교연산자를 추천하고, 여는 쌍 따옴표(")를 입력하면 적용할 수 있는 적어도 하나의 슬롯 값을 추천할 수 있다.In addition, the conditional expression creation interface recommends at least one slot name that can be applied when the bot designer enters "$" in the input window 220 using a text-based direct input method, and enters the first letter of the comparison operator to select the entered slot name. By recommending at least one comparison operator that starts with a letter and entering an opening double quote ("), you can recommend at least one slot value that can be applied.

또한, 조건식 생성 인터페이스는 조건식 중 임의의 위치에 입력된 괄호의 짝을 추천할 수 있다. Additionally, the conditional expression creation interface can recommend a pair of parentheses entered at an arbitrary position in the conditional expression.

이 때, 조건식 생성 인터페이스는 함수호출 시 괄호를 사용하지 않을 수 있다. At this time, the conditional expression creation interface may not use parentheses when calling a function.

예를 들어, 본 발명의 일실시예에 따른 조건식 생성 인터페이스는 함수 호출에 사용하는 괄호와 조건 우선순위를 나타내는 괄호가 혼동되는 것을 막기 위해, 아래의 예시와 같이 조건 우선순위를 나타낼 때에만 괄호를 사용할 수 있다. 이를 위해 조건 변수에 해당하는 슬롯값을 가져오는 함수의 표현을 "$슬롯명"와 같이 다른 방식으로 표현할 수 있다. For example, in order to prevent confusion between the parentheses used in function calls and the parentheses indicating condition priorities, the conditional expression creation interface according to one embodiment of the present invention uses parentheses only when indicating condition priorities, as in the example below. You can use it. For this purpose, the function that retrieves the slot value corresponding to the condition variable can be expressed in a different way, such as "$slot name."

[본 발명에서 제안하는 조건식 문법으로 표현한 조건문 예시][Examples of conditional sentences expressed in the conditional grammar proposed by the present invention]

$회원번호 regex "^[0-9]+$" and ($별명 not contain "guest" or $별명 contain "member")$member number regex "^[0-9]+$" and ($nickname not contain "guest" or $nickname contain "member")

이 때, 본 발명의 일실시예에 따른 조건식 생성 인터페이스는 조건식 중 임의의 위치에 입력된 괄호의 짝을 추천하기 위해, 먼저 조건식에 대한 분석 과정을 수행할 수 있다. At this time, the conditional expression creation interface according to an embodiment of the present invention may first perform an analysis process on the conditional expression in order to recommend a pair of parentheses entered at an arbitrary position in the conditional expression.

예를 들어, 봇 디자이너가 조건식을 입력한 뒤에 조건 우선순위를 정하기 위해 여는 괄호를 입력하였다고 가정한다면, 조건식 생성 인터페이스는 도 3에 도시된 것처럼 조건식을 분석할 수 있다. 이 때, 괄호가 입력될 수 있는 단위로 분석을 수행하기 위해서 and 및 or 같은 논리 연산자 및 비교 구문 단위로 조건식을 분류하고, 비교 구문이 같은 것은 동일한 조건으로 간주하여 토큰화할 수 있다. For example, assuming that the bot designer enters a conditional expression and then enters an opening parenthesis to determine condition priority, the conditional expression creation interface can analyze the conditional expression as shown in FIG. 3. At this time, in order to perform analysis in units in which parentheses can be entered, conditional expressions can be classified into logical operators such as and and or and comparison syntax units, and those with the same comparison syntax can be tokenized by considering them as the same condition.

예를 들어, $type == "song" and $action == "play" or $type == "album" and $action == "play" 는 4개의 비교 연산 조건을 포함하는 조건식 이지만, A: $type == "song", B: $action == "play", C: $type == "album"라고 정의하면, A and B or C and B로 단순화시킬 수 있다. For example, $type == "song" and $action == "play" or $type == "album" and $action == "play" is a conditional expression that includes four comparison operation conditions, but A: $ If you define type == "song", B: $action == "play", C: $type == "album", it can be simplified to A and B or C and B.

이와 같은 방식으로 조건식 분석이 완료되면, 도 4 내지 도 5에 도시된 것처럼 입력된 괄호의 종류에 따라 추천 가능한 괄호의 모든 위치를 검색할 수 있다. Once the conditional expression analysis is completed in this way, all positions of recommendable parentheses can be searched according to the type of parentheses entered, as shown in Figures 4 and 5.

예를 들어 도 4를 참조하면, 입력된 괄호가 여는 괄호인 경우에는 여는 괄호의 입력위치를 기준으로 조건식의 뒤쪽에 위치하는 각 조건들의 오른쪽이 추천 가능한 닫는 괄호의 위치(410, 420, 430)로 검색될 수 있다. For example, referring to Figure 4, when the input parenthesis is an open parenthesis, the right side of each condition located behind the conditional expression based on the input position of the open parenthesis is the recommended closing parenthesis position (410, 420, 430). It can be searched by .

다른 예를 들어 도 5를 참조하면, 입력된 괄호가 닫는 괄호인 경우에는 닫는 괄호의 입력위치를 기준으로 조건식의 앞쪽에 위치하는 각 조건들의 왼쪽이 추천 가능한 여는 괄호의 위치(510, 520, 530)로 검색될 수 있다. For another example, referring to FIG. 5, when the input parenthesis is a closing parenthesis, the left side of each condition located in front of the conditional expression based on the input position of the closing parenthesis is the recommended open parenthesis position (510, 520, 530). ) can be searched.

이 때, 조건식의 결과를 변경시킬 수 있는 제1 유형 괄호, 조건식의 결과를 변경시키지 않지만 불필요한 것으로 판단되는 제2 유형 괄호 및 조건식의 결과를 변경시키지 않으면서 제1 유형 괄호 및 제2 유형 괄호에 해당하지 않는 제3 유형 괄호 중 적어도 하나를 괄호의 짝으로 추천할 수 있다. At this time, first-type parentheses that can change the result of the conditional expression, second-type parentheses that do not change the result of the conditional expression but are judged unnecessary, and first-type parentheses and second-type parentheses that do not change the result of the conditional expression. At least one of the non-applicable third type parentheses can be recommended as a pair of parentheses.

이 때, 제1 유형 괄호는 조건식의 결과를 변경시킬 수 있는 의미 있는 괄호일 수 있고, 제2 유형 괄호는 없어도 상관없는 불필요한 괄호일 수 있고, 제3 유형 괄호는 조건식의 가독성을 위한 괄호에 해당할 수 있다. At this time, the first type of parentheses may be meaningful parentheses that can change the result of the conditional expression, the second type of parentheses may be unnecessary parentheses that do not need to be present, and the third type of parentheses may be parentheses for readability of the conditional expression. can do.

예를 들어, 아래의 경우에 해당하면 제2 유형 괄호인 것으로 판단할 수 있다. For example, if the following case applies, it can be judged to be a type 2 parenthesis.

- 조건식 전체를 둘러싸는 전체 괄호 - Full parenthesis surrounding the entire conditional expression

(A and B or C and B)(A and B or C and B)

- 조건 하나만 둘러싸는 단항 괄호- Unary parentheses surrounding only one condition

A and B or (C) and BA and B or (C) and B

- 괄호식만 둘러싸는 중복 괄호- Redundant parentheses that surround only parenthetical expressions

A and ((B or C)) and BA and ((B or C)) and B

이 때, 제1 유형 괄호를 검색하는 방식은 조건식 결과 비교 테이블을 이용하는 방식을 포함할 수 있다.At this time, the method of searching for the first type of parentheses may include using a conditional result comparison table.

이 때, 조건식 결과 비교 테이블은 봇 디자이너가 괄호를 입력하기 전 상태의 조건식을 기준으로 작성된 True/False 테이블과 봇 디자이너가 입력한 괄호에 대해 조건식 생성 인터페이스가 추천한 괄호의 짝을 적용한 상태의 조건식을 기준으로 작성된 True/False 테이블을 비교 가능한 형태로 나타낸 것에 상응할 수 있다. 만약, 조건식 결과 비교 테이블에 포함된 두 개의 True/False 테이블 간의 결과에 차이가 있다면 조건식 생성 인터페이스가 추천한 괄호가 제1 유형 괄호인 의미 있는 괄호인 것으로 판단할 수 있다. At this time, the conditional expression result comparison table is a True/False table created based on the conditional expression before the bot designer inputs the parentheses, and a conditional expression with the pair of parentheses recommended by the conditional expression creation interface applied to the parentheses entered by the bot designer. It may correspond to a True/False table created based on , expressed in a comparable form. If there is a difference in the results between the two True/False tables included in the conditional expression result comparison table, it can be determined that the parentheses recommended by the conditional expression creation interface are meaningful parentheses that are the first type of parentheses.

예를 들어, 도 6을 참조하면, 왼쪽에 도시된 True/False 테이블은 봇 디자이너가 괄호를 입력하기 전 상태의 조건식인 'A and B or C and B'를 기준으로 작성된 것에 상응하고, 오른쪽에 도시된 True/False 테이블은 조건식 생성 인터페이스가 봇 디자이너에 의해 입력된 괄호에 대해 추천한 괄호의 짝을 적용한 상태의 조건식인 'A and (B or C) and B'를 기준으로 작성된 것에 상응할 수 있다. 이 때, 도 6에 도시된 조건식 결과 비교 테이블에서는, 두 개의 True/False 테이블들 간의 결과 값 중 다른 값(610)이 존재하므로, 조건식 생성 인터페이스가 추천한 괄호의 짝은 제1 유형 괄호인 것으로 판단할 수 있다.For example, referring to Figure 6, the True/False table shown on the left corresponds to one created based on 'A and B or C and B', which is the conditional expression in the state before the bot designer enters the parentheses, and on the right The True/False table shown may correspond to the conditional expression creation interface created based on the conditional expression 'A and (B or C) and B' with the recommended pair of parentheses applied to the parentheses entered by the bot designer. there is. At this time, in the conditional expression result comparison table shown in FIG. 6, there is a different value 610 among the result values between the two True/False tables, so the pair of parentheses recommended by the conditional expression creation interface is the first type parenthesis. You can judge.

이와 같은 방식으로 조건식 생성 인터페이스에 의해 추천된 모든 괄호의 짝에 대해 분석을 수행하여 제1 유형 괄호를 모두 검색할 수 있다.In this way, all first type parentheses can be searched by performing analysis on all pairs of parentheses recommended by the conditional expression creation interface.

본 발명에서는 제1 유형 괄호를 검색하기 위해 조건식 결과 비교 테이블을 이용하는 방식을 예로 들어 설명하였으나, 제1 유형 괄호를 검색하는 방식은 이에 한정되지 않고, 추천된 괄호의 짝이 조건식의 결과를 변경시킬 수 있는 의미 있는 괄호의 짝인지 여부를 판단할 수 있는 다양한 방법을 채용하여 사용할 수 있다.In the present invention, the method of using the conditional expression result comparison table to search for the first type of parentheses is explained as an example, but the method of searching for the first type of parentheses is not limited to this, and the recommended pair of parentheses can change the result of the conditional expression. Various methods can be used to determine whether a pair of parentheses is meaningful.

이 때, 조건식 생성 인터페이스는 입력된 괄호의 짝을 추천하기 이전에, 입력된 괄호의 종류를 고려하여 임의의 위치가 괄호 입력 가능 위치인지 여부를 판단할 수 있다. At this time, before recommending a pair of input parentheses, the conditional expression creation interface can determine whether an arbitrary position is a position where parentheses can be input by considering the type of input parenthesis.

이 때, 조건식 생성 인터페이스는 임의의 위치가 괄호 입력 가능 위치가 아닌 경우에 입력된 괄호의 종류를 기반으로 임의의 위치를 이동시켜 보정할 수 있다. At this time, the conditional expression creation interface can correct the position by moving it to a certain position based on the type of parentheses entered if the arbitrary position is not a position where parentheses can be input.

예를 들어, 도 7을 참조하면, 봇 디자이너가 조건식 중 표시된 위치(710)에 여는 괄호를 입력하였다고 가정할 수 있다. 이 때, 표시된 위치(710)는 조건을 구성하는 조건변수의 오른쪽이나 비교연산자의 왼쪽에 해당하므로 여는 괄호를 입력 가능한 위치가 아닌 것으로 판단할 수 있다. For example, referring to FIG. 7, it can be assumed that the bot designer entered an open parenthesis at the indicated position 710 in the conditional expression. At this time, since the displayed position 710 corresponds to the right side of the condition variable constituting the condition or the left side of the comparison operator, it can be determined that it is not a position where the opening parenthesis can be entered.

따라서, 조건식 생성 인터페이스는 도 8에 도시된 것처럼 봇 디자이너가 입력한 여는 괄호의 위치를 이동시켜 보정된 위치(810)에 여는 괄호가 입력되도록 보정할 수 있다.Therefore, the conditional expression creation interface can be corrected by moving the position of the opening parenthesis entered by the bot designer so that the opening parenthesis is entered at the corrected position 810, as shown in FIG. 8.

이 때, 봇 디자이너가 입력한 괄호의 종류를 고려하여, 여는 괄호 "("는 조건식의 앞으로 위치를 이동시키면서 보정할 수 있고, 닫는 괄호 ")"는 조건식의 뒤로 위치로 이동시키면서 보정할 수 있다.At this time, considering the type of parentheses entered by the bot designer, the opening parenthesis "(" can be corrected by moving its position to the front of the conditional expression, and the closing parenthesis ")" can be corrected by moving it to the back of the conditional expression. .

이 때, 조건식 생성 인터페이스는 제1 유형 괄호, 제2 유형 괄호 및 제3 유형 괄호가 시각적으로 구별되도록 나타낼 수 있다. At this time, the conditional expression creation interface may display the first type parenthesis, the second type parenthesis, and the third type parenthesis so that they are visually distinguished.

예를 들어, 제1 유형 괄호를 1순위, 제3 유형 괄호를 2순위, 제2 유형 괄호를 3순위에 상응하게 우선순위를 지정하고, 추천되는 괄호의 짝에 상응하는 우선순위 번호를 표시할 수 있다.For example, you could prioritize type 1 brackets as 1st, type 3 brackets as 2nd, type 2 brackets as 3rd, and indicate the priority number corresponding to the recommended pair of brackets. You can.

다른 예를 들어, 도 8에 도시된 것처럼, 우선순위가 높은 제1 유형 괄호(820, 830)는 가장 강조하여 나타내고, 다음 우선순위에 해당하는 제3 유형 괄호(840)는 덜 강조하여 나타낼 수도 있다. 이 때, 도 8에 도시된 것처럼, 동일한 유형의 괄호가 여러 개 추천되는 경우에는 봇 디자이너가 입력한 괄호의 위치를 기준으로 가까운 순서대로 강조하여 나타낼 수도 있다. 또한, 1순위와 2순위에 해당하는 유형의 괄호들이 추천된 상태라면, 가독성을 위해 3순위에 해당하는 유형의 괄호는 추천하지 않을 수도 있다. For another example, as shown in Figure 8, the first type parentheses 820 and 830, which have a higher priority, may be shown with the most emphasis, and the third type brackets 840, corresponding to the next priority, may be shown with less emphasis. there is. At this time, as shown in FIG. 8, when multiple parentheses of the same type are recommended, they may be highlighted and displayed in close order based on the position of the parenthesis entered by the bot designer. Additionally, if the 1st and 2nd priority types of parentheses are recommended, the 3rd priority type of parentheses may not be recommended for readability.

이하에서는 도 8을 참조하여 괄호의 짝을 추천하고, 추천된 괄호의 짝을 선택하여 조건식을 생성하는 과정을 상세하게 설명하도록 한다. Below, with reference to FIG. 8, the process of recommending a pair of parentheses, selecting a pair of recommended parentheses, and generating a conditional expression will be described in detail.

먼저, 조건식 생성 인터페이스는 조건식 분석을 통해 보정된 위치(810)로 이동시킨 입력된 여는 괄호에 대해 추천 가능한 모든 유형의 괄호를 검색할 수 있다. First, the conditional expression creation interface can search for all types of parentheses that can be recommended for the input opening parenthesis that has been moved to the corrected position 810 through conditional expression analysis.

만약, 도 8에 도시된 것처럼 제1 유형 괄호(820, 830)와 제3 유형 괄호(840)가 검색되었다고 가정하면, 우선 제1 유형 괄호(820, 830) 중 입력된 괄호와 가장 가까운 제1 유형 괄호(820)를 가장 강조하여 보여주는 방식으로 추천할 수 있다.Assuming that the first type brackets 820, 830 and the third type brackets 840 are searched as shown in Figure 8, first of the first type brackets 820, 830, the first type closest to the input brackets It can be recommended to display the type brackets (820) with the most emphasis.

이 때, 봇 디자이너가 포인트 디바이스에 의한 터치 및 클릭이나 키보드 디바이스에 의한 좌우 방향키 및 탭 순환 입력을 수행하여 제1 유형 괄호(820)를 선택하면, 보정된 위치(810)에 입력된 여는 괄호의 짝을 제1 유형 괄호(820)로 확정하고 추천이 종료될 수 있다. At this time, when the bot designer selects the first type parenthesis 820 by touching and clicking with a point device or using left and right arrow keys and tab cycle input with a keyboard device, the opening parenthesis entered at the corrected position 810 is selected. The pair is confirmed as the first type bracket 820 and the recommendation can be ended.

그러나, 봇 디자이너가 입력하길 의도한 괄호의 짝은 제1 유형 괄호(820)가 아닐 수도 있으므로, 조건식 인터페이스는 그 다음으로 입력된 괄호와 가까운 제1 유형 괄호(830)를 제1 유형 괄호(820)보다 덜 강조하여 보여줌으로써 선택이 가능함을 표현할 수 있다. However, because the pair of parentheses that the bot designer intended to enter may not be the first type parenthesis 820, the conditional expression interface replaces the first type parenthesis 830, which is closest to the next input parenthesis, with the first type parenthesis 820. You can express that a choice is possible by showing it with less emphasis than ).

마찬가지로, 봇 디자이너가 제1 유형 괄호(830)를 선택하면, 보정된 위치(810)에 입력된 여는 괄호의 짝을 제1 유형 괄호(830)로 확정하고 추천이 종료될 수 있다.Likewise, if the bot designer selects the first type parenthesis 830, the pair of opening parentheses entered in the corrected position 810 is confirmed as the first type parenthesis 830 and the recommendation may be terminated.

이와 같이 본 발명의 일실시예에 따른 조건식 생성 인터페이스는 동일한 유형의 괄호가 복수 개 존재하는 경우, 입력된 괄호의 위치를 기준으로 가까운 위치에 존재하는 괄호를 우선 추천해줄 수 있다.In this way, when there are multiple parentheses of the same type, the conditional expression creation interface according to an embodiment of the present invention can preferentially recommend parentheses that exist in a nearby position based on the position of the input parenthesis.

또한, 도 8을 참조하면, 본 발명의 일실시예에 따른 조건식 생성 인터페이스는 불필요한 것으로 판단되는 제2 유형 괄호(840)도 추천하면서 선택이 가능함을 표시할 수 있지만, 제1 유형 괄호나 제3 유형 괄호에 비해 강조되지 않도록 표시할 수 있다. In addition, referring to FIG. 8, the conditional expression creation interface according to an embodiment of the present invention may indicate that selection is possible while recommending the second type parentheses 840 that are judged to be unnecessary, but the first type parentheses or the third type parentheses 840 may also be selected. It can be displayed so that it is not emphasized compared to the type brackets.

이와 같이 본 발명의 일실시예에 따른 조건식 생성 인터페이스는 봇 디자이너에 의해 입력된 조건식이 문법에 맞게 정상적으로 입력되었는지 검증(Validation)할 수 있고, 조건식이 비정상적으로 입력되는 경우에 봇 디자이너가 다시 입력할 수 있도록 할 수 있다.As such, the conditional expression creation interface according to an embodiment of the present invention can validate whether the conditional expression entered by the bot designer has been entered correctly according to the grammar, and if the conditional expression is entered abnormally, the bot designer can re-enter it. You can do it.

예를 들어, 조건식에 포함된 괄호가 짝에 맞게 입력되었는지 여부, 조건식이 문법에 정의된 연산자 별 표기형식에 맞게 작성되었는지 여부, 조건변수, 비교연산자 및 조건 값이 정상적으로 입력되었는지 여부 및 조건식에 포함된 쌍 따옴표가 짝에 맞게 입력되었는지 여부 등을 체크할 수도 있다.For example, whether the parentheses included in the conditional expression are entered in pairs, whether the conditional expression is written in accordance with the notation format for each operator defined in the grammar, and whether the condition variable, comparison operator, and condition value are entered correctly and included in the conditional expression. You can also check whether double quotation marks are entered in pairs.

또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 조건식 생성 인터페이스를 통해 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성한다(S120).Additionally, the chatbot service provision method according to an embodiment of the present invention creates an execution block for processing an intent corresponding to a user conversation through a conditional expression creation interface (S120).

예를 들어, 조건식 생성 인터페이스는 인텐트와 실행블록 간의 매핑을 위한 인텐트 매핑 연결조건, 실행블록 내 정의된 챗봇의 액션 실행을 위한 실행조건 및 슬롯 필링을 위한 프롬프트 메시지 실행조건 중 적어도 하나를 포함하는 봇 구동을 위한 조건식 생성 시 제공될 수 있다.For example, the conditional expression creation interface includes at least one of the following: an intent mapping connection condition for mapping between an intent and an execution block, an execution condition for executing a chatbot action defined in an execution block, and a prompt message execution condition for slot filling. It can be provided when creating a conditional expression for running a bot.

이와 같은 챗봇 서비스 제공 방법을 통해 챗봇의 구동을 위해 필요한 조건들을 설정할 때 슬롯 인식에 최적화된 키워드 표현식 기반의 조건식 문법을 적용한 인터페이스를 제공함으로써 조건식의 오류는 줄이고 가독성은 향상시킬 수 있다.Through this chatbot service provision method, errors in conditional expressions can be reduced and readability improved by providing an interface that applies conditional grammar based on keyword expressions optimized for slot recognition when setting the conditions necessary for running the chatbot.

또한, 괄호의 사용을 우선순위 설정에만 한정적으로 사용하여 조건식을 간결하게 작성하고, 봇 디자이너에 의해 작성되는 괄호에 대해 의미있는 괄호를 추천해 줌으로써 입력의 단계를 줄이고 의미없는 괄호의 사용으로 조건식이 복잡하게 작성되는 것을 방지할 수 있다.In addition, the use of parentheses is limited to setting priorities to create conditional expressions concisely, and by recommending meaningful parentheses for parentheses written by the bot designer, the number of input steps is reduced and the conditional expression is reduced by using meaningless parentheses. Complex writing can be prevented.

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

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

통신부(910)는 네트워크와 같은 통신망을 통해 다수의 다른 장치들과 챗봇 서비스와 관련된 정보를 송신하는 역할을 할 수 있다. 이 때, 네트워크는 장치들간에 데이터를 전달하는 통로를 제공하는 것으로서, 기존에 이용되는 네트워크 및 향후 개발 가능한 네트워크를 모두 포괄하는 개념이다.The communication unit 910 may serve to transmit information related to the chatbot service with a number of other devices through a communication network, such as a network. At this time, the network provides a path for transmitting data between devices, and is a concept that encompasses both existing networks and networks 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 an IP network that provides large-capacity data transmission and reception services and uninterrupted data services through Internet Protocol (IP), and All IP is an IP network structure that integrates different networks based on IP. ) network, etc., and may be a wired network, Wibro (Wireless Broadband) network, 3rd generation mobile communication network including WCDMA, 3.5 generation mobile communication network including HSDPA (High Speed Downlink Packet Access) network and LTE network, and 4 including LTE advanced. It can be achieved by combining one or more of a household mobile communication network, a satellite communication network, and a Wi-Fi network.

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

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

이 때, 적어도 하나 이상의 프로그램은 조건식 생성 인터페이스를 제공하고, 조건식 생성 인터페이스를 통해 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성한다. At this time, at least one program provides a conditional expression creation interface and creates an execution block for processing the intent corresponding to the user conversation through the conditional expression creation interface.

이 때, 조건식 생성 인터페이스를 통해 생성되는 조건식에 포함되는 적어도 하나의 조건은 조건 변수, 비교연산자 및 조건 값의 조합으로 구성될 수 있다.At this time, at least one condition included in the conditional expression created through the conditional expression creation interface may be composed of a combination of a condition variable, a comparison operator, and a condition value.

이 때, 조건식 생성 인터페이스는 입력된 조건 변수를 고려하여 적어도 하나의 비교연산자를 추천하고, 입력된 비교연산자를 고려하여 적어도 하나의 조건 값을 추천할 수 있다.At this time, the conditional expression creation interface may recommend at least one comparison operator in consideration of the input condition variable and may recommend at least one condition value in consideration of the input comparison operator.

이 때, 조건식 생성 인터페이스는 상기 조건식 중 임의의 위치에 입력된 괄호의 짝을 추천할 수 있다.At this time, the conditional expression creation interface may recommend a pair of parentheses entered at an arbitrary position in the conditional expression.

이 때, 조건식 생성 인터페이스는 함수호출 시 괄호를 사용하지 않을 수 있다.At this time, the conditional expression creation interface may not use parentheses when calling a function.

이 때, 조건식 생성 인터페이스는 상기 조건식의 결과를 변경시킬 수 있는 제1 유형 괄호, 상기 조건식의 결과를 변경시키지 않지만 불필요한 것으로 판단되는 제2 유형 괄호 및 상기 조건식의 결과를 변경시키지 않으면서 상기 제1 유형 괄호 및 상기 제2 유형 괄호에 해당하지 않는 제3 유형 괄호 중 적어도 하나를 상기 괄호의 짝으로 추천할 수 있다.At this time, the conditional expression creation interface includes a first type parenthesis that can change the result of the conditional expression, a second type parenthesis that does not change the result of the conditional expression but is judged to be unnecessary, and the first type parenthesis that does not change the result of the conditional expression. At least one of a type parenthesis and a third type parenthesis that does not correspond to the second type parenthesis may be recommended as a pair of the parentheses.

이 때, 제1 유형 괄호를 검색하는 방식은 조건식 결과 비교 테이블을 이용하는 방식을 포함할 수 있다.At this time, the method of searching for the first type of parentheses may include using a conditional result comparison table.

이 때, 조건식 생성 인터페이스는 상기 입력된 괄호의 짝을 추천하기 이전에 상기 입력된 괄호의 종류를 고려하여 상기 임의의 위치가 괄호 입력 가능 위치인지 여부를 판단하고, 상기 임의의 위치가 괄호 입력 가능 위치가 아닌 경우에 상기 입력된 괄호의 종류를 기반으로 상기 임의의 위치를 이동시켜 보정할 수 있다.At this time, before recommending a pair of input parentheses, the conditional expression creation interface determines whether the arbitrary position is a position where parentheses can be input by considering the type of the input parentheses, and determines whether the arbitrary position is a position where parentheses can be input. If the position is not correct, the random position can be moved and corrected based on the type of parentheses entered.

이 때, 조건식 생성 인터페이스는 상기 제1 유형 괄호, 상기 제2 유형 괄호 및 상기 제3 유형 괄호가 시각적으로 구별되도록 나타낼 수 있다.At this time, the conditional expression creation interface may display the first type parenthesis, the second type parenthesis, and the third type parenthesis so that they are visually distinguished.

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

또한, 표시부는 장치의 기능 수행 중에 발생하는 일련의 동작상태 및 동작결과 등에 대한 정보를 표시할 수 있다. 또한, 표시부는 장치의 메뉴 및 사용자가 입력한 사용자 데이터 등을 표시할 수 있다. 여기서, 표시부는 액정표시장치(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) 디스플레이 등으로 구성될 수 있다. 이 때, 표시부가 터치스크린 형태로 구성된 경우, 표시부는 입력부의 기능 중 일부 또는 전부를 수행할 수 있다.Additionally, the display unit can display information about a series of operation states and operation results that occur while performing the function of the device. Additionally, the display unit can display menus of the device and user data entered by the user. Here, the display unit includes a liquid crystal display (LCD), an ultra-thin liquid crystal display (TFT-LCD, Thin Film Transistor LCD), a light emitting diode (LED), an organic light emitting diode (OLED, Organic LED), It can be composed of active organic light emitting diode (AMOLED, Active Matrix OLED), Retina Display, flexible display, and 3-dimensional display. At this time, when the display unit is configured in the form of a touch screen, the display unit can perform some or all of the functions of the input unit.

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

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

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

상술한 구성에 의하여, 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치는 챗봇의 구동을 위해 필요한 조건들을 설정할 때 슬롯 인식에 최적화된 키워드 표현식 기반의 조건식 문법을 적용한 인터페이스를 제공함으로써 조건식의 오류는 줄이고 가독성은 향상시킬수 있다.With the above-described configuration, the chatbot service providing device according to an embodiment of the present invention provides an interface that applies a keyword expression-based conditional grammar optimized for slot recognition when setting the conditions necessary for running the chatbot, thereby preventing errors in the conditional expression. It can be reduced and readability can be improved.

또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치는 괄호의 사용을 우선순위 설정에만 한정적으로 사용하여 조건식을 간결하게 작성하고, 봇 디자이너에 의해 작성되는 괄호에 대해 의미있는 괄호를 추천해 줌으로써 입력의 단계를 줄이고 의미없는 괄호의 사용으로 조건식이 복잡하게 작성되는 것을 방지할 수 있다.In addition, the chatbot service providing device according to an embodiment of the present invention uses the use of parentheses only to set priorities to create conditional expressions concisely, and recommends meaningful parentheses for parentheses written by the bot designer. You can reduce the number of input steps and prevent conditional expressions from being written in a complicated manner due to the use of meaningless parentheses.

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

유용한 챗봇 서비스를 위해서는 사업이나 서비스 도메인별 용어들에 대한 자연어 처리 능력 및 제공되는 기능이나 업무에 대한 처리 능력을 지속적으로 향상시킬 필요가 있다.In order to provide useful chatbot services, it is necessary to continuously improve natural language processing capabilities for terms by business or service domain and processing capabilities for provided functions or tasks.

이를 위해, 다양한 도메인별 용어들과 문장들이 자연어 처리기에 의하여 처리될 수 있도록 자연어 처리기를 학습시킬 필요가 있는데, 이 때 자연어 처리기에서 유사 발화들 간의 충돌이 발생하지 않도록 인텐트들을 분류해야 한다. 즉, 기능이나 업무 단위로만 인텐트를 정의하는 것이 아니라 자연어 처리(Natural Language Understanding; NLU)의 관점에서의 인텐트 정의가 필요한 것이다.To this end, it is necessary to train a natural language processor so that various domain-specific terms and sentences can be processed by the natural language processor. At this time, the natural language processor must classify intents to prevent conflicts between similar utterances. In other words, it is necessary to define intent from the perspective of Natural Language Understanding (NLU), rather than defining intent only by function or task unit.

한편, 기능이나 업무에 대한 처리가 효과적으로 이루어지기 위해서는 세부 처리 단계나 흐름이 실행블록들로 정의되어야 하고, 정의된 실행블록들의 연결관계(선후관계)가 정의될 필요가 있다. 이 때, 연결관계는 리스트나 트리 형태보다는 여러 실행블록들을 자유롭게 연결하기 위한 그래프 형태로 정의되는 것이 바람직하다. 이 때, 실행블록들은 자연어 처리의 관점보다는 서비스가 제공하는 기능에 적합하게 정의되는 것이 바람직하다.Meanwhile, in order for functions or tasks to be processed effectively, detailed processing steps or flows must be defined as execution blocks, and the connection relationship (sequence relationship) of the defined execution blocks needs to be defined. At this time, it is preferable that the connection relationship be defined in the form of a graph to freely connect multiple execution blocks rather than in the form of a list or tree. At this time, it is preferable that execution blocks are defined appropriately for the functions provided by the service rather than from the perspective of natural language processing.

이와 같이, 각각의 목적에 맞게 적합한 형태로 정의된 인텐트들과 블록들을 자유롭게(N:N) 맵핑할 수 있어야, 사용자의 의도에 부합하는 챗봇 서비스를 효율적으로 제공할 수 있다. 즉, 인텐트 하나가 여러 블록에 쓰일 수 있고, 또 블록 하나가 여러 인텐트들을 처리할 수 있어야 하고, 이를 위해서는 인텐트들과 블록들이 1:1 매핑이 아닌 N: N으로 매핑될 수 있어야 한다.In this way, only when it is possible to freely (N:N) map intents and blocks defined in a form suitable for each purpose, can a chatbot service that meets the user's intent be efficiently provided. In other words, one intent can be used in multiple blocks, and one block must be able to handle multiple intents, and for this, intents and blocks must be able to be mapped N:N rather than 1:1 mapping. .

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

이 때, 유사 발화 패턴들을 같은 인 텐트로 묶고, 슬롯을 기준으로 조건을 주어 서로 다른 봇 응답이 가능하도록 대응할 수 있다.At this time, similar speech patterns can be grouped into the same intent and conditions can be given based on the slot to enable different bot responses.

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

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

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

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

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

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

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

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

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

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

챗봇 빌더(1040)에서 학습 발화문장과 봇 처리의 중요정보인 슬롯(slot)을 인텐트로 정의하고, 정의된 인텐트를 실행블록에 매핑하고 실행블록에서 조건을 설정하고 이에 따른 봇의 액션을 정의할 수 있다. 또한, 챗봇 빌더(1040)에서 응답대기상태에서 처리할 수 있는 블록들이 설정되고, 이 블록들이 그래프 형태의 시나리오로 정의될 수 있다.In the chatbot builder (1040), learn utterance sentences and slots, which are important information for bot processing, are defined as intents, map the defined intents to execution blocks, set conditions in the execution blocks, and perform the bot's actions accordingly. It can be defined. Additionally, blocks that can be processed in the response waiting state are set in the chatbot builder 1040, and these blocks can be defined as a scenario in the form of a graph.

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

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

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

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

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

사용자의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 "따뜻한걸로 드릴까요? 아이스로 드릴까요?"라는 발화를 실행한다(1122).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 warm or iced?" (1122).

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

사용자의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 "드시고가실건가요?"라는 발화를 실행한다(1123).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 it?" (1123).

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

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

챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 '예'(1115) 또는 '아니오'(1116)를 발화하고, 사용자가 '예'라고 발화한 경우에는 챗봇이 커피 주문을 실행하는 커스텀 액션(custom action)을 실행하고(1125) 주문내용을 확인하는 발화를 실행하고(1126), 사용자가 '아니오'라고 발화한 경우에는 챗봇이 "주문을 취소합니다."라는 발화를 실행(1127)한 후 동작을 종료한다.In response to the chatbot's utterance, in the block utterance scenario of the coffee ordering chatbot, the user utters 'yes' (1115) or 'no' (1116), and if the user utters 'yes', the chatbot executes the coffee order. Executes a custom action (1125) and executes an utterance to confirm the order details (1126). If the user utters 'No', the chatbot executes the utterance "Cancel the order" (1126). 1127), then the operation ends.

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

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

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

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

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

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

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

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

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

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

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

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

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

인텐트 order_togo(1240), 인텐트 order_eatin(1250), 인텐트 followup.yes(1260) 및 인텐트 followup.no(1270)는 실행블록 테이크아웃확인(1330)에 연결된다.Intent order_togo (1240), intent order_eatin (1250), intent followup.yes (1260), and intent followup.no (1270) are connected to the execution block takeout confirmation (1330).

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

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

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

도 14는 도 13에 도시된 실행블록 커피선택의 일 예를 나타낸 도면이다.FIG. 14 is a diagram illustrating an example of execution block coffee selection shown in FIG. 13.

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

이 때, 연결된 인텐트 목록은 인텐트 매핑 리스트에 포함될 수 있고, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다. 이 때, 슬롯 조건은 하나 이상의 슬롯에 관련된 조건문에 상응하는 것일 수 있고, 널(NULL) 조건을 포함할 수 있다.At this time, the connected intent list may be included in the intent mapping list, and the intent mapping list may include an intent identifier and slot condition for each intent. At this time, the slot condition may correspond to a conditional statement related to one or more slots and may include a null condition.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

사용자 발화로부터 사용자 인텐트가 식별되면, 식별된 인텐트를 포함하는 블록들의 인텐트 조건들의 우선순위 및/또는 봇 설계자가 정의한 우선순위 순으로 정렬하여 블록들을 검색할 수 있다.When a user intent is identified from a user utterance, the blocks can be searched by sorting them in the order of priority of intent conditions of blocks containing the identified intent and/or priority defined by the bot designer.

조건에 맞는 블록이 검색되면, 해당 블록으로 이동하여 해당 블록 설정에 따라 정의된 동작을 수행하고, 다시 액션의 조건에 따라 사용자 응답 대기 상태로 돌아갈 수 있다.When a block that meets the conditions is found, you can move to the corresponding block, perform an action defined according to the block settings, and return to the waiting state for user response according to the conditions of the action.

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

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

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

도 18에 도시된 블록 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 shown in FIG. 18 is connected to Block 2, Block 3, Block 4, and Block 5. At this time, Block 1 is connected to Block 2 and Block 3 by Condition 4, and Block 3 is connected to Block 3 by Condition 5. It can be connected to Block 4 and Block 5. Therefore, after Block 1, Block 2, Block 3, Block 4, and Block 5 situations may occur.

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

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

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

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

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

예를 들어, 인텐트(I1: 가입 의도)가 학습문장들 "써보고 싶어요"(패턴분류 P1), "쓰려면 어떻게 해요"(패턴분류 P1), "가입 방법이 궁금해요"(패턴분류 P3) 및 "가입방법 문의 좀"(패턴분류 P3)을 포함하고, 인텐트(I2: 탈퇴 의도)가 학습문장들 "그만 쓰고 싶어요"(패턴분류 P2), "이제 안쓸래요"(패턴분류 P2), "탈퇴 방법 궁금해요"(패턴분류 P3) 및 "탈퇴 방법 문의합니다"(패턴분류 P3)를 포함할 수 있다.For example, the intent (I1: subscription intention) includes the learning sentences “I want to use it” (pattern classification P1), “How do I use it” (pattern classification P1), and “I am curious about how to register” (pattern classification P3). and “Please inquire about how to sign up” (pattern classification P3), and the intent (I2: intention to withdraw) includes the learning sentences “I want to stop using” (pattern classification P2), “I don’t want to use it anymore” (pattern classification P2), This may include “I’m curious about how to unsubscribe” (pattern classification P3) and “I’m inquiring about how to unsubscribe” (pattern classification P3).

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

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

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

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

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

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

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

도 19에 도시된 예에서, 블록 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. 19, the intent mapping list of Block 1 includes a pair of Intent 1 and Condition 1 and a pair of Intent 3 and Condition 2. ) There are two elements of the pair. Therefore, 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)과 연결된다.The intent mapping list of Block 2 contains two elements: a pair of Intent 2 and Condition 3 and a pair of Intent 3 and Condition 4. exist. Therefore, Block 2 is connected to two intents (Intent 2 and Intent 3).

도 20은 인텐트와 실행블록을 1:1 매핑하는 경우를 나타낸 도면이다.Figure 20 is a diagram showing a case of 1:1 mapping between an intent and an execution block.

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

즉, 인텐트 I1(가입 의도)는 발화 패턴들 "써보고 싶어요", "쓰려면 어떻게 해요", "가입 방법이 궁금해요" 및 "가입 방법 문의 좀"을 포함한다.In other words, Intent I1 (intent to sign up) includes the speech patterns “I want to use it,” “How do I use it,” “I’m curious about how to sign up,” and “Please inquire about how to sign up.”

인텐트 I2(탈퇴 의도)는 발화 패턴들 "그만 쓰고 싶어요", "이제 안쓸래요", 탈퇴 방법이 궁금해요" 및 "탈퇴하는 법 문의합니다"를 포함한다.Intent I2 (intent to withdraw) includes the speech patterns “I want to stop using it,” “I don’t want to use it anymore,” “I’m curious about how to unsubscribe,” and “I’m asking how to unsubscribe.”

인텐트 I3(정회원 문의 의도)는 발화 패턴들 "정회원이 되고 싶어요", "정회원으로 승급하고 싶어요", 정회원 가입 방법이 궁금해요", "정회원 가입하는 방법은"을 포함한다.Intent I3 (intent to inquire about regular membership) includes the speech patterns “I want to become a regular member,” “I want to be promoted to a regular member,” “I’m curious about how to sign up for a full member,” and “How to sign up for a full member.”

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

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

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

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

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

이 때, 인텐트 1(I1)은 가입 안내 응답(R1)에 연결된다. 이 때, 슬롯 조건은 널(NULL) 조건일 수 있다.At this time, Intent 1 (I1) is connected to the subscription information response (R1). At this time, the slot condition may be a null condition.

이 때, 인텐트 4(I4)는 가입 안내 응답(R1), 탈퇴 안내 응답(R2) 및 정회원 안내 응답(R3)에 연결된다. 이 때, 인텐트 4(I4)는 슬롯 조건 $service == "가입"에 의해 가입 안내 응답(R1)에 연결될 수 있다. 이 때, 인텐트 4(I4)는 슬롯 조건 $service == "탈퇴"에 의해 탈퇴 안내 응답(R2)에 연결될 수 있다. 이 때, 인텐트 4(I4)는 슬롯 조건 $level == "정회원" and $service == "가입"에 의해 정회원 안내 응답(R3)에 연결될 수 있다.At this time, Intent 4 (I4) is connected to the subscription information response (R1), the withdrawal information response (R2), and the regular member information response (R3). At this time, Intent 4 (I4) can be connected to the subscription information response (R1) by the slot condition $service == "Sign up". At this time, Intent 4 (I4) can be connected to the withdrawal information response (R2) by the slot condition $service == "withdrawal". At this time, Intent 4 (I4) can be connected to the regular member information response (R3) by the slot condition $level == "regular member" and $service == "subscription".

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

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

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

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

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

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

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

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

도 21 및 도 22에 도시된 예에서, "I4: 문의 의도"로 인텐트가 분류된 경우, 이 인텐트를 포함하고 있는 블록은 B1, B2 및 B3이며, 조건에 따라 매칭되는 블록들은 아래 표 3과 같다.In the examples shown in Figures 21 and 22, when the intent is classified as "I4: Inquiry Intent", the blocks containing this intent are B1, B2, and B3, and the blocks matching according to the conditions are listed in the table below. Same as 3.

조건condition 블록block 사용자 지정 조건 검사 순서Custom condition check order $service == "가입"$service == "Sign up" B1: 가입 안내B1: Registration instructions 1One $service == "탈퇴"$service == "Withdraw" B2: 탈퇴 안내B2: Withdrawal notice 22 $service == "정회원" and $service == "가입"$service == "regular member" and $service == "subscription" B3: 정회원 안내B3: Regular member information 33

조건을 검사하는 순서는 블록을 나열하는 순서등을 사용자가 지정함으로써 정해질 수 있다. 만약, 표 3과 같이 단순히 사용자가 나열한 순서대로만 처리되는 경우, 정회원 가입과 같은 문장은 $level == "정회원" and $service == "가입" 이라는 조건을 만족하지만, 동시에 논리적으로는 $service == "가입" 이라는 조건도 만족하게 되고, 조건 검사 순위가 높은 B1 블록이 실행될 수 있고 이는 바람직한 결과가 아닐 수 있다.The order in which conditions are checked can be determined by the user specifying the order in which blocks are listed. If it is simply processed in the order listed by the user as shown in Table 3, a sentence such as signing up as a regular member satisfies the conditions $level == "regular member" and $service == "subscription", but at the same time, logically, $service = = The condition “join” is also satisfied, and the B1 block with a high condition check rank can be executed, which may not be a desirable result.

이 문제를 해결하기 위해 조건의 포함관계를 고려하여 다시 우선 순위를 부여하면 하기 표 4와 같이 정해질 수 있다.To solve this problem, priorities can be given again by considering the inclusion relationship of the conditions, as shown in Table 4 below.

조건condition 블록block 사용자 지정 조건 검사 순서Custom condition check order 포함관계 고려 순위 재정렬Reorder rankings considering inclusion relationships $service == "정회원" and $service == "가입"$service == "regular member" and $service == "subscription" B3: 정회원 안내B3: Regular member information 33 1One $service == "가입"$service == "Sign up" B1: 가입 안내B1: Registration instructions 1One 22 $service == "탈퇴"$service == "Withdraw" B2: 탈퇴 안내B2: Withdrawal notice 22 33

이 때, 조건의 포함관계는 조건식 내에 사용된 슬롯들의 집합의 포함관계로 결정될 수 있는데, 포함하고 있는 쪽(큰 집합)이 포함되는 쪽(작은 집합)보다 우선적으로 처리되고, 서로 포함관계가 없으면 사용자가 지정한 우선순위가 유지될 수 있다. 표 4의 예에서, level과 service를 모두 검사하는 B3의 조건이 service만 검사하는 B1, B2보다 조건 포함관계 순위가 더 높아서, B1이나 B2보다 B3가 우선적으로 처리될 수 있다.At this time, the inclusion relationship of the condition can be determined by the inclusion relationship of the set of slots used in the conditional expression. The included side (large set) is treated preferentially over the included side (small set), and if there is no inclusion relationship between them, The priority specified by the user can be maintained. In the example of Table 4, the condition of B3, which checks both level and service, has a higher condition inclusion relationship ranking than B1 and B2, which only check service, so B3 can be processed preferentially over B1 or B2.

도 23은 도 11 내지 도 17에서 예시된 커피주문 시나리오에 상응하는 조건의 포함관계에 따른 우선순위 정렬 예를 나타낸 도면이다.Figure 23 is a diagram showing an example of priority sorting according to the inclusion relationship of conditions corresponding to the coffee ordering scenarios illustrated in Figures 11 to 17.

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

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

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

인텐트로 블록을 찾을 때는 인텐트를 포함하고 있는 블록들의 인텐트 조건들의 우선순위, 사용자가 정의한 우선순위 순으로 정렬하여 적합한 블록을 검색할 수 있다.When searching for a block with an intent, you can search for a suitable block by sorting it in the order of the priority of the intent conditions of the blocks containing the intent and the priority defined by the user.

조건에 맞지 않아 적합한 블록을 찾지 못했을 때는 다음으로 적합한 인텐트를 사용하여 위 방법을 반복할 수 있다.If a suitable block is not found because the conditions are not met, the above method can be repeated using the next suitable intent.

조건이 맞는 블록을 찾았을 때는 해당 블록으로 이동한 후 챗봇의 응답 프로세스에 정해진 동작을 수행하고 조건에 따라 다음 사용자 응답 대기 상태로 진입할 수 있다.When you find a block that meets the conditions, you can move to that block, perform actions determined by the chatbot's response process, and enter a state waiting for the next user response depending on the conditions.

도 24는 챗봇 실행에 필요한 모듈들의 일 예를 나타낸 블록도이다.Figure 24 is a block diagram showing an example of modules required to run a chatbot.

도 24를 참조하면, 봇 디자이너가 정의한 리소스들을 챗봇이 실행할 때 필요한 모듈들은 대화 흐름 처리기를 중심으로 크게 나눈다면, 메시지 입출력을 제어하는 부분, 블록 상태를 관리하는 부분, 자연어를 처리하는 부분, 블록 조건들을 처리하는 부분 및 블록들을 실행하는 부분으로 볼 수 있다.Referring to Figure 24, the modules required when a chatbot executes the resources defined by the bot designer are roughly divided around the conversation flow processor: a part that controls message input and output, a part that manages block status, a part that processes natural language, and a block. It can be seen as a part that processes conditions and a part that executes blocks.

도 24의 예에서, 챗봇 실행에 필요한 모듈들은 대화 흐름 처리기, 블록 상태 관리기, 메시지 입력 게이트웨이, 메시지 출력 게이트웨이, 응답 메시지 생성기, 블록 프로세스 실행기, NLU 검색기, 블록 검색기, 의도 분류기, 슬롯 추출기, 자연어 처리기, NLU 우선 순위 관리자, 조건 해석기 및 블록 조건 우선순위 관리자를 포함할 수 있다.In the example of Figure 24, the modules required to run the chatbot are conversation 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, and natural language processor. , may include an NLU priority manager, a condition interpreter, and a block condition priority manager.

도 25는 챗봇 실행 중 인텐트와 블록을 검색하는 과정을 나타낸 도면이다.Figure 25 is a diagram showing the process of searching intents and blocks while running a chatbot.

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

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

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

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

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

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

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

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

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

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

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

이 때, 슬롯 조건은 하나 이상의 슬롯(slot)에 관련된 조건문에 상응하는 것일 수 있다.At this time, the slot condition may correspond to a conditional statement related to one or more slots.

이 때, 슬롯 조건은 널(NULL) 조건을 포함할 수 있다.At this time, the slot condition may include a null condition.

이 때, 인텐트 매핑 리스트는 복수의 인텐트들에 상응하는 인텐트 식별자들 및 슬롯 조건들을 포함하는 경우가 있고(N:1), 상기 인텐트는 서로 상이한 실행블록들이 동일한 인텐트 식별자를 가지는 경우에 상기 슬롯 조건들이 상이하면 서로 상이한 실행블록들에 연결(1:N)될 수 있다.At this time, the intent mapping list may include intent identifiers and slot conditions corresponding to a plurality of intents (N:1), and the intent is one in which 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.

이 때, 실행블록에 상응하는 슬롯들은, 상기 인텐트 매핑 리스트를 통해 상기 실행블록과 연결된 인텐트들의 슬롯들을 포함할 수 있다.At this time, 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 inclusion relationship of the slot condition corresponding to the large set. It may be selected with priority over the second execution block having an inclusion relationship of slot conditions corresponding to a small set included in . At this time, the inclusion relationship of the slot condition may be the inclusion relationship of slots included in the slot condition. For example, an execution block corresponding to $level == "regular member" and $service == "subscription" may be selected with priority over an execution block corresponding to $service == "subscription".

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

상술한 구성에 의하여, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 N:N(N은 자연수) 매핑이 가능하도록 하여, 여러가지 다른 발화들로 하나의 기능을 실행할 수 있고, 반대로 유사한 발화들로 전혀 다른 기능을 수행할 수 있다.By the above-described configuration, the chatbot service provision method according to an embodiment of the present invention has an N:N (N is a natural number) mapping between intents classified appropriately for a natural language processor and execution blocks that process 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.

또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계를 정의하는 것이 가능하다.Additionally, the chatbot service provision method according to an embodiment of the present invention allows defining various intent-execution block mapping relationships using an intent mapping list that includes an intent identifier and a slot condition for each intent.

또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 사용자 대화에 상응하는 인텐트를 식별할 때, 현재 실행블록 이후에 실행될 수 있는 후보블록들을 식별하고, 후보블록들과 연결된 인텐트들만을 식별 대상으로 하여 빠르고 정확한 인텐트 식별이 가능하다.In addition, the method of providing a chatbot service 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 only intents connected to the candidate blocks are used. By targeting identification, fast and accurate intent identification is possible.

도 27은 발화 패턴수 증가에 따른 자연어 처리기 성능을 나타낸 그래프이다.Figure 27 is a graph showing natural language processor performance as the number of speech patterns increases.

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

이런 문제를 해결하기 위해 자연어 처리기가 처리하기 적합한 형태로 유사한 발화 패턴별로 인텐트를 정의할 수 있도록 함으로써, 발화 패턴이 늘어나더라도 B과 같이 자연어 처리기 성능을 높게 유지할 수 있다.To solve this problem, by allowing the natural language processor to define intents for each similar speech pattern in a form suitable for processing, the performance of the natural language processor can be maintained as high as B even if the speech pattern increases.

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

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

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

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

컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 혹은 코드로도 알려져 있음)은 컴파일되거나 해석된 언어나 선험적 혹은 절차적 언어를 포함하는 프로그래밍 언어의 어떠한 형태로도 작성될 수 있으며, 독립형 프로그램이나 모듈, 컴포넌트, 서브루틴 혹은 컴퓨터 환경에서 사용하기에 적합한 다른 유닛을 포함하여 어떠한 형태로도 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 반드시 대응하는 것은 아니다. 프로그램은 요청된 프로그램에 제공되는 단일 파일 내에, 혹은 다중의 상호 작용하는 파일(예컨대, 하나 이상의 모듈, 하위 프로그램 혹은 코드의 일부를 저장하는 파일) 내에, 혹은 다른 프로그램이나 데이터를 보유하는 파일의 일부(예컨대, 마크업 언어 문서 내에 저장되는 하나 이상의 스크립트) 내에 저장될 수 있다. 컴퓨터 프로그램은 하나의 사이트에 위치하거나 복수의 사이트에 걸쳐서 분산되어 통신 네트워크에 의해 상호 접속된 다중 컴퓨터나 하나의 컴퓨터 상에서 실행되도록 전개될 수 있다.A computer program (also known as a program, software, software application, script, or code) may be written in any form of a programming language, including compiled, interpreted, a priori, or procedural languages, as a stand-alone program, or as a module. It can be deployed in any form, including components, subroutines, or other units suitable for use in a computer environment. Computer programs do not necessarily correspond to files in a file system. A program may be stored within a single file that serves the requested program, or within multiple interacting files (e.g., files storing one or more modules, subprograms, or portions of code), or as part of a file that holds other programs or data. (e.g., one or more scripts stored within a markup language document). The computer program may be deployed to run on a single computer or multiple computers located at one site or distributed across multiple sites and interconnected by a communications network.

한편, 컴퓨터 프로그램 명령어와 데이터를 저장하기에 적합한 컴퓨터로 판독 가능한 매체는, 예컨대 EPROM, EEPROM 및 플래시메모리 장치와 같은 반도체 메모리 장치, 예컨대 내부 하드디스크나 외장형 디스크와 같은 자기 디스크, 자기광학 디스크 및 CD-ROM과 DVD-ROM 디스크를 포함하여 모든 형태의 비휘발성 메모리, 매체 및 메모리 장치를 포함할 수 있다. 프로세서와 메모리는 특수 목적의 논리 회로에 의해 보충되거나, 그것에 통합될 수 있다.Meanwhile, computer-readable media suitable for storing computer program instructions and data include semiconductor memory devices such as EPROM, EEPROM, and flash memory devices, magnetic disks such as internal hard disks and external disks, magneto-optical disks, and CDs. -Can include all forms of non-volatile memory, media, and memory devices, including ROM and DVD-ROM disks. The processor and memory may be supplemented by, or integrated into, special-purpose logic circuitry.

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

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

또한, 본 명세서에서는 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 시스템 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 시스템들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징될 수 있다는 점을 이해하여야 한다Additionally, although operations are depicted in the drawings in a specific order herein, this should not be understood to mean that such operations must be performed in the specific order or sequential order shown or that all illustrated operations must be performed to obtain desirable results. Can not be done. In certain cases, multitasking and parallel processing may be advantageous. Additionally, the separation of various system components in the above-described embodiments should not be construed as requiring such separation in all embodiments, and the described program components and systems may generally be integrated together into a single software product or packaged into multiple software products. You must understand that you can

이와 같이, 본 명세서는 그 제시된 구체적인 용어에 본 발명을 제한하려는 의도가 아니다. 따라서, 상술한 예를 참조하여 본 발명을 상세하게 설명하였지만, 당업자라면 본 발명의 범위를 벗어나지 않으면서도 본 예들에 대한 개조, 변경 및 변형을 가할 수 있다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.As such, this specification is not intended to limit the invention to the specific terms presented. Accordingly, although the present invention has been described in detail with reference to the above-described examples, those skilled in the art may make modifications, changes, and variations to the examples without departing from the scope of the present invention. The scope of the present invention is indicated by the claims described below rather than the detailed description above, and all changes or modified forms derived from the meaning and scope of the claims and their equivalent concepts should be interpreted as being included in the scope of the present invention. do.

이상에서와 같이 본 발명에 따른 조건식 생성 인터페이스를 이용한 챗봇 서비스 제공 방법 및 장치는 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.As described above, the method and device for providing a chatbot service using a conditional generation interface according to the present invention is not limited to the configuration and method of the embodiments described above, and the embodiments can be modified in various ways. All or part of each embodiment may be selectively combined to allow for configuration.

본 발명에 의하면 조건식 생성 인터페이스를 이용한 챗봇 서비스 제공 방법 및 장치가 개시된다. 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은, 조건식 생성 인터페이스를 제공하는 단계, 및 상기 조건식 생성 인터페이스를 통해 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성하는 단계를 포함한다. 이에 따라, 사용자가 챗봇 빌더 혹은 챗봇 서비스 제공 장치를 이용하여 챗봇 실행을 위한 조건식을 설정할 경우, 조건식에 대한 오류는 감소시키고 가독성을 향상시키는 것이 가능해져서 챗봇을 효과적으로 구출하는 것이 가능하다.According to the present invention, a method and device for providing a chatbot service using a conditional expression generation interface are disclosed. A chatbot service provision method according to an embodiment of the present invention includes providing a conditional expression creation interface, and generating an execution block for processing an intent corresponding to a user conversation through the conditional expression creation interface. Accordingly, when a user sets a conditional expression for chatbot execution using a chatbot builder or a chatbot service provider, it is possible to reduce errors in the conditional expression and improve readability, making it possible to effectively rescue the chatbot.

910: 통신부 920: 프로세서
930: 메모리 1010: 챗봇
1020: 자연어 처리기 1030: 챗봇 리소스 DB
1040: 챗봇 빌더
910: Communication unit 920: Processor
930: Memory 1010: Chatbot
1020: Natural language processor 1030: Chatbot resource DB
1040: Chatbot Builder

Claims (5)

조건식을 생성하고, 상기 조건식 중 임의의 위치에 입력된 괄호의 짝을 추천하는 조건식 생성 인터페이스를 제공하는 단계; 및
상기 조건식 생성 인터페이스를 통해 사용자 대화에 상응하는 인텐트를 처리하기 위한 실행블록을 생성하는 단계
를 포함하고,
상기 조건식 생성 인터페이스는
상기 입력된 괄호의 종류를 기반으로 상기 임의의 위치가 괄호 입력 가능 위치인지 여부를 고려하여 상기 임의의 위치를 보정하는 것을 특징으로 하는 조건식 생성 인터페이스를 이용한 챗봇 서비스 제공 방법.
Generating a conditional expression and providing a conditional expression creation interface that recommends a pair of parentheses entered at an arbitrary position in the conditional expression; and
Creating an execution block for processing an intent corresponding to a user conversation through the conditional expression creation interface.
Including,
The conditional expression creation interface is
A chatbot service providing method using a conditional expression generation interface, characterized in that the arbitrary position is corrected based on the type of the input parenthesis by considering whether the arbitrary position is a position where parentheses can be input.
삭제delete ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈◈Claim 3 was abandoned upon payment of the setup registration fee.◈ 청구항 1에 있어서,
상기 조건식 생성 인터페이스는
상기 임의의 위치를 이동시켜 보정한 이후에 보정된 위치에 입력된 괄호의 짝을 추천하는 것을 특징으로 하는 조건식 생성 인터페이스를 이용한 챗봇 서비스 제공 방법.
In claim 1,
The conditional expression creation interface is
A method of providing a chatbot service using a conditional expression generation interface, characterized in that after correcting the random position by moving it, a pair of parentheses entered at the corrected position is recommended.
◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈◈Claim 4 was abandoned upon payment of the setup registration fee.◈ 청구항 3에 있어서,
상기 조건식 생성 인터페이스는
상기 입력된 괄호의 종류가 여는 괄호인 경우에는 상기 입력된 괄호의 위치를 상기 조건식의 앞으로 이동시키면서 보정을 수행하고, 상기 입력된 괄호의 종류가 닫는 괄호인 경우에는 상기 입력된 괄호의 위치를 상기 조건식의 뒤로 이동시키면서 보정을 수행하는 것을 특징으로 하는 조건식 생성 인터페이스를 이용한 챗봇 서비스 제공 방법.
In claim 3,
The conditional expression creation interface is
If the type of the input parenthesis is an open parenthesis, correction is performed by moving the position of the input parenthesis to the front of the conditional expression, and if the type of the input parenthesis is a closing parenthesis, the position of the input parenthesis is performed as above. A method of providing a chatbot service using a conditional expression creation interface, characterized by performing correction while moving the conditional expression to the back.
◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈◈Claim 5 was abandoned upon payment of the setup registration fee.◈ 청구항 1에 있어서,
상기 조건식은
조건 변수, 비교연산자 및 조건 값의 조합으로 구성되는 적어도 하나의 조건을 포함하는 것을 특징으로 하는 조건식 생성 인터페이스를 이용한 챗봇 서비스 제공 방법.
In claim 1,
The above conditional expression is
A method of providing a chatbot service using a conditional expression generation interface, characterized in that it includes at least one condition consisting of a combination of a condition variable, a comparison operator, and a condition value.
KR1020220166643A 2020-09-17 2022-12-02 Method and apparatus for providing chatbot service using condition expression generated interface KR102655058B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220166643A KR102655058B1 (en) 2020-09-17 2022-12-02 Method and apparatus for providing chatbot service using condition expression generated interface

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200119906A KR102475796B1 (en) 2020-09-17 2020-09-17 Method and apparatus for providing chatbot service using condition expression generated interface
KR1020220166643A KR102655058B1 (en) 2020-09-17 2022-12-02 Method and apparatus for providing chatbot service using condition expression generated interface

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020200119906A Division KR102475796B1 (en) 2020-09-17 2020-09-17 Method and apparatus for providing chatbot service using condition expression generated interface

Publications (2)

Publication Number Publication Date
KR20220165234A KR20220165234A (en) 2022-12-14
KR102655058B1 true KR102655058B1 (en) 2024-04-08

Family

ID=80935871

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200119906A KR102475796B1 (en) 2020-09-17 2020-09-17 Method and apparatus for providing chatbot service using condition expression generated interface
KR1020220166643A KR102655058B1 (en) 2020-09-17 2022-12-02 Method and apparatus for providing chatbot service using condition expression generated interface

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020200119906A KR102475796B1 (en) 2020-09-17 2020-09-17 Method and apparatus for providing chatbot service using condition expression generated interface

Country Status (1)

Country Link
KR (2) KR102475796B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116610305B (en) * 2023-07-19 2023-09-19 湖南云畅网络科技有限公司 Expression arrangement method, system and storage medium for clamping groove adsorption type

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002197082A (en) * 2001-11-20 2002-07-12 Matsushita Electric Ind Co Ltd Machine translation method and system
KR102148439B1 (en) * 2019-10-24 2020-08-26 한경훈 Server, method, and system for providing chatbot service with adaptive development environment based on block unit combined api function and scenario

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101900811B1 (en) * 2016-07-05 2018-09-20 한다시스템 주식회사 Method and computer program for designing a query
KR102445382B1 (en) 2017-07-10 2022-09-20 삼성전자주식회사 Voice processing method and system supporting the same

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002197082A (en) * 2001-11-20 2002-07-12 Matsushita Electric Ind Co Ltd Machine translation method and system
KR102148439B1 (en) * 2019-10-24 2020-08-26 한경훈 Server, method, and system for providing chatbot service with adaptive development environment based on block unit combined api function and scenario

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
이성훈 외 2인, 지능형 IoE 플랫폼을 위한 Nools 기반 룰 엔진의 설계 및 구현, 한국정보전자통신기술학회논문지 Vol.11 No.4, 2018.

Also Published As

Publication number Publication date
KR20220165234A (en) 2022-12-14
KR102475796B1 (en) 2022-12-08
KR20220037217A (en) 2022-03-24

Similar Documents

Publication Publication Date Title
US11727941B2 (en) Managing dialog data providers
US20230359656A1 (en) Method for adaptive conversation state management with filtering operators applied dynamically as part of a conversational interface
US10984332B2 (en) Predictive customer service environment
US10460029B2 (en) Reply information recommendation method and apparatus
US10446137B2 (en) Ambiguity resolving conversational understanding system
CN107924483B (en) Generation and application of generic hypothesis ranking model
US20180203833A1 (en) Data collection for a new conversational dialogue system
US20120253789A1 (en) Conversational Dialog Learning and Correction
US20200334740A1 (en) System and method for a hybrid conversational and graphical user interface
WO2018052800A1 (en) Computerized natural language query intent dispatching
EP2691877A2 (en) Conversational dialog learning and correction
JP5368924B2 (en) Apparatus and method for progressive development of natural language user interfaces
KR102655058B1 (en) Method and apparatus for providing chatbot service using condition expression generated interface
US20230049813A1 (en) Initiating conversation monitoring system action based on conversational content
KR102566822B1 (en) Method and apparatus for providing chatbot service
JP2014532942A (en) Social page trigger
KR102466947B1 (en) Method and apparatus for providing chatbot service based on slot filling
JPWO2019202787A1 (en) Dialogue system
JP7216199B2 (en) dialogue system
US20130055138A1 (en) Dynamically changing key selection based on context
KR102192447B1 (en) Method and for providing automatic translation in user conversation using multiple languages
KR102518901B1 (en) Method and apparatus for providing chatbot service using block component
US11705122B2 (en) Interface-providing apparatus and interface-providing method
Li et al. A Multi-modal Approach to Concept Learning in Task Oriented Conversational Agents
WO2023244514A1 (en) Guided augmention of data sets for machine learning models

Legal Events

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