KR20220087416A - 챗봇 서비스 제공 방법 및 장치 - Google Patents

챗봇 서비스 제공 방법 및 장치 Download PDF

Info

Publication number
KR20220087416A
KR20220087416A KR1020220072022A KR20220072022A KR20220087416A KR 20220087416 A KR20220087416 A KR 20220087416A KR 1020220072022 A KR1020220072022 A KR 1020220072022A KR 20220072022 A KR20220072022 A KR 20220072022A KR 20220087416 A KR20220087416 A KR 20220087416A
Authority
KR
South Korea
Prior art keywords
intent
block
execution
chatbot
intents
Prior art date
Application number
KR1020220072022A
Other languages
English (en)
Other versions
KR102566822B1 (ko
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 KR1020220072022A priority Critical patent/KR102566822B1/ko
Publication of KR20220087416A publication Critical patent/KR20220087416A/ko
Application granted granted Critical
Publication of KR102566822B1 publication Critical patent/KR102566822B1/ko

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
    • G06F16/3325Reformulation based on results of preceding query
    • G06F16/3326Reformulation based on results of preceding query using relevance feedback from the user, e.g. relevance feedback on documents, documents sets, document terms or passages
    • G06F16/3328Reformulation based on results of preceding query using relevance feedback from the user, e.g. relevance feedback on documents, documents sets, document terms or passages using graphical result space presentation or visualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • 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

챗봇 서비스 제공 방법 및 장치가 개시된다. 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은, 사용자 대화에 상응하는 인텐트를 결정하는 단계, 인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택하는 단계, 및 상기 실행블록에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행하는 단계를 포함한다. 이 때, 상기 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응한다.

Description

챗봇 서비스 제공 방법 및 장치 {METHOD AND APPARATUS FOR PROVIDING CHATBOT SERVICE}
본 발명은 챗봇(chatbot) 서비스 제공 방법 및 장치에 관한 것으로, 사용자로부터 음성이나 문자를 입력 받아서, 이를 자동으로 인식하고, 인식된 결과에 기반하여 사용자의 의도를 파악하여 사용자에게 필요한 서비스를 제공하는 기술에 관한 것이다.
본 명세서에서 달리 표시되지 않는 한, 이 섹션에 설명되는 내용들은 이 출원의 청구항들에 대한 종래 기술이 아니며, 이 섹션에 포함된다고 하여 종래 기술이라고 인정되는 것은 아니다.
챗봇(chatbot)은 문자나 음성으로 대화하는 기능이 구비된 컴퓨터 프로그램이나 인공지능을 말하며, 사람처럼 자연스러운 대화를 진행하기 위해 단어나 구(句)의 매칭만을 이용하는 단순한 챗봇부터 복잡하고 정교한 자연어 처리 기술을 적용한 챗봇까지 다양한 수준의 챗봇들이 존재한다.
챗봇을 이용한 대화형 AI 에이전트 시스템은 사용자의 입력에 대해 사용자가 원하는 서비스가 어떤 것인지를 파악하고 그 응답을 제공한다. 이 때, 사용자가 자연스러운 문장을 통하여 입력을 제공한 경우, 입력에 처리를 위해 자연어 처리 기술이 적용될 수 있다. 이를 위해, 사용자의 의도(intent)가 동일한 발화 예시 문장들 여러 개를 모아서 하나의 인텐트로 분류한다. 이렇게 분류된 인텐트들 각각에 대응하는 봇 응답을 매핑(mapping)하거나 서비스 API 호출 등의 동작을 정의함으로써 사용자의 다양한 자연 발화를 처리할 수 있는 챗봇 서비스 제공이 가능하다.
하나의 사용자의 발화 단위(인텐트)별로 하나의 봇 응답 단위(실행블록)를 매핑하는 경우, 서비스 기능이 늘어날수록 봇 응답들과 이에 대응하는 인텐트들도 늘어나게 된다. 인텐트들의 개수가 늘어날수록, 자연어 처리시에는 유사한 발화가 서로 다른 인텐트들에 할당되게 되고, 의도 분류시 복수의 근소한 스코어(score) 차이를 가지는 인텐트들이 발생하게 되어 의도 분류에서 오류가 발생할 가능성이 높아진다.
인텐트의 개수가 늘어나지 않더라도, 사용자의 자연스러운 다양한 발화를 인식하기 위해 인텐트에 다양한 발화 패턴을 등록하게 되면, 유사한 패턴이 여러 인텐트에 등록되게 되므로 자연어 처리기에서 서로 다른 인텐트간에 유사한 발화를 정확히 처리하기 어려워서 의도 분류에 오류가 발생하기 쉽다.
즉, 인텐트와 봇 응답 단위가 1:1로 매핑되는 상황에 맞추어 발화를 분류하게 되면 인텐트 개수가 늘어나거나 인텐트에 등록된 예시 발화 문장의 개수가 늘어날수록 자연어 처리기의 성능이 떨어지는 문제가 발생하고, 자연어 처리기의 성능을 보장하기 위해 발화를 분류하게 되면 인텐트 하나에 유사한 발화 패턴을 모두 정의하게 되어 해당 인텐트에 매핑되는 블록의 구현이 매우 복잡해지고 실제 제공되는 여러 기능이 블록 하나에 매핑되는 상황이 되어 관리상의 어려움이 불가피하다.
또한, 대부분의 챗봇은 사용자 발화시 모든 인텐트를 대상으로 서치(search)하여 봇의 동작을 프로세싱하는데, 이와 같이 모든 인텐트를 대상으로 서치하는 경우에는 자연어 처리기의 결과 처리 문제와 봇 응답 및 액션 구성이 복잡해지는 문제가 발생한다.
따라서, 인텐트와 봇 응답 단위를 보다 자유롭게 매핑할 수 있는 새로운 챗봇 서비스 제공 기술의 필요성이 절실하게 대두된다.
한국공개특허 제10-2019-0006403호, 2019년 01월 18일 공개(명칭: 음성 처리 방법 및 이를 지원하는 시스템)
본 발명의 목적은 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 N:N(N은 자연수) 매핑이 가능하도록 하여, 여러가지 다른 발화들로 하나의 기능을 실행할 수 있고, 반대로 유사한 발화들로 전혀 다른 기능을 수행할 수 있도록 하는 것이다.
또한, 본 발명의 목적은 하나 이상의 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계가 가능해지도록 하는 것이다.
또한, 본 발명의 목적은 사용자 대화에 상응하는 인텐트를 식별할 때, 현재 실행블록 이후에 실행될 수 있는 후보블록들을 식별하고, 후보블록들과 연결된 인텐트들만을 식별 대상으로 하여 빠르고 정확한 인텐트 식별이 가능하도록 하는 것이다.
또한, 본 발명의 목적은 상술한 바와 같은 목적들로 한정되지 않으며, 이하의 설명으로부터 또 다른 목적이 도출될 수도 있음은 자명하다.
상기한 목적을 달성하기 위하여 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 사용자 대화에 상응하는 인텐트를 결정하는 단계; 인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택하는 단계; 및 상기 실행블록에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행하는 단계를 포함한다. 이 때, 상기 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응한다.
이 때, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다.
이 때, 슬롯 조건은 하나 이상의 슬롯(slot)에 관련된 조건문에 상응하는 것일 수 있다.
이 때, 슬롯 조건은 널(NULL) 조건을 포함할 수 있다.
이 때, 인텐트 매핑 리스트는 복수의 인텐트들에 상응하는 인텐트 식별자들 및 슬롯 조건들을 포함하는 경우가 있고(N:1), 상기 인텐트는 서로 상이한 실행블록들이 동일한 인텐트 식별자를 가지는 경우에 상기 슬롯 조건들이 상이하면 서로 상이한 실행블록들에 연결(1:N)될 수 있다.
이 때, 실행블록에 상응하는 슬롯들은 상기 인텐트 매핑 리스트를 통해 상기 실행블록과 연결된 인텐트들의 슬롯들을 포함할 수 있다.
이 때, 사용자 대화에 상응하는 인텐트는 현재 블록과 그래프(graph)를 통해 연결된 하나 이상의 후보블록 또는 메인블록에 연결된 인텐트 후보 내에서 선택될 수 있다.
이 때, 사용자 대화에 상응하는 인텐트는 상기 후보블록에 연결된 제1 인텐트 후보가 상기 메인블록에 연결된 제2 인텐트 후보보다 우선적으로 고려되어 결정될 수 있다.
이 때, 인텐트에 상응하는 실행블록은 상기 사용자 대화에 상응하는 인텐트가 복수개의 실행블록들과 연결되는 경우, 큰 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제1 실행블록이 상기 큰 집합에 포함되는 작은 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제2 실행블록보다 우선적으로 고려되어 선택될 수 있다.
또한, 상기한 목적을 달성하기 위하여 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치는, 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고, 상기 적어도 하나 이상의 프로그램은, 사용자 대화에 상응하는 인텐트를 결정하고, 인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택하고, 상기 실행블록에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행하되, 상기 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응할 수 있다.
이 때, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다.
이 때, 슬롯 조건은 하나 이상의 슬롯(slot)에 관련된 조건문에 상응하는 것일 수 있다.
이 때, 슬롯 조건은 널(NULL) 조건을 포함할 수 있다.
이 때, 인텐트 매핑 리스트는 복수의 인텐트들에 상응하는 인텐트 식별자들 및 슬롯 조건들을 포함하는 경우가 있고(N:1), 상기 인텐트는 서로 상이한 실행블록들이 동일한 인텐트 식별자를 가지는 경우에 상기 슬롯 조건들이 상이하면 서로 상이한 실행블록들에 연결(1:N)될 수 있다.
이 때, 실행블록에 상응하는 슬롯들은 상기 인텐트 매핑 리스트를 통해 상기 실행블록과 연결된 인텐트들의 슬롯들을 포함할 수 있다.
이 때, 사용자 대화에 상응하는 인텐트는 현재 블록과 그래프(graph)를 통해 연결된 하나 이상의 후보블록 또는 메인블록에 연결된, 인텐트 후보 내에서 선택될 수 있다.
이 때, 사용자 대화에 상응하는 인텐트는 상기 후보블록에 연결된 제1 인텐트 후보가 상기 메인블록에 연결된 제2 인텐트 후보보다 우선적으로 고려되어 결정될 수 있다.
이 때, 인텐트에 상응하는 실행블록은 상기 사용자 대화에 상응하는 인텐트가 복수개의 실행블록들과 연결되는 경우, 큰 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제1 실행블록이 상기 큰 집합에 포함되는 작은 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제2 실행블록보다 우선적으로 고려되어 선택될 수 있다.
본 발명에 따르면, 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 N:N(N은 자연수) 매핑이 가능하도록 하여, 여러가지 다른 발화들로 하나의 기능을 실행할 수 있고, 반대로 유사한 발화들로 전혀 다른 기능을 수행할 수 있다.
또한, 본 발명은 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계를 정의하는 것이 가능하다.
또한, 본 발명은 사용자 대화에 상응하는 인텐트를 식별할 때, 현재 실행블록 이후에 실행될 수 있는 후보블록들을 식별하고, 후보블록들과 연결된 인텐트들만을 식별 대상으로 하여 빠르고 정확한 인텐트 식별이 가능하다.
본 실시 예들의 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일실시예에 따른 챗봇 서비스 시스템을 나타낸 블록도이다.
도 2는 본 발명의 일실시예에 따른 '커피 주문' 시나리오의 블록 다이어그램을 나타낸 도면이다.
도 3은 도 2에 도시된 시나리오에 사용되는 인텐트들의 일 예를 나타낸 도면이다.
도 4는 복수개의 인텐트들과 복수개의 실행블록들 사이의 연결을 나타낸 블록도이다.
도 5는 도 4에 도시된 실행블록 커피선택의 일 예를 나타낸 도면이다.
도 6은 도 4에 도시된 실행블록 핫아이스확인의 일 예를 나타낸 도면이다.
도 7은 도 4에 도시된 실행블록 테이크아웃확인의 일 예를 나타낸 도면이다.
도 8은 도 4 내지 도 7에 도시된 실행블록들의 연결관계를 나타낸 블록도이다.
도 9는 실행블록에서 사용자 응답 대기 상태를 정의하여 블록들을 연결하는 일 예를 도시한 도면이다.
도 10은 발화 패턴별로 정의된 인텐트를 블록에 매핑하는 일 예를 나타낸 도면이다.
도 11은 인텐트와 실행블록을 1:1 매핑하는 경우를 나타낸 도면이다.
도 12는 본 발명의 일실시예에 따른 인텐트 분류 및 블록 매핑의 일 예를 나타낸 도면이다.
도 13은 도 12에 도시된 응답들에 상응하는 실행블록들을 나타낸 도면이다.
도 14는 도 2 내지 도 8에서 예시된 커피주문 시나리오에 상응하는 조건의 포함관계에 따른 우선순위 정렬 예를 나타낸 도면이다.
도 15는 챗봇 실행에 필요한 모듈들의 일 예를 나타낸 블록도이다.
도 16은 챗봇 실행 중 인텐트와 블록을 검색하는 과정을 나타낸 도면이다.
도 17은 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법을 나타낸 동작 흐름도이다.
도 18은 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치를 나타낸 블록도이다.
도 19는 발화 패턴수 증가에 따른 자연어 처리기 성능을 나타낸 그래프이다.
이하 본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 상세히 설명한다. 다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.
이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위한 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다. 또한 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하기 위해 사용하는 것으로, 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용될 뿐, 상기 구성요소들을 한정하기 위해 사용되지 않는다.
본 발명은 대화형 AI 에이전트 시스템에 의해 수행되는 자연어 처리에 따라 자연어의 입력에 대응하는 인텐트를 유사한 속성에 따라 분류하고, 분류된 복수의 인텐트들을 봇의 처리 단위인 블록에 매핑하는 기술에 관한 것이다.
유용한 챗봇 서비스를 위해서는 사업이나 서비스 도메인별 용어들에 대한 자연어 처리 능력 및 제공되는 기능이나 업무에 대한 처리 능력을 지속적으로 향상시킬 필요가 있다.
이를 위해, 다양한 도메인별 용어들과 문장들이 자연어 처리기에 의하여 처리될 수 있도록 자연어 처리기를 학습시킬 필요가 있는데, 이 때 자연어 처리기에서 유사 발화들 간의 충돌이 발생하지 않도록 인텐트들을 분류해야 한다. 즉, 기능이나 업무 단위로만 인텐트를 정의하는 것이 아니라 자연어 처리(Natural Language Understanding; NLU)의 관점에서의 인텐트 정의가 필요한 것이다.
한편, 기능이나 업무에 대한 처리가 효과적으로 이루어지기 위해서는 세부 처리 단계나 흐름이 실행블록들로 정의되어야 하고, 정의된 실행블록들의 연결관계(선후관계)가 정의될 필요가 있다. 이 때, 연결관계는 리스트나 트리 형태보다는 여러 실행블록들을 자유롭게 연결하기 위한 그래프 형태로 정의되는 것이 바람직하다. 이 때, 실행블록들은 자연어 처리의 관점보다는 서비스가 제공하는 기능에 적합하게 정의되는 것이 바람직하다.
이와 같이, 각각의 목적에 맞게 적합한 형태로 정의된 인텐트들과 블록들을 자유롭게(N:N) 맵핑할 수 있어야, 사용자의 의도에 부합하는 챗봇 서비스를 효율적으로 제공할 수 있다. 즉, 인텐트 하나가 여러 블록에 쓰일 수 있고, 또 블록 하나가 여러 인텐트들을 처리할 수 있어야 하고, 이를 위해서는 인텐트들과 블록들이 1:1 매핑이 아닌 N:N으로 매핑될 수 있어야 한다.
많은 양의 발화 패턴들이 다양한 인텐트들로 분류된 대량의 데이터를 처리할 때, 유사 발화들 간의 충돌이 발생하고 이에 대한 검증과 처리가 필요하다.
이 때, 유사 발화 패턴들을 같은 인텐트로 묶고, 슬롯을 기준으로 조건을 주어 서로 다른 봇 응답이 가능하도록 대응할 수 있다.
또한, 유사 발화는 아니지만, 같은 응답으로 처리 가능할 수 있도록, 하나의 봇 응답 단위(실행블록)에 복수 개의 사용자 발화단위들을 매핑하는 것이 가능하도록 하면, 발화 유형이 다르더라도 같은 응답으로 처리하는 것이 가능하게 되어 효율적인 인텐트 관리가 가능하다.
이하에서, 챗봇 서비스는 사용자의 음성을 기반으로 하는 음성 서비스뿐만 아니라 사용자로부터 입력된 텍스트를 기반으로 하는 메신저 서비스를 커버하는 개념이다.
챗봇의 설계 및 구현은, 크게 챗봇 빌더, 자연어 처리(Natural Language Understanding; NLU) 및 대화흐름처리(Dialog Management; DM)의 3부분으로 나눌 수 있다. 이 때, 챗봇 빌더에서는 대화흐름처리(DM)가 동작하기 위한 데이터를 구조화하고 정의하여 이를 제공하고, 대화흐름처리(DM)에서는 이 데이터를 기반으로 봇 대응을 처리한다.
챗봇 프로세스가 구동을 위해 크게 두 개의 작업영역이 필요할 수 있는데, 하나는 봇 디자이너가 봇 구동 프로세스를 정의하는 작업영역이고, 다른 하나는 정의된 프로세스를 실행하는 실행영역이다.
도 1은 본 발명의 일실시예에 따른 챗봇 서비스 시스템을 나타낸 블록도이다.
도 1을 참조하면, 챗봇 서비스 시스템은 챗봇(110), 자연어 처리기(120), 챗봇 리소스 데이터베이스(130) 및 챗봇 빌더(140)를 포함한다.
챗봇(110)은 사용자로부터 발화문장을 입력 받고, 이에 대한 응답을 생성하여 사용자에게 챗봇 응답을 제공한다.
자연어 처리기(120)는 챗봇으로부터 발화문장을 제공 받고, 챗봇 리소스 데이터베이스(130)로부터 인텐트 정의 정보를 제공 받아서 인텐트 분류 결과 및 슬롯 추출 결과를 생성하여 챗봇(110)으로 제공한다.
챗봇 리소스 데이터베이스(130)는 챗봇 빌더로부터 인텐트 정의 정보, 블록 정보, 응답 정보 및 시나리오 정보 등을 제공 받고, 챗봇(110)으로 블록 정보, 응답 정보 및 시나리오 정보를 제공하고, 자연어 처리기(120)로 인텐트 정의 정보를 제공한다.
챗봇 빌더(140)는 봇디자이너로부터 챗봇 리소스에 관한 입력을 제공 받고, 챗봇(110)을 생성하고, 챗봇 리소스 데이터베이스(130)로 인텐트 정의 정보, 블록 정보, 응답 정보 및 시나리오 정보 등을 제공한다.
챗봇 빌더(140)에서 학습 발화문장과 봇 처리의 중요정보인 슬롯(slot)을 인텐트로 정의하고, 정의된 인텐트를 실행블록에 매핑하고 실행블록에서 조건을 설정하고 이에 따른 봇의 액션을 정의할 수 있다. 또한, 챗봇 빌더(140)에서 응답대기상태에서 처리할 수 있는 블록들이 설정되고, 이 블록들이 그래프 형태의 시나리오로 정의될 수 있다.
이 때, 봇 디자이너는 챗봇 빌더(140)를 통해 봇 구동 프로세스를 정의하는 작업을 하는데, 먼저 주요 업무처리에 대한 봇 시나리오들이 그래프 형태로 정의된 블록 다이어그램이 제공될 수 있다.
도 2는 본 발명의 일실시예에 따른 '커피 주문' 시나리오의 블록 다이어그램을 나타낸 도면이다.
도 2를 참조하면, 커피 주문 챗봇의 블록 발화 시나리오에서는 먼저 사용자의 "커피 주문할게요"라는 발화가 수신된다(211).
또한, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 "무슨 커피 드릴까요?"라는 발화를 실행한다(221).
챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 원하는 커피 이름을 발화한다(212).
사용자의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 "따뜻한걸로 드릴까요? 아이스로 드릴까요?"라는 발화를 실행한다(222).
챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 핫(hot) 또는 아이스(ice)를 선택한다(213).
사용자의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 "드시고가실건가요?"라는 발화를 실행한다(223).
챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 매장식사 또는 테이크아웃을 선택한다(214).
$(커피이름), $(핫아이스) 및 $(테이크아웃)의 3개 슬롯들이 모두 입력되면, 커피 주문 챗봇의 블록 발화 시나리오에서는 챗봇이 주문을 확인하는 발화를 실행한다(224).
챗봇의 발화에 응답하여, 커피 주문 챗봇의 블록 발화 시나리오에서는 사용자가 '예'(215) 또는 '아니오'(216)를 발화하고, 사용자가 '예'라고 발화한 경우에는 챗봇이 커피 주문을 실행하는 커스텀 액션(custom action)을 실행하고(225) 주문내용을 확인하는 발화를 실행하고(226), 사용자가 '아니오'라고 발화한 경우에는 챗봇이 "주문을 취소합니다."라는 발화를 실행(227)한 후 동작을 종료한다.
도 2에서 "User"는 사용자의 발화를 나타내고, "templete"는 챗봇의 발화를 나타내고, "Custom Action"은 실행블록에 의하여 정의된 봇의 동작 처리를 나타낸다.
도 2에 도시된 예에서, $(커피이름), $(핫아이스), $(테이크아웃) 및 $(주문번호)는 필수 슬롯에 해당하고, 도 2에는 명시적으로 도시되지 아니하였으나, 커피 주문 챗봇의 블록 발화 시나리오에서는 옵션슬롯이 더 사용될 수 있다. 이 때, 필수 슬롯 및/또는 옵션 슬롯은 사용자의 발화로부터 생성된 것일 수도 있고, 기타 챗봇 시스템의 상태를 나타내는 슬롯이거나 블록에서 조건에 따라 생성된 것일 수도 있다.
도 2에 도시된 바와 같은 다이어그램을 토대로 각 블록에서 처리할 수 있는 모든 발화 패턴들을 수집하고, 자연어 처리기가 분류하기 용이한 형태로 패턴들을 그룹핑할 수 있다. 또한, 그룹핑된 정보를 기준으로 인텐트가 분류되고 발화 패턴별로 슬롯을 태깅하여 인텐트가 설정되면, 그룹핑되어 분류된 인텐트를 기준으로 발화 패턴들을 학습 의도에 맞게 자연어 처리기(NLU)의 학습 데이터로 사용할 수 있다.
시나리오는 블록들을 그래프 형태로 연결한 것으로 볼 수 있고, 각 블록에서는 처리할 수 있는 인텐트들의 목록이 정의될 수 있다.
도 3은 도 2에 도시된 시나리오에 사용되는 인텐트들의 일 예를 나타낸 도면이다.
도 3을 참조하면, 커피 주문 시나리오에 사용되는 인텐트들은 인텐트 order_coffee(310), 인텐트 order_hotice(320), 인텐트 order_takeout(330), 인텐트 order_togo(340) 및 인텐트 order_eatin(350)를 포함하는 것을 알 수 있다.
이 때, 인텐트 order_coffee(310)에 대해서는 슬롯 $coffee, 슬롯 $hotice 및 슬롯 $takeout이 정의되고, 인텐트 order_hotice(320)에 대해서는 슬롯 $hotice이 정의되고, 인텐트 order_takeout(330)에 대해서는 슬롯 $takeout이 정의되고, 인텐트 order_togo(340) 및 인텐트 order_eatin(350)에 대해서는 슬롯이 정의되지 않을 수 있다.
도 3에 도시된 인텐트들을 봇이 처리할 때, 블록(처리블록)이라는 단위로 처리하게 되는데, 하나의 블록에 복수개의 인텐트들이 매핑되어 처리될 수 있다. 또한, 하나의 인텐트가 복수개의 블록들에 매핑될 수도 있다.
도 4 내지 도 7은 도 2에 도시된 시나리오에 사용되는 실행블록들의 일 예를 나타낸 도면이다.
도 4는 복수개의 인텐트들과 복수개의 실행블록들 사이의 연결을 나타낸 블록도이다.
도 4를 참조하면, 인텐트 order_coffee(310), 인텐트 order_hotice(320) 및 인텐트 order_takeout(330)이 실행블록 커피 선택(410)에 연결된 것을 알 수 있다. 이 때, 실행블록 커피 선택(410)의 인텐트 매핑 리스트에는 인텐트 order_coffee(310), 인텐트 order_hotice(320) 및 인텐트 order_takeout(330)에 상응하는 인텐트 식별자들이 포함될 수 있다.
이 때, 인텐트 order_hotice(320) 및 인텐트 order_takeout(330)은 실행블록 핫아이스확인(420)에도 연결된다.
이 때, 인텐트 order_takeout(330)는 실행블록 테이크아웃확인(430)에도 연결된다.
인텐트 order_togo(340), 인텐트 order_eatin(350), 인텐트 followup.yes(360) 및 인텐트 followup.no(370)는 실행블록 테이크아웃확인(430)에 연결된다.
도 4에 도시된 바와 같이, 인텐트들이 그 실행을 위한 블록들에 매핑되고, 매핑된 인텐트별로 슬롯이라는 변수를 기준으로 조건을 문법식으로 정의하여, 봇이 사용자 발화별 의도 분류로만 발화를 처리하지 않고 조건을 통해 적절한 세부처리가 가능하다.
도 4에 도시된 바와 같이, 하나의 블록에 복수개의 인텐트들이 연결될 수도 있고(N:1), 복수개의 블록들이 하나의 인텐트에 연결될 수도 있어서(1:N), 인텐트와 블록간의 자유로운 매핑(N:N)이 가능하다.
나아가, 하나의 실행블록은 이후 실행가능한 다른 실행블록들과의 연결관계를 가질 수 있다. 예를 들어, 실행블록 커피 선택(410)은 실행블록 핫아이스확인(420) 및 실행블록 테이크아웃확인(430)과 연결될 수 있고, 실행블록 핫아이스확인(420)은 실행블록 테이크아웃확인(430)과 연결될 수 있다.
도 5는 도 4에 도시된 실행블록 커피선택의 일 예를 나타낸 도면이다.
도 5를 참조하면, 실행블록 커피선택(410)은 연결된 인텐트 목록, 슬롯, 슬롯 필링 및 액션 정보를 포함할 수 있다.
이 때, 연결된 인텐트 목록은 인텐트 매핑 리스트에 포함될 수 있고, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다. 이 때, 슬롯 조건은 하나 이상의 슬롯에 관련된 조건문에 상응하는 것일 수 있고, 널(NULL) 조건을 포함할 수 있다.
도 5에 도시된 슬롯들($coffee, $hotice, $takeout)은 실행블록 커피선택(410)이 연결된 인텐트들(order_coffee, order_hotice, order_takeout)에 상응하는 모든 슬롯들의 합집합을 포함할 수 있다.
슬롯 필링순위 정보는 실행블록 커피선택(410)의 슬롯들의 필링순위에 관한 정보 및 해당 슬롯을 먼저 필링하기 위해 필요한 발화정보를 포함할 수 있다.
액션 정보는 조건(condition)과 해당 조건이 만족되는 경우의 응답(response)으로 이루어질 수 있다. 이 때, 조건은 슬롯을 이용한 하나 이상의 조건문에 상응하는 것일 수 있고, 응답은 다른 블록을 호출하는 링크(link)를 포함할 수 있다.
예를 들어, 실행블록 커피 선택(410)은 슬롯 $hotice를 이용한 조건 판단에 기반하여 실행블록 핫아이스확인(420)을 연결할 수 있다.
예를 들어, 실행블록 커피 선택(410)은 슬롯 $takeout을 이용한 조건 판단에 기반하여 실행블록 테이크아웃확인(430)을 연결할 수 있다.
도 6은 도 4에 도시된 실행블록 핫아이스확인의 일 예를 나타낸 도면이다.
도 6을 참조하면, 실행블록 핫아이스확인(420)은 연결된 인텐트 목록, 슬롯, 슬롯 필링 및 액션 정보를 포함할 수 있다.
도 6에 도시된 슬롯들($hotice, $takeout)은 실행블록 핫아이스확인(420)이 연결된 인텐트들(order_hotice, order_takeout)에 상응하는 모든 슬롯들의 합집합을 포함할 수 있다.
슬롯 필링순위 정보는 실행블록 핫아이스확인(420)의 슬롯들의 필링순위에 관한 정보 및 해당 슬롯을 먼저 필링하기 위해 필요한 발화정보를 포함할 수 있다.
액션 정보는 조건(condition)과 해당 조건이 만족되는 경우의 응답(response)으로 이루어질 수 있다. 이 때, 조건은 슬롯을 이용한 하나 이상의 조건문에 상응하는 것일 수 있고, 응답은 다른 블록을 호출하는 링크(link)를 포함할 수 있다.
예를 들어, 실행블록 핫아이스확인(420)은 슬롯 $takeout을 이용한 조건 판단에 기반하여 실행블록 테이크아웃확인(430)을 연결할 수 있다.
도 7은 도 4에 도시된 실행블록 테이크아웃확인의 일 예를 나타낸 도면이다.
도 7을 참조하면, 실행블록 테이크아웃확인(430)은 연결된 인텐트 목록, 슬롯, 슬롯 필링 및 액션 정보를 포함할 수 있다.
도 7에 도시된 슬롯($takeout)은 실행블록 테이크아웃확인(430)이 연결된 인텐트들(order_takeout, order_togo, order_eatin, followup.yes, followup.no)에 상응하는 모든 슬롯들의 합집합을 포함할 수 있다.
슬롯 필링순위 정보는 실행블록 테이크아웃확인(430)의 슬롯들의 필링순위에 관한 정보 및 해당 슬롯을 먼저 필링하기 위해 필요한 발화정보를 포함할 수 있다.
액션 정보는 조건(condition)과 해당 조건이 만족되는 경우의 응답(response)으로 이루어질 수 있다. 이 때, 조건은 슬롯을 이용한 하나 이상의 조건문에 상응하는 것일 수 있고, 응답은 다른 블록을 호출하는 링크(link)를 포함할 수 있다.
도 8은 도 4 내지 도 7에 도시된 실행블록들의 연결관계를 나타낸 블록도이다.
도 8을 참조하면, 실행블록 커피 선택(410), 실행블록 핫아이스확인(420) 및 실행블록 테이크아웃확인(430)이 그래프 형태로 연결된 것을 알 수 있다.
이 때, 실행블록들간의 연결은 특정 현재블록에서 사용자 발화대기 상태에 진입할 때, 사용자의 발화를 처리가능한 다음 실행블록들과의 연결을 의미할 수 있다. 즉, 특정 현재블록에서 사용자 발화가 수신되는 경우 발생가능한 상황은 현재블록과 연결된 실행블록들이므로 이들 실행블록들과 연결된 인텐트들만이 사용자 발화 처리가 필요한 인텐트들로 서칭 대상이 될 수 있다. 사용자 발화 대기 상태에서 현재 블록 기준으로 연결된 하위 블록들에 포함된 인텐트들만을 수집하여 자연어 처리기를 통해 인텐트를 검색하면 모든 인텐트를 서칭 대상으로 하는 경우에 비하여 훨씬더 신속하고 정확하게 발화에 해당하는 인텐트를 식별할 수 있게 된다.
도 8에 도시된 예에서, 실행블록 커피 선택(410)은 실행블록 핫아이스선택(420) 및 실행블록 테이크아웃확인(430)과 연결되므로, 실행블록 커피 선택(410)의 상태에서 사용자 발화가 입력되는 경우 다음 상태는 실행블록 핫아이스선택(420) 또는 실행블록 테이크아웃확인(430)이 될 수 있다.
또한, 실행블록 핫아이스선택(420)의 상태에서 사용자 발화가 입력되는 경우 다음 상태는 실행블록 테이크아웃확인(430)이 될 수 있다.
사용자 발화로부터 사용자 인텐트가 식별되면, 식별된 인텐트를 포함하는 블록들의 인텐트 조건들의 우선순위 및/또는 봇 설계자가 정의한 우선순위 순으로 정렬하여 블록들을 검색할 수 있다.
조건에 맞는 블록이 검색되면, 해당 블록으로 이동하여 해당 블록 설정에 따라 정의된 동작을 수행하고, 다시 액션의 조건에 따라 사용자 응답 대기 상태로 돌아갈 수 있다.
블록과 블록을 연결하는 것은 사용자 응답 대기 상태로 진입했을 때, 현재 블록에서 다음에 처리될 블록들을 나열하는 것으로 정의될 수 있으며, 하나의 블록에 여러 개의 사용자 응답 대기 상태들이 정의될 수도 있다.
도 9는 실행블록에서 사용자 응답 대기 상태를 정의하여 블록들을 연결하는 일 예를 도시한 도면이다.
도 9를 참조하면, 하나의 블록이 그래프 형태로 복수의 다른 블록들과 연결될 수 있는 것을 알 수 있다.
도 9에 도시된 블록 1(Block 1)은 블록 2(Block 2), 블록 3(Block 3), 블록 4(Block 4) 및 블록 5(Block 5)와 연결된다. 이 때, 블록 1(Block 1)은 조건 4(Condition 4)에 의하여 블록 2(Block 2) 및 블록 3(Block 3)과 연결되고, 조건 5(Condition 5)에 의하여 블록 3(Block 3), 블록 4(Block 4) 및 블록 5(Block 5)와 연결될 수 있다. 따라서, 블록 1(Block 1) 이후에는 블록 2(Block 2), 블록 3(Block 3), 블록 4(Block 4) 및 블록 5(Block 5)의 상황이 발생할 수 있다.
블록 2(Block 2)는 블록 6(Block 6)과 연결된다. 따라서, 블록 2(Block 2) 이후에는 블록 6(Block 6)의 상황이 발생할 수 있다.
블록 3(Block 3)은 블록 6(Block 6) 및 블록 7(Block 7)과 연결된다. 따라서, 블록 3(Block 3) 이후에는 블록 6(Block 6) 및 블록 7(Block 7)의 상황이 발생할 수 있다.
블록 5(Block 5)는 블록 6(Block 6) 및 블록 7(Block 7)과 연결된다. 따라서, 블록 5(Block 5) 이후에는 블록 6(Block 6) 및 블록 7(Block 7)의 상황이 발생할 수 있다.
예를 들어, 현재 상태가 블록 2(Block 2)에 해당하는 상태라면, 이후 사용자의 발화는 블록 6(Block 6)에 해당하는 인텐트들만을 대상으로 인텐트를 서치하면 충분하고, 발생가능성이 없는 블록 7(Block 7)에 해당하는 인텐트들을 대상으로 사용자 발화 매칭을 수행할 필요가 없다.
하나의 인텐트와 하나의 실행 블록을 매핑하는 경우, 하나의 인텐트가 복수개의 발화 패턴을 포함해야 할 수 있다.
예를 들어, 인텐트(I1: 가입 의도)가 학습문장들 "써보고 싶어요"(패턴분류 P1), "쓰려면 어떻게 해요"(패턴분류 P1), "가입 방법이 궁금해요"(패턴분류 P3) 및 "가입방법 문의 좀"(패턴분류 P3)을 포함하고, 인텐트(I2: 탈퇴 의도)가 학습문장들 "그만 쓰고 싶어요"(패턴분류 P2), "이제 안쓸래요"(패턴분류 P2), "탈퇴 방법 궁금해요"(패턴분류 P3) 및 "탈퇴 방법 문의합니다"(패턴분류 P3)를 포함할 수 있다.
이 때, 인텐트(I1: 가입 의도)에 블록 하나가 연결되고, 인텐트(I2: 탈퇴 의도)에 블록 하나가 연결될 수 있으나, 인텐트들이 복수개의 발화 패턴들을 포함하게 되어 자연어 처리기의 성능이 저하될 수 있다.
따라서, 자연어 처리기의 성능 저하를 방지하기 위해서는 하나의 인텐트에 복수개의 발화 패턴들이 포함되는 것을 피하는 것이 바람직하다. 예를 들어, 인텐트(I1: 가입 의도)는 학습문장들 "써보고 싶어요"(패턴분류 P1) 및 "쓰려면 어떻게 해요"(패턴분류 P1)만을 포함하고, 인텐트(I2: 탈퇴 의도)는 학습문장들 "그만 쓰고 싶어요"(패턴분류 P2) 및 "이제 안쓸래요"(패턴분류 P2)만을 포함하고, 인텐트(I3: 문의 의도)가 학습문장들 "<가입> 방법이 궁금해요"(패턴분류 P3), "<가입> 방법 문의 좀"(패턴분류 P3), "<탈퇴> 방법 궁금해요"(패턴분류 P3) 및 "<탈퇴> 방법 문의합니다"(패턴분류 P3)를 포함할 수 있다.
이와 같이 자연어 처리기에서 효과적으로 처리될 수 있도록 인텐트를 분류하는 경우, 인텐트들과 처리 블록들이 보다 다양한 형태로 연결될 필요가 있다. 이를 위해, 블록의 인텐트들은 각각 조건을 가질 수 있고, 이 조건은 슬롯값들을 비교하는 구문들로 정의될 수 있다. 즉, 블록과 인텐트 매핑 정보는 인텐트와 슬롯 조건을 쌍으로 묶인 목록(인텐트 매핑 리스트)의 형태로 블록에 정의될 수 있다.
도 10은 발화 패턴별로 정의된 인텐트를 블록에 매핑하는 일 예를 나타낸 도면이다.
도 10을 참조하면, 인텐트와 슬롯 조건의 쌍으로 3개의 인텐트들이 2개의 블록들에 연결된 것을 알 수 있다.
이 때, 슬롯 조건에 사용되는 슬롯들은 현재 인텐트에서 정의된 슬롯뿐만 아니라, 이전 대화를 실행하면서 설정된 다른 블록의 슬롯이나, 시스템에서 제공되는 슬롯들을 포함할 수 있다.
도 10에 도시된 예에서 인텐트 1(Intent 1)은 발화 패턴 1(Pattern 1)에 상응하고, 인텐트 2(Intent 2)는 발화 패턴 2(Pattern 2)에 상응하고, 인텐트 3(Intent 3)은 발화 패턴 3(Pattern 3)에 상응하는 것을 알 수 있다.
도 10에 도시된 예에서, 블록 1(Block 1)의 인텐트 매핑 리스트에는 인텐트 1(Intent 1)과 조건 1(Condition 1)의 쌍 및 인텐트 3(Intent 3)과 조건 2(Condition 2)의 쌍의 두 개의 엘리먼트들이 존재한다. 따라서, 블록 1(Block 1)은 두 개의 인텐트들(Intent 1, Intent 3)과 연결된다.
블록 2(Block 2)의 인텐트 매핑 리스트에는 인텐트 2(Intent 2)와 조건 3(Condition 3)의 쌍 및 인텐트 3(Intent 3)과 조건 4(Condition 4)의 쌍의 두 개의 엘리먼트들이 존재한다. 따라서, 블록 2(Block 2)은 두 개의 인텐트들(Intent 2, Intent 3)과 연결된다.
도 11은 인텐트와 실행블록을 1:1 매핑하는 경우를 나타낸 도면이다.
도 11을 참조하면, 3개의 인텐트들(I1, I2, I3)이 각각 4개씩의 발화 패턴을 포함하는 것을 알 수 있다.
즉, 인텐트 I1(가입 의도)는 발화 패턴들 "써보고 싶어요", "쓰려면 어떻게 해요", "가입 방법이 궁금해요" 및 "가입 방법 문의 좀"을 포함한다.
인텐트 I2(탈퇴 의도)는 발화 패턴들 "그만 쓰고 싶어요", "이제 안쓸래요", 탈퇴 방법이 궁금해요" 및 "탈퇴하는 법 문의합니다"를 포함한다.
인텐트 I3(정회원 문의 의도)는 발화 패턴들 "정회원이 되고 싶어요", "정회원으로 승급하고 싶어요", 정회원 가입 방법이 궁금해요", "정회원 가입하는 방법은"을 포함한다.
인텐트(의도)와 응답(실행블록)이 1:1로 매핑되면, "*** 궁금해요"와 같은 문장이 여러 인텐트에 등장하는 경우, 자연어 처리기(NLU)가 이들 유사한 문장들을 구분하기 어렵다. 예를 들어, "저 처음인데 가입하는 법 문의합니다"와 같은 문장은 상황에 따라 자연어 처리기에 의해 탈퇴 의도의 "탈퇴하는 법 문의합니다"와 유사한 문장으로 처리되어 잘못된 의도 인식이 발생할 수 있다.
즉, 사용자의 의도 분류는 자연어 처리기(NLU)에 의해 처리되기 쉬운 의도 분류와는 상이할 수 있는데, 실제 사용자의 의도 하나가 자연어 처리기가 처리하기 용이한 의도들 여러 개로 분리될 수 있고 또 반대로 여러 개의 사용자의 의도들이 자연어 처리기가 처리하기 용이한 하나의 의도로 분류될 수도 있다.
도 12는 본 발명의 일실시예에 따른 인텐트 분류 및 블록 매핑의 일 예를 나타낸 도면이다.
도 12를 참조하면, 자연어 처리기(NLU)가 처리하기 용이한 형태로 문장들이 분류되고, 필요한 슬롯을 태깅하여 조건에 따라 응답들(responses)이 매핑된 것을 알 수 있다.
도 12에 도시된 예에서, 4개의 인텐트들(I1, I2, I3, I4)이 3개의 응답들(R1, R2, R3)에 연결된다.
이 때, 인텐트 1(I1)은 가입 안내 응답(R1)에 연결된다. 이 때, 슬롯 조건은 널(NULL) 조건일 수 있다.
이 때, 인텐트 4(I4)는 가입 안내 응답(R1), 탈퇴 안내 응답(R2) 및 정회원 안내 응답(R3)에 연결된다. 이 때, 인텐트 4(I4)는 슬롯 조건 $service == "가입"에 의해 가입 안내 응답(R1)에 연결될 수 있다. 이 때, 인텐트 4(I4)는 슬롯 조건 $service == "탈퇴"에 의해 탈퇴 안내 응답(R2)에 연결될 수 있다. 이 때, 인텐트 4(I4)는 슬롯 조건 $level == "정회원" and $service == "가입"에 의해 정회원 안내 응답(R3)에 연결될 수 있다.
이 때, 인텐트 2(I2)는 탈퇴 안내 응답(R2)에 연결된다. 이 때, 슬롯 조건은 널(NULL) 조건일 수 있다.
이 때, 인텐트 3(I3)는 정회원 안내 응답(R3)에 연결된다. 이 때, 슬롯 조건은 널(NULL) 조건일 수 있다.
도 12에 도시된 응답들은 각각 하나의 실행블록에 상응하는 것일 수 있다.
이 때, 실행블록은 인텐트와 슬롯 조건 및 챗봇의 응답 처리를 포함하여 정의될 수 있다.
도 13은 도 12에 도시된 응답들에 상응하는 실행블록들을 나타낸 도면이다.
도 13을 참조하면, 각 실행블록들은 적어도 하나의 인텐트와 슬롯 조건의 쌍을 포함하는 인텐트 매핑 리스트 및 동작 정보를 포함한다.
도 13에 도시된 바와 같이, 슬롯 조건은 "조건없음"에 해당하는 널(NULL) 조건을 포함할 수 있고, 하나 이상의 슬롯을 이용한 조건문을 포함할 수 있다.
챗봇이 대화 처리를 수행하게 되면, 먼저 사용자가 입력한 문장으로부터 자연어 처리기가 인텐트를 분류하고 슬롯을 추출한 뒤, 분류된 인텐트를 포함하는 블록에 나열된 조건들을 검사해가면서 매칭되는 블록을 찾게 된다.
도 12 및 도 13에 도시된 예에서, "I4: 문의 의도"로 인텐트가 분류된 경우, 이 인텐트를 포함하고 있는 블록은 B1, B2 및 B3이며, 조건에 따라 매칭되는 블록들은 아래 표 1과 같다.
[표 1]
Figure pat00001
조건을 검사하는 순서는 블록을 나열하는 순서등을 사용자가 지정함으로써 정해질 수 있다. 만약, 표 1과 같이 단순히 사용자가 나열한 순서대로만 처리되는 경우, 정회원 가입과 같은 문장은 $level == "정회원" and $service == "가입" 이라는 조건을 만족하지만, 동시에 논리적으로는 $service == "가입" 이라는 조건도 만족하게 되고, 조건 검사 순위가 높은 B1 블록이 실행될 수 있고 이는 바람직한 결과가 아닐 수 있다.
이 문제를 해결하기 위해 조건의 포함관계를 고려하여 다시 우선 순위를 부여하면 하기 표 2와 같이 정해질 수 있다.
[표 2]
Figure pat00002
이 때, 조건의 포함관계는 조건식 내에 사용된 슬롯들의 집합의 포함관계로 결정될 수 있는데, 포함하고 있는 쪽(큰 집합)이 포함되는 쪽(작은 집합)보다 우선적으로 처리되고, 서로 포함관계가 없으면 사용자가 지정한 우선순위가 유지될 수 있다. 표 2의 예에서, level과 service를 모두 검사하는 B3의 조건이 service만 검사하는 B1, B2보다 조건 포함관계 순위가 더 높아서, B1이나 B2보다 B3가 우선적으로 처리될 수 있다.
도 14는 도 2 내지 도 8에서 예시된 커피주문 시나리오에 상응하는 조건의 포함관계에 따른 우선순위 정렬 예를 나타낸 도면이다.
도 14를 참조하면, coffee 슬롯 하나에 해당하는 조건보다 coffee 슬롯 및 takeout 슬롯 두 개에 해당하는 조건이 우선순위가 높은 것을 알 수 있다.
따라서, 사용자가 "아메리카노 테이크아웃할래요"라고 발화하면 슬롯 coffee이 "아메리카노"로 채워지고, 슬롯 takeout이 "테이크아웃"으로 채워지므로 실행블록 테이크아웃확인보다 실행블록 커피 주문이 우선적으로 실행되게 된다.
챗봇 프로세스가 실행될 때는, 현재 사용자 응답 대기 상태에서 연결된 블록들에서 인텐트들을 수집하고, 자연어 처리기를 통해 수집된 인텐트들 중에서 적합한 인텐트를 검색할 수 있다.
인텐트로 블록을 찾을 때는 인텐트를 포함하고 있는 블록들의 인텐트 조건들의 우선순위, 사용자가 정의한 우선순위 순으로 정렬하여 적합한 블록을 검색할 수 있다.
조건에 맞지 않아 적합한 블록을 찾지 못했을 때는 다음으로 적합한 인텐트를 사용하여 위 방법을 반복할 수 있다.
조건이 맞는 블록을 찾았을 때는 해당 블록으로 이동한 후 챗봇의 응답 프로세스에 정해진 동작을 수행하고 조건에 따라 다음 사용자 응답 대기 상태로 진입할 수 있다.
도 15는 챗봇 실행에 필요한 모듈들의 일 예를 나타낸 블록도이다.
도 15를 참조하면, 봇 디자이너가 정의한 리소스들을 챗봇이 실행할 때 필요한 모듈들은 대화 흐름 처리기를 중심으로 크게 나눈다면, 메시지 입출력을 제어하는 부분, 블록 상태를 관리하는 부분, 자연어를 처리하는 부분, 블록 조건들을 처리하는 부분 및 블록들을 실행하는 부분으로 볼 수 있다.
도 15의 예에서, 챗봇 실행에 필요한 모듈들은 대화 흐름 처리기, 블록 상태 관리기, 메시지 입력 게이트웨이, 메시지 출력 게이트웨이, 응답 메시지 생성기, 블록 프로세스 실행기, NLU 검색기, 블록 검색기, 의도 분류기, 슬롯 추출기, 자연어 처리기, NLU 우선 순위 관리자, 조건 해석기 및 블록 조건 우선순위 관리자를 포함할 수 있다.
도 16은 챗봇 실행 중 인텐트와 블록을 검색하는 과정을 나타낸 도면이다.
도 16을 참조하면, 챗봇이 사용자 입력을 대기중인 상태에서 사용자의 발화가 입력되면, 먼저 현재 위치에서 실행 가능한 블록들이 서칭된다. 이 때, 현재 (실행)블록에 연결된 하위 블록들이 먼저 서칭되고, 시나리오의 메인블록들이 서칭될 수 있다. 이 때, 메인블록이란 대화 초기 상태에서 동작할 블록들의 목록을 의미하며, 사용자가 최초 발화시 봇이 서칭하는 대상 블록들이 된다. 즉, 현재 블록 이후에 실행가능성이 있는 하위블록들과, 새로 실행가능한 메인블록들만을 대상으로 인텐트를 식별하게 되면, 효율적인 대화 흐름 처리가 가능하다.
블록이 서칭되면, 서칭된 블록에 매핑된 인텐트들을 나열하여 처리 우선순위를 검사하게 된다. 이 때, 서칭된 블록들에 정의된 인텐트들이 나열되고, 자연어 처리기를 사용하여 사용자 발화에 해당하는 인텐트들의 매칭 스코어(score)를 결정한다. 정의된 인텐트 패턴 문턱 스코어(threshold score) 목록을 순차적으로 조회하면서, 인텐트들의 이름과 매칭 점수를 비교하여, 패턴과 문턱 스코어를 만족하는 인텐트들 중 매칭 점수가 가장 높은 인텐트를 가장 먼저 추출한다.
매칭된 인텐트가 속한 블록이 1개 이상인 경우, 정의된 인텐트 매핑 조건에 따라 처리 우선순위를 정렬하고, 조건의 우선순위가 동일한 경우는 사용자가 직접 정의한 시나리오 및 블록의 우선순위를 따른다. 이 때, 조건의 우선순위는 조건 비교 구문의 포함 관계에 따라 우선 순위가 매겨질 수 있다. 즉, 사용자의 발화로부터 추출된 슬롯을 기반으로 조건을 구성하는 경우, 조건을 구성하는 비교 구문은 사용자가 언급한 슬롯들 위주로 구성되고 언급되지 않은 슬롯은 생략되므로, 많은 슬롯을 포함하고 있는 조건이 사용자의 의도를 더 잘 반영한 것이라고 볼 수 있다. 즉, 조건 구문 내에 참인 조건이 여러 개인 경우, 제약 사항이나 슬롯을 더 많이 포함하는 조건이 우선 순위가 더 높은 것으로 간주될 수 있다.
정렬된 조건들을 우선순위에 따라 검사하여, 가장 첫 번째 순서로 만족하는 조건이 속한 블록을 실행 블록으로 처리한다. 만약 조건을 만족하는 블록을 찾을 수 없을 때는 다음 우선 순위의 인텐트로 다시 인텐트가 속한 블록들을 찾고 조건의 우선 순위 판단 및 조건 검사 과정을 반복하여 블록을 찾는다.
도 17은 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법을 나타낸 동작 흐름도이다.
도 17을 참조하면, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 사용자 대화에 상응하는 인텐트를 결정한다(S1710).
이 때, 사용자 대화에 상응하는 인텐트는 현재 블록과 그래프(graph)를 통해 연결된 하나 이상의 후보블록 또는 메인블록에 연결된 인텐트 후보 내에서 선택될 수 있다.
이 때, 사용자 대화에 상응하는 인텐트는 상기 후보블록에 연결된 제1 인텐트 후보가 상기 메인블록에 연결된 제2 인텐트 후보보다 우선적으로 고려되어 결정될 수 있다.
또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택한다(S1720).
이 때, 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응하는 것일 수 있다.
이 때, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다.
이 때, 슬롯 조건은 하나 이상의 슬롯(slot)에 관련된 조건문에 상응하는 것일 수 있다.
이 때, 슬롯 조건은 널(NULL) 조건을 포함할 수 있다.
이 때, 인텐트 매핑 리스트는 복수의 인텐트들에 상응하는 인텐트 식별자들 및 슬롯 조건들을 포함하는 경우가 있고(N:1), 상기 인텐트는 서로 상이한 실행블록들이 동일한 인텐트 식별자를 가지는 경우에 상기 슬롯 조건들이 상이하면 서로 상이한 실행블록들에 연결(1:N)될 수 있다.
이 때, 실행블록에 상응하는 슬롯들은, 상기 인텐트 매핑 리스트를 통해 상기 실행블록과 연결된 인텐트들의 슬롯들을 포함할 수 있다.
이 때, 인텐트에 상응하는 실행블록은 상기 사용자 대화에 상응하는 인텐트가 복수개의 실행블록들과 연결되는 경우, 큰 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제1 실행블록이 상기 큰 집합에 포함되는 작은 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제2 실행블록보다 우선적으로 고려되어 선택될 수 있다. 이 때, 슬롯 조건의 포함관계는 슬롯 조건에 포함된 슬롯들의 포함관계일 수 있다. 예를 들어, $level == "정회원" and $service == "가입"에 해당하는 실행블록이 $service == "가입"에 해당하는 실행블록보다 우선적으로 고려되어 선택될 수 있다.
또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 상기 실행블록에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행한다(S1730).
상술한 구성에 의하여, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 N:N(N은 자연수) 매핑이 가능하도록 하여, 여러가지 다른 발화들로 하나의 기능을 실행할 수 있고, 반대로 유사한 발화들로 전혀 다른 기능을 수행할 수 있다.
또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계를 정의하는 것이 가능하다.
또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은 사용자 대화에 상응하는 인텐트를 식별할 때, 현재 실행블록 이후에 실행될 수 있는 후보블록들을 식별하고, 후보블록들과 연결된 인텐트들만을 식별 대상으로 하여 빠르고 정확한 인텐트 식별이 가능하다.
도 18은 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치를 나타낸 블록도이다.
도 18을 참조하면, 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치는, 프로세서(1820) 및 실행메모리(1830)를 포함한다. 실시예에 따라, 챗봇 서비스 제공 장치는 통신부(1810)를 더 포함할 수 있다.
이 때, 통신부(1810)는 네트워크와 같은 통신망을 통해 다수의 다른 장치들과 챗봇 서비스와 관련된 정보를 송신하는 역할을 할 수 있다. 이 때, 네트워크는 장치들간에 데이터를 전달하는 통로를 제공하는 것으로서, 기존에 이용되는 네트워크 및 향후 개발 가능한 네트워크를 모두 포괄하는 개념이다.
예를 들면, 네트워크는 인터넷 프로토콜(IP)을 통하여 대용량 데이터의 송수신 서비스 및 끊기는 현상이 없는 데이터 서비스를 제공하는 아이피망, 아이피를 기반으로 서로 다른 망을 통합한 아이피망 구조인 올 아이피(All IP)망 등일 수 있으며, 유선망, Wibro(Wireless Broadband)망, WCDMA를 포함하는 3세대 이동통신망, HSDPA(High Speed Downlink Packet Access)망 및 LTE 망을 포함하는 3.5세대 이동통신망, LTE advanced를 포함하는 4세대 이동통신망, 위성통신망 및 와이파이(Wi-Fi)망 중에서 하나 이상을 결합하여 이루어질 수 있다.
예를 들어, 네트워크는 한정된 지역 내에서 각종 정보장치들의 통신을 제공하는 유무선근거리 통신망, 이동체 상호 간 및 이동체와 이동체 외부와의 통신을 제공하는 이동통신망, 위성을 이용해 지구국과 지구국간 통신을 제공하는 위성통신망이거나 유무선 통신망 중에서 어느 하나이거나, 둘 이상의 결합으로 이루어질 수 있다. 한편, 네트워크의 전송 방식 표준은, 기존의 전송 방식 표준에 한정되는 것은 아니며, 향후 개발될 모든 전송 방식 표준을 포함할 수 있다.
메모리(1830)는 프로세서(1820)에 의해 실행되는 적어도 하나 이상의 프로그램을 저장한다.
이 때, 적어도 하나 이상의 프로그램은, 사용자 대화에 상응하는 인텐트를 결정하고, 인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택하고, 상기 실행블록에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행한다. 이 때, 상기 인텐트 매핑 리스트는 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응하는 것일 수 있다.
이 때, 사용자 대화에 상응하는 인텐트는 현재 블록과 그래프(graph)를 통해 연결된 하나 이상의 후보블록 또는 메인블록에 연결된 인텐트 후보 내에서 선택될 수 있다.
이 때, 사용자 대화에 상응하는 인텐트는 상기 후보블록에 연결된 제1 인텐트 후보가 상기 메인블록에 연결된 제2 인텐트 후보보다 우선적으로 고려되어 결정될 수 있다.
이 때, 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함할 수 있다.
이 때, 슬롯 조건은 하나 이상의 슬롯(slot)에 관련된 조건문에 상응하는 것일 수 있다.
이 때, 슬롯 조건은 널(NULL) 조건을 포함할 수 있다.
이 때, 인텐트 매핑 리스트는 복수의 인텐트들에 상응하는 인텐트 식별자들 및 슬롯 조건들을 포함하는 경우가 있고(N:1), 상기 인텐트는 서로 상이한 실행블록들이 동일한 인텐트 식별자를 가지는 경우에 상기 슬롯 조건들이 상이하면 서로 상이한 실행블록들에 연결(1:N)될 수 있다.
이 때, 실행블록에 상응하는 슬롯들은, 상기 인텐트 매핑 리스트를 통해 상기 실행블록과 연결된 인텐트들의 슬롯들을 포함할 수 있다.
이 때, 인텐트에 상응하는 실행블록은 상기 사용자 대화에 상응하는 인텐트가 복수개의 실행블록들과 연결되는 경우, 큰 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제1 실행블록이 상기 큰 집합에 포함되는 작은 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제2 실행블록보다 우선적으로 고려되어 선택될 수 있다. 이 때, 슬롯 조건의 포함관계는 슬롯 조건에 포함된 슬롯들의 포함관계일 수 있다. 예를 들어, $level == "정회원" and $service == "가입"에 해당하는 실행블록이 $service == "가입"에 해당하는 실행블록보다 우선적으로 고려되어 선택될 수 있다.
도 18에 도시된 장치는 숫자 및 문자 정보 등의 다양한 정보를 입력 받고, 각종 기능을 설정 및 장치의 기능 제어와 관련하여 입력되는 신호를 입력부를 통해 프로세서(1920)로 전달할 수 있다. 또한, 입력부는 사용자의 터치 또는 조작에 따른 입력 신호를 발생하는 키패드와 터치패드 중 적어도 하나를 포함하여 구성할 수 있다. 이 때, 장치의 입력부는 표시부와 함께 하나의 터치패널(또는 터치 스크린(touch screen))의 형태로 구성되어 입력과 표시 기능을 동시에 수행할 수 있다. 또한, 입력부는 키보드, 키패드, 마우스, 조이스틱 등과 같은 입력 장치 외에도 향후 개발될 수 있는 모든 형태의 입력 수단이 사용될 수 있다.
또한, 표시부는 장치의 기능 수행 중에 발생하는 일련의 동작상태 및 동작결과 등에 대한 정보를 표시할 수 있다. 또한, 표시부는 장치의 메뉴 및 사용자가 입력한 사용자 데이터 등을 표시할 수 있다. 여기서, 표시부는 액정표시장치(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차원(3 Dimension) 디스플레이 등으로 구성될 수 있다. 이 때, 표시부가 터치스크린 형태로 구성된 경우, 표시부는 입력부의 기능 중 일부 또는 전부를 수행할 수 있다.
또한, 장치의 저장부는 데이터를 저장하기 위한 장치로, 주 기억장치 및 보조 기억장치를 포함하고, 장치의 기능 동작에 필요한 응용 프로그램을 저장할 수 있다. 이러한 저장부는 크게 프로그램 영역과 데이터 영역을 포함할 수 있다. 여기서, 장치는 사용자의 요청에 상응하여 각 기능을 활성화하는 경우, 프로세서(1820)의 제어 하에 해당 응용 프로그램들을 실행하여 각 기능을 제공하게 된다.
또한, 통신부(1810)는 네트워크을 통해 데이터를 송수신하기 위한 기능을 수행할 수 있다. 여기서 통신부(1810)는 송신되는 신호의 주파수를 상승 변환 및 증폭하는 RF 송신 수단과 수신되는 신호를 저잡음 증폭하고 주파수를 하강 변환하는 RF 수신 수단 등을 포함할 수 있다. 이러한 통신부(1810)는 무선통신 모듈 및 유선통신 모듈 중 적어도 하나를 포함할 수 있다. 그리고, 무선통신 모듈은 무선 통신 방법에 따라 데이터를 송수신하기 위한 구성이며, 장치가 무선 통신을 이용하는 경우, 무선망 통신 모듈, 무선랜 통신 모듈 및 무선팬 통신 모듈 중 어느 하나를 이용하여 데이터를 장치로 송수신할 수 있다. 또한, 유선통신 모듈은 유선으로 데이터를 송수신하기 위한 것이다. 유선통신 모듈은 유선을 통해 네트워크에 접속하여, 장치에 데이터를 송수신할 수 있다. 즉 장치는 무선통신 모듈 또는 유선통신 모듈을 이용하여 네트워크에 접속하며, 네트워크을 통해 다른 장치와 데이터를 송수신할 수 있다.
또한, 프로세서(1820)는 운영 체제(OS, Operation System) 및 각 구성을 구동시키는 프로세스 장치가 될 수 있다.
상술한 구성에 의하여, 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치는 자연어 처리기에 적합하게 분류된 인텐트들과 인텐트들을 처리하는 실행블록들 사이의 N:N(N은 자연수) 매핑이 가능하도록 하여, 여러가지 다른 발화들로 하나의 기능을 실행할 수 있고, 반대로 유사한 발화들로 전혀 다른 기능을 수행할 수 있다.
또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치는 인텐트별로 인텐트 식별자와 슬롯 조건을 포함하는 인텐트 매핑 리스트를 이용하여 다양한 인텐트-실행블록 매핑 관계를 정의하는 것이 가능하다.
또한, 본 발명의 일실시예에 따른 챗봇 서비스 제공 장치는 사용자 대화에 상응하는 인텐트를 식별할 때, 현재 실행블록 이후에 실행될 수 있는 후보블록들을 식별하고, 후보블록들과 연결된 인텐트들만을 식별 대상으로 하여 빠르고 정확한 인텐트 식별이 가능하다.
본 발명에 따르면, 유사한 발화 패턴들로 인텐트를 구분하여 관리 가능하고, 같은 의미의 발화여서 같은 봇 응답으로 처리해야 하는 경우, 발화패턴이 달라 다른 인텐트들로 구분되어도, 같은 봇 응답으로 처리가 가능하다.
뿐만 아니라, 블록에 인텐트와 조건을 설정할 수 있어, 유사한 발화 패턴이어서 하나의 인텐트로 분류된 경우에도 다양한 봇 응답으로 처리할 수 있다.
즉, 인텐트를 유사 발화 패턴별로 관리할 수 있어서 자연어 처리기의 성능을 극대화할 수 있다.
도 19는 발화 패턴수 증가에 따른 자연어 처리기 성능을 나타낸 그래프이다.
도 19를 참조하면, 인텐트를 챗봇이 제공하는 기능별로 구분하는 경우, 다양한 발화 문장들이 추가될 경우 비슷한 발화 패턴이 여러 인텐트들에 자주 나타나게 되고, A와 같이 자연어 처리기(NLU)의 인텐트 분류 성능이 급격히 저하되는 것을 알 수 있다.
이런 문제를 해결하기 위해 자연어 처리기가 처리하기 적합한 형태로 유사한 발화 패턴별로 인텐트를 정의할 수 있도록 함으로써, 발화 패턴이 늘어나더라도 B과 같이 자연어 처리기 성능을 높게 유지할 수 있다.
또한, 서로 다른 발화패턴을 '블록'이라는 단위에 매핑하여 조건에 의하여 봇이 적절히 처리할 수 있도록 함으로써, 다양한 발화 패턴이 효율적으로 처리될 수 있다.
블록들은 그래프 형태로 연결되고 조건에 따라 응답 대기 상태를 여러 개로 정의할 수 있어서, 조건에 따라 처리 흐름이나 단계가 다양한 업무 처리를 적은 수의 블록들로도 가시적으로 정의할 수 있다.
본 명세서에서 설명하는 기능적인 동작과 주제의 구현물들은 디지털 전자 회로로 구현되거나, 본 명세서에서 개시하는 구조 및 그 구조적인 등가물들을 포함하는 컴퓨터 소프트웨어, 펌웨어 혹은 하드웨어로 구현되거나, 이들 중 하나 이상의 결합으로 구현 가능하다. 본 명세서에서 설명하는 주제의 구현물들은 하나 이상의 컴퓨터 프로그램 제품, 다시 말해 처리 시스템의 동작을 제어하기 위하여 혹은 이것에 의한 실행을 위하여 유형의 프로그램 저장매체 상에 인코딩된 컴퓨터 프로그램 명령에 관한 하나 이상의 모듈로서 구현될 수 있다.
컴퓨터로 판독 가능한 매체는 기계로 판독 가능한 저장 장치, 기계로 판독 가능한 저장 기판, 메모리 장치, 기계로 판독 가능한 전파형 신호에 영향을 미치는 물질의 조성물 혹은 이들 중 하나 이상의 조합일 수 있다.
본 명세서에서 '시스템'이나 '장치'라 함은 예컨대 프로그래머블 프로세서, 컴퓨터 혹은 다중 프로세서나 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 기구, 장치 및 기계를 포괄한다. 처리 시스템은, 하드웨어에 부가하여, 예컨대 프로세서 펌웨어를 구성하는 코드, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제 혹은 이들 중 하나 이상의 조합 등 요청 시 컴퓨터 프로그램에 대한 실행 환경을 형성하는 코드를 포함할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 혹은 코드로도 알려져 있음)은 컴파일되거나 해석된 언어나 선험적 혹은 절차적 언어를 포함하는 프로그래밍 언어의 어떠한 형태로도 작성될 수 있으며, 독립형 프로그램이나 모듈, 컴포넌트, 서브루틴 혹은 컴퓨터 환경에서 사용하기에 적합한 다른 유닛을 포함하여 어떠한 형태로도 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 반드시 대응하는 것은 아니다. 프로그램은 요청된 프로그램에 제공되는 단일 파일 내에, 혹은 다중의 상호 작용하는 파일(예컨대, 하나 이상의 모듈, 하위 프로그램 혹은 코드의 일부를 저장하는 파일) 내에, 혹은 다른 프로그램이나 데이터를 보유하는 파일의 일부(예컨대, 마크업 언어 문서 내에 저장되는 하나 이상의 스크립트) 내에 저장될 수 있다. 컴퓨터 프로그램은 하나의 사이트에 위치하거나 복수의 사이트에 걸쳐서 분산되어 통신 네트워크에 의해 상호 접속된 다중 컴퓨터나 하나의 컴퓨터 상에서 실행되도록 전개될 수 있다.
한편, 컴퓨터 프로그램 명령어와 데이터를 저장하기에 적합한 컴퓨터로 판독 가능한 매체는, 예컨대 EPROM, EEPROM 및 플래시메모리 장치와 같은 반도체 메모리 장치, 예컨대 내부 하드디스크나 외장형 디스크와 같은 자기 디스크, 자기광학 디스크 및 CD-ROM과 DVD-ROM 디스크를 포함하여 모든 형태의 비휘발성 메모리, 매체 및 메모리 장치를 포함할 수 있다. 프로세서와 메모리는 특수 목적의 논리 회로에 의해 보충되거나, 그것에 통합될 수 있다.
본 명세서에서 설명한 주제의 구현물은 예컨대 데이터 서버와 같은 백엔드 컴포넌트를 포함하거나, 예컨대 어플리케이션 서버와 같은 미들웨어 컴포넌트를 포함하거나, 예컨대 사용자가 본 명세서에서 설명한 주제의 구현물과 상호 작용할 수 있는 웹 브라우저나 그래픽 유저 인터페이스를 갖는 클라이언트 컴퓨터와 같은 프론트엔드 컴포넌트 혹은 그러한 백엔드, 미들웨어 혹은 프론트엔드 컴포넌트의 하나 이상의 모든 조합을 포함하는 연산 시스템에서 구현될 수도 있다. 시스템의 컴포넌트는 예컨대 통신 네트워크와 같은 디지털 데이터 통신의 어떠한 형태나 매체에 의해서도 상호 접속 가능하다.
본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 마찬가지로, 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.
또한, 본 명세서에서는 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 시스템 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 시스템들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징될 수 있다는 점을 이해하여야 한다
이와 같이, 본 명세서는 그 제시된 구체적인 용어에 본 발명을 제한하려는 의도가 아니다. 따라서, 상술한 예를 참조하여 본 발명을 상세하게 설명하였지만, 당업자라면 본 발명의 범위를 벗어나지 않으면서도 본 예들에 대한 개조, 변경 및 변형을 가할 수 있다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
이상에서와 같이 본 발명에 따른 챗봇 서비스 제공 방법 및 이를 위한 장치는 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
본 발명에 의하면 챗봇 서비스 제공 방법 및 장치가 개시된다. 본 발명의 일실시예에 따른 챗봇 서비스 제공 방법은, 사용자 대화에 상응하는 인텐트를 결정하는 단계, 인텐트 매핑 리스트를 이용하여 상기 인텐트에 상응하는 실행블록을 선택하는 단계, 및 상기 실행블록에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행하는 단계를 포함하고, 이 때, 실행블록들 각각을 위하여 구비되고, 적어도 하나 이상의 인텐트에 상응하는 인텐트 매핑 리스트를 이용함으로써, 다양한 인텐트-실행블록 매핑 관계가 가능해진다. 이에 따라, 챗봇 빌더 구현시 인텐트를 자연어 처리기에 최적화하고, 하나의 블록에 여러 개의 인텐트를 연결하거나 여러 개의 인텐트를 하나의 블록에서 처리하는 것이 가능해져서 챗봇 서비스의 효율성이 극적으로 향상된다.
110: 챗봇
120: 자연어 처리기
130: 챗봇 리소스 DB
140: 챗봇 빌더

Claims (5)

  1. 인텐트 매핑 리스트를 이용하여 사용자 대화에 상응하게 결정된 인텐트에 상응하는 실행블록을 선택하는 단계; 및
    상기 실행블록에 기반하여 상기 인텐트에 상응하는 대화 처리를 수행하는 단계를 포함하고,
    상기 인텐트 매핑 리스트는 인텐트별로 인텐트 식별자 및 슬롯 조건을 포함하는, 챗봇 서비스 제공 방법.
  2. 청구항 1에 있어서,
    상기 슬롯 조건은
    하나 이상의 슬롯(slot)에 관련된 조건문에 상응하는, 챗봇 서비스 제공 방법.
  3. 청구항 2에 있어서,
    상기 인텐트 매핑 리스트는
    복수의 인텐트들에 상응하는 인텐트 식별자들 및 슬롯 조건들을 포함하는 경우가 있고(N:1), 상기 인텐트는 서로 상이한 실행블록들이 동일한 인텐트 식별자를 가지는 경우에 상기 슬롯 조건들이 상이하면 서로 상이한 실행블록들에 연결되는(1:N), 챗봇 서비스 제공 방법.
  4. 청구항 3에 있어서,
    상기 실행블록에 상응하는 슬롯들은
    상기 인텐트 매핑 리스트를 통해 상기 실행블록과 연결된 인텐트들의 슬롯들을 포함하는, 챗봇 서비스 제공 방법.
  5. 청구항 2에 있어서,
    상기 인텐트에 상응하는 실행블록은
    상기 사용자 대화에 상응하는 인텐트가 복수개의 실행블록들과 연결되는 경우, 큰 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제1 실행블록이 상기 큰 집합에 포함되는 작은 집합에 상응하는 슬롯 조건의 포함관계를 가지는 제2 실행블록보다 우선적으로 고려되어 선택되는, 챗봇 서비스 제공 방법.
KR1020220072022A 2020-08-24 2022-06-14 챗봇 서비스 제공 방법 및 장치 KR102566822B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220072022A KR102566822B1 (ko) 2020-08-24 2022-06-14 챗봇 서비스 제공 방법 및 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200106104A KR102425276B1 (ko) 2020-08-24 2020-08-24 챗봇 서비스 제공 방법 및 장치
KR1020220072022A KR102566822B1 (ko) 2020-08-24 2022-06-14 챗봇 서비스 제공 방법 및 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020200106104A Division KR102425276B1 (ko) 2020-08-24 2020-08-24 챗봇 서비스 제공 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20220087416A true KR20220087416A (ko) 2022-06-24
KR102566822B1 KR102566822B1 (ko) 2023-08-14

Family

ID=80818816

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200106104A KR102425276B1 (ko) 2020-08-24 2020-08-24 챗봇 서비스 제공 방법 및 장치
KR1020220072022A KR102566822B1 (ko) 2020-08-24 2022-06-14 챗봇 서비스 제공 방법 및 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020200106104A KR102425276B1 (ko) 2020-08-24 2020-08-24 챗봇 서비스 제공 방법 및 장치

Country Status (1)

Country Link
KR (2) KR102425276B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230150499A (ko) * 2022-04-22 2023-10-31 에스케이텔레콤 주식회사 사용자 의도의 매핑을 이용하는 대화시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080072673A (ko) * 2005-11-30 2008-08-06 마이크로소프트 코포레이션 의도-동작 매핑을 용이하게 해주는 시스템, 자연어 입력에기초하여 동작을 추론하는 방법 및 자연어 입력을 실행되는동작으로 변환하는 시스템
KR20160021787A (ko) * 2013-06-21 2016-02-26 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 대화 이해 시스템 구축 기법
KR20190006403A (ko) 2017-07-10 2019-01-18 삼성전자주식회사 음성 처리 방법 및 이를 지원하는 시스템
JP2020115371A (ja) * 2016-04-18 2020-07-30 グーグル エルエルシー 適切なエージェントの自動化アシスタント呼び出し

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080072673A (ko) * 2005-11-30 2008-08-06 마이크로소프트 코포레이션 의도-동작 매핑을 용이하게 해주는 시스템, 자연어 입력에기초하여 동작을 추론하는 방법 및 자연어 입력을 실행되는동작으로 변환하는 시스템
KR20160021787A (ko) * 2013-06-21 2016-02-26 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 대화 이해 시스템 구축 기법
JP2020115371A (ja) * 2016-04-18 2020-07-30 グーグル エルエルシー 適切なエージェントの自動化アシスタント呼び出し
KR20190006403A (ko) 2017-07-10 2019-01-18 삼성전자주식회사 음성 처리 방법 및 이를 지원하는 시스템

Also Published As

Publication number Publication date
KR102425276B1 (ko) 2022-07-26
KR20220025423A (ko) 2022-03-03
KR102566822B1 (ko) 2023-08-14

Similar Documents

Publication Publication Date Title
CN109840089B (zh) 用于对电子设备的会话代理进行视觉理解和编程的系统和方法
EP3513324B1 (en) Computerized natural language query intent dispatching
US10540965B2 (en) Semantic re-ranking of NLU results in conversational dialogue applications
EP3323124B1 (en) Delayed binding in response selection during input understanding processing
US11823661B2 (en) Expediting interaction with a digital assistant by predicting user responses
US9607102B2 (en) Task switching in dialogue processing
WO2017040437A1 (en) Generation and application of universal hypothesis ranking model
KR20170106346A (ko) 불완전한 자연어 질의를 이해하기 위한 방법
US20200227025A1 (en) Entity-Level Clarification In Conversation Services
US10643601B2 (en) Detection mechanism for automated dialog systems
KR20220087416A (ko) 챗봇 서비스 제공 방법 및 장치
JP2011065582A (ja) 自然言語ユーザインタフェースを漸進的に開発する装置及び方法
US20210350263A1 (en) Methods for orchestrating an automated conversation in one or more networks and devices thereof
KR102655058B1 (ko) 조건식 생성 인터페이스를 이용한 챗봇 서비스 제공 방법 및 장치
KR20220155957A (ko) 슬롯 필링 기반의 챗봇 서비스 제공 방법 및 장치
US20160124941A1 (en) Translation device, translation method, and non-transitory computer readable recording medium having therein translation program
US11393475B1 (en) Conversational system for recognizing, understanding, and acting on multiple intents and hypotheses
KR102518901B1 (ko) 블록 컴포넌트를 이용한 챗봇 서비스 제공 방법 및 장치
CN113407699A (zh) 对话方法、装置、设备和存储介质
KR102407577B1 (ko) 입력어를 처리하는 사용자 단말 및 방법
US20230412731A1 (en) Automated interactive voice response interaction using voice prompt classification machine learning frameworks
US20230316807A1 (en) User awareness device, user awareness system, and user awareness method
RU2818036C1 (ru) Способ и система управления диалоговым агентом в канале взаимодействия с пользователем
US11985097B2 (en) Multi-agent chatbot with multi-intent recognition
CN117112064A (zh) 大模型插件调用方法、装置、设备及介质

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