KR102472887B1 - 스크립트를 이용한 챗봇의 대화흐름 관리 방법 - Google Patents

스크립트를 이용한 챗봇의 대화흐름 관리 방법 Download PDF

Info

Publication number
KR102472887B1
KR102472887B1 KR1020200175115A KR20200175115A KR102472887B1 KR 102472887 B1 KR102472887 B1 KR 102472887B1 KR 1020200175115 A KR1020200175115 A KR 1020200175115A KR 20200175115 A KR20200175115 A KR 20200175115A KR 102472887 B1 KR102472887 B1 KR 102472887B1
Authority
KR
South Korea
Prior art keywords
conversation
task
dialog
user
unit
Prior art date
Application number
KR1020200175115A
Other languages
English (en)
Other versions
KR20220085221A (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 KR1020200175115A priority Critical patent/KR102472887B1/ko
Publication of KR20220085221A publication Critical patent/KR20220085221A/ko
Application granted granted Critical
Publication of KR102472887B1 publication Critical patent/KR102472887B1/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
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 챗봇의 대화 흐름 관리 방법에 관합니다.
종래의 챗봇 기술이 사용자의 질문에 대해 답변을 제공하는 정해진 패턴의 상호작용을 다루는 데 초점을 맞추었다면, 본 발명에서는 설계자가 예상한 사용자와 챗봇 간의 다양한 방식의 상호작용을 챗봇의 대화처리 소프트웨어가 처리할 수 있도록 했습니다.
본 발명의 챗봇의 대화 처리 소프트웨어는 사용자 UI로부터 입력 받은 사용자의 질문사항을 메시지 처리기를 통해 사용자별로 구분하여 전달받은 후에 대화 작업 관리자를 통해 처리합니다. 대화 작업 관리자는 복잡한 대화 시나리오 전체를 컴포넌트 단위의 단위 대화 작업으로 나누어 실행하는 역할을 수행합니다. 최초의 사용자 질문은 뿌리 대화 작업에서 의도분류 과정을 거처 실행됩니다. 의도분류 결과에 맞는 각 대화 작업이 실행되며 각 단위 대화 작업은 본 발명에서 정의된 스크립트를 실행하는 방법에 의해 수행됩니다. 단위 대화 작업은 정해진 스크립트를 따라 사용자와 메시지를 주고받거나 자연어 처리, 논리연산, 분기 등을 수행하는 방법에 따라 사용자와의 상호작용을 수행하며, 대화 작업이 종료될 때 다른 대화 작업이 실행되도록 하여 대화 흐름이 계속 이어지도록 합니다.

Description

스크립트를 이용한 챗봇의 대화흐름 관리 방법{THE METHOD OF MANAGING CHATBOT CONVERSATION FLOW USING SCRIPT}
본 발명은 챗봇을 이용하여 사람이 수행하던 작업 중 일부를 자동화하는 기술에 관한다.
최근 챗봇을 통해 사람이 수행하던 복잡한 업무 일부를 자동화하는 시도가 활발히 진행되고 있다. 챗봇은 사용자가 별도의 특화된 프로그램을 설치하지 않고도 익숙한 대화형 인터페이스를 통해 사용자에게 필요한 정보를 제공하거나 서비스를 제공할 수 있는 기술이다. 이러한 챗봇은 단순 질의응답을 넘어 사람이 수행하던 비교적 단순하고 규칙적인 업무를 대신하기 시작했다. 사용자가 묻는 추상적인 질문이나 요청에 대해 챗봇은 반복적인 대화를 통해 사용자의 숨은 의도를 정확히 인지하고, 그 의도에 맞는 서비스를 제공할 수 있다. 더 나아가 사용자에게 제공한 서비스에 대한 반응을 보고 관련된 다른 서비스의 제공을 통해 사용자가 미처 의도하지 않았던 정보나 서비스를 제공할 수도 있다.
그러나 종래의 챗봇은 질문에 대한 답변을 제공하는 등의 고정된 방식의 상호작용만을 제공하는 데 그치고 있다. 이런 방식의 챗봇은 상담사들의 역할을 대체하는 자동 상담 분야에서는 효과적이었다. 그러나 사용자에게 먼저 말을 건다거나, 사용자의 돌발적인 반응에 대처하는 데에는 어려움을 겪고 있다.
우리 발명자들은 사용자가 챗봇이 답변한 내용에 대해 문의를 한다거나, 다른 분야로 주제를 전환한다거나 또는 챗봇의 답변이 마음에 안 들었을 때 추가적인 설명을 요구한다거나 하는 다양한 대화 방식을 연구하고 있다. 이를 위해서는 챗봇의 대화 흐름 관리를 대화 주제나 사용자의 반응에 맞게 '적응적으로' 설계할 수 있는 방안이 필요하다.
챗봇의 대화 흐름을 표현하기 위한 방식 중에 종래 AIML(Artificial Intelligence Markup Language )이나 Chat Script 등 스크립트 기반의 대화 흐름 표현 방법이 제안되었다. 사용자와의 대화 흐름을 기술하려는 노력이었다. 그러나 사용자의 반응에 따른 분기나 반복 등의 일반적인 프로그래밍 언어에서 가능한 제어 로직에 대한 지원에는 한계를 보였다.
선행기술문헌정보
1. 대한민국 특허공보 제1840420호 공보
2. 대한민국 특허공보 제1830857호 공보
3. 대한민국 공개특허공보 제10- 2019-0066988호 공개공보
본 발명의 발명자들은 위와 같은 문제점을 해결하기 위하여 공동으로 연구하고 토론하면서 노력한 결과 본 발명을 완성하기에 이르렀다.
본 발명의 목적은 챗봇과 사용자가 대화를 통해 상호작용하는 과정에서 예측 가능한 다수의 상황에 적응하여 대응할 수 있도록 하는 소프트웨어 시스템과 대화 흐름 처리 알고리즘을 제안하는 데 있다.
본 발명의 대강은 이러하다. 복잡한 대화 시나리오는 보다 작은 세부 대화 작업으로 분할된다. 분할된 각 세부 대화 작업은 독립적인 스레드를 갖는 소프트웨어 컴포넌트에서 실행된다. 각 세부 대화 작업은 동작이 완료되면 다음에 실행될 세부 대화 작업을 지정할 수 있고, 각 세부 대화 작업 간의 동적인 연결에 의해 긴 흐름의 대화가 진행될 수 있다.
각각의 세부 대화 작업은 절차적 흐름, 분기, 반복 등의 일반적인 프로그래밍 언어에서 제공되는 기본 기능을 포함하는 스크립트 언어로 기술된다. 대화 흐름을 기술하는 스크립트를 해석하여 실행하는 구성을 통해서 챗봇은 다양한 상황에 사용자와의 대화를 진행할 수 있도록 설계된다. 챗봇 서비스의 설계자가 정의한 세부 대화 작업의 흐름과 각 세부 대화 작업을 기술하는 스크립트의 실행을 통해 챗봇은 사용자와의 대화에서 발생하는 다양한 상황에 능동적으로 대응할 수 있다
한편, 본 발명의 명시되지 않은 또 다른 목적들은 하기의 상세한 설명 및 그 효과로부터 용이하게 추론 할 수 있는 범위 내에서 추가적으로 고려될 것이다.
위와 같은 과제를 달성하기 위하여 컴퓨터 장치는 대화를 처리하는 독립적인 스레드를 갖는 컴포넌트 단위로서 대화 스크립트로 미리 설계된 하나 이상의 단위 대화 작업을 포함하면서 이 단위 대화 작업을 서로 연결하여 대화를 처리하는 챗봇 대화처리 소프트웨어가 설치되어 있으며, 사용자 단말이 상기 컴퓨터 장치로 사용자 메시지를 입력함으로써 개시되는 챗봇의 대화 흐름 관리 방법으로서:
상기 사용자 단말이 사용자 인터페이스를 통해 상기 컴퓨터 장치로 사용자 메시지를 입력하고,
상기 컴퓨터 장치의 메시지 처리기가 상기 사용자 메시지를 사용자별로 구분하여 대화 작업 관리자에 전달하고,
상기 대화 작업 관리자가 복잡한 대화 시나리오 전체를 각각의 단위 대화 작업으로 분할하되, 사용자 메시지를 수신할 때 기 실행되는 단위 대화 작업이 존재한다면 사용자 메시지를 실행 중인 모든 단위 대화 작업에 전달하고, 사용자 메시지를 수신할 때 단위 대화 작업이 없다면 상기 사용자 메시지의 의도를 분류하여 어떤 단위 대화 작업에 해당하는지를 판단하고 해당 단위 대화 작업을 실행하며,
각 단위 대화 작업별로 대화 스크립트 실행기가 미리 정의된 대화 스크립트를 명령어 단위로 순차적으로 실행하면서 후행하는 단위 대화 작업을 지정하는 단계를 포함하며, 각각의 단위 대화 작업을 동적으로 연결하는 것을 특징으로 한다.
본 발명의 바람직한 어느 실시예에 따른 챗봇의 대화 흐름 관리 방법에 있어서, 단위 대화 작업마다 각각 별개의 메시지 송수신 모듈 및 대화 흐름 제어모듈이 구성되어 있으며, 상기 메시지 송수신 모듈은 사용자 단말에 메시지를 송수신하는 통신 포트로 기능하며, 상기 대화 흐름 제어모듈은 후행하는 단위 대화 작업으로 대화 흐름을 전달하는 제어모듈 포트로 기능한다.
본 발명의 바람직한 어느 실시예에 따른 챗봇의 대화 흐름 관리 방법에 있어서, 상기 단위 대화 작업이 미리 정의된 명령어를 이용하여 의도 분류를 수행하는 단계를 더 포함할 수 있다.
또한, 본 발명의 바람직한 어느 실시예에 따른 챗봇의 대화 흐름 관리 방법에 있어서, 상기 대화 스크립트는 상기 단위 대화 작업마다 별개로 구성되는 대화스크립트저장소에서 읽어들이는 것이다.
또한, 상기 대화 스크립트는 Send, Receive, AskListen, Jump, Branch, Exit, Logic, GetEntity, GetIntent, Http 명령어를 포함하는 것이 좋다.
본 발명에 따르는 챗봇은 설계자가 예측 가능한 다양한 상황에 대해 적응적으로 반응할 수 있으며, 사용자는 챗봇을 사용하여 원하는 정보나 서비스를 더 정확하고 상세하게 제공 받을 수 있다. 단순한 1회성 질의응답이 아니라 반복적인 대화를 통해 사용자의 의도를 보다 명확하게 챗봇에게 전달하고 챗봇은 사용자가 원하는 정확한 서비스를 제공할 수 있다.
또한 본 발명의 챗봇은 사용자가 관심 있어 할 만한 판단되는 정보를 추가로 제공하는 방법에 의해 대화를 이어가거나, 이전 대화와 관련된 대화를 계속해서 이어갈 수 있다. 이를 통해 사용자는 챗봇을 통한 대화에서 만족도를 높일 수 있다.
한편, 여기에서 명시적으로 언급되지 않은 효과라 하더라도, 본 발명의 기술적 특징에 의해 기대되는 이하의 명세서에서 기재된 효과 및 그 잠정적인 효과는 본 발명의 명세서에 기재된 것과 같이 취급됨을 첨언한다.
도 1은 본 발명의 어느 실시예에 따른 챗봇의 대화처리 구조를 나타내는 시스템 구성을 개략적으로 나타내고 있다.
도 2는 본 발명의 어느 실시예에 따른 단위 대화작업(150)의 기능 모듈 구조를 개략적으로 나타낸다.
도 3은 뿌리 대화 작업(150a)의 스크립트를 예시한다.
도 4는 본 발명의 방법을 적용한 어느 시나리오의 대화 작업 사이의 연계를 나타낸다.
도 5는 도 4의 시나리오에서 날씨답변 대화작업에 대한 스크립트를 예시한다.
도 6은 도 4 및 도 5의 대화작업을 이용한 사용자와 챗봇의 대화를 예시하는 도면이다.
※ 첨부된 도면은 본 발명의 기술사상에 대한 이해를 위하여 참조로서 예시된 것임을 밝히며, 그것에 의해 본 발명의 권리범위가 제한되지는 아니한다.
본 발명의 챗봇의 대화 처리 소프트웨어는 사용자 UI로부터 입력 받은 사용자의 질문사항을 메시지 처리기를 통해 사용자별로 구분하여 전달받은 후에 대화 작업 관리자를 통해 처리한다. 대화 작업 관리자는 복잡한 대화 시나리오 전체를 컴포넌트 단위의 단위 대화 작업으로 나누어 실행하는 역할을 수행한다. 최초의 사용자 질문은 뿌리 대화 작업에서 의도분류 과정을 거처 실행된다. 의도분류 결과에 맞는 각 대화 작업이 실행되며 각 단위 대화 작업은 본 발명에서 정의된 스크립트를 실행하는 방법에 의해 수행된다. 단위 대화 작업은 정해진 스크립트를 따라 사용자와 메시지를 주고받거나 자연어 처리, 논리연산, 분기 등을 수행하는 방법에 따라 사용자와의 상호작용을 수행하며, 대화 작업이 종료될 때 다른 대화 작업이 실행되도록 하여 대화 흐름이 계속 이어지도록 구조화되어 있다.
이하, 도면을 참조하여 본 발명의 다양한 실시예가 안내하는 본 발명의 구성과 그 구성으로부터 비롯되는 효과에 대해 살펴본다. 본 발명을 설명함에 있어서 관련된 공지기능에 대하여 이 분야의 기술자에게 자명한 사항으로서 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
도 1은 본 발명의 바람직한 어느 실시예에 따른 시스템 구성을 개략적으로 나타내었다.
사용자 단말(1)과 컴퓨터 장치(100) 사이에 대화가 이루어진다. 사용자 단말(1)은 음성으로 사용자 메시지를 전달하는 전화기일 수 있으며, 음성 또는 텍스트로 사용자 메시지를 전달하는 컴퓨터일 수도 있다. 본 발명의 컴퓨터 장치(100)는 하나 이상의 하드웨어 및 소프트웨어로 구성된 장치로서, 사용자 단말(1)이 전달하는 사용자 메시지를 수신하고 해석해서 사용자와 대화를 진행하는 챗봇 단말이며, 챗봇 대화처리 소프트웨어가 설치되어 있다. 본 발명의 방법은 이 챗봇 대화처리 소프트웨어에 의해 정해지는 알고리즘에 의해 실행된다.
본 발명의 챗봇 대화처리 소프트웨어는 사용자 인터페이스(110), 메시지 처리기(120), 대화 작업 관리자(130) 및 대화 흐름기(15)를 포함한다. 대화 흐름기(15)는 하나 이상의 단위 대화 작업(150)들로 구성된다. 이 단위 대화 작업(150)은 대화를 처리하는 독립적인 스레드를 갖는 컴포넌트 단위로서 대화 스크립트가 미리 등록되어 있다. 그리고 본 발명의 챗봇 대화처리 소프트웨어는 각각의 단위 대화 작업(150)을 처리하며 이들 단위 대화 작업(150)을 서로 연결하면서 사용자와 챗본 사이의 긴 대화를 처리한다.
도 1에 도시된 것처럼, 사용자 단말(1)이 사용자 UI(110)를 통해 입력한 사용자 메시지는 메시지 처리기(120)로 전달된다. 메시지 처리기(120)는 여러 사용자의 메시지를 사용자별로 구분하여 단위 대화 작업(150)에 전달하는 역할을 한다. 메시지 처리기(120)는 사용자로부터 받은 사용자 메시지를 대화 작업 관리자(130)에 전달하고, 단위 대화 작업(150)에서 생성한 챗봇의 메시지를 사용자 단말(1)로 전달하는 역할을 한다. 대화 작업 관리자(130)는 소프트웨어 컴포넌트로 존재하는 여러 단위 대화 작업(150)의 실행 주기를 관리한다. 또한 대화 작업 관리자(130)는 대화 리퀘스트가 생기는 경우 요청받은 대화 작업을 실행하는 역할을 담당한다.
사용자로부터 메시지를 받았을 때 실행되는 단위 대화 작업이 없다면 뿌리(Root) 대화 작업(150a)을 실행하며, 기존에 실행되는 단위 대화 작업(150)이 있으면 사용자로부터 받은 메시지를 모두 실행 중인 딘위 대화 작업(150)에 전달한다. 뿌리 대화 작업(150)은 사용자로부터 메시지를 받았을 때 가장 처음 실행되는 대화 작업으로서 사용자로부터 받은 메시지의 의도를 분류하여 받은 메시지가 어떤 단위 대화 작업(150)에 해당하는지를 판단하고 해당 단위 대화 작업(150)을 실행하는 역할을 한다.
각 단위 대화 작업(150)마다 각각 별개의 메시지 송수신 모듈(151) 및 대화 흐름 제어모듈(152)이 구성된다. 메시지 송수신 모듈(151)은 사용자 단말(1)로 메시지를 송수신하는 통신 포트로 기능하며, 상기 대화 흐름 제어모듈(152)은 각 대화 작업이 종료된 후에 이어서 실행될 후행 단위 대화 작업으로 대화 흐름을 전달하는 제어모듈 포트로 기능한다.
도 2는 본 발명의 어느 실시예에 따른 단위 대화 작업(150)의 내부 구조를 예시적으로 나타낸다.
각 단위 대화 작업(150)별로 챗봇 설계자에 의해 미리 정의된 대화 스크립트를 대화스크립트저장소(159)에서 읽어서 대화 스크립트 실행기(153)에서 명령어 단위로 순차적으로 실행한다.
또한, 대화 작업을 실행하는 중에 의도 분류 및 엔티티 인식이 필요한 경우 각각 대화작업 컴포넌트에 정의된 명령어를 이용하여 의도 분류기(155) 및 엔티티 인식기(156)를 통해 얻는 의도분류 결과와 엔티티 인식결과를 대화에 활용한다.
대화 스크립트는 메시지 송수신, 흐름제어, 자연어처리, API호출등을 위한 총 10개의 명령어로 구성되며, 명령어들을 조합하여 사용자와의 상호작용을 기술할 수 있다. 이들 명령어로는 Send, Receive, AskListen, Jump, Branch, Exit, Logic, GetEntity, GetIntent, Http가 있다.
명령어 Send는 사용자 단말로 메시지를 보내는 명령어이며, 그 인자로는 message(변수 내용 또는 보낼 메시지), choices(선택버튼에 보일 메시지), callbackMessages(선택 버튼을 눌렀을 때 챗봇에 전달될 메시지)가 포함된다.
명령어 Receive는 사용자 단말로부터 온 메시지를 받는 명령어이며, 그 인자로는 key(받은 메시지를 저장할 key), timeout(메시지 받을 때 까지 대기할 시간(초))가 포함된다.
명령어 AskListen는 사용자 단말에게 메시지를 보내고 사용자 응답을 기다렸다가 받는 명령어이며, 그 인자로는 key(받을 메시지를 저장할 변수명), message(보낼 메시지 (텍스트)), choice(선택버튼에 나올 메시지 - 세미콜론으로 구분됨), callbackMessages(선택 버튼을 눌렀을 때 챗봇에 전달될 메시지- 세미콜론으로 구분됨)가 포함된다.
명령어 Jump는 특정 레이블로 이동하도록 하는 명령어이며, 그 인자로는 label(이동할 명령문의 레이블), loopLimit(최대 반복 횟수)가 있다.
명령어 Branch는 조건 변수가 비교 변수(reference)와 동일할 경우 특정 레이블로 분기하는 명령어이며, 그 인자로는 reference(조건계산 결과와 비교할 값의 변수명), then(reference와 조건 결과가 같을 경우 이동할 명령문의 레이블), else(reference와 조건 결과가 다를 경우 이동할 명령문의 레이블)가 있다.
명령어 Exit은 스크립트 수행 종료 후 다른 대화 작업을 실행하며 outputSentence의 문장을 다음 대화 작업의 입력문장으로 전달하는 명령어이며, 그 인자로는 nextTask(다음으로 실행할 대화 작업을 담은 변수명), outputSentence(다음 실행할 대화작업에 전달할 문장을 담은 변수명)을 포함한다.
명령어 Logic은 논리연산식에 맞게 논리연산을 수행하고 그 결과를 key 변수에 저장하도록 하는 명령어이다. 그 결과는 true 또는 false이다. 명령어 Logic의 인자는 key(논리연산 결과를 저장할 변수명), expression(논리연산식)을 포함한다.
명령어 GetEntity는 reference 문자열에서 엔티티를 추출하여 변수에 저장하는 명령어이며, 그 인자로는 key(엔티티 추출 결과를 저장할 변수명), reference(엔티티 추출을 할 문자열이 저장된 변수명), entityName(추출할 엔티티의 이름)이 있다.
명령어 GetIntent는 reference 문자열 문자열에서 의도분류를 수행해서 변수에 저장하도록 하는 명령어이며, 그 인자로는 key(의도분류 추출 결과를 저장할 변수명), reference(의도분류 추출을 할 문자열이 저장된 변수명)이 있다.
명령어 Http는 HTTP요청을 전달하고 결과를 변수에 저장하는 명령어이며, 그 인자로는 key(요청 결과를 저장할 변수명), URI(요청 주소), body(요청에 담길 body 문자열)를 포함한다.
사용자로부터 받은 메시지, 함수의 처리 결과 등은 단위 대화 작업(150) 내부에서 관리되는 변수에 저장되며, 함수의 인자에서 key 값은 변수에 값을 저장하는 용도로, reference 값은 저장된 변수의 값을 읽어오는 용도로 사용된다.
대화 작업이 실행되면 이전 대화 작업으로부터 전달받은 메시지를 "입력문장"이라는 reference 인자를 선언함으로써 획득할 수 있다.
예를 들어, GetIntent(의도분류 결과, 입력문장)과 같은 명령어는 사용자로부터 받은 입력문장을 의도분류하여 그 결과를 "의도분류 결과"라는 변숫값에 저장한다.
대화 스크립트는 명령어 행들이 모인 문장으로 정의된다. 각 명령어 행은 레이블, 명령어, 인자들로 표현된다.
예를 들어 뿌리 대화 작업(150a)은 최초 사용자를 맞이하고 사용자로부터 질문을 받은 후 그 입력문장에 대해 의도분류를 수행하고 다른 대화 작업을 실행하는 역할을 한다. 이 대화 작업에 대한 스크립트의 예시는 도 3과 같다.
첫 번째 행은 명령어가 send이며 인자는 "안녕하세요 저는 OO 챗봇입니다."이다. 대화 작업이 실행되면 사용자에게 이 메시지를 출력한다.
두 번째 행은 명령어가 AskListen이며 첫 번째 인자는 "질문내용", 두 번째 인자는 "궁금하신 게 있으면 물어봐 주세요" 이다. "궁금하신 게 있으면 물어봐 주세요"라는 문장을 사용자 UI 화면에 출력하고 사용자가 질문을 입력하면 "질문내용"이라는 변수에 그 문장을 저장한다.
세 번째 행은 명령어가 GetIntent 이고 첫 번째 인자는 "의도분류 결과" 두 번째 인자는 "질문내용"이다. "질문내용" 변수에 있는 값을 읽어와서 의도분류를 수행한 후 그 결과를 "의도분류 결과"란 변수에 저장한다.
네 번째 행은 의도분류 결과의 값이 Null이 아닌지 여부를 판단하여 "논리 연산 결과"라는 변수에 저장하며 의도분류 결과가 null이 아니면 true를 null이면 false를 저장한다.
다섯 번째 행은 명령어가 Branch, 첫 번째 인자는 "논리 연산 결과" 두 번째 인자는 "의도분류 성공", 세 번째 인자는 "의도분류 실패"이고 논리 연산 결과가 true인 경우에는 의도분류 성공이라는 레이블이 있는 행으로 이동하고 false인 경우는 의도분류실패라는 레이블이 있는 행으로 이동한다.
여섯 번째 행은 명령어가 Exit이고 첫 번째 인자가 "의도분류 결과"이고 두 번째 인자가 질문내용이다. "의도분류 결과" 변수에 있는 내용에 해당하는 다음 대화 작업을 찾고 "질문내용" 변수의 값을 전달해서 다음 대화 작업을 실행한다. 현재 대화 작업은 종료된다.
일곱 번째 행은 다섯 번째 행의 분기에서 이어 실행된 행으로서 명령어는 Send이고 인자는 "질문을 이해하지 못했습니다"이다. "질문을 이해하지 못했습니다"라는 메시지를 사용자에게 보여준다.
여덟 번째 행은 명령어가 Jump, 첫 번째 인자가 "질문"이며, "질문"이라는 레이블을 갖는 행으로 이동한다. 즉, 다시 질문을 수행한다.
본 발명에서 전체 대화는 단위 대화 작업(150)들이 서로 연계되어 구성된다. 도 4는 날씨를 소개하는 챗봇 서비스 시나리오에 대한 예시를 나타낸다.
의도분류기는 질문내용에 따라서 날씨 답변, 자기소개, null 중 하나의 답변을 내놓도록 학습되었다고 가정한다.
처음으로 사용자가 질문하면 도 3의 과정처럼 뿌리 대화 작업(150a)에서 의도분류를 한 후 질문내용에 따라 날씨 답변 대화 작업(150b) 또는 자기소개 대화 작업(150f) 두 개의 대화 작업 중 하나가 실행된다.
도 5는 날씨 답변 대화 작업(150b)의 스크립트를 예시한다. 하나씩 살펴보자.
첫 번째 행은 명령어가 Send이며 인자는 "날씨에 대해 질문하셨네요. 잠시만 기다려주세요." 로서 대화 작업이 실행되면 사용자에게 이 메시지를 출력한다.
두 번째 행은 명령어가 Http이며 첫번째 인자는 "날씨 결과", 두 번째 인자는 "http:// api.wisenut.co.kr/weather" 이다. Http 요정을 전달하고 결과를 "날씨 결과"이라는 변수에 저장한다.
세 번째 행은 명령어가 Send이며 인자는 "{{날씨 결과}}"이다. 이때 인자가 {{ }} 인 경우에는 변수에 저장된 내용을 출력한다. 따라서 '날씨 결과'에 저장된 변수 내용을 사용자에게 출력한다.
네 번째 행은 명령어가 AskListen이며 첫 번째 인자는 "날씨 부가정보 추천 여부"로 받을 메시지를 저장할 변수명이다. 두 번째 인자는 "현재 날씨와 관련된 정보를 더 확인하시겠어요?"이며 사용자에게 보낼 메시지다. 세 번째 인자는 "날씨에 맞는 옷차림, 날씨에 맞는 음식, 식당추천, 아니요"로서 선택 버튼에 나올 메시지로 세미콜론으로 구분된다. 화면에 '날씨에 맞는 옷차림', '날씨에 맞는 음식', '식당추천', '아니오' 가 사용자가 선택할 수 있도록 보여준다. 네 번째 인자는 "날씨에 맞는 옷차림,날씨에 맞는 음식, 식당추천, 아니요"로서 선택 버튼을 눌렀을 때 챗봇에 전달될 메시지로 세미콜론으로 구분된다. 사용자의 응답을 기다렸다가 사용자의 응답을 '날씨 부가정보 추천 여부' 에 저장한다.
다섯 번째 행은 명령어가 Logic, 첫 번째 인자는 "논리 연산 결과"로 논리연산 결과를 저장할 변수 이름이고, 두 번째 인자는 "날씨 부가정보 추천 여부!=아니오"로 논리 연산식이다. 날씨 부가정보 추천 여부의 값이 아니오 인지 아닌지를 판단하여 "논리연산 결과"라는 변수에 저장하며 '날씨 부가정보 추천 여부'가 '아니오'가 아니면 true를 '아니오'이면 false를 저장한다.
여섯 번째 행은 명령어가 Branch, 첫 번째 인자는 "논리연산 결과" 두 번째 인자는 "추천 희망", 세 번째 인자는 "추천 필요 없음"이고 논리 연산 결과가 true인 경우에는 추천 희망이라는 레이블이 있는 행으로 이동하고 false인 경우는 추천 필요 없음 레이블이 있는 행으로 이동한다.
일곱 번째 행은 명령어가 Exit이고 첫 번째 인자가 "날씨 부가정보 추천 여부"이고 두 번째 인자가 ""이다. "날씨 부가정보 추천 여부" 변수에 있는 내용에 해당하는 다음 대화 작업을 찾고 "" 변수의 값을 전달해서 다음 대화 작업을 실행한다. 현재 대화 작업은 종료된다.
여덟 번째 행은 여섯 번째 행의 분기에서 이어 실행된 행으로서 명령어는 Send이고 인자는 "날씨 관련 대답을 종료하겠습니다"이다. "날씨 관련 대답을 종료하겠습니다."라는 메시지를 사용자에게 보여준다.
날씨에 맞는 옷차림 대화 작업(150c), 날씨에 맞는 음식 대화 작업(150d), 식당추천 대화작업(150e)은 앞에서 살펴본 도 5의 대화작업에서 사용된 예시와 유사하게 Http 명령어를 통한 외부 API연계를 이용하여 도메인별로 구현될 수 있다.
도 6은 도 4의 대화작업들과 도 5에 정의된 대화작업 스크립트를 이용한 사용자와의 대화를 예시한다. 사용자의 반응에 따라 도 6과 다른 대화작업이 처리될 수 있음은 물론이다.
참고로, 본 발명의 일 실시예에 따른 위와 같은 챗봇의 대화흐름 관리 방법은 각 단위 대화 작업별로 대화 스크립트 실행기가 미리 정의된 대화 스크립트를 명령어 단위로 순차적으로 실행하면서 후행하는 단위 대화 작업을 지정하도록 함으로써 각각의 단위 대화 작업을 동적으로 연결한다. 이러한 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독가능매체에 기록될 수 있다. 상기 컴퓨터 판독가능매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계 되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독가능매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크 (floptical disk)와 같은 자기-광 매체, 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함될 수 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어코드뿐 만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급언어코드를 포함한다. 상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
본 발명의 보호범위가 이상에서 명시적으로 설명한 실시예의 기재와 표현에 제한되는 것은 아니다. 또한, 본 발명이 속하는 기술분야에서 자명한 변경이나 치환으로 말미암아 본 발명이 보호범위가 제한될 수도 없음을 다시 한 번 첨언한다.

Claims (5)

  1. 컴퓨터 장치는 대화를 처리하는 독립적인 스레드를 갖는 컴포넌트 단위로서 대화 스크립트로 미리 설계된 하나 이상의 단위 대화 작업을 포함하면서 이 단위 대화 작업을 서로 연결하여 대화를 처리하는 챗봇 대화처리 소프트웨어가 설치되어 있으며, 사용자 단말이 상기 컴퓨터 장치로 사용자 메시지를 입력함으로써 개시되는 챗봇의 대화 흐름 관리 방법으로서:
    상기 사용자 단말이 사용자 인터페이스를 통해 상기 컴퓨터 장치로 사용자 메시지를 입력하고,
    상기 컴퓨터 장치의 메시지 처리기가 상기 사용자 메시지를 사용자별로 구분하여 대화 작업 관리자에 전달하고,
    상기 대화 작업 관리자가 복잡한 대화 시나리오 전체를 각각의 단위 대화 작업으로 분할하되, 사용자 메시지를 수신할 때 기 실행되는 단위 대화 작업이 존재한다면 사용자 메시지를 실행 중인 모든 단위 대화 작업에 전달하고, 사용자 메시지를 수신할 때 단위 대화 작업이 없다면 상기 사용자 메시지의 의도를 분류하여 어떤 단위 대화 작업에 해당하는지를 판단하고 해당 단위 대화 작업을 실행하며,
    각 단위 대화 작업별로 대화 스크립트 실행기가 미리 정의된 대화 스크립트를 명령어 단위로 순차적으로 실행하면서 후행하는 단위 대화 작업을 지정하는 단계를 포함하며, 각각의 단위 대화 작업을 동적으로 연결하는 것을 특징으로 하는, 챗봇의 대화 흐름 관리 방법.
  2. 제1항에 있어서,
    단위 대화 작업마다 각각 별개의 메시지 송수신 모듈 및 대화 흐름 제어모듈이 구성되어 있으며, 상기 메시지 송수신 모듈은 사용자 단말에 메시지를 송수신하는 통신 포트로 기능하며, 상기 대화 흐름 제어모듈은 후행하는 단위 대화 작업으로 대화 흐름을 전달하는 제어모듈 포트로 기능하는 것인, 챗봇의 대화 흐름 관리 방법.
  3. 제1항에 있어서,
    상기 단위 대화 작업이 미리 정의된 명령어를 이용하여 의도 분류를 수행하는 단계를 더 포함하는, 챗봇의 대화 흐름 관리 방법.
  4. 제1항에 있어서,
    상기 대화 스크립트는 상기 단위 대화 작업마다 별개로 구성되는 대화스크립트저장소에서 읽어들이는 것인, 챗봇의 대화 흐름 관리 방법.
  5. 제1항에 있어서,
    상기 대화 스크립트는 Send, Receive, AskListen, Jump, Branch, Exit, Logic, GetEntity, GetIntent, Http 명령어를 포함하여 이루어져 있는 것인 챗봇의 대화 흐름 관리 방법.
KR1020200175115A 2020-12-15 2020-12-15 스크립트를 이용한 챗봇의 대화흐름 관리 방법 KR102472887B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200175115A KR102472887B1 (ko) 2020-12-15 2020-12-15 스크립트를 이용한 챗봇의 대화흐름 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200175115A KR102472887B1 (ko) 2020-12-15 2020-12-15 스크립트를 이용한 챗봇의 대화흐름 관리 방법

Publications (2)

Publication Number Publication Date
KR20220085221A KR20220085221A (ko) 2022-06-22
KR102472887B1 true KR102472887B1 (ko) 2022-12-01

Family

ID=82217037

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200175115A KR102472887B1 (ko) 2020-12-15 2020-12-15 스크립트를 이용한 챗봇의 대화흐름 관리 방법

Country Status (1)

Country Link
KR (1) KR102472887B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101830857B1 (ko) 2017-07-14 2018-02-21 코웨이 주식회사 사용자의 생체 데이터 및 수면환경 데이터를 수집하여 챗봇을 통해 설문을 간소화하는 방법 및 이를 이용한 챗봇 제공 장치
KR101840420B1 (ko) 2017-04-21 2018-05-04 주식회사 닐리리아 챗봇 플랫폼 제공 방법 및 장치
KR101858206B1 (ko) 2017-12-07 2018-05-15 디비손해보험 주식회사 지능형 챗봇 기반 대화형 현장 지원 서비스 제공 방법
US20180219921A1 (en) 2017-01-31 2018-08-02 Telia Company Ab Methods for Providing Continuity in Chatbot Communications
KR102119404B1 (ko) 2018-11-28 2020-06-05 주식회사 와이즈넛 복수 챗봇의 협업에 의한 대화형 정보제공 시스템 및 그 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102517843B1 (ko) * 2017-12-06 2023-04-03 주식회사 케이티 Aiml 기반의 챗봇 시스템 및 챗봇 서비스 제공 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180219921A1 (en) 2017-01-31 2018-08-02 Telia Company Ab Methods for Providing Continuity in Chatbot Communications
KR101840420B1 (ko) 2017-04-21 2018-05-04 주식회사 닐리리아 챗봇 플랫폼 제공 방법 및 장치
KR101830857B1 (ko) 2017-07-14 2018-02-21 코웨이 주식회사 사용자의 생체 데이터 및 수면환경 데이터를 수집하여 챗봇을 통해 설문을 간소화하는 방법 및 이를 이용한 챗봇 제공 장치
KR101858206B1 (ko) 2017-12-07 2018-05-15 디비손해보험 주식회사 지능형 챗봇 기반 대화형 현장 지원 서비스 제공 방법
KR102119404B1 (ko) 2018-11-28 2020-06-05 주식회사 와이즈넛 복수 챗봇의 협업에 의한 대화형 정보제공 시스템 및 그 방법

Also Published As

Publication number Publication date
KR20220085221A (ko) 2022-06-22

Similar Documents

Publication Publication Date Title
JP7285949B2 (ja) 人工知能を介してエージェントを支援するためのシステム及び方法
CN110096191B (zh) 一种人机对话方法、装置及电子设备
US10819664B2 (en) Chat-based application interface for automation
US7921214B2 (en) Switching between modalities in a speech application environment extended for interactive text exchanges
US20190392395A1 (en) Worry-free meeting conferencing
US20190109803A1 (en) Customer care training using chatbots
CN110704594A (zh) 基于人工智能的任务型对话交互处理方法、装置
US11450318B2 (en) Speech skill creating method and system
WO2010087995A1 (en) Aspect oriented programmalbe dialogue manager and apparatus operated thereby
US20100050265A1 (en) Method and Apparatus for Enhancing Security Between a Web Server and a PSTN-based Voice Portal
US11361755B2 (en) Personalization of conversational agents through macro recording
WO2019068203A1 (en) SYSTEM AND METHOD FOR A GRAPHIC AND CONVERSATIONAL HYBRID USER INTERFACE
US20230360650A1 (en) Response orchestrator for natural language interface
CN111462726B (zh) 一种外呼应答方法、装置、设备及介质
KR102472887B1 (ko) 스크립트를 이용한 챗봇의 대화흐름 관리 방법
CN109902163B (zh) 一种智能应答方法、装置、设备及存储介质
CN113987149A (zh) 任务型机器人的智能会话方法、系统及存储介质
KR20200017272A (ko) 음성에 기반하여 기능을 실행하기 위한 방법 및 이를 지원하는 사용자 전자 장치
US11949635B2 (en) Proactive and reactive directing of conversational bot-human interactions
KR102485339B1 (ko) 차량의 음성 명령 처리 장치 및 방법
US20220043973A1 (en) Conversational graph structures
Mittal Getting Started with Chatbots: Learn and create your own chatbot with deep understanding of Artificial Intelligence and Machine Learning
CN112487142B (zh) 一种基于自然语言处理的对话式智能交互方法和系统
CN111459836B (zh) 对话策略配置方法及对话系统
CN115019781A (zh) 一种对话业务执行方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant