KR20180088192A - 자동 질의응답 시스템 - Google Patents

자동 질의응답 시스템 Download PDF

Info

Publication number
KR20180088192A
KR20180088192A KR1020170012965A KR20170012965A KR20180088192A KR 20180088192 A KR20180088192 A KR 20180088192A KR 1020170012965 A KR1020170012965 A KR 1020170012965A KR 20170012965 A KR20170012965 A KR 20170012965A KR 20180088192 A KR20180088192 A KR 20180088192A
Authority
KR
South Korea
Prior art keywords
unit
analysis
natural language
plug
query
Prior art date
Application number
KR1020170012965A
Other languages
English (en)
Other versions
KR101915778B1 (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 KR1020170012965A priority Critical patent/KR101915778B1/ko
Publication of KR20180088192A publication Critical patent/KR20180088192A/ko
Application granted granted Critical
Publication of KR101915778B1 publication Critical patent/KR101915778B1/ko

Links

Images

Classifications

    • G06F17/30654
    • 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/3331Query processing
    • G06F16/334Query execution
    • G06F16/3344Query execution using natural language analysis
    • G06F17/30684

Abstract

빠르게 정확한 질의응답을 할 수 있는 자동 질의응답 시스템을 제공한다. 본 발명의 기술적 사상의 일측면에 따른 자동 질의응답 시스템은 네트워크를 통하여 자연어 형태인 사용자의 질의를 수신하고 응답을 송신하는 유저 인터페이스, 사용자의 질의 및 그에 대한 응답을 관리하는 질의응답 관리자, 자연어 형태인 사용자의 질의를 분석하며 각각 단위 자연어 분석 결과를 생성하는 복수의 단위 분석 과정을 가지는 자연어 이해부, 및 자연어 이해부의 복수의 단위 분석 과정에서 각각 생성한 단위 자연어 분석 결과를 전달받아, 각각 독립적으로 분석을 수행하는 복수의 모듈 및 복수의 플러그인을 포함하며, 질의응답 관리자는 자연어 이해부의 복수의 단위 분석 과정에서 각각 생성한 단위 자연어 분석 결과를 구분하여 수신하여, 복수의 모듈 및 복수의 플러그인 중 상기 단위 자연어 분석 결과 각각에 대응되는 모듈 또는 플러그인에 전달하여 분석을 수행시키고, 복수의 모듈 및 복수의 플러그인 중 분석이 수행 중인 모듈 또는 플러그인에서 일정 시간 내에 전달되는 답변 또는 일정 개수까지 전달된 답변을 기초로, 응답을 생성한다.

Description

자동 질의응답 시스템{Automatic Question-Answering System}
본 발명은 자동 질의응답 시스템에 관한 것으로, 자세하게는 QA(Question-Answering) 모듈 및 QA 플러그인 기반의 자동 질의응답 시스템에 관한 것이다.
본 발명은 미래창조과학부 SW컴퓨팅산업원천기술개발사업(SW)의 일환으로 (주)솔트룩스에서 주관하고 연구하여 수행된 연구로부터 도출된 것이다. [연구기간: 2006.03.01~2017.02.28, 연구관리 전문기관: 정보통신기술연구진흥센터, 연구과제명: WiseKB: 빅데이터 이해 기반 자가학습형 지식베이스 및 추론기술 개발, 과제 고유번호: R0101-16-0054]
웹에 존재하는 데이터의 양이 기하급수적으로 늘어남에 따라, 오늘날의 웹은 사용자가 원하는 거의 모든 정보를 갖고 있다고 볼 수 있을 정도에 이르고 있다. 따라서 사용자가 원하는 정보를 제공하기 위해서는, 웹에 존재하는 데이터를 사용자의 요구에 맞게 적절히 추출할 필요성이 있으며, 이에 따라 사용자의 질의와 관련된 문서를 검색하는 정보검색 연구가 활발히 진행되어, 많은 웹 기반 정보검색 시스템이 만들어졌다.
하지만 종래의 웹 기반 정보검색 시스템은 사용자가 직접적인 답변을 요구하는 경우, 관련 문서를 제공해주는 선에서 그친다는 한계를 보인다. 따라서 단순히 관련 문서를 제공하는 정보검색 시스템에서 한 걸음 더 나아가, 사용자의 질의에 대한 답변 자체를 응답해주는 질의응답 시스템이 요구되고 있다.
본 발명의 기술적 과제는, 빠르게 정확한 질의응답을 할 수 있는 자동 질의응답 시스템을 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 기술적 사상의 일측면에 따른 자동 질의응답 시스템은 네트워크를 통하여 자연어 형태인 사용자의 질의를 수신하고 응답을 송신하는 유저 인터페이스, 상기 사용자의 질의 및 그에 대한 상기 응답을 관리하는 질의응답 관리자, 자연어 형태인 상기 사용자의 질의를 분석하며 각각 단위 자연어 분석 결과를 생성하는 복수의 단위 분석 과정을 가지는 자연어 이해부, 및 상기 자연어 이해부의 복수의 단위 분석 과정에서 각각 생성한 단위 자연어 분석 결과를 전달받아, 각각 독립적으로 분석을 수행하는 복수의 모듈 및 복수의 플러그인을 포함하며, 상기 질의응답 관리자는 상기 자연어 이해부의 복수의 단위 분석 과정에서 각각 생성한 상기 단위 자연어 분석 결과를 구분하여 수신하여, 상기 복수의 모듈 및 복수의 플러그인 중 상기 자연어 분석 결과 각각에 대응되는 모듈 또는 플러그인에 전달하여 분석을 수행시키고, 상기 복수의 모듈 및 복수의 플러그인 중 분석이 수행 중인 모듈 또는 플러그인에서 일정 시간 내에 전달되는 답변 또는 일정 개수까지 전달된 답변을 기초로, 상기 응답을 생성한다.
상기 질의응답 관리자는, 상기 일정 시간이 초과한 경우, 상기 분석이 수행 중인 모듈 또는 플러그인 중, 답변을 전달하지 않은 모듈 또는 플러그인의 분석을 중단시킬 수 있다.
또는 상기 질의응답 관리자는, 상기 분석이 수행 중인 모듈 또는 플러그인으로부터 상기 일정 시간 내에 전달된 답변들에 대하여, 랭킹을 정하여 상기 답변들 중 랭킹이 높은 답변을 기초로, 상기 응답을 생성할 수 있다.
상기 질의응답 관리자는, 상기 일정 개수까지 답변이 전달된 경우, 상기 분석이 수행 중인 모듈 또는 플러그인 중, 답변을 전달하지 않은 모듈 또는 플러그인의 분석을 중단시킬 수 있다.
각각 지식데이터가 축적된 지식베이스인 복수의 도메인 DB를 더 포함하며, 상기 복수의 모듈은 상기 복수의 도메인 DB 중 적어도 하나를 참조하여 답변을 생성하고, 상기 복수의 플러그인은 상기 복수의 도메인 DB를 참조하지 않고 답변을 생성할 수 있다.
상기 복수의 플러그인 중 일부는 자체적으로 답변을 생성하고, 다른 일부는 외부 서비스와 연결되어 답변을 생성할 수 있다.
상기 복수의 모듈은, 상기 사용자의 질의를 키워드 기반의 패턴 매칭을 통하여 SPARQL 형태의 질의를 생성하여 답변을 생성하는 FBQA 모듈, 미리 작성된 템플릿들을 기반으로 상기 사용자의 질의로부터 템플릿 매핑을 하여 템플릿에 기초한 질의를 생성하하여 답변을 생성하는 TBQA 모듈, 및 상기 사용자의 질의를 구문분석으로 분석하여 SPARQL 형태의 질의를 생성하하여 답변을 생성하는 GBQA 모듈을 포함할 수 있다.
상기 자연어 이해부는, 상기 복수의 단위 분석 과정 각각을 수행하는 시맨틱 롤 라벨링부, 형태소 분석부, 구문 분석부, 개체명 분석부, 의도 분류부 및 도메인 분석부를 포함할 수 있다.
상기 자연어 이해부는, 상기 시맨틱 롤 라벨링부, 상기 형태소 분석부, 상기 구문 분석부, 상기 개체명 분석부, 상기 의도 분류부 및 상기 도메인 분석부 각각에서 수행되는 단위 분석 과정에서 생성되는 상기 단위 자연어 분석 결과를, 생성되는 순서대로 상기 질의응답 관리자에 전송할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 기술적 사상의 일측면에 따른 자동 질의응답 시스템은 네트워크를 통하여 자연어 형태인 사용자의 질의를 수신하고 응답을 송신하는 유저 인터페이스, 상기 사용자의 질의 및 그에 대한 상기 응답을 관리하는 질의응답 관리자, 자연어 형태인 상기 사용자의 질의를 분석하며 각각 단위 자연어 분석 결과를 생성하는 복수의 단위 분석 과정을 가지는 자연어 이해부, 및 상기 자연어 이해부의 복수의 단위 분석 과정에서 각각 생성한 단위 자연어 분석 결과를 전달받아, 각각 독립적으로 분석을 수행하는 복수의 모듈 및 복수의 플러그인을 포함하며, 상기 질의응답 관리자는 상기 자연어 이해부의 복수의 단위 분석 과정에서 각각 생성한 상기 단위 자연어 분석 결과를 구분하여 수신하여, 상기 복수의 모듈 및 복수의 플러그인 중 상기 단위 자연어 분석 결과 각각에 대응되는 모듈 또는 플러그인에 전달하여 분석을 수행시키고, 상기 복수의 모듈 및 복수의 플러그인 중 분석이 수행 중인 모듈 또는 플러그인에서 일정 시간 내에 전달되는 답변들의 유사도를 판단하여, 적어도 2개의 답변의 유사도가 일정 기준 이상인 경우, 유사도가 상기 일정 기준 이상의 적어도 2개의 답변을 기초로, 상기 응답을 생성하며, 유사도가 상기 일정 기준 이상인 적어도 2개의 답변이 전달된 경우, 상기 분석이 수행 중인 모듈 또는 플러그인 중, 답변을 전달하지 않은 모듈 또는 플러그인의 분석을 중단시킨다.
본 발명에 따른 자동 질의응답 시스템은, 필요한 모듈 및/또는 플러그인에 대한 분석만을 수행할 수 있어 질의에 응답을 구하는데 요구되는 부하가 최소화될 수 있고, 모듈 및/또는 플러그인 각각에서의 분석이 빨리 시작될 수 있어 질의에 대한 응답을 구하는 시간이 단축될 수 있다.
또한 복수의 모듈 및 복수의 플러그인 중에서 응답을 구하기 위한 답변을 일정 시간 내에 제공하거나, 일정 개수를 제공하는 것이 있는 경우, 분석이 진행 중인 다른 모듈 및/또는 플러그인에 대한 분석을 중단시킬 수 있으므로, 응답을 구하는데 요구되는 부하가 최소화되고, 응답을 구하는 시간이 단축될 수 있다.
도 1은 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템을 나타내는 블록도이다.
도 2는 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템을 나타내는 블록도이다.
도 3은 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템의 동작을 설명하기 위한 블록도이다.
도 4는 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템의 동작을 설명하기 위한 블록도이다.
도 5는 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템을 나타내는 블록도이다.
도 6은 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템의 모듈 서버와 도메인 DB부를 상세히 나타내는 블록도이다.
도 7은 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템의 플러그인 서버 및, 플러그인 서버와 연결되는 외부 서비스/DB를 상세히 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수개의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하 도면 및 설명에서, 하나의 블록으로 표시 또는 설명되는 구성요소는 하드웨어 블록 또는 소프트웨어 블록일 수 있다. 예를 들면, 구성요소들 각각은 서로 신호를 주고 받는 독립적인 하드웨어 블록일 수도 있고, 또는 하나의 프로세서에서 실행되는 소프트웨어 블록일 수도 있다.
본 발명의 구성 및 효과를 충분히 이해하기 위하여, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예들을 설명한다.
도 1은 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템을 나타내는 블록도이다.
도 1을 참조하면, 자동 질의응답 시스템(1)은 네트워크(20)를 통하여 사용자(10)로부터 질의를 수신하고, 응답을 송신하는 유저 인터페이스(UI, 100)를 포함한다. 네트워크(20)은 유선 인터넷 서비스, 근거리 통신망(LAN), 광대역 통신망(WAN), 인트라넷, 무선 인터넷 서비스, 이동 컴퓨팅 서비스, 무선 데이터 통신 서비스, 무선 인터넷 접속 서비스, 위성 통신 서비스, 무선 랜, 블루투스 등 유/무선을 통하여 데이터를 주고 받을 수 있는 것을 모두 포함할 수 있다. 네트워크(20)이 스마트폰 또는 태블릿 등과 연결되는 경우, 네트워크(20)은 3G, LTE(long term evolution) 등의 무선 데이터 통신 서비스, 와이파이(Wi-Fi) 등의 무선 랜, 블루투스 등일 수 있다.
유저 인터페이스(100)는 사용자(10)가 사용하는 단말기 등을 통하여 자동 질의응답 시스템(1)에 엑세스하기 위한 인터페이스를 제공할 수 있다. 사용자(10)는 유저 인터페이스(100)를 통하여 자동 질의응답 시스템(1)에 질의를 전송할 수 있고, 유저 인터페이스(100)를 통하여 자동 질의응답 시스템(1)의 제공하는 질의에 대한 응답을 수신할 수 있다.
자동 질의응답 시스템(1)은 유저 인터페이스(100)와 연결되어 사용자(10)로부터 질의를 전달받고, 응답을 결정하여 유저 인터페이스(100)를 통하여 사용자(10)에게 응답을 전달하는 질의응답 관리자(200)를 포함한다. 또한 질의응답 관리(200)에 의하여 자동 질의응답 시스템(1)이 포함하는 구성 요소들을 제어할 수 있다.
자동 질의응답 시스템(1)은 질의응답 관리자(200)가 전달받은 자연어 형태의 질의를 분석하는 자연어 이해부(300), 자연어 이해부(300)에 의하여 분석된 질의의 자연어 분석 결과를 질의응답 관리자(200)를 통하여 전달받아 질의에 대한 응답을 제공하기 위한 답변들을 제공하는 모듈 서버(500), 및 플러그인 서버(600)를 더 포함할 수 있다.
본 명세서에서, "응답"이란, 사용자(1)의 질의에 대하여 자동 질의응답 시스템(1)이 제공하는 결과물, 예컨대, 사용자(1)의 질의라는 질문에 대한 정답을 의미하고, "답변"이란, 모듈 서브(500)의 각 모듈(510, 520, 530) 및/또는 플러그인 서버(600)의 각 플러그인(610, 620, 630, 640, 650, 660)에서 제공하는 분석 결과, 예컨태, 사용자(10)의 질의라는 질문에 대한 각 모듈(510, 520, 530) 및/또는 각 플러그인(610, 620, 630, 640, 650, 660)이 분석한 가답안을 의미한다.
본 명세서에서 "모듈"이란, QA 모듈을 의미하는 것으로, 불특정 다수의 정보를 선택하고 조합하여 주어진 문제의 시간과 공간에 적합한 해결책으로 활용이 가능한 것인 지식, 또는 지식을 구현하기 위하여 필요한 개체들 및 이들 사이의 관계를 가지고 있는 데이터인 지식 데이터가 축적된 지식베이스(knowledge base)를 참조하여, QA를 독자적으로 수행할 수 있는 모듈을 의미한다. 또한 "플러그인"이란, QA 플러그인을 의미하는 것으로, 수학연산, 단위변환 등과 같이 지식베이스를 참조하지 않고 자체적으로 QA를 수행할 수 있도록 구성되어 자동 질의응답 시스템(1)에 선택적으로 탑재될 수 있는 것들, 또는 QA를 제공할 수 있는 외부 서비스와 연결시켜줄 수 API(application programming interface)를 가지는 것들을 의미한다. 즉, 모듈과 플러그인은 각각이 다른 모듈이나 플러그인과는 독립적으로, 자동 질의응답 시스템(1) 내에서 QA를 수행할 수 있도록 구성된 것들을 의미한다.
자동 질의응답 시스템(1)은 자연어 생성부(400)를 더 포함하여, 각 모듈(510, 520, 530) 및/또는 각 플러그인(610, 620, 630, 640, 650, 660)이 자연어 형태의 답변을 제공하도록 하거나, 질의응답 관리자(200)가 자연어 형태의 응답을 제공하도록 할 수 있다.
즉, 자동 질의응답 시스템(1)은, 자연어 형태인 사용자(10)의 질의에 대하여 자연어 이해부(300)에서 분석한 후, 이를 토대로 모듈 서버(500) 및/또는 플러그인 서버(600)에서 분석하고, 그 분석 결과인 답변을 자연어 생성부(400)를 통하여 자연어 형태인 응답으로 생성하여 사용자(10)에게 제공할 수 있다.
질의응답 관리자(200)는 알림 수신부(210), 모듈/플러그인 검출부(220), 및 응답 결정부(230)를 포함한다. 알림 수신부(210)는 자연어 이해부(300)에서 분석된 질의의 자연어 분석 결과를 수신할 수 있다. 일부 실시 예에서, 자연어 이해부(300)는 질의에 대한 분석을 수행하는 과정에서, 모든 분석이 완료된 후에 알림 수신부(210)로 전송하지 않고, 단위 분석 과정에서 따른 생성되는 단위 자연어 분석 결과를 생성되는 순서대로 순차적으로 알림 수신부(210)에 전송할 수 있다.
예를 들면, 자연어 이해부(300)는 질의에 대하여, 시맨틱 롤 라벨링(Semantic Role Labeling), 형태소 분석, 구문 분석, 개체명 분석, 의도 분류, 및 도메인 분석 등의 복수의 단위 분석 과정을 수행할 수 있다. 상기 복수의 단위 분석 과정 중 일부는 병렬적으로 수행될 수 있다. 상기 복수의 단위 분석 과정 중 일부는 순차적으로 수행될 수 있다.
일부 실시 예에서, 자연어 이해부(300)는 질의에 대한 자연어 분석 결과를 테이블(table) 구조 또는 트리(tree) 구조를 가지는 정형 데이터로 제공할 수 있다. 자연어 이해부(300)에서 제공하는 정형 데이터는 예를 들면, RDB(Relation DateBase), CSV(Comma-Seperated Variables), XML(eXtensible Markup Language), JSON(JavaScript Object Notation) 등일 수 있다.
알림 수신부(210)는 자연어 이해부(300)에서 수행되는 시맨틱 롤 라벨링, 형태소 분석, 구문 분석, 개체명 분석, 의도 분류, 및 도메인 분석 등의 복수의 단위 분석 과정 중 적어도 하나의 단위 분석 과정의 단위 자연어 분석 결과를 구분하여 수신할 수 있다. 알림 수신부(210)는, 자연어 이해부(300)에서 수신한 각각의 단위 자연어 분석 결과를 질의에 대한 응답이 마무리될 때까지 저장하고 있을 수 있다. 또한 알림 수신부(210)는 자연어 이해부(300)에서 수신한 각각의 단위 자연어 분석 결과를 모듈/플러그인 검출부(220)로 전달할 수 있다.
모듈/플러그인 검출부(220)는 알림 수신부(210)로부터 전달받은 자연어 이해부(300)에서 수신한 각각의 단위 자연어 분석 결과를 토대로, 모듈 서브(500) 및/또는 플러그인 서버(600)로 전달하여, 모듈 서브(500)의 각 모듈(510, 520, 530) 및/또는 플러그인 서버(600)의 각 플러그인(610, 620, 630, 640, 650, 660) 중 해당 단위 자연어 분석 결과 각각에 대응되는 적합한 모듈 및/또는 플러그인에서 질의에 대한 답변을 분석하도록 할 수 있다.
따라서 모듈/플러그인 검출부(220)는 자동 질의응답 시스템(1)이 가지는 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660) 중 질의에 적합한 모듈 및/또는 플러그인에 대해서만 분석을 수행하도록 할 수 있다. 또한, 질의에 대한 자연어 이해부(300)에서의 분석이 모두 완료되기 이전에도, 부분적인 분석 결과인 단위 자연어 분석 결과를 수신하여, 해당 단위 자연어 분석 결과 각각에 대응되어 적합한 모듈 및/또는 플러그인을 먼저 구동시킬 수 있다. 따라서 필요한 모듈 및/또는 플러그인에 대한 분석만을 수행할 수 있어 자동 질의응답 시스템(1)에서 응답을 구하는데 요구되는 부하가 최소화되고, 또한 모듈(510, 520, 530) 및/또는 플러그인(610, 620, 630, 640, 650, 660)에서의 분석이 빨리 시작될 수 있어 응답을 구하는 시간이 단축될 수 있다.
복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660) 중 질의에 대한 분석을 수행하여 답변을 구한 모듈 및/또는 플러그인은 그 결과인 답변을 응답 결정부(230)로 전달한다. 응답 결정부(230)는 그 자체적으로, 또는 답변 랭킹부(240)를 참조하여 응답을 결정한 후, 사용자(10)에게 유저 인터페이스(100)를 통하여 응답을 제공할 수 있다. 응답 결정부(230)는 자연어 생성부(400)를 참조하여, 자연어 형태로 응답을 사용자(10)에게 제공할 수 있다.
일부 실시 예에서, 모듈(510, 520, 530) 및/또는 플러그인(610, 620, 630, 640, 650, 660)은 분석을 수행하여 답변을 응답 결정부(230)로 전달할 때, 자연어 생성부(400)를 참조하여, 자연어 형태의 답변을 응답 결정부(230)로 전달할 수 있다.
일부 실시 예에서, 응답 결정부(230)는 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660) 중 일정 시간 내에 전달되는 답변들에 대하여만 답변을 수신한 후, 답변 랭킹부(240)를 참조하여 랭킹을 정한 후, 답변들 중 랭킹이 높은 답변을 응답으로 선정하여 사용자(10)에게 제공할 수 있다. 이 경우, 상기 일정 시간이 초과한 경우에는 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660) 중 분석이 진행 중인 모듈 및/또는 플러그인에 대한 분석을 중단시킬 수 있다.
일부 실시 예에서, 응답 결정부(230)는 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660) 중 유사성이 높은 답변이 2개 이상이 수신되는 경우, 해당 답변을 응답으로 선정하여 사용자(10)에게 제공할 수 있다. 이 경우, 상기 유사성이 높은 답변이 2개 이상 수신되는 경우에는 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660) 중 분석이 진행 중인 모듈 및/또는 플러그인에 대한 분석을 중단시킬 수 있다.
따라서 응답 결정부(230)에 동작에 의하여, 질의응답 시스템(1)에서 응답을 구하는데 요구되는 부하가 최소화되고, 응답을 구하는 시간이 단축될 수 있다.
이와 같은 본 발명의 일 실시 예에 따른 자동 질의응답 시스템(1)은 질의 분석 과정과 응답 결정 과정 각각에서, 부하를 최소화하고 응답을 구하는 시간을 단축하면서, 동시에 정확한 응답을 사용자(10)에게 제공할 수 있다.
도 2는 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템을 나타내는 블록도이다. 도 2는 응답 결정부(230)에 대하여 상세하게 도시하고 있으며, 도 1에 대한 설명과 중복되는 내용은 생략될 수 있다.
도 2를 참조하면, 자동 질의응답 시스템(1a)은 유저 인터페이스(100), 질의응답 관리자(200), 모듈 서버(500), 및 플러그인 서버(600)를 포함할 수 있다. 자동 질의응답 시스템(1a)은 자연어 이해부(300)를 더 포함할 수 있다.
자동 질의응답 시스템(1a)이 네트워크(20)를 통하여 사용자(10)로부터 자연어 형태의 질의를 수신하면, 자연어 이해부(300)에서는 질의응답 관리자(200)를 통하여 질의를 전달받아, 질의에 대한 자연어 이해를 위한 복수의 단위 분석 과정을 수행한다. 자연어 이해부(300)에서 수행 중인 질의에 대한 복수의 단위 분석 과정 중 각 단위 분석 과정에 대한 단위 자연어 분석 결과가 생성되면, 이를 질의응답 관리자(200)로 송신한다.
적어도 하나의 단위 분석 과정의 단위 자연어 분석 결과를 알림 수신부(210)가 수신하면, 모듈/플러그인 검출부(220)는 수신된 단위 자연어 분석 결과 각각을 모듈 서브(500)의 복수의 모듈(510, 520, 530) 및 플러그인 서버(600)의 복수의 플러그인(610, 620, 630, 640, 650, 660) 중 해당 단위 자연어 분석 결과 각각에 대응되는 적합한 모듈 및/또는 플러그인에 전달하며, 단위 자연어 분석 결과를 전달받은 모듈 및/또는 플러그인은 답변을 구하여, 응답 결정부(230)로 전달한다.
응답 결정부(230)는 답변 시간 관리부(232), 답변 유사도 판단부(234) 및 답변 랭킹 판단부(236)를 포함할 수 있다.
답변 시간 관리부(232)는 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660)으로부터 답변이 전달되는 시간 및/또는 개수를 파악하여 관리할 수 있다.
일부 실시 예에서, 답변 시간 관리부(232)는 일정 시간까지만 응답 결정부(230)에 모듈 및/또는 플러그인으로부터 답변들이 전달되도록 한 후, 일정 시간이 경과되는 경우, 답변을 아직 전달하지 않은 모듈 및/또는 플러그인에서의 분석을 중단시키거나, 일시간으로 중지시킬 수 있다. 이후, 답변 랭킹 판단부(236)는 답변 랭킹부(240)를 참조하여, 일정 시간 내에 전달된 답변들에 대하여, 랭킹을 정한 후, 답변들 중 랭킹이 높은 답변을 질의에 대한 응답으로 선정할 수 있다.
일부 실시 예에서, 답변 시간 관리부(232)는 일정 개수까지만 응답 결정부(230)에 모듈 및/또는 플러그인으로부터 답변들이 전달되도록 한 후, 일정 개수의 답변이 전달된 경우, 답변을 아직 전달하지 않은 모듈 및/또는 플러그인에서의 분석을 중단시키거나, 일시간으로 중지시킬 수 있다. 이후, 답변 랭킹 판단부(236)는 답변 랭킹부(240)를 참조하여, 일정 개수의 전달된 답변들에 대하여, 랭킹을 정한 후, 답변들 중 랭킹이 높은 답변을 질의에 대한 응답으로 선정할 수 있다.
답변 유사도 판단부(234)는 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660)으로부터 전달되는 답변들의 유사도를 판단할 수 있다. 예를 들면, 답변 유사도 판단부(234)는 모듈 및/또는 플러그인으로부터 응답 결정부(230)에 전달된 답변 중 적어도 2개의 답변의 유사도가, 일정 기준 이상인 경우, 답변을 아직 전달하지 않은 모듈 및/또는 플러그인에서의 분석을 중단시키거나, 일시간으로 중지시킬 수 있다.
일부 실시 예에서, 적어도 2개의 답변의 유사도가 일정 기준 이상의 유사도를 가지는 경우, 이중 하나, 또는 이들을 종합하여, 질의에 대한 응답으로 선정할 수 있다.
일부 실시 예에서, 적어도 2개의 답변의 유사도가 일정 기준 이상의 유사도를 가지는 경우, 일정 기준 이상의 유사도를 가지는 답변들에 대하여, 답변 랭킹 판단부(236)에서 답변 랭킹부(240)를 참조하여 랭킹을 정한 후, 답변들 중 랭킹이 높은 답변을 질의에 대한 응답으로 선정할 수 있다.
도 3은 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템의 동작을 설명하기 위한 블록도이다. 도 3에 대한 설명 중 도 1 또는 도 2에 대한 설명과 중복되는 내용은 생략될 수 있다.
도 3을 참조하면, 자동 질의응답 시스템(1b)은 유저 인터페이스(100), 질의응답 관리자(200), 모듈 서버(500), 및 플러그인 서버(600)를 포함할 수 있다. 자동 질의응답 시스템(1b)은 자연어 이해부(300)를 더 포함할 수 있다.
자동 질의응답 시스템(1b)이 네트워크(20)를 통하여 사용자(10)로부터 자연어 형태의 질의를 수신하면, 자연어 이해부(300)에서는 질의응답 관리자(200)를 통하여 질의를 전달받아, 질의에 대한 자연어 이해를 위한 복수의 단위 분석 과정을 수행한다. 자연어 이해부(300)에서 수행 중인 질의에 대한 복수의 단위 분석 과정 중 적어도 하나의 단위 분석 과정의 단위 자연어 분석 결과를 알림 수신부(210)가 수신하면, 모듈/플러그인 검출부(220)는 수신된 단위 자연어 분석 결과 각각을 모듈 서브(500)의 복수의 모듈(510, 520, 530) 및 플러그인 서버(600)의 복수의 플러그인(610, 620, 630, 640, 650, 660) 중 해당 단위 자연어 분석 결과 각각에 대응되는 적합한 모듈 및/또는 플러그인에 전달한다.
예를 들어, 복수의 모듈(510, 520, 530) 및 플러그인(610, 620, 630, 640, 650, 660) 중 제1 모듈(510), 제2 모듈(520), 제1 플러그인(610), 및 제2 플러그인(620)이 단위 자연어 분석 결과를 전달받아서 각각 독립적으로 분석을 수행할 수 있다. 이때, 제1 모듈(510), 제2 모듈(520), 제1 플러그인(610), 및 제2 플러그인(620) 각각이 전달받은 단위 자연어 분석 결과는, 자연어 이해부(300)의 동일한 단위 분석 과정에서 생성된 동일한 단위 자연어 분석 결과일 수도 있고, 다른 단위 분석 과정에서 생성된 단위 자연어 분석 결과일 수도 있다. 단위 자연어 분석 결과를 수신하지 않은 제3 모듈(530) 및 제3 내지 제6 플러그인(630, 640, 650, 660)은 분석을 수행하지 않고 유휴(idle) 상태로 있거나, 다른 질의에 대한 분석을 수행할 수 있다.
분석을 수행 중인 제1 모듈(510), 제2 모듈(520), 제1 플러그인(610), 및 제2 플러그인(620) 중, 분석이 완료되어 답변을 생성한 모듈 및/또는 플러그인은, 다른 모듈 및/또는 플러그인의 분석 수행 여부를 고려하지 않고, 응답 결정부(230)로 답변을 전달한다.
일부 실시 예에서, 답변 시간 관리부(232)는, 모듈/플러그인 검출부(220)로부터 단위 자연어 분석 결과가 최초로 모듈 서버(500) 및/또는 플러그인 서버(600)에 전달한 시점부터 경과 시간을 관리할 수 있다. 일부 실시 예에서, 답변 시간 관리부(232)는 답변이 응답 결정부(230)로 최초로 전달된 시점부터 경과 시간을 관리할 수 있다.
답변 시간 관리부(232)는 경과 시간이 기정의된 제1 시간이 될 때까지 답변들을 전달받은 후에, 응답 결정부(230)는 이 답변들 중에서 응답을 결정할 수 있다. 또한 응답 결정부(230)는 상기 제1 시간이 경과하면, 아직 답변을 생성하지 않은 모듈 및/또는 플러그인에서의 분석을 중단시키거나, 일시간으로 중지시킬 수 있다.
상기 제1 시간은, 자동 질의응답 시스템(1b)의 관리자가 설정할 수도 있고, 이전에 수행된 질의에 대한 응답을 하는 데에 소요된 시간을 기초로 자동 질의응답 시스템(1b)이 자체적으로 설정할 수도 있다.
답변 시간 관리부(232)는 상기 제1 시간 동안에 답변이 전달되지 않는 경우, 상기 제1 시간보다 큰 제2 시간 동안, 응답 결정부(230)로 답변이 전달되도록 경과 시간을 연장시킬 수 있다.
도 4는 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템의 동작을 설명하기 위한 블록도이다.
도 4를 참조하면, 자동 질의응답 시스템(1c)은 유저 인터페이스(100), 질의응답 관리자(200), 모듈 서버(500), 및 플러그인 서버(600)를 포함할 수 있다. 자동 질의응답 시스템(1c)은 자연어 이해부(300)를 더 포함할 수 있다.
자동 질의응답 시스템(1c)이 네트워크(20)를 통하여 사용자(10)로부터 자연어 형태의 질의를 수신하면, 자연어 이해부(300)에서는 질의응답 관리자(200)를 통하여 질의를 전달받아, 질의에 대한 자연어 이해를 위한 복수의 단위 분석 과정을 수행한다. 자연어 이해부(300)에서 수행 중인 질의에 대한 복수의 단위 분석 과정 중 적어도 하나의 단위 분석 과정의 단위 자연어 분석 결과를 알림 수신부(210)가 수신하면, 모듈/플러그인 검출부(220)는 수신된 단위 자연어 분석 결과 각각을 모듈 서브(500)의 복수의 모듈(510, 520, 530) 및 플러그인 서버(600)의 복수의 플러그인(610, 620, 630, 640, 650, 660) 중 해당 단위 자연어 분석 결과 각각에 대응되는 적합한 모듈 및/또는 플러그인에 전달한다.
예를 들어, 복수의 모듈(510, 520, 530) 및 플러그인(610, 620, 630, 640, 650, 660) 중 제1 모듈(510), 제2 모듈(520), 제1 플러그인(610), 및 제2 플러그인(620)이 단위 자연어 분석 결과를 전달받아서 각각 독립적으로 분석을 수행할 수 있다. 이때, 제1 모듈(510), 제2 모듈(520), 제1 플러그인(610), 및 제2 플러그인(620) 각각이 전달받은 단위 자연어 분석 결과는, 자연어 이해부(300)의 동일한 단위 분석 과정에서 생성된 동일한 단위 자연어 분석 결과일 수도 있고, 다른 단위 분석 과정에서 생성된 단위 자연어 분석 결과일 수도 있다. 단위 자연어 분석 결과를 수신하지 않은 제3 모듈(530) 및 제3 내지 제6 플러그인(630, 640, 650, 660)은 분석을 수행하지 않고 유휴(idle) 상태로 있거나, 다른 질의에 대한 분석을 수행할 수 있다.
분석을 수행 중인 제1 모듈(510), 제2 모듈(520), 제1 플러그인(610), 및 제2 플러그인(620) 중, 분석이 완료되어 답변을 생성한 모듈 및/또는 플러그인은, 다른 모듈 및/또는 플러그인의 분석 수행 여부를 고려하지 않고, 응답 결정부(230)로 답변을 전달한다.
답변 유사도 판단부(234)는, 응답 결정부(230)로 전달된 답변이 2개 이상이 되는 경우, 답변들의 유사도를 판단할 수 있다. 응답 결정부(230)로 전달된 답변 중 적어도 2개의 답변의 유사도가 일정 기준 이상인 경우, 유사도가 일정 기준 이상인 적어도 2개의 답변 모두 또는 이들 중 하나를 질의에 대한 응답으로 선정할 수 있다.
또한 답변 유사도 판단부(234)는 전달된 답변 중 일정 기준 이상의 유사도를 가지는 적어도 2개의 답변이 있는 경우, 아직 답변을 생성하지 않은 모듈 및/또는 플러그인에서의 분석을 중단시키거나, 일시간으로 중지시킬 수 있다.
일부 실시 예에서, 일정 기준 이상의 유사도를 가지는 적어도 2개의 답변 중 응답을 선정하기 위하여, 답변 랭킹 판단부(236)는 답변 랭킹부(240)를 참조하여, 일정 기준 이상의 유사도를 가지는 적어도 2개의 답변들에 대하여, 랭킹을 정한 후, 답변들 중 랭킹이 높은 답변을 질의에 대한 응답으로 선정할 수 있다.
도 2를 다시 참조하면, 자동 질의응답 시스템(1a)은 답변 시간 관리부(232)와 답변 유사도 판단부(234)를 함께 사용하여, 질의에 대한 응답을 제공할 수 있다.
예를 들면, 답변 시간 관리부(232)에서 관리하는 경과 시간이 기정의된 제1 시간이 되기 전에도, 답변 유사도 판단부(234)에서 일정 기준 이상의 유사도를 가지는 적어도 2개의 답변을 찾은 경우에는, 이를 질의에 대한 응답으로 제공할 수 있다. 또는 답변 유사도 판단부(234)에서 일정 기준 이상의 유사도를 가지는 적어도 2개의 답변을 찾기 이전에도, 답변 시간 관리부(232)에서 관리하는 경과 시간이 기정의된 제1 시간이 되는 경우, 그때까지 전달받은 답변들에 대하여, 답변 랭킹 판단부(236)에서 답변 랭킹부(240)를 참조하여 랭킹을 정한 후, 답변들 중 랭킹이 높은 답변을 질의에 대한 응답으로 선정할 수 있다.
도 5는 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템을 나타내는 블록도이다. 도 5에 대한 설명 중 도 1 내지 도 4에 대한 설명과 중복되는 내용은 생략될 수 있다.
도 5를 참조하면, 자동 질의응답 시스템(2)은 네트워크(20)를 통하여 사용자(10)로부터 질의를 수신하고, 응답을 송신하는 유저 인터페이스(100), 질의응답 관리자(200), 자연어 이해부(300), 자연어 생성부(400), 모듈 서버(500), 플러그인 서버(600), 및 도메인 DB부(700)를 포함한다. 일부 실시 예에서, 자동 질의응답 시스템(2)은 모듈/플러그인 모델(900)을 더 포함할 수 있다.
자동 질의응답 시스템(2)은 플러그인 서버(600)가 가지는 제1 내지 제6 플러그인(610, 620, 630, 640, 650, 660) 중 적어도 하나의 플러그인과 네트워크(20a)를 통하여 외부 서비스/DB(800)와 연결될 수 있다.
질의 응답 관리자(200)는 알림 수신부(210), 모듈/플러그인 검출부(220), 모듈 정보 저장부(222), 플러그인 정보 저장부(224), 응답 결정부(230), 및 답변 랭킹부(240)를 포함한다.
모듈 서버(500)는 복수의 모듈(510, 520, 530)을 가지는 질의응답 모듈부(580) 및, 질의응답 모듈부(580)가 가지는 복수의 모듈(510, 520, 530) 각각에 대한 정보를 가지는 모듈 등록부(590)를 포함한다. 질의응답 모듈부(580)가 가지는 복수의 모듈(510, 520, 530)은 예를 들면, FBQA(Factoid Based Question Answering) 모듈, TBQA(Template Based Question Answering) 모듈, GBQA(Generated Based Question Answering) 모듈, IRQA(Informationu Retrievalu Based Question Answering) 모듈 등일 수 있다.
플러그인 서버(600)는 복수의 플러그인(610, 620, 630, 640, 650, 660)을 가지는 질의응답 플러그인부(680) 및, 질의응답 플러그인부(680)가 가지는 복수의 플러그인(610, 620, 630, 640, 650, 660) 각각에 대한 정보를 가지는 플러그인 등록부(690)를 포함한다. 질의응답 플러그인부(680)가 가지는 복수의 플러그인(610, 620, 630, 640, 650, 660)은 예를 들면, 수학연산 플러그인, 거리계산 플러그인, 단위변환 플러그인, 환율변환 플러그인, 시간날짜 플러그인, 날씨 플러그인 등일 수 있다.
모듈 정보 저장부(222) 및 플러그인 정보 저장부(224)는 각각 모듈 등록부(590) 및 플러그인 등록부(690)로부터, 복수의 모듈(510, 520, 530) 각각 및 복수의 플러그인(610, 620, 630, 640, 650, 660) 각각에 대한 정보를 저장할 수 있다. 모듈/플러그인 검출부(220)는 모듈 정보 저장부(222) 및 플러그인 정보 저장부(224)에 저장된 정보를 기초로, 수신된 단위 자연어 분석 결과에 대응되는 적합한 모듈 및/또는 플러그인을 선정하고, 단위 자연어 분석 결과를 전달할 수 있다.
자연어 이해부(300)는 시맨틱 롤 라벨링부(SRL, 310), 형태소 분석부(320), 구문 분석부(322), 개체명 분석부(324), 의도 분류부(330) 및 도메인 분석부(340)를 포함할 수 있다. 시맨틱 롤 라벨링부(310)는 질의에 대한 의미 역할(Semantic Role)을 부여할 수 있다. 형태소 분석부(320)는 의미 역할이 부여된 질의를 형태소 단위로 분리할 수 있다. 구문 분석부(322) 및 개체명 분석부(324)는 형태소 단위로 분리된 질의에 구문 분석 및 개체명 분석을 할 수 있다. 의도 분류부(330) 및 도메인 분석부(340)는 의미 역할이 부여된 질의의 의도(intention) 분류 및 도메인 분석을 할 수 있다.
시맨틱 롤 라벨링부(SRL, 310), 형태소 분석부(320), 구문 분석부(322), 개체명 분석부(324), 의도 분류부(330) 및 도메인 분석부(340) 각각의 단위 분석 과정에서 생성되는 분석 결과를 단위 자연어 분석 결과라 호칭하며, 시맨틱 롤 라벨링부(SRL, 310), 형태소 분석부(320), 구문 분석부(322), 개체명 분석부(324), 의도 분류부(330) 및 도메인 분석부(340) 각각은 다른 단위 분석 과정과는 독립적으로 생성된 단위 자연어 분석 결과를 알림 수신부(210)로 전달할 수 있다.
알림 수신부(210)는 각각의 단위 분석 과정에서 전달된 단위 자연어 분석 결과를 모듈/플러그인 검출부(220)에 제공하며, 모듈/플러그인 검출부(220)는 모듈 정보 저장부(222) 및 플러그인 정보 저장부(224)를 참조하여, 각 단위 자연어 분석 결과에 대응되는 적합한 모듈 및/또는 플러그인을 선정하여 단위 자연어 분석 결과를 전송할 수 있다. 이때, 하나의 단위 자연어 분석 결과는 하나의 모듈 또는 플러그인에 전달될 수도 있으나, 2개 이상의 모듈 및/또는 플러그인에 동시에 전달될 수도 있다.
질의응답 모듈부(580)가 가지는 복수의 모듈(510, 520, 530)은 도메인 DB부(700)가 가지는 복수의 도메인 DB(710, 720, 730, 740) 중 적어도 하나의 도메인 DB를 참조하여, 답변을 생성할 수 있다. 복수의 도메인 DB(710, 720, 730, 740)은 지식 데이터가 축적된 지식베이스일 수 있다. 복수의 도메인 DB(710, 720, 730, 740)은 예를 들면, 일반 상식 지식베이스, 영화 도메인 지식베이스, 음악 도메인 지식베이스, 헬스 도메인 지식베이스, 퍼스널 어시스턴트 도메인 지식베이스, 음식 식당 도메인 지식베이스 등일 수 있다.
질의응답 플러그인부(680)가 가지는 복수의 플러그인(610, 620, 630, 640, 650, 660)은 예를 들면, 수학연산 플러그인, 거리계산 플러그인, 단위변환 플러그인, 환율변환 플러그인, 시간날짜 플러그인, 날씨 플러그인 등일 수 있다. 예를 들면, 복수의 플러그인(610, 620, 630, 640, 650, 660) 중 수학연산 플러그인, 단위변환 플러그인, 시간날짜 플러그인 등과 같은 일부 플러그인(610, 630, 650)은 도메인 DB(710, 720, 730, 740)를 참조하지 않고 자체적으로 QA를 수행할 수 있도록 구성될 수 있다. 예를 들면, 복수의 플러그인(610, 620, 630, 640, 650, 660) 중 거리계산 플러그인, 환율변환 플러그인, 날씨 플러그인 등 다른 일부 플러그인(620, 640, 660)은 QA를 제공할 수 있는 제1 서비스(810), 제2 서비스(820), 제3 서비스(830) 등 외부 서비스와 연결되어 QA를 수행할 수 있다. 제1 서비스(810), 제2 서비스(820), 및 제3 서비스(830)는 각각 독자적인 제1 외부 DB(812), 제2 외부 DB(822), 및 제3 외부 DB(832)와 연결되거나, 이를 포함할 수 있다. 예를 들면, 외부 서비스는 지리정보 서비스, 환율변환 서비스, 날씨 서비스 등일 수 있으며, 이들 외부 서비스와 연결되거나, 이들 외부 서비스가 포함하는 외부 DB는 예를 들면, Geo 정보 DB, 환율정보 DB, 세계날씨 DB 등일 수 있다.
자연어 생성부(400)는 응답 생성부(410), 모듈 자연어 생성 규칙부(420), 및 플러그인 자연어 생성 규칙부(430)를 포함한다. 응답 결정부(230)와 답변 랭킹부(240)는 응답 생성부(410)를 참조하여, 자연어 형태의 응답을 생성할 수 있다. 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660)은 각각 모듈 자연어 생성 규칙부(420) 및 플러그인 자연어 생성 규칙부(430)를 참조하여, 자연어 형태의 답변을 생성할 수 있다.
일부 실시 예에서, 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660)은 모듈/플러그인 모델(900)을 참조하여, 단위 자연어 분석 결과로부터 답변을 생성할 수 있다.
모듈/플러그인 모델(900)은 질의응답 로직(910), 질의응답 실행조건(920) 및 자연어 생성 룰(930)을 포함할 수 있다. 질의응답 로직(910)은 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660)에서, 질의에 대한 단위 자연어 분석 결과로부터 답변을 생성하기 위한 논리를 제공할 수 있다. 질의응답 실행조건(920)은 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660)에서, 질의에 대한 단위 자연어 분석 결과로부터 답변을 생성하는 과정에서 참조해야하는 조건들을 제공할 수 있다. 자연어 생성 룰(930)은 복수의 모듈(510, 520, 530) 및 복수의 플러그인(610, 620, 630, 640, 650, 660)이 각각 모듈 자연어 생성 규칙부(420) 및 플러그인 자연어 생성 규칙부(430)를 참조하여, 자연어 형태의 답변을 생성하기 위한 규칙을 제공할 수 있다.
도 6은 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템의 모듈 서버와 도메인 DB부를 상세히 나타내는 블록도이다.
도 6을 참조하면, 모듈 서버(500)는 복수의 모듈(510a, 520a, 530a)을 가지는 질의응답 모듈부(580) 및, 질의응답 모듈부(580)가 가지는 복수의 모듈(510a, 520a, 530a) 각각에 대한 정보를 가지는 모듈 등록부(590)를 포함한다.
복수의 모듈(510a, 520a, 530a)은 각각 FBQA 모듈(510a), TBQA 모듈(520a), 및 GBQA 모듈(530a)일 수 있다. FBQA 모듈(510a)은 단문 형태의 질의를 키워드 기반의 패턴 매칭을 통하여, 자동으로 SPARQL 형태의 질의를 생성한 후, 도메인 DB부(700), 즉 지식베이스에 질의하여 답변을 생성할 수 있다. TBQA 모듈(520a)은 미리 작성된 템플릿들을 기반으로, 질의로부터 템플릿 매핑을 하여 템플릿에 기초한 질의를 완성한 후, 도메인 DB부(700), 즉 지식베이스에 질의하여 답변을 생성할 수 있다. GBQA 모듈(530a)은 단문보다 복잡한 형태의 질의들을 구문분석 등을 활용하여 분석해서, 자동으로 SPARQL 형태의 질의를 생성하고, 도메인 DB부(700), 즉 지식베이스에 질의하여 답변을 생성할 수 있다.
일부 실시 예에서, 질의응답 모듈부(580)는 IRQA 모듈을 더 포함할 수 있다. IRAQ 모듈은 질의에 대하여 검색 기반으로 답변을 생성할 수 있다.
도메인 DB부(700)는 예를 들면, 일반 상식 지식베이스(710a), 영화 도메인 지식베이스(720a), 음악 도메인 지식베이스(730a), 헬스 도메인 지식베이스(740a) 등 각 도메인에 해당하는 별도의 지식베이스를 포함할 수 있다.
구체적으로, FBQA 모듈(510a)은 단문 형태의 질의에 대해 처리가 가능하며, 예로 "한라산의 높이는?"과 같은 형태의 질의로부터 "한라산 = class:Mountain", "높이=property:altitude"와 같이 엔티티(entity)와 프로퍼티(property) 등의 클래스(class)를 찾아내고, 해당 클래스들을 가지는 패턴(EP)에 맞는 미리 정의된 SPARQL을 통해 질의에 대한 답변을 생성할 수 있다. 예를 들면, 자연어 생성 룰(도 5의 930)에서 해당 EP 패턴에 대하여 제공하는 규칙이 단답형인 경우 1950m라는 답변을 생성하게 된다. FBQA 모듈(510a)은 EP(Entity, Property) 패턴, EPP(Entity, 2 Property) 패턴(예를 들면, 영화 명량(class:Movie)을 만든(property:create) 감독(property:director)은?), EPQ(Entity, Property, Quntity) 패턴(예를 들면, I.O.I(class:Artist)의 멤버(property:member)는 몇 명(quantity)인가?) 등 질의에 따라 다양하게 정의된 패턴을 가질 수 있다.
구체적으로, TBQA 모듈(520a)은 단문 보다는 좀 더 복잡한 형태의 QA를 수행하며, 도메인에 따라 질의의 의도(intention)를 분류하고, 각 의도에 미리 정의된 SPARQL 템플릿에 맵핑하여 SPARQL을 생성하여, 질의에 대한 답변을 생성할 수 있다. 즉, TBAQ 모듈(520a)은 특정 도메인에 특화된 질의들을 처리할 수 있다. 예를 들면, "바람과 함께 사라지다의 여자 주인공은?"과 같은 질의에 대해서는 해당 질의의 의도에 미리 정의된 SPARQL 템플릿에 매핑하여 해당 질의에 대한 SPARQL을 생성한 후, 영화 도메인 지식베이스(720a)를 참조하여 답변을 생성할 수 있다.
예를 들면, 영화 도메인에 특화된 질의 중 질의의 의도가 영화 내용에 관한 것인지, 영화 배우에 관한 것인지, 영화 상영(극장, 시간 등)에 관한 것인지 등에 따라서, TBQA 모듈(520a)은 각각 정의된 복수의 SPARQL 템플릿을 가질 수 있으며, 세부적인 질의의 의도에 따라서, 더욱 다양한 SPARQL 템플릿을 가질 수 있다.
따라서 질의응답 모듈부(580)가 가지는 복수의 모듈(510a, 520a, 530a)들은, 자연어 이해부(도 5의 300)가 가지는 복수의 단위 분석 과정에서 각각 생성되는 자연어 분석 결과 중 일부만을 필요로 할 수 있으므로, 자연어 이해부(300)가 가지는 복수의 단위 분석 과정이 모두 완료되기 전에도, 복수의 모듈(510a, 520a, 530a) 중 적어도 일부의 모듈은 분석이 시작될 수 있다.
도 7은 본 발명의 예시적 실시 예에 따른 자동 질의응답 시스템의 플러그인 서버 및, 플러그인 서버와 연결되는 외부 서비스/DB를 상세히 나타내는 블록도이다.
도 7을 참조하면, 플로그인 서버(600)는 복수의 플러그인(610a, 620a, 630a, 640a, 650a, 660a)를 가지는 질의응답 플러그인부(680), 및 질의응답 플러그인부(680)가 가지는 복수의 플러그인(610a, 620a, 630a, 640a, 650a, 660a) 각각에 대한 정보를 가지는 플러그인 등록부(690)을 포함한다. 복수의 플러그인(610a, 620a, 630a, 640a, 650a, 660a) 중 일부 플러그인(620a, 640a, 660a)은 외부 서비스/DB(800)와 네트워크(20a)를 통하여 연결될 수 있다.
복수의 플러그인(610a, 620a, 630a, 640a, 650a, 660a)은 각각 수학연산 플러그인(610a), 거리계산 플러그인(620a), 단위변환 플러그인(630a), 환율변환 플러그인(640a), 시간날짜 플러그인(650a), 및 날씨 플러그인(660a)일 수 있다.
외부 서비스/DB(800)는 예를 들면, 지리정보 서비스(810a) 및 이와 연결되거나 이에 포함되는 Geo 정보 DB(812a), 환율변환 서비스(820a) 및 이와 연결되거나 이에 포함되는 환율 정보 DB(822a), 및 날씨 서비스(830a) 및 이와 연결되거나 이에 포함되는 세계날씨 DB(832a) 중 적어도 하나일 수 있다.
수학연산 플러그인(610a)은 사칙연상 등 수학연산에 관한 질의에 대한 답변을 자체적으로 생성할 수 있다. 거리계산 플러그인(620a)은 지리정보 서비스(810a)와 연결되기 위한 API를 가질 수 있으며, 지리정보 서비스(810a)를 통하여 두지역 사이의 거리 또는 경로 등과 같은 질의에 대한 답변을 생성할 수 있다. 단위변환 플러그인(630a)은 단위 변환에 관한 질의에 대한 답변을 자체적으로 생성할 수 있다. 환율변환 플러그인(640a)은 환율변환 서비스(820a)와 연결되기 위한 API를 가질 수 있으며, 환율변환 서비스(810a)를 통하여 현재 환율, 다른 화폐 사이의 환율 변환 등과 같은 질의에 대한 답변을 생성할 수 있다. 시간날짜 플러그인(650a)은 시간, 날짜에 대한 질의, 세계 시계, 양음력 변환 등과 같은 질의에 대한 답변을 자체적으로 생성할 수 있다. 날씨 플러그인(660a)은 날씨 서비스(830a)와 연결되기 위한 API를 가질 수 있으며, 날씨 서비스(830a) 통하여, 현재 날씨, 날씨 예보, 과거 날씨 등과 같은 질의에 대한 답변을 생성할 수 있다.
이와 같이, 지식베이스를 참조하지 않고 자체적으로 또는 외부 서비스와 연결하여 답변을 생성할 수 있는 질의에 대해서는 플러그인(610a, 620a, 630a, 640a, 650a, 660a)을 통하여 빠르게 답변을 생성할 수 있다.
이상, 본 발명을 바람직한 실시예를 들어 상세하게 설명하였으나, 본 발명은 상기 실시예에 한정되지 않고, 본 발명의 기술적 사상 및 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러가지 변형 및 변경이 가능하다.
1, 1a, 1b, 1c, 2 : 자동 질의응답 시스템, 10 : 사용자, 20, 20a : 네트워크, 100 : 유저 인터페이스, 200 : 질의응답 관리자, 300 : 자연어 이해부, 400 : 자연어 생성부, 500 : 모듈 서버, 600 : 플러그인 서버, 700 : 도메인 DB부, 900 : 모듈/플러그인 모델

Claims (10)

  1. 네트워크를 통하여 자연어 형태인 사용자의 질의를 수신하고 응답을 송신하는 유저 인터페이스;
    상기 사용자의 질의 및 그에 대한 상기 응답을 관리하는 질의응답 관리자;
    자연어 형태인 상기 사용자의 질의를 분석하며 각각 단위 자연어 분석 결과를 생성하는 복수의 단위 분석 과정을 가지는 자연어 이해부; 및
    상기 자연어 이해부의 복수의 단위 분석 과정에서 각각 생성한 단위 자연어 분석 결과를 전달받아, 각각 독립적으로 분석을 수행하는 복수의 모듈 및 복수의 플러그인;을 포함하며,
    상기 질의응답 관리자는,
    상기 자연어 이해부의 복수의 단위 분석 과정에서 각각 생성한 상기 단위 자연어 분석 결과를 구분하여 수신하여, 상기 복수의 모듈 및 복수의 플러그인 중 상기 단위 자연어 분석 결과 각각에 대응되는 모듈 또는 플러그인에 전달하여 분석을 수행시키고,
    상기 복수의 모듈 및 복수의 플러그인 중 분석이 수행 중인 모듈 또는 플러그인에서 일정 시간 내에 전달되는 답변 또는 일정 개수까지 전달된 답변을 기초로, 상기 응답을 생성하는 자동 질의응답 시스템.
  2. 제1 항에 있어서,
    상기 질의응답 관리자는, 상기 일정 시간이 초과한 경우, 상기 분석이 수행 중인 모듈 또는 플러그인 중, 답변을 전달하지 않은 모듈 또는 플러그인의 분석을 중단시키는 것을 특징으로 하는 자동 질의응답 시스템.
  3. 제1 항에 있어서,
    상기 질의응답 관리자는, 상기 분석이 수행 중인 모듈 또는 플러그인으로부터 상기 일정 시간 내에 전달된 답변들에 대하여, 랭킹을 정하여 답변들 중 랭킹이 높은 답변을 기초로, 상기 응답을 생성하는 것을 특징으로 하는 자동 질의응답 시스템.
  4. 제1 항에 있어서,
    상기 질의응답 관리자는, 상기 일정 개수까지 답변이 전달된 경우, 상기 분석이 수행 중인 모듈 또는 플러그인 중, 답변을 전달하지 않은 모듈 또는 플러그인의 분석을 중단시키는 것을 특징으로 하는 자동 질의응답 시스템.
  5. 제1 항에 있어서,
    각각 지식데이터가 축적된 지식베이스인 복수의 도메인 DB를 더 포함하며,
    상기 복수의 모듈은 상기 복수의 도메인 DB 중 적어도 하나를 참조하여 답변을 생성하고,
    상기 복수의 플러그인은 상기 복수의 도메인 DB를 참조하지 않고 답변을 생성하는 것을 특징으로 하는 자동 질의응답 시스템.
  6. 제5 항에 있어서,
    상기 복수의 플러그인 중 일부는 자체적으로 답변을 생성하고, 다른 일부는 외부 서비스와 연결되어 답변을 생성하는 것을 특징으로 하는 자동 질의응답 시스템.
  7. 제1 항에 있어서,
    상기 복수의 모듈은,
    상기 사용자의 질의를 키워드 기반의 패턴 매칭을 통하여 SPARQL 형태의 질의를 생성하여 답변을 생성하는 FBQA 모듈, 미리 작성된 템플릿들을 기반으로 상기 사용자의 질의로부터 템플릿 매핑을 하여 템플릿에 기초한 질의를 생성하하여 답변을 생성하는 TBQA 모듈, 및 상기 사용자의 질의를 구문분석으로 분석하여 SPARQL 형태의 질의를 생성하하여 답변을 생성하는 GBQA 모듈을 포함하는 것을 특징으로 하는 자동 질의응답 시스템.
  8. 제1 항에 있어서,
    상기 자연어 이해부는,
    상기 복수의 단위 분석 과정 각각을 수행하는 시맨틱 롤 라벨링부, 형태소 분석부, 구문 분석부, 개체명 분석부, 의도 분류부 및 도메인 분석부를 포함하는 것을 특징으로 하는 자동 질의응답 시스템.
  9. 제8 항에 있어서,
    상기 자연어 이해부는,
    상기 시맨틱 롤 라벨링부, 상기 형태소 분석부, 상기 구문 분석부, 상기 개체명 분석부, 상기 의도 분류부 및 상기 도메인 분석부 각각에서 수행되는 단위 분석 과정에서 생성되는 상기 단위 자연어 분석 결과를, 생성되는 순서대로 상기 질의응답 관리자에 전송하는 것을 특징으로 하는 자동 질의응답 시스템.
  10. 네트워크를 통하여 자연어 형태인 사용자의 질의를 수신하고 응답을 송신하는 유저 인터페이스;
    상기 사용자의 질의 및 그에 대한 상기 응답을 관리하는 질의응답 관리자;
    자연어 형태인 상기 사용자의 질의를 분석하며 각각 단위 자연어 분석 결과를 생성하는 복수의 단위 분석 과정을 가지는 자연어 이해부; 및
    상기 자연어 이해부의 복수의 단위 분석 과정에서 각각 생성한 단위 자연어 분석 결과를 전달받아, 각각 독립적으로 분석을 수행하는 복수의 모듈 및 복수의 플러그인;을 포함하며,
    상기 질의응답 관리자는,
    상기 자연어 이해부의 복수의 단위 분석 과정에서 각각 생성한 상기 단위 자연어 분석 결과를 구분하여 수신하여, 상기 복수의 모듈 및 복수의 플러그인 중 상기 단위 자연어 분석 결과 각각에 대응되는 모듈 또는 플러그인에 전달하여 분석을 수행시키고,
    상기 복수의 모듈 및 복수의 플러그인 중 분석이 수행 중인 모듈 또는 플러그인에서 일정 시간 내에 전달되는 답변들의 유사도를 판단하여, 적어도 2개의 답변의 유사도가 일정 기준 이상인 경우, 유사도가 상기 일정 기준 이상의 적어도 2개의 답변을 기초로, 상기 응답을 생성하며,
    유사도가 상기 일정 기준 이상인 적어도 2개의 답변이 전달된 경우, 상기 분석이 수행 중인 모듈 또는 플러그인 중, 답변을 전달하지 않은 모듈 또는 플러그인의 분석을 중단시키는 자동 질의응답 시스템.
KR1020170012965A 2017-01-26 2017-01-26 자동 질의응답 시스템 KR101915778B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170012965A KR101915778B1 (ko) 2017-01-26 2017-01-26 자동 질의응답 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170012965A KR101915778B1 (ko) 2017-01-26 2017-01-26 자동 질의응답 시스템

Publications (2)

Publication Number Publication Date
KR20180088192A true KR20180088192A (ko) 2018-08-03
KR101915778B1 KR101915778B1 (ko) 2018-11-06

Family

ID=63250507

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170012965A KR101915778B1 (ko) 2017-01-26 2017-01-26 자동 질의응답 시스템

Country Status (1)

Country Link
KR (1) KR101915778B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753561A (zh) * 2019-01-16 2019-05-14 长安汽车金融有限公司 一种自动回复的生成方法及装置
KR101998833B1 (ko) * 2018-12-10 2019-07-10 강원오픈마켓 주식회사 멘토링 시스템
WO2020111532A1 (ko) * 2018-11-28 2020-06-04 주식회사 와이즈넛 복수 챗봇의 협업에 의한 대화형 정보제공 시스템 및 그 방법
KR20220118680A (ko) * 2021-02-19 2022-08-26 (주)아와소프트 사용자 맞춤형 챗봇 서비스 시스템 및 그 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220071789A (ko) 2020-11-24 2022-05-31 경희대학교 산학협력단 질의에 대한 응답을 제공하는 방법 및 장치
KR20220094184A (ko) 2020-12-28 2022-07-05 보리 주식회사 음성으로 대화하고, 동작하며, 콘텐츠를 재생하는 음성대화장치 구동 방법 및 시스템

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020111532A1 (ko) * 2018-11-28 2020-06-04 주식회사 와이즈넛 복수 챗봇의 협업에 의한 대화형 정보제공 시스템 및 그 방법
KR102119404B1 (ko) * 2018-11-28 2020-06-05 주식회사 와이즈넛 복수 챗봇의 협업에 의한 대화형 정보제공 시스템 및 그 방법
KR101998833B1 (ko) * 2018-12-10 2019-07-10 강원오픈마켓 주식회사 멘토링 시스템
CN109753561A (zh) * 2019-01-16 2019-05-14 长安汽车金融有限公司 一种自动回复的生成方法及装置
CN109753561B (zh) * 2019-01-16 2021-04-27 长安汽车金融有限公司 一种自动回复的生成方法及装置
KR20220118680A (ko) * 2021-02-19 2022-08-26 (주)아와소프트 사용자 맞춤형 챗봇 서비스 시스템 및 그 방법

Also Published As

Publication number Publication date
KR101915778B1 (ko) 2018-11-06

Similar Documents

Publication Publication Date Title
KR101915778B1 (ko) 자동 질의응답 시스템
US11615791B2 (en) Voice application platform
US11887597B2 (en) Voice application platform
KR101849750B1 (ko) 대화형 자동 질의응답 시스템
US10671620B2 (en) Method for recommending a teacher in a network teaching system
US10235999B1 (en) Voice application platform
US11960513B2 (en) User-customized question-answering system based on knowledge graph
US11853343B2 (en) Method, apparatus, and computer program product for user-specific contextual integration for a searchable enterprise platform
KR102034646B1 (ko) 복수의 질의 응답 모듈을 가지는 자동 질의 응답 시스템
US20170011077A1 (en) Scalable annotation architecture
KR20100002756A (ko) 매트릭스 블로깅 시스템 및 서비스 제공 방법
CN105431844A (zh) 用于搜索系统的第三方搜索应用
KR20190128116A (ko) 공통 스토리와 관련된 미디어-컨텐츠 아이템을 식별, 선택 및 제시하기 위한 방법 및 시스템
WO2016045567A1 (zh) 网页数据分析方法及装置
US11429665B2 (en) Consolidation of responses from queries to disparate data sources
US20170103125A1 (en) Apparatus and method of exploring and accessing relevant data from big data repository
CN110609906A (zh) 知识图谱构建方法及装置、存储介质及电子终端
Fernandes et al. Appstract: On-the-fly app content semantics with better privacy
JP6388212B2 (ja) タグ付与方法、タグ付与装置、プログラム及び質問回答検索方法
KR20190076712A (ko) 복수의 질의 응답 모듈을 가지는 자동 질의 응답 시스템
Pêgo et al. Automatic discovery and classifications of IoT devices
CN116226494A (zh) 一种用于信息搜索的爬虫系统及方法
KR20160093489A (ko) 컨텐츠 수집, 추천 시스템 및 방법
KR20210000041A (ko) 로그 데이터의 실시간 분석 방법 및 그 장치
KR101600616B1 (ko) 이종콘텐츠 분석 서비스 방법

Legal Events

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