KR20230145018A - 소스코드 분석을 이용한 텍스트 의미 분석 장치 - Google Patents

소스코드 분석을 이용한 텍스트 의미 분석 장치 Download PDF

Info

Publication number
KR20230145018A
KR20230145018A KR1020230133214A KR20230133214A KR20230145018A KR 20230145018 A KR20230145018 A KR 20230145018A KR 1020230133214 A KR1020230133214 A KR 1020230133214A KR 20230133214 A KR20230133214 A KR 20230133214A KR 20230145018 A KR20230145018 A KR 20230145018A
Authority
KR
South Korea
Prior art keywords
text
source code
meaning
analysis
information
Prior art date
Application number
KR1020230133214A
Other languages
English (en)
Inventor
김민준
고윤재
한지수
Original Assignee
주식회사 랭코드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 랭코드 filed Critical 주식회사 랭코드
Priority to KR1020230133214A priority Critical patent/KR20230145018A/ko
Publication of KR20230145018A publication Critical patent/KR20230145018A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/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
    • 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/338Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/242Dictionaries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/268Morphological analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • G06F40/35Discourse or dialogue representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Machine Translation (AREA)

Abstract

본 발명의 일 실시예는, 소스코드 분석을 이용한 텍스트 의미 분석 장치를 제공한다. 본 장치는, 입출력 모듈, 텍스트 의미 도출 프로그램을 저장하는 메모리, 그리고, 상기 메모리에 저장된 텍스트 의미 도출 프로그램을 실행하는 프로세서를 포함한다. 상기 프로세서는 상기 텍스트 의미 도출 프로그램을 실행하여, 상기 입출력 모듈을 통해 텍스트가 포함된 입력 데이터를 전송 받고, 상기 입력 데이터를 토대로 상기 텍스트에 대한 자연어 처리를 수행하여 상기 텍스트의 의미를 포함한 텍스트 분석 결과를 생성하고, 상기 텍스트 분석 결과를 토대로 상기 텍스트의 의미에 대응되는 출력 데이터를 생성하여 상기 입출력 모듈을 통해 표시한다. 상기 프로세서는, 상기 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 상기 메모리에 저장된 소스코드 정보에 대응되는 의미를 가진 경우, 상기 프로세서는 상기 텍스트 키워드를 상기 텍스트 키워드에 대응되는 소스코드 정보로 변환하여 상기 텍스트를 수정하고, 상기 프로세서는 수정된 텍스트에 대한 분석을 수행하여 상기 텍스트 분석 결과를 생성하도록 구성된다.

Description

소스코드 분석을 이용한 텍스트 의미 분석 장치{DEVICE THAT ANALYZE MEANING OF TEXT USING SOURCE CODE ANALYSIS}
본 발명은 소스코드 분석을 이용한 텍스트 의미 분석 장치, 시스템, 및 방법, 그리고, 이를 이용한 챗봇 질의응답 서비스 제공 방법에 관한 것으로, 더욱 상세하게는, 텍스트에 포함된 단어에 대해 사전적인 의미 분석뿐만 아니라 소스코드 분석을 수행하여 획득한 정보를 토대로 텍스트의 의미를 보다 정확하게 분석하도록 구성되는 텍스트 의미 분석 장치, 시스템, 및 방법, 그리고, 이를 이용한 챗봇 질의응답 서비스 제공 방법에 관한 것이다.
챗봇은 메신저와 같은 채팅 수단에 질문을 입력하면 인공지능이 일상언어로 사람과 대화를 하며 해답을 주는 대화형 메신저를 말한다. 최근 국내외 다수의 기업들은 24시간 고객지원 서비스를 수행하고 고객지원 서비스에 소모되는 비용 및 인력을 줄이기 위해 챗봇을 도입하고 있다. 고객 입장에서도 챗봇을 통해 필요한 지식이나 답변을 얻는 것이 편리하고 효율적이어서 챗봇은 기존의 고객지원 서비스의 품질을 향상시킨다는 평가를 받고 있다.
일반적으로, 고객은 챗봇에게 메신저를 통해 채팅하듯 질문을 입력하고, 챗봇은 질문 형태의 텍스트 데이터를 분석하고, 학습된 데이터 또는 데이터베이스에 저장된 데이터를 토대로 질문에 대응되는 답변을 제공한다. 이 때, 통용되는 용어를 사용한 질문의 경우에는 챗봇의 인식률이 높아서 질문에 알맞은 답변을 제공할 수 있으나, 전문 용어를 사용하여 질문을 형성할 경우에는 질문에 알맞은 대답이 제공되지 않을 수 있다.
예컨대, 고객이 “A기업과 B기업은 서로 무슨 관계야?”와 같은 질문을 입력하면, 챗봇은 “특정 대상간의 관계를 물음”이란 의도를 파악하고 학습된 데이터 또는 데이터베이스에서 A기업과 B기업의 관계를 검색하여 “자회사 관계입니다”라는 답변을 제공할 수 있다. 그러나, 소프트웨어 개발을 진행하는 고객이 소스코드(Source code) 정보를 갖는 “트레이닝 채널과 코스는 서로 무슨 관계야?”라는 질문을 입력하였을 때, 챗봇이 사용하는 데이터베이스에 “트레이닝 채널”과 “코스”에 대한 의미가 저장되어 있지 않거나 고객이 알고 있는 단어의 의미와 다른 의미로 저장되어 있는 경우, 챗봇은 질문에 알맞은 답변을 제공하지 못하는 문제가 발생할 수 있다.
본 발명은 전술한 문제점을 해결하기 위한 것으로, 텍스트에 포함된 단어에 대해 사전적인 의미 분석뿐만 아니라 소스코드 분석을 수행하여 획득한 정보를 토대로 텍스트의 의미를 보다 정확하게 분석하도록 구성되는 소스코드 분석을 이용한 텍스트 의미 분석 장치, 시스템, 및 방법, 그리고, 이를 이용한 챗봇 질의응답 서비스 제공 방법을 제공하는 것을 일 기술적 과제로 한다.
본 발명이 이루고자 하는 기술적 과제들은 상기한 기술적 과제로 제한되지 않으며, 이하의 설명으로부터 본 발명의 또 다른 기술적 과제들이 도출될 수 있다.
상술한 기술적 과제를 해결하기 위한 기술적 수단으로서, 본 발명의 제1 측면에 따른 실시예는, 단말과 서버의 통신 연결을 토대로 소스코드 분석을 이용한 텍스트 의미 분석 방법을 제공한다. 본 방법은, 상기 서버가 상기 단말로부터 텍스트가 포함된 입력 데이터를 수신하는 단계, 상기 서버가 상기 입력 데이터를 토대로 상기 텍스트에 대한 자연어 처리를 수행하여 상기 텍스트의 의미를 포함한 텍스트 분석 결과를 생성하는 단계, 그리고, 상기 서버가 상기 텍스트 분석 결과를 토대로 상기 텍스트의 의미에 대응되는 출력 데이터를 생성하여 상기 단말로 제공하는 단계를 포함한다. 상기 텍스트 분석 단계는, 상기 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 상기 서버에 저장된 소스코드 정보에 대응되는 의미를 가진 경우, 상기 서버가 상기 텍스트 키워드를 상기 텍스트 키워드에 대응되는 소스코드 정보로 변환하여 상기 텍스트를 수정하고, 상기 서버가 수정된 텍스트에 대한 분석을 수행하여 상기 텍스트 분석 결과를 생성하는 단계를 포함한다.
또한, 본 발명의 제2 측면에 따른 실시예는, 단말과 서버의 통신 연결을 토대로 소스코드 분석 및 챗봇을 이용한 질의응답 서비스 제공 방법을 제공한다. 본 방법은, 상기 서버가 상기 챗봇을 이용하여, 상기 단말로부터 텍스트가 포함된 질문 데이터를 수신하는 단계, 상기 서버가 상기 챗봇을 이용하여, 상기 질문 데이터를 토대로 상기 텍스트에 대한 자연어 처리를 수행하고, 상기 텍스트의 의미를 포함한 텍스트 분석 결과를 생성하는 단계, 그리고, 상기 서버가 상기 챗봇을 이용하여, 상기 텍스트 분석 결과를 토대로 상기 텍스트의 의미에 대응되는 답변 데이터를 생성하고, 상기 답변 데이터를 상기 단말로 제공하는 단계를 포함한다. 상기 텍스트 분석 단계는, 상기 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 상기 서버에 저장된 소스코드 정보에 대응되는 의미를 가진 경우, 상기 서버가 상기 챗봇을 이용하여 상기 텍스트 키워드를 상기 텍스트 키워드에 대응되는 소스코드 정보로 변환하여 상기 텍스트를 수정하고, 상기 서버가 상기 챗봇을 이용하여 수정된 텍스트에 대한 분석을 수행하여 상기 텍스트 분석 결과를 생성하는 단계를 포함한다.
또한, 본 발명의 제3 측면에 따른 실시예는, 단말과의 통신 연결을 통해 소스코드 분석을 이용한 텍스트 의미 분석 시스템을 제공한다. 본 시스템은, 상기 단말과의 정보 송수신을 수행하는 통신 모듈, 텍스트 의미 분석 프로그램을 저장하는 메모리, 그리고, 상기 메모리에 저장된 텍스트 의미 분석 프로그램을 실행하는 프로세서를 포함한다. 상기 프로세서는 상기 텍스트 의미 분석 프로그램을 실행하여, 상기 통신 모듈을 통해 상기 단말로부터 텍스트가 포함된 입력 데이터를 전송 받고, 상기 입력 데이터를 토대로 상기 텍스트에 대한 자연어 처리를 수행하여 상기 텍스트의 의미를 포함한 텍스트 분석 결과를 생성하고, 상기 텍스트 분석 결과를 토대로 상기 텍스트의 의미에 대응되는 출력 데이터를 생성하여 상기 단말로 제공한다. 상기 프로세서는, 상기 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 상기 메모리에 저장된 소스코드 정보에 대응되는 의미를 가진 경우, 상기 프로세서는 상기 텍스트 키워드를 상기 텍스트 키워드에 대응되는 소스코드 정보로 변환하여 상기 텍스트를 수정하고, 상기 프로세서는 수정된 텍스트에 대한 분석을 수행하여 상기 텍스트 분석 결과를 생성하도록 구성된다.
또한, 본 발명의 제4 측면에 따른 실시예는, 소스코드 분석을 이용한 텍스트 의미 분석 장치를 제공한다. 본 장치는, 입출력 모듈, 텍스트 의미 도출 프로그램을 저장하는 메모리, 그리고, 상기 메모리에 저장된 텍스트 의미 도출 프로그램을 실행하는 프로세서를 포함한다. 상기 프로세서는 상기 텍스트 의미 도출 프로그램을 실행하여, 상기 입출력 모듈을 통해 텍스트가 포함된 입력 데이터를 전송 받고, 상기 입력 데이터를 토대로 상기 텍스트에 대한 자연어 처리를 수행하여 상기 텍스트의 의미를 포함한 텍스트 분석 결과를 생성하고, 상기 텍스트 분석 결과를 토대로 상기 텍스트의 의미에 대응되는 출력 데이터를 생성하여 상기 입출력 모듈을 통해 표시한다. 상기 프로세서는, 상기 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 상기 메모리에 저장된 소스코드 정보에 대응되는 의미를 가진 경우, 상기 프로세서는 상기 텍스트 키워드를 상기 텍스트 키워드에 대응되는 소스코드 정보로 변환하여 상기 텍스트를 수정하고, 상기 프로세서는 수정된 텍스트에 대한 분석을 수행하여 상기 텍스트 분석 결과를 생성하도록 구성된다.
본 발명에 따르면, 텍스트에 포함된 단어에 대해 사전적인 의미 분석뿐만 아니라 소스코드 분석을 수행하여 텍스트의 의미를 보다 정확하게 분석할 수 있다.
또한. 본 발명에 따르면, 질의응답형 챗봇이 텍스트 의미 분석을 수행하는 과정에서 텍스트에 포함된 단어가 사전에 포함되지 않은 경우, 해당 단어에 대한 소스 코드 분석을 수행하여 질의 내용에 대한 이해도를 높이고, 질문에 알맞은 답변을 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 소스코드 분석을 이용한 텍스트 의미 분석 시스템과 단말을 나타낸 도면이다.
도 2는 도 1에 도시된 텍스트 의미 분석 시스템의 구성을 도시한 블록도이다.
도 3은 도 1에 도시된 단말의 구성을 도시한 블록도이다.
도 4 및 도 5는 본 발명의 일 실시예에 따라 소스코드 분석 및 챗봇을 이용하여 텍스트 의미를 분석하는 예시들을 나타낸 도면들이다.
도 6은 본 발명의 다른 실시예에 따른 소스코드 분석을 이용한 텍스트 의미 분석 방법의 순서를 도시한 흐름도이다.
도 7 내지 도 10은 도 6에 도시된 방법의 일부 단계에 대한 세부 단계들을 도시한 도면들이다.
도 11은 본 발명의 또 다른 실시예에 따른 소스코드 분석 및 챗봇을 이용한 질의응답 서비스 제공 방법의 순서를 도시한 흐름도이다.
도 12 내지 도 15는 도 11에 도시된 방법의 일부 단계에 대한 세부 단계들을 도시한 도면들이다.
이하에서는 첨부한 도면을 참조하여 본 발명을 상세히 설명하기로 한다. 다만, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 여기에서 설명하는 실시예들로 한정되는 것은 아니다. 또한, 첨부된 도면은 본 명세서에 개시된 실시예를 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 명세서에 개시된 기술적 사상이 제한되지 않는다. 여기에 사용되는 기술용어 및 과학용어를 포함하는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 일반적으로 이해하는 의미로 해석되어야 한다. 사전에 정의된 용어들은 관련기술문헌과 현재 개시된 내용에 부합하는 의미를 추가적으로 갖는 것으로 해석되어야 하며, 별도로 정의되지 않는 한 매우 이상적이거나 제한적인 의미로 해석되지 않는다.
도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 도면에 나타난 각 구성요소의 크기, 형태, 형상은 다양하게 변형될 수 있다. 명세서 전체에 대하여 동일/유사한 부분에 대해서는 동일/유사한 도면 부호를 붙였다.
이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 “부” 등은 명세서 작성의 용이함만이 고려되어 부여 되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 또한, 본 명세서에 개시된 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 실시 예의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략하였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결(접속, 접촉 또는 결합)"되어 있다고 할 때, 이는 "직접적으로 연결(접속, 접촉 또는 결합)"되어 있는 경우뿐만 아니라, 그 중간에 다른 부재를 사이에 두고 "간접적으로 연결 (접속, 접촉 또는 결합)"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함(구비 또는 마련)"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 "포함(구비 또는 마련)"할 수 있다는 것을 의미한다.
본 명세서에서 사용되는 제1, 제2 등과 같이 서수를 나타내는 용어들은 하나의 구성 요소를 다른 구성요소로부터 구별하는 목적으로만 사용되며, 구성 요소들의 순서나 관계를 제한하지 않는다. 예를 들어, 본 발명의 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소도 제1구성 요소로 명명될 수 있다. 본 명세서에서 사용되는 단수 표현의 형태들은 명백히 반대의 의미를 나타내지 않는 한 복수 표현의 형태들도 포함하는 것으로 해석되어야 한다.
도 1은 본 발명의 일 실시예에 따른 소스코드 분석을 이용한 텍스트 의미 분석 시스템(이하, “텍스트 의미 분석 시스템(100)”이라 함)과 단말(200)을 나타낸 도면이다.
도 1을 참조하면, 텍스트 의미 분석 시스템(100)은 통신망을 통해 단말(200)과 통신 연결된다. 텍스트 의미 분석 시스템(100)은 단말(200)과의 통신 연결을 통해 단말(200)로부터 텍스트를 포함한 입력 데이터를 수신한다. 텍스트 의미 분석 시스템(100)은 입력 데이터를 토대로 자연어 처리를 수행하여 텍스트 분석 결과를 생성한다. 텍스트 의미 분석 시스템(100)은 텍스트 분석 결과를 토대로 텍스트의 의미에 대응되는 출력 데이터를 생성하여 단말(200)에게 제공할 수 있다. 단말(200)은 텍스트 의미 분석 시스템(100)과의 상호작용 없이 독립적으로 상술한 텍스트 의미 분석을 수행할 수 있다. 예컨대, 단말(200)은 디스플레이, 터치패드와 같은 입출력 모듈을 통해 사용자로부터 텍스트를 포함하는 입력 데이터를 수신할 수 있다. 단말(200)은 입력 데이터를 토대로 자연어 처리를 수행하여 텍스트 분석 결과를 생성할 수 있다. 단말(200)은 텍스트 분석 결과를 토대로 텍스트의 의미에 대응되는 출력 데이터를 생성하여 표시할 수 있다. 텍스트 의미 분석 시스템(100) 및 단말(200)은 챗봇을 이용하여 상술한 과정을 수행할 수 있다. 이 때, 입력 데이터는 사용자의 질문일 수 있고, 출력 데이터는 챗봇의 답변일 수 있다. 텍스트 의미 분석 시스템(100) 및 단말(200)의 자연어 처리에는 형태소 분석, 단어 분석, 문장 분석 등의 언어 분석 기술이 활용될 수 있다. 텍스트 의미 분석 시스템(100) 및 단말(200)에 대해서는 이하에서 도 2 및 도 3을 참조하여 더욱 상세하게 설명하도록 한다.
텍스트 의미 분석 시스템(100)은 서버 또는 단말(200)과 같은 장치 형태로 형성될 수 있고, SaaS (Software as a Service), PaaS (Platform as a Service) 또는 IaaS (Infrastructure as a Service)와 같은 클라우드 컴퓨팅 서비스 모델에서 동작 할 수 있다. 또한, 텍스트 의미 분석 시스템(100)은 사설(private) 클라우드, 공용(public) 클라우드 또는 하이브리드(hybrid) 클라우드 시스템과 같은 서버 형태로 구축될 수 있다.
단말(200)은 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop), 휴대성과 이동성이 보장되는 무선 통신 장치 또는 스마트폰, 태블릿 PC 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 의미할 수 있다. 또한, 도 1에 도시된 통신망은 근거리 통신망(Local Area Network; LAN), 광역 통신망(Wide Area Network; WAN) 또는 부가가치 통신망(Value Added Network; VAN) 등과 같은 유선 네트워크나 이동 통신망(mobile radio communication network) 또는 위성 통신망 등과 같은 모든 종류의 무선 네트워크로 구현될 수 있다.
도 2는 텍스트 의미 분석 시스템(100)의 구성을 도시한 블록도이다. 도 2를 참조하면, 텍스트 의미 분석 시스템(100)은 통신 모듈(110), 메모리(120) 및 프로세서 (140)를 포함하며, 데이터베이스(130)를 더 포함할 수 있다.
통신 모듈(110)은 단말(200)과의 정보 송수신을 수행한다. 통신 모듈(110)은 다른 네트워크 장치와 유무선 연결을 통해 제어 신호 또는 데이터 신호와 같은 신호를 송수신하기 위해 필요한 하드웨어 및 소프트웨어를 포함하는 장치를 포함할 수 있다.
메모리(120)는 텍스트 의미 분석 프로그램을 저장한다. 또한, 메모리(120)는 하나 이상의 프로그래밍 언어에 대한 정보를 포함하는 소스코드 정보를 포함할 수 있다. 여기서, 소스코드 정보는, 하나 이상의 프로그래밍 언어에서 사용되는 변수 정보, 클래스 정보, 함수 정보 및 이들의 관계 정보를 포함할 수 있다. 텍스트 의미 분석 프로그램의 명칭은 설명의 편의를 위해 설정된 것으로, 명칭 그 자체로 프로그램의 기능을 제한하는 것은 아니다.
메모리(120)는 통신 모듈(110)로 입력되는 정보 및 데이터, 프로세서(140)에 의해 수행되는 기능에 필요한 정보 및 데이터, 프로세서(140)의 실행에 따라 생성된 데이터 중 적어도 어느 하나 이상을 저장할 수 있다. 메모리(120)는 전원이 공급되지 않아도 저장된 정보를 계속 유지하는 비휘발성 저장장치 및 저장된 정보를 유지하기 위하여 전력을 필요로 하는 휘발성 저장장치를 통칭하는 것으로 해석되어야 한다. 또한, 메모리(120)는 프로세서(140)가 처리하는 데이터를 일시적 또는 영구적으로 저장하는 기능을 수행할 수 있다. 메모리(120)는 저장된 정보를 유지하기 위하여 전력이 필요한 휘발성 저장장치 외에 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
데이터베이스(130)는 텍스트 의미 분석 시스템(100)이 사용하는 데이터가 저장되는 곳일 수 있다. 예컨대, 데이터베이스(130)는 단어의 의미 정보, 소스코드 명칭 정보, 소스코드 설명 정보 등 텍스트가 포함된 입력 데이터의 의미 분석을 위한 메타 정보와 빅데이터가 저장된 곳일 수 있다. 데이터베이스(130)는 메모리(120)의 일부를 구성할 수 있으나, 반드시 텍스트 의미 분석 시스템(100) 내부에 위치하는 것이 아니라 외부에 위치할 수도 있다.
프로세서(140)는 메모리(120)에 저장된 텍스트 의미 분석 프로그램을 실행하도록 구성된다. 프로세서(140)는 데이터를 제어 및 처리하는 다양한 종류의 장치들을 포함할 수 있다. 프로세서(140)는 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 일 예에서, 프로세서(140)는 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 형태로 구현될 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
프로세서(140)는, 텍스트 의미 분석 프로그램을 실행하여, 다음과 같은 기능 및 절차들을 수행하도록 구성된다. 프로세서(140)는 통신 모듈(110)을 통해 단말(200)로부터 텍스트가 포함된 입력 데이터를 전송 받고, 입력 데이터를 토대로 텍스트에 대한 자연어 처리를 수행하여 텍스트의 의미를 포함한 텍스트 분석 결과를 생성하고, 텍스트 분석 결과를 토대로 텍스트의 의미에 대응되는 출력 데이터를 생성하여 단말(200)로 제공할 수 있다. 프로세서(140)는, 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 메모리에 저장된 소스코드 정보에 대응되는 의미를 가진 경우, 텍스트 키워드를 텍스트 키워드에 대응되는 소스코드 정보로 변환하여 텍스트를 수정하고, 수정된 텍스트에 대한 분석을 수행하여 텍스트 분석 결과를 생성할 수 있다. 일 예에서, 텍스트는 질문 정보를 포함하고, 텍스트 분석 결과는 상기 텍스트를 상기 질문 정보에 대응되는 답변을 생성하도록 하는 함수 정보를 포함하고, 그리고, 출력 데이터는 상기 함수 정보에 따라 생성되는 답변 정보를 포함할 수 있다. 또한, 텍스트 키워드는 "트레이닝 채널", "코스"와 같은 소스코드 의미를 갖는 단어로 구성될 수 있고, 소스코드 키워드는 "트레이닝 채널", "코스"에 각각 대응되는 "Training Channel", "Course"일 수 있다.
프로세서(140)는 하나 이상의 프로그래밍 언어에서 사용되는 변수 정보, 클래스 정보 및 함수 정보에 포함된 명사를 추출하여 소스코드 키워드로 설정할 수 있다. 그리고, 프로세서(140)는 소스코드 키워드에 대응되는 소스코드의 명칭, 소스코드의 약칭 및 소스코드의 번역문과 소스코드 키워드들 간의 관계를 토대로 소스코드 정보를 생성하여 메모리(120)에 저장할 수 있다.
프로세서(140)는 텍스트 키워드에 대응되는 소스코드 키워드가 메모리에 존재하는지 판단할 수 있다. 프로세서(140)는 텍스트에 포함된 텍스트 키워드들 중 메모리에 대응되는 소스코드 키워드가 존재하는 텍스트 키워드는 대응되는 소스코드 키워드의 의미를 토대로 의미 분석을 수행할 수 있다. 프로세서(140)는 대응되는 소스코드 키워드가 존재하지 않는 텍스트 키워드는 사전적 의미를 토대로 의미 분석을 수행할 수 있다.
프로세서(140)는 텍스트의 의미를 포함한 텍스트 분석 결과를 토대로 텍스트의 의도가 기설정된 의도 유형들 중 하나의 의도 유형으로 설정할 수 있다. 프로세서(140)는 텍스트의 의미를 포함한 텍스트 분석 결과를 토대로 텍스트의 엔티티(entity)가 기설정된 엔티티 유형들 중 하나의 엔티티 유형으로 설정할 수 있다. 여기서, 기설정된 의도 유형들은, 기능 확인 유형 및 오류 보고 유형을 포함할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니며, 의도의 유형들은 다양하게 설정될 수 있다. 기설정된 엔티티 유형들은, 기능 설명 유형 및 오류 설명 유형을 포함할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니며, 엔티티의 유형들은 다양하게 설정될 수 있다.
일 예에서, 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 메모리에 저장된 복수개의 소스코드 정보들에 대응되는 의미를 가진 경우, 프로세서(140)는 복수개의 소스코드 정보들을 단말(200)로 제공할 수 있다. 다음, 프로세서(140)는 단말(200)로부터 복수개의 소스코드 정보들 중 하나의 소스코드 정보에 대한 입력을 수신할 수 있다. 다음, 프로세서(140)는 텍스트 키워드를 단말(200)로부터 수신한 소스코드 정보로 변환하여 텍스트를 수정하고, 그리고, 수정된 텍스트에 대한 분석을 수행하여 텍스트 분석 결과를 생성할 수 있다.
도 3은 도 1에 도시된 단말(200)의 구성을 도시한 블록도이다. 도 3을 참조하면, 단말(200)은 메모리(220), 입출력 모듈(230) 및 프로세서(240)를 포함하며, 통신 모듈(210)을 더 포함할 수 있다.
통신 모듈(210)은 외부 데이터베이스 또는 외부 장치와의 정보 송수신을 수행할 수 있다. 여기서 외부 장치는 앞서 설명한 텍스트 의미 분석 시스템(도 1의 100)일 수 있다. 메모리(220)는 텍스트 의미 도출 프로그램을 저장한다. 프로그램의 명칭은 설명의 편의를 위해 설정된 것으로, 명칭 그 자체로 프로그램의 기능을 제한하는 것은 아니다. 메모리(220)는, 하나 이상의 프로그래밍 언어에 대한 정보를 포함하는 소스코드 정보를 포함할 수 있다. 소스코드 정보는, 하나 이상의 프로그래밍 언어에서 사용되는 변수 정보, 클래스 정보, 함수 정보 및 이들의 관계 정보를 포함할 수 있다. 입출력 모듈(230)은 외부로부터 단말(200)로 전송되는 정보, 데이터 등을 입력받거나, 단말(200)이 보유한 정보, 데이터 등을 외부로 출력할 수 있다. 예컨대, 입출력 모듈(230)은 디스플레이, 터치패드 등을 포함할 수 있다. 프로세서(240)는 메모리(220)에 저장된 텍스트 의미 도출 프로그램을 실행한다. 통신 모듈(210), 메모리(220) 및 프로세서(240)에 대한 부가적인 설명은 앞서 도 2를 참조하여 설명한 통신모듈(도 2의 110), 메모리(도 2의 120) 및 프로세서(도 2의 140)에 대한 설명으로 대체하도록 한다.
프로세서(240)는 텍스트 의미 도출 프로그램을 실행하여 다음과 같은 기능 및 절차들을 수행하도록 구성된다. 프로세서(240)는 입출력 모듈(230)을 통해 텍스트가 포함된 입력 데이터를 전송 받고, 입력 데이터를 토대로 텍스트에 대한 자연어 처리를 수행하여 텍스트의 의미를 포함한 텍스트 분석 결과를 생성하고, 그리고, 텍스트 분석 결과를 토대로 텍스트의 의미에 대응되는 출력 데이터를 생성하여 입출력 모듈을 통해 표시할 수 있다. 프로세서(240)는, 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 메모리에 저장된 소스코드 정보에 대응되는 의미를 가진 경우, 텍스트 키워드를 텍스트 키워드에 대응되는 소스코드 정보로 변환하여 텍스트를 수정하고, 그리고, 수정된 텍스트에 대한 분석을 수행하여 텍스트 분석 결과를 생성할 수 있다. 일 예에서, 텍스트는 질문 정보를 포함하고, 텍스트 분석 결과는 상기 텍스트를 상기 질문 정보에 대응되는 답변을 생성하도록 하는 함수 정보를 포함하고, 그리고, 출력 데이터는 상기 함수 정보에 따라 생성되는 답변 정보를 포함할 수 있다.
프로세서(240)는, 하나 이상의 프로그래밍 언어에서 사용되는 변수 정보, 클래스 정보 및 함수 정보에 포함된 명사를 추출하여 소스코드 키워드로 설정할 수 있다. 그리고, 프로세서(240)는 소스코드 키워드에 대응되는 소스코드의 명칭, 소스코드의 약칭 및 소스코드의 번역문과 소스코드 키워드들 간의 관계를 토대로 소스코드 정보를 생성하여 메모리(220)에 저장할 수 있다.
프로세서(240)는 텍스트 키워드에 대응되는 소스코드 키워드가 메모리에 존재하는지 판단할 수 있다. 프로세서(240)는 텍스트에 포함된 텍스트 키워드들 중 메모리에 대응되는 소스코드 키워드가 존재하는 텍스트 키워드는 대응되는 소스코드 키워드의 의미를 토대로 의미 분석을 수행하고, 대응되는 소스코드 키워드가 존재하지 않는 텍스트 키워드는 사전적 의미를 토대로 의미 분석을 수행할 수 있다.
프로세서(240)는 텍스트의 의미를 포함한 텍스트 분석 결과를 토대로 텍스트의 의도가 기설정된 의도 유형들 중 하나의 의도 유형으로 설정하고, 그리고, 텍스트의 의미를 포함한 텍스트 분석 결과를 토대로 텍스트의 엔티티가 기설정된 엔티티 유형들 중 하나의 엔티티 유형으로 설정할 수 있다. 여기서, 기설정된 의도 유형 및 엔티티 유형은 각각 앞서 도 2를 참조하여 설명한 의도 유형 및 엔티티 유형과 동일하므로, 이들에 대한 설명은 생략하도록 한다.
프로세서(240)는 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 메모리에 저장된 복수개의 소스코드 정보들에 대응되는 의미를 가진 경우, 복수개의 소스코드 정보들을 입출력 모듈(230)을 통해 표시할 수 있다. 이후, 프로세서(240)는 입출력 모듈(230)을 통해 복수개의 소스코드 정보들 중 하나의 소스코드 정보에 대한 입력을 수신하고, 텍스트 키워드를 수신된 소스코드 정보로 변환하여 텍스트를 수정하고, 그리고, 수정된 텍스트에 대한 분석을 수행하여 텍스트 분석 결과를 생성할 수 있다.
상술한 텍스트 의미 분석 시스템(100) 및 단말(200)에 사용되는 소스코드 정보는 다음과 같은 방법을 통해 생성될 수 있다. 예컨대, 단말(200)을 통해 텍스트를 입력하는 사용자가 텍스트 의미 분석 시스템(100)에 제공하는 데이터, 텍스트 의미 분석을 수행하는 타 플랫폼에서 연동, 수집한 소스코드 정보 및 데이터가 메모리(120) 또는 데이터베이스(130)에 저장될 수 있다. 이를 통해 소스코드 정보에 대한 메타 데이터 및 빅데이터를 수집할 수 있다. 또한, 텍스트 의미 분석 시스템(100)은 수집된 각 프로그래밍 언어에서 사용되는 변수, 클래스(객체), 함수(method) 등의 요소와 요소들간의 관계, 구조를 추출하여 소스코드 정보로서 저장할 수 있다. 또한, 텍스트 의미 분석 시스템(100)은 저장된 정보에 대해서 기계번역을 수행하여 번역문에 대한 정보를 원문과 매칭하여 저장할 수 있다. 단말(200) 역시 상술한 과정과 유사한 과정을 통해 소스코드 정보를 생성 및 저장할 수 있다.
보다 상세하게는, 텍스트 의미 분석 시스템(100)은 소스코드 정보 생성을 위해 상술한 프로그래밍 언어에서 사용되는 변수명, 클래스명, 함수명 등 소스코드에서 추출된 명사(Name)를 하나의 소스코드 키워드로 저장할 수 있다. 여기서, 명사의 종류(변수명인지 클래스명인지 등)와 소스코드 내에서 사용되는 빈도, 예외규칙 등을 고려하여 중요도가 떨어지거나 임시로 쓰인 명사 등은 제외될 수 있다. 예컨대, "a", "I", "j", "t", "temp", "tmp" 혹은 "a1", "t1" 등 일반적으로 프로그래머가 임시로 쓰는 알파벳, 숫자 조합의 명사, Main() 등 특정 코드, 프레임워크 등에서 기본적으로 제공되는 함수명 등은 키워드에서 제외될 수 있다. 또한, 클래스명의 경우 1번 사용되었어도 예외규칙에 해당하지 않으면 키워드로 설정되되, 변수의 경우 해당 명사가 1번 쓰이고 재사용되지 않을 경우에는 키워드로 설정되지 않을 수 있다. 예컨대, 텍스트 의미 분석 시스템(100)은 "TrainingChannel"이라는 클래스가 있을 경우, 바로 이 "TrainingChannel"을 소스코드 키워드로 등록할 수 있다. 텍스트 의미 분석 시스템(100)은 일반적으로 소스코드에서 쓰이는 Naming convention, 즉 camelCase, PascalCase, Kebab-case, Snake_case 등 대소문자나 "_", "-", "/", ":", "." 등 특수문자의 구분을 활용하여 띄어쓰기 없이 연속된 문자열 Name을 분절할 수 있다. 예컨대, "TrainingChannel"은 "Training channel"로 "last_login"은 "last login"로 수정될 수 있다. 텍스트 의미 분석 시스템(100)은 범용적으로 코드에서 사용하는 약어, 이니셜, 패턴 및 기존 지식그래프에 저장된 패턴을 활용하여 이와 같은 분절, 변형을 추가로 수행할 수 있다. 예컨대, "Tmpl"은 "Template"로, "Cnt"은 "Count"로, "StudentNum"은 "Student Number" & "The number of studnet"로, "SchoolList"은 "School List" & "The list of school"로 수정될 수 있다. 텍스트 의미 분석 시스템(100)은 분절된 키워드에 대해서 챗봇의 질의응답 언어를 고려해 번역을 수행할 수 있다. 예컨대, 텍스트 의미 분석 시스템(100)이 한국어 챗봇을 사용할 경우 "StudentCard" -> "Student card" -> "학생 카드" 등으로 변형할 수 있고, "SchoolList" -> "학교 목록", "학교 리스트"와 같이 변형할 수 있다.
텍스트 의미 분석 시스템(100)은 추출된 명사(키워드) 사이의 관계를 코드의 구조 등에서 파악할 수 있다. 프로그래밍 언어들 간의 관계는 속성, 선언, 참조, 연산 등이 있을 수 있다. 속성은 어떤 변수, 함수가 특정한 클래스 내부에 선언된 경우를 의미한다. 예컨대, User 클래스가 Name, Email 변수를 가지고 있을 경우 "User - Name", "User - Email"과 같은 관계는 속성을 의미할 수 있다. 텍스트 의미 분석 시스템(100)은 속성의 경우, ","을 사용해 관계를 표현하거나 소스코드 키워드로 입력할 수 있다. 예컨대, Student 클래스에 Name 변수가 있으면 "Student.Name"과 같이 표현될 수 있다. "Student.Name"은 "Student name"으로 소스코드 키워드가 설정될 수 있고, "The name of student", "학생 이름", "학생의 이름"으로 변형될 수 있다. 선언은 특정한 함수 안에서 새로운 변수가 선언된 경우를 의미한다. 예컨대, "AddNewUser" 라는 함수에서 "newUser", "userAddResult" 등이 선언된 경우 "AddNewUser - newUser", "AddNewUser - userAddResult"와 같은 관계는 선언 관계를 의미할 수 있다. 참조는 특정한 함수 안에서 다른 변수, 함수를 호출하는 등 참조가 있는 경우를 의미한다. 예컨대, "GetStudentName"이란 함수에서 Student 클래스의 Name 속성(변수)을 참조하는 경우 "GetStudentName - Student.Name"과 같은 관계는 참조 관계를 의미할 수 있다. 연산은 변수들이 비교, 사칙연산 등 특정한 연산의 피연산자로서 함께 쓰인 경우를 의미한다. 예컨대, "minScore > student.Score" 라는 비교연산이 코드에 있다면 "minScore - Student.Score"와 같은 관계는 연산 관계를 의미할 수 있다.
상술한 관계는 고정된 것이 아니며, 같은 명사(키워드)사이에서도 복수의 관계가 존재할 수도 있다. 또한, 직접적으로 1차 연결된 관계뿐만 아니라 이에 기반한 2차, 3차 관계가 있을 수 있다. 이러한 관계는 텍스트 의미 분석 시스템(100) 및 단말(200)에 의해 입력 데이터에 포함된 텍스트를 분석할 때 키워드 추출, 의도 유형 설정, 엔티티 유형 설정 등에 활용될 수 있다. 예컨대, School 클래스에서 "GetStudentNames"란 함수가 있고, 이 함수에서 Student 클래스의 Name이란 변수(속성)를 참조하는 경우 다음과 같이 관계가 설정될 수 있다. 즉, "School - GetStudentNames" 은 1차 관계로서 속성, "GetStudentNames - Student.Name"은 1차 관계로서 참조, "School - Student.Name"은 2차 관계로서 속성 및 참조 관계로 추론될 수 있다. 혹은 "Student.Name" 도 엄밀히 "Student - Name"과 같이 속성 관계로 보아"School - Name"은 3차 관계로서 속성, 참조 및 속성 관계로 추론될 수 있다.
또한, 상술한 텍스트 의미 분석 시스템(100) 및 단말(200)은 다음과 같은 과정을 통해 텍스트 의미 분석 및 출력 데이터 생성을 수행할 수 있다. 예컨대, 텍스트 의미 분석 시스템(100)은 챗봇을 이용하여 단말(200)로부터 전송되는 입력 데이터에 포함된 텍스트에 대해 형태소 분석을 수행할 수 있다. 여기서 텍스트는 질문 형태일 수 있다. 텍스트 의미 분석 시스템(100)은 상술한 형태소 분석에서 사전에 없는 단어로 인해 정확도가 떨어지는 문제를 소스코드 정보를 활용하여 개선할 수 있다. 텍스트 의미 분석 시스템은 소스코드 정보를 활용한 형태소 분석 결과를 활용해 문장 구조 분석과 패턴 매칭에 기반해 사용자 질의문의 의도(Intent) 및 엔티티(Entity)를 추출할 수 있다. 텍스트 의미 분석 시스템(100)은 추출된 엔티티에 대해서도 다시 문장 구조 분석, 패턴 매칭 등을 수행하여 분석 정확도를 높일 수 있다. 여기서, 텍스트 의미 분석 시스템(100)은 챗봇을 통해 사용되는 언어가 영어가 아닐 경우 소스코드와의 매칭을 위해 번역, 변환 등의 처리를 수행할 수 있다. 텍스트 의미 분석 시스템(100)은 추출된 의도, 엔티티를 기반으로 실제 질의응답을 처리할 알고리즘, 프로그램 등이 이해할 수 있도록 사전에 정의된 인터페이스, 규격, 형식에 맞게 입력 데이터를 변형할 수 있다. 여기서, 의도는 요청할 함수(method), 엔티티는 변수로서 활용될 수 있다. 텍스트 의미 분석 시스템(100)은 변형된 입력 데이터에 필수로 들어가야 할 변수 등이 누락된 경우, 단말(200)에게 해당 변수와 관련된 정보를 챗봇 메시지를 통해 요청할 수 있다. 단말(200) 역시 상술한 과정과 유사한 과정을 통해 텍스트 의미 분석 및 출력 데이터 생성을 수행할 수 있다.
도 4 및 도 5는 본 발명의 일 실시예에 따라 소스코드 분석 및 챗봇을 이용하여 텍스트 의미를 분석하는 예시들을 나타낸 도면들이다. 이하에서, 도 1 내지 도 3과 함께 도 4 및 도 5를 참조하여, 상술한 텍스트 의미 분석 및 출력 데이터 생성 과정에 대해 보다 상세하게 설명하도록 한다.
도 4를 참조하면, 소스코드에 관한 질문을 희망하는 사용자는 단말(200) 또는 챗봇을 통해 "학생의 이름이 같은 경우가 있는지 확인하는 기능이 구현되어 있어?" (41)라고 텍스트 의미 분석 시스템(100)에 입력 데이터를 전송하는 방식으로 질문할 수 있다. 챗봇은 해당 질문에 포함된 텍스트 키워드를 추출하고 텍스트 키워드와 일치하는 소스코드 정보에 따른 소스코드 키워드가 텍스트 의미 분석 시스템(100) 또는 단말(200)에 저장되어 있는지 탐색할 수 있다. 여기서 챗봇은 텍스트 의미 분석 시스템(100) 또는 단말(200)의 프로세서와 동일한 기능을 수행하도록 생성된 것일 수 있다.
챗봇은 텍스트 키워드인 "학생의 이름"과 소스코드 키워드인 "Student.Name"이 일치함을 확인하여 Student 클래스의 Name 변수(속성)를 확인할 수 있다. 이에 따라, 챗봇은 질문을 "{Student.Name}이 같은 경우가 있는지 확인하는 기능이 구현되어 있어?"로 변환활 수 있다. 챗봇은 변환된 질의에 대해 형태소 분석, 문장구조 분석을 수행할 수 있다. 챗봇은 해당 분석 결과를 바탕으로 기존에 챗봇이 학습한 의도(Intent)들의 패턴, 예시 발화(Utterance) 기록에서 사용자의 질문과 가장 일치하는 의도를 선택할 수 있다. 챗봇은 의도 유형을 "기능 구현 확인"으로 설정할 수 있고, "기능 설명"으로 엔티티 유형을 설정할 수 있다. 챗봇은, 엔티티 유형으로부터 사용자의 의도를 "{Student.Name}이 같은 경우가 있는지 확인"과 같이 파악할 수 있다. 챗봇은 추가적으로 추출된 엔티티에 대해서도 형태소 분석, 문장구조 분석을 추가로 수행할 수 있다. 챗봇은 엔티티에서 (연산), (연산/일치), (참조/if) 등의 소스코드들 간의 관계와 연관성을 파악할 수 있다. 챗봇은 "같은", "경우", "있는지(있다)", "확인" 등의 일반적인 형태소, 단어도 번역 등을 통해 "equal", "case", "check", "compare", "exist" 등으로 변환할 수 있다. 이 때, 소스코드 정보로 저장되지 않은 내용은 사전적인 의미로 해석될 수 있다.
위 예에서, 사용자의 질문에 대한 답변을 생성하기 위해 텍스트 의미 분석 시스템(100)의 프로세서(140)는checkFeature("변수 or 클래스 이름", "관련성 있는 관계 목록", "기능 설명에서 쓰인 단어")와 같은 형식의 함수 정보를 보낼 것을 챗봇에게 요청할 수 있다. 챗봇은 추출, 변환한 정보를 위의 형식에 맞춰 checkFeature("Student.Name", "(연산), (연산/일치), (참조/if)", "같은, 경우, 있다, 확인, equal, case, check, compare, exist")과 같은 함수 정보를 프로세서(140)에게 전송할 수 있다. 즉, 사용자의 입력 "학생의 이름이 같은 경우가 있는지 확인하는 기능이 구현되어 있어?"에 대응하여 챗봇은 프로세서(140)에 checkFeature("Student.Name", "(연산), (연산/일치), (참조/if)", "같은, 경우, 있다, 확인, equal, case, check, compare, exist")과 같은 텍스트 분석 결과를 전송할 수 있다. 프로세서(140)는 챗봇으로부터 전송 받은 함수 정보에 따라 "문의하신 내용과 연관성이 있는 코드를 3일 전 김개발님이 구현한 기록이 있습니다. StudentManager 클래스의 CheckDuplicate 함수의 line 17 ~ 28 입니다. 아래 링크를 눌러 바로 해당 코드를 확인하실 수 있습니다."(42)와 같은 답변을 생성할 수 있다. 다시 말해, 프로세서(140)는 텍스트 분석 결과를 토대로 사용자의 질문에 대응되는 답변(42)을 포함하는 출력 데이터를 완성하여 챗봇을 통해 단말(200)에 전송할 수 있다.
도 5를 참조하면, 소스코드에 관한 질문을 희망하는 사용자는 단말(200) 또는 챗볼을 통해 "이름을 바꿨는데 시험 성적표에서는 그대로 표시되는 문제가 있어요"(51)라고 텍스트 의미 분석 시스템(100)에 입력 데이터를 전송하는 방식으로 질문할 수 있다. 챗봇은 텍스트 의미 분석 시스템(100) 또는 단말(200)에 저장된 소스코드 정보로부터 "시험 성적표" - "ExamResult" 키워드를 확인해 질문을 변환할 수 있다. 챗봇은 형태소 분석을 통해 "이름" "바꾸다" "에서" "는" "그대로" "표시" "문제", "있다" 등을 추출할 수 있다. 챗봇은 명사인 "이름"에 대해서 소스코드에 대응하는 것이 무엇인지 파악하기 위해 소스코드 정보들 간의 관계를 2차, 3차로 확장해가며 "Name"과 일치하거나 유사한 변수명, 클래스명 등 탐색할 수 있다.
예컨대, 챗봇은 탐색 결과로서, "ShowStudentExamResult"라는 함수에서, 다음과 같은 관계로서 "examResult.Examinee = student.Name" 이라는 할당 연산이 있었다는 것을 확인할 수 있다.
ExamResult.Examinee - Student.Name (연산)
ExamResult - Examinee (속성), Student - Name (속성)
추가로, 챗봇은 해당 함수에서 "examResult.Cohort = school.Name" 이라는 할당 연산이 있었다는 것을 확인할 수 있다. 챗봇은 ExamResult - Examinee - Name - Student로 ExamResult, Student.Name의 관계 차수는 3임을 확인할 수 있다. 챗봇은 ExamResult - Cohort - Name - School로 ExamResult, School.Name의 관계 차수는 3임을 알 수 있다. 챗봇은 위 내용을 제외한 다른 탐색 결과들은 관계 차수 10을 상회하므로 실질적으로 연관성이 있는 관계를 상술한 내용들로만 판단할 수 있다.
챗봇은, 명사 "이름"이 지칭하는 것이 Student.Name과 School.Name의 똑같은 "이름"이라는 속성 값 중 무엇인지 결정할 수 없는 상황이므로, 단말(200)을 통해 사용자에게 “이름”이 구체적으로 어떤 것인지 설명을 문구와 응답 버튼으로 제안할 수 있다. 예컨대, 챗봇은 다음과 같은 메시지를 단말(200)을 통해 표시할 수 있다.
“이름이 지칭하는 것이 무엇인가요?
버튼1: 학생의 이름
버튼2: 학교의 이름
버튼3: 기타 (직접 입력)”(52)
사용자가 단말(200)을 통해 버튼1을 클릭해 "학생의 이름"(53)이라고 응답하면, 챗봇은 사용자의 질문을 "{Student.Name}을 바꿨는데 {ExamResult.Examinee}는 그대로 표시되는 문제가 있어요"라고 변환할 수 있다. 본래 "시험 성적표"는 "ExamResult"로 치환될 수 있으나, 챗봇은 탐색 결과에서 사용자가 지칭한 것이 구체적으로 "ExamResult.Cohort"가 아닌 "ExamResult.Examinee"임을 확인했으므로 이를 활용할 수 있다.
챗봇은, 변환된 질문에 대해 형태소 분석, 문장 구조 분석을 진행하여 가장 일치하는 의도를 파악할 수 있다. 예컨대, 챗봇은 질문의 의도 유형을 "버그, 오류 보고"로 설정하고, 엔티티 유형을 문제 설명 엔티티로 설정할 수 있다. 챗봇은 해당 엔티티 유형을 토대로 "{Student.Name}을 바꿨는데 {ExamResult.Examinee}는 그대로 표시"라는 엔티티를 추출할 수 있다.
챗봇은 엔티티에 대해서도 형태소 분석, 문장구조 분석 추가로 수행하여 (연산), (연산/할당) 등의 관계와 "바꾸다", "그대로", "표시" 및 이로부터 변환, 파생된 change, edit, same, display, unchanged 등을 추출할 수 있다. 프로세서(140)는 챗봇에게 reportBug("변수 or 클래스 이름", "관계 목록", "단어, 형태소")와 같은 함수 정보를 보낼 것을 요청할 수 있다. 결과적으로, 챗봇은 "이름을 바꿨는데 시험 성적표에서는 그대로 표시되는 문제가 있어요"라는 입력을 토대로 프로세서(140)에게 reportBug("Student.Name, ExamResult.Examinee", "(연산), (연산/할당)", "바꾸다, 그대로, 표시, change, edit, same, display, unchanged")라는 함수 정보를 포함하는 텍스트 분석 결과를 생성하여 전송할 수 있다. 프로세서(140)는 챗봇으로부터 전송 받은 함수 정보에 따라 "네, 학생의 이름을 변경했으나 시험 성적표에서 응시자 이름은 변경되지 않는 버그에 대해 신고가 접수되었습니다."(54)와 같은 답변을 생성할 수 있다. 다시 말해, 프로세서(140)는 텍스트 분석 결과를 토대로 사용자의 질문에 대응되는 답변(54)을 포함하는 출력 데이터를 완성하여 챗봇을 통해 단말(200)에 전송할 수 있다.
도 6은 본 발명의 다른 실시예에 따른 소스코드 분석을 이용한 텍스트 의미 분석 방법의 순서를 도시한 흐름도이고, 도 7 내지 도 10은 도 6에 도시된 방법의 일부 단계에 대한 세부 단계들을 도시한 도면들이다. 이하에서 설명될 소스코드 분석을 이용한 텍스트 의미 분석 방법은 앞서 도 1 내지 도 5를 참조하여 설명한 소스코드 분석을 이용한 텍스트 의미 분석 시스템(도 1의 100) 및 단말(도 1의 200) 중 적어도 어느 하나 이상에 의해 수행될 수 있다. 따라서, 앞서 도 1 내지 도 5를 참조하여 설명한 본 발명의 실시예에 대한 내용은 이하에서 설명될 실시예에도 동일하게 적용될 수 있으며, 이하에서 상술한 설명과 중복되는 내용은 생략하도록 한다. 이하에서 설명되는 단계들은 반드시 순서대로 수행되어야 하는 것은 아니고, 단계들의 순서는 다양하게 설정될 수 있으며, 단계들은 거의 동시에 수행될 수도 있다.
도 6을 참조하면, 소스코드 분석을 이용한 텍스트 의미 분석 방법은 단말과 서버의 통신 연결을 통해 수행되고, 입력 수신 단계(S120), 텍스트 분석 단계(S130) 및 출력 제공 단계(S140)를 포함하며, 소스코드 정보 저장 단계(S110)를 더 포함할 수 있다. 여기서, 서버는 상술한 소스코드 분석을 이용한 텍스트 의미 분석 시스템(도 1의 100)일 수 있고, 단말은 상술한 단말(도 1의 200)일 수 있다.
소스코드 정보 저장 단계(S110)는 소스코드 정보를 생성하여 서버의 메모리에 저장하는 단계이다. 이와 같이, 서버는 하나 이상의 프로그래밍 언어에 대한 정보를 포함하는 소스코드 정보를 포함하는 메모리를 포함할 수 있다. 소스코드 정보는, 하나 이상의 프로그래밍 언어에서 사용되는 변수 정보, 클래스 정보, 함수 정보 및 이들의 관계 정보를 포함할 수 있다.
입력 수신 단계(S120)는 서버가 단말로부터 텍스트가 포함된 입력 데이터를 수신하는 단계이다, 텍스트 분석 단계(S130)는 서버가 입력 데이터를 토대로 텍스트에 대한 자연어 처리를 수행하여 텍스트의 의미를 포함한 텍스트 분석 결과를 생성하는 단계이다. 텍스트 분석 단계(S130)는 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 서버에 저장된 소스코드 정보에 대응되는 의미를 가진 경우, 서버가 텍스트 키워드를 텍스트 키워드에 대응되는 소스코드 정보로 변환하여 텍스트를 수정하고, 서버가 수정된 텍스트에 대한 분석을 수행하여 텍스트 분석 결과를 생성하는 단계를 포함할 수 있다. 출력 제공 단계(S140)는 서버가 텍스트 분석 결과를 토대로 텍스트의 의미에 대응되는 출력 데이터를 생성하여 단말로 제공하는 단계이다. 일 예에서, 텍스트는 질문 정보를 포함하고, 텍스트 분석 결과는 상기 텍스트를 상기 질문 정보에 대응되는 답변을 생성하도록 하는 함수 정보를 포함하고, 그리고, 출력 데이터는 상기 함수 정보에 따라 생성되는 답변 정보를 포함할 수 있다.
도 7을 참조하면, 소스코드 정보 저장 제공 단계(S110)는 소스코드 키워드 설정 단계(S111) 및 소스코드 정보 생성 단계(S112)를 포함할 수 있다. 소스코드 키워드 설정 단계(S111)는 서버가 하나 이상의 프로그래밍 언어에서 사용되는 변수 정보, 클래스 정보 및 함수 정보에 포함된 명사를 추출하여 소스코드 키워드로 설정하는 단계를 포함할 수 있다. 소스코드 정보 생성 단계(S112)는 서버가 소스코드 키워드에 대응되는 소스코드의 명칭, 소스코드의 약칭 및 소스코드의 번역문과 소스코드 키워드들 간의 관계를 토대로 소스코드 정보를 생성하여 메모리에 저장하는 단계를 포함할 수 있다.
도 8을 참조하면, 텍스트 분석 단계(S130)는 소스코드 탐색 단계(S131) 및 텍스트 변환 및 의미 분석 단계(S132)를 포함할 수 있다. 소스코드 탐색 단계(S131)는 서버가 텍스트 키워드에 대응되는 소스코드 키워드가 메모리에 존재하는지 판단하는 단계를 의미한다. 텍스트 변환 및 의미 분석 단계(S132)는 서버가, 텍스트에 포함된 텍스트 키워드들 중 메모리에 대응되는 소스코드 키워드가 존재하는 텍스트 키워드는 대응되는 소스코드 키워드의 의미를 토대로 의미 분석을 수행하고, 대응되는 소스코드 키워드가 존재하지 않는 텍스트 키워드는 사전적 의미를 토대로 의미 분석을 수행하는 단계를 의미한다. 텍스트 키워드 및 소스코드 키워드에 대한 설명은 이미 앞서 도 1 내지 도 5를 참조하여 설명하였으므로 생략하도록 한다.
도 9를 참조하면, 텍스트 분석 단계(S130)는 텍스트 의도 분석 단계(S133) 및 텍스트 엔티티 분석 단계(S134)를 포함할 수 있다. 텍스트 의도 분석 단계(S133)는 서버가 텍스트의 의미를 포함한 텍스트 분석 결과를 토대로 텍스트의 의도가 기설정된 의도 유형들 중 하나의 의도 유형으로 설정하는 단계를 포함할 수 있다. 텍스트 엔티티 분석 단계(S134)는 서버가 텍스트의 의미를 포함한 텍스트 분석 결과를 토대로 텍스트의 엔티티가 기설정된 엔티티 유형들 중 하나의 엔티티 유형으로 설정하는 단계를 포함할 수 있다. 기설정된 의도 유형들 및 엔티티 유형들은, 앞서 도 1 내지 도 5를 참조하여 설명한 의도 유형들 및 엔티티 유형들과 실질적으로 동일하므로, 이들에 대한 설명은 생략하도록 한다.
도 10을 참조하면, 텍스트 분석 단계(S130)는 복수개의 소스코드 정보를 제공하는 단계(S135) 및 특정 소스코드 정보 수신 및 텍스트 분석 단계(S136)를 포함할 수 있다. 복수개의 소스코드 정보를 제공하는 단계(S135)는 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 서버에 저장된 복수개의 소스코드 정보들에 대응되는 의미를 가진 경우, 서버가 복수개의 소스코드 정보들을 단말로 제공하는 단계를 의마한다. 특정 소스코드 정보 수신 및 텍스트 분석 단계(S136)는 서버가 단말로부터 복수개의 소스코드 정보들 중 하나의 소스코드 정보에 대한 입력을 수신하고, 텍스트 키워드를 단말로부터 수신한 소스코드 정보로 변환하여 텍스트를 수정하고, 서버가 수정된 텍스트에 대한 분석을 수행하여 텍스트 분석 결과를 생성하는 단계를 의미한다.
도 11은 본 발명의 또 다른 실시예에 따른 소스코드 분석 및 챗봇을 이용한 질의응답 서비스 제공 방법의 순서를 도시한 흐름도이고, 도 12 내지 도 15는 도 11에 도시된 방법의 일부 단계에 대한 세부 단계들을 도시한 도면들이다. 이하에서 설명될 소스코드 분석 및 챗봇을 이용한 질의응답 서비스 제공 방법은 앞서 도 1 내지 도 5를 참조하여 설명한 소스코드 분석을 이용한 텍스트 의미 분석 시스템(도 1의 100) 및 단말(도 1의 200) 중 적어도 어느 하나 이상에 의해 수행될 수 있다. 따라서, 앞서 도 1 내지 도 5를 참조하여 설명한 본 발명의 실시예에 대한 내용은 이하에서 설명될 실시예에도 동일하게 적용될 수 있으며, 이하에서 상술한 설명과 중복되는 내용은 생략하도록 한다. 이하에서 설명되는 단계들은 반드시 순서대로 수행되어야 하는 것은 아니고, 단계들의 순서는 다양하게 설정될 수 있으며, 단계들은 거의 동시에 수행될 수도 있다.
도 11을 참조하면, 소스코드 분석 및 챗봇을 이용한 질의응답 서비스 제공 방법은 소스코드 질문 수신 단계(S220), 질문 분석 단계(S230) 및 답변 제공 단계(S240)를 포함하고, 소스코드 정보 저장 단계(S210)를 더 포함할 수 있다.
소스코드 정보 저장 단계(S210)는 서버가 소스코드 정보를 생성하여 서버의 메모리에 저장하는 단계이다. 이와 같이, 서버는 하나 이상의 프로그래밍 언어에 대한 정보를 포함하는 소스코드 정보를 포함하는 메모리를 포함하고, 그리고, 소스코드 정보는, 하나 이상의 프로그래밍 언어에서 사용되는 변수 정보, 클래스 정보, 함수 정보 및 이들의 관계 정보를 포함할 수 있다.
질문 수신 단계(S220)는 서버가 챗봇을 이용하여, 단말로부터 텍스트가 포함된 질문 데이터를 수신하는 단계이다. 질문 분석 단계(S230)는 서버가 챗봇을 이용하여, 질문 데이터를 토대로 텍스트에 대한 자연어 처리를 수행하고, 텍스트의 의미를 포함한 텍스트 분석 결과를 생성하는 단계이다. 답변 제공 단계(S240)는 서버가 챗봇을 이용하여, 텍스트 분석 결과를 토대로 텍스트의 의미에 대응되는 답변 데이터를 생성하고, 답변 데이터를 단말로 제공하는 단계이다. 질문 분석 단계(S230)는 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 서버에 저장된 소스코드 정보에 대응되는 의미를 가진 경우, 서버가 챗봇을 이용하여 텍스트 키워드를 텍스트 키워드에 대응되는 소스코드 정보로 변환하여 텍스트를 수정하고, 서버가 챗봇을 이용하여 수정된 텍스트에 대한 분석을 수행하여 텍스트 분석 결과를 생성하는 단계를 포함할 수 있다. 일 예에서, 텍스트는 질문 정보를 포함하고, 텍스트 분석 결과는 상기 텍스트를 상기 질문 정보에 대응되는 답변을 생성하도록 하는 함수 정보를 포함하고, 그리고, 출력 데이터는 상기 함수 정보에 따라 생성되는 답변 정보를 포함할 수 있다.
도 12를 참조하면, 소스코드 정보 저장 단계(S210)는 소스코드 키워드 설정 단계(S211) 및 소스코드 정보 생성 단계(S212)를 포함할 수 있다. 소스코드 키워드 설정 단계(S211)는 서버가 하나 이상의 프로그래밍 언어에서 사용되는 변수 정보, 클래스 정보 및 함수 정보에 포함된 명사를 추출하여 소스코드 키워드로 설정하는 단계를 포함할 수 있다. 소스코드 정보 생성 단계(S212)는 서버가 소스코드 키워드에 대응되는 소스코드의 명칭, 소스코드의 약칭 및 소스코드의 번역문과 소스코드 키워드들 간의 관계를 토대로 소스코드 정보를 생성하여 메모리에 저장하는 단계를 포함할 수 있다.
도 13을 참조하면, 질문 분석 단계(S230)는 소스코드 탐색 단계(S231) 및 텍스트 변환 및 의미 분석 단계(S232)를 포함할 수 있다. 소스코드 탐색 단계(S231)는 서버가 텍스트 키워드에 대응되는 소스코드 키워드가 메모리에 존재하는지 판단하는 단계를 의미한다. 텍스트 변환 및 의미 분석 단계(S232)는 서버가, 텍스트에 포함된 텍스트 키워드들 중 메모리에 대응되는 소스코드 키워드가 존재하는 텍스트 키워드는 대응되는 소스코드 키워드의 의미를 토대로 의미 분석을 수행하고, 대응되는 소스코드 키워드가 존재하지 않는 텍스트 키워드는 사전적 의미를 토대로 의미 분석을 수행하는 단계를 의미한다.
도 14를 참조하면, 질문 분석 단계(S230)는 텍스트 의도 분석 단계(S233) 및 텍스트 엔티티 분석 단계(S234)를 포함할 수 있다. 텍스트 의도 분석 단계(S233)는 서버가 텍스트의 의미를 포함한 텍스트 분석 결과를 토대로 텍스트의 의도가 기설정된 의도 유형들 중 하나의 의도 유형으로 설정하는 단계를 포함할 수 있다. 텍스트 엔티티 분석 단계(S234)는 텍스트의 엔티티 분석 단계는, 서버가 텍스트의 의미를 포함한 텍스트 분석 결과를 토대로 텍스트의 엔티티가 기설정된 엔티티 유형들 중 하나의 엔티티 유형으로 설정하는 단계를 포함할 수 있다. 기설정된 의도 유형들 및 엔티티 유형들은, 앞서 도 1 내지 도 5를 참조하여 설명한 의도 유형들 및 엔티티 유형들과 실질적으로 동일하므로, 이들에 대한 설명은 생략하도록 한다.
도 15를 참조하면, 질문 분석 단계(S230)는 복수개의 소스코드 정보를 제공하는 단계(S235) 및 특정 소스코드 정보 수신 및 텍스트 분석 결과 생성 단계(S236)를 포함할 수 있다. 복수개의 소스코드 정보를 제공하는 단계(S235)는 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 서버에 저장된 복수개의 소스코드 정보들에 대응되는 의미를 가진 경우, 서버가 챗봇을 이용하여 복수개의 소스코드 정보들을 단말로 제공하는 단계를 의미한다. 특정 소스코드 정보 수신 및 텍스트 분석 결과 생성 단계(S236)는 서버가 챗봇을 이용하여, 단말로부터 복수개의 소스코드 정보들 중 하나의 소스코드 정보에 대한 입력을 수신하고, 텍스트 키워드를 단말로부터 수신한 소스코드 정보로 변환하여 텍스트를 수정하고, 수정된 텍스트에 대한 분석을 수행하여 텍스트 분석 결과를 생성하는 단계를 의미한다.
이상 지금까지 설명한 본 발명의 실시예들에 따른 소스코드 분석을 이용한 텍스트 의미 분석 방법과 소스코드 분석 및 챗봇을 이용한 질의응답 서비스 제공 방법은, 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 상술한 설명을 기초로 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해되어야만 한다. 본 발명의 범위는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다. 본원의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본원의 범위에 포함되는 것으로 해석되어야 한다.

Claims (4)

  1. 소스코드 분석을 이용한 텍스트 의미 분석 장치에 있어서,
    입출력 모듈;
    텍스트 의미 도출 프로그램을 저장하는 메모리; 및
    상기 메모리에 저장된 텍스트 의미 도출 프로그램을 실행하는 프로세서를 포함하고,
    상기 프로세서는 상기 텍스트 의미 도출 프로그램을 실행하여,
    상기 입출력 모듈을 통해 텍스트가 포함된 입력 데이터를 전송 받고, 상기 입력 데이터를 토대로 상기 텍스트에 대한 자연어 처리를 수행하여 상기 텍스트의 의미를 포함한 텍스트 분석 결과를 생성하고, 상기 텍스트 분석 결과를 토대로 상기 텍스트의 의미에 대응되는 출력 데이터를 생성하여 상기 입출력 모듈을 통해 표시하되,
    상기 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 상기 메모리에 저장된 소스코드 정보에 대응되는 의미를 가진 경우, 상기 프로세서는 상기 텍스트 키워드를 상기 텍스트 키워드에 대응되는 소스코드 정보로 변환하여 상기 텍스트를 수정하고, 상기 프로세서는 수정된 텍스트에 대한 분석을 수행하여 상기 텍스트 분석 결과를 생성하도록 구성되고,
    상기 메모리는 하나 이상의 프로그래밍 언어에 대한 정보를 포함하는 상기 소스코드 정보를 포함하고, 상기 소스코드 정보는 상기 하나 이상의 프로그래밍 언어에서 사용되는 변수 정보, 클래스 정보, 함수 정보 및 이들의 관계 정보를 포함하며,
    상기 프로세서는 상기 소스코드 정보를 생성하여 상기 메모리에 저장하는 소스코드 정보 저장하되,
    상기 프로세서는, 상기 하나 이상의 프로그래밍 언어에서 사용되는 변수 정보, 클래스 정보 및 함수 정보에 포함된 명사를 추출하여 소스코드 키워드로 설정하고, 상기 소스코드 키워드에 대응되는 소스코드의 명칭, 소스코드의 약칭 및 소스코드의 번역문과 소스코드 키워드들 간의 관계를 토대로 상기 소스코드 정보를 생성하여 상기 메모리에 저장하고,
    상기 프로세서는 상기 명사의 종류와 빈도 및 예외 규칙을 고려하여 추출된 상기 명사에서 임시로 사용된 명사를 상기 소스코드 키워드에서 제외하도록 구성되는 것인, 소스코드 분석을 이용한 텍스트 의미 분석 장치.
  2. 제1항에 있어서,
    상기 프로세서는 상기 텍스트 의미 도출 프로그램을 실행하여,
    상기 텍스트 키워드에 대응되는 소스코드 키워드가 상기 메모리에 존재하는지 판단하고, 그리고, 상기 텍스트에 포함된 텍스트 키워드들 중 상기 메모리에 대응되는 소스코드 키워드가 존재하는 텍스트 키워드는 대응되는 소스코드 키워드의 의미를 토대로 의미 분석을 수행하고, 대응되는 소스코드 키워드가 존재하지 않는 텍스트 키워드는 사전적 의미를 토대로 의미 분석을 수행하는 것을 더 수행하도록 구성되는, 소스코드 분석을 이용한 텍스트 의미 분석 장치.
  3. 제1항에 있어서,
    상기 프로세서는 상기 텍스트 의미 도출 프로그램을 실행하여,
    상기 텍스트의 의미를 포함한 상기 텍스트 분석 결과를 토대로 상기 텍스트의 의도가 기설정된 의도 유형들 중 하나의 의도 유형으로 설정하고, 그리고, 상기 텍스트의 의미를 포함한 상기 텍스트 분석 결과를 토대로 상기 텍스트의 엔티티가 기설정된 엔티티 유형들 중 하나의 엔티티 유형으로 설정하는 것을 더 수행하도록 구성되는, 소스코드 분석을 이용한 텍스트 의미 분석 장치.
  4. 제1항에 있어서,
    상기 프로세서는 상기 텍스트 의미 도출 프로그램을 실행하여,
    상기 텍스트에 포함된 하나 이상의 단어를 포함하는 텍스트 키워드가 상기 메모리에 저장된 복수개의 소스코드 정보들에 대응되는 의미를 가진 경우, 상기 복수개의 소스코드 정보들을 상기 입출력 모듈을 통해 표시하고, 상기 입출력 모듈을 통해 상기 복수개의 소스코드 정보들 중 하나의 소스코드 정보에 대한 입력을 수신하고, 상기 텍스트 키워드를 수신된 소스코드 정보로 변환하여 상기 텍스트를 수정하고, 그리고, 수정된 텍스트에 대한 분석을 수행하여 상기 텍스트 분석 결과를 생성하는 것을 더 수행하도록 구성되는, 소스코드 분석을 이용한 텍스트 의미 분석 장치.
KR1020230133214A 2021-09-16 2023-10-06 소스코드 분석을 이용한 텍스트 의미 분석 장치 KR20230145018A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230133214A KR20230145018A (ko) 2021-09-16 2023-10-06 소스코드 분석을 이용한 텍스트 의미 분석 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210123664A KR102600752B1 (ko) 2021-09-16 2021-09-16 소스코드 분석을 이용한 텍스트 의미 분석 장치, 시스템 및 방법, 그리고, 이를 이용한 챗봇 질의응답 서비스 제공 방법
KR1020230133214A KR20230145018A (ko) 2021-09-16 2023-10-06 소스코드 분석을 이용한 텍스트 의미 분석 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020210123664A Division KR102600752B1 (ko) 2021-09-16 2021-09-16 소스코드 분석을 이용한 텍스트 의미 분석 장치, 시스템 및 방법, 그리고, 이를 이용한 챗봇 질의응답 서비스 제공 방법

Publications (1)

Publication Number Publication Date
KR20230145018A true KR20230145018A (ko) 2023-10-17

Family

ID=85603047

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020210123664A KR102600752B1 (ko) 2021-09-16 2021-09-16 소스코드 분석을 이용한 텍스트 의미 분석 장치, 시스템 및 방법, 그리고, 이를 이용한 챗봇 질의응답 서비스 제공 방법
KR1020230133214A KR20230145018A (ko) 2021-09-16 2023-10-06 소스코드 분석을 이용한 텍스트 의미 분석 장치
KR1020230133207A KR20230145017A (ko) 2021-09-16 2023-10-06 소스코드 분석을 이용한 텍스트 의미 분석 시스템
KR1020230133196A KR20230145016A (ko) 2021-09-16 2023-10-06 소스코드 분석 및 챗봇을 이용한 질의응답 서비스 제공 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020210123664A KR102600752B1 (ko) 2021-09-16 2021-09-16 소스코드 분석을 이용한 텍스트 의미 분석 장치, 시스템 및 방법, 그리고, 이를 이용한 챗봇 질의응답 서비스 제공 방법

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020230133207A KR20230145017A (ko) 2021-09-16 2023-10-06 소스코드 분석을 이용한 텍스트 의미 분석 시스템
KR1020230133196A KR20230145016A (ko) 2021-09-16 2023-10-06 소스코드 분석 및 챗봇을 이용한 질의응답 서비스 제공 방법

Country Status (3)

Country Link
US (1) US20240061761A1 (ko)
KR (4) KR102600752B1 (ko)
WO (1) WO2023042987A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100684160B1 (ko) 2005-12-08 2007-02-20 한국전자통신연구원 개체명 인식을 이용한 대화 분석 장치 및 방법
KR100901134B1 (ko) 2008-09-09 2009-06-04 김수현 형태소 분석과 소스코드 분석을 통한 추천 태그 표시시스템
KR20100085339A (ko) * 2009-01-20 2010-07-29 고려대학교 산학협력단 문자 메시지에 의한 질의 응답 시스템 및 방법
KR101933953B1 (ko) * 2016-05-26 2019-01-04 연세대학교 원주산학협력단 페이지랭크와 토픽 모델링을 이용한 소프트웨어 도메인 토픽 추출 시스템
KR102155739B1 (ko) * 2019-10-24 2020-09-14 한경훈 질의응답 데이터 셋을 적응적으로 재사용하는 챗봇 서비스 제공 방법, 서버, 및 시스템

Also Published As

Publication number Publication date
KR20230040482A (ko) 2023-03-23
US20240061761A1 (en) 2024-02-22
WO2023042987A1 (ko) 2023-03-23
KR102600752B1 (ko) 2023-11-13
KR20230145017A (ko) 2023-10-17
KR20230145016A (ko) 2023-10-17

Similar Documents

Publication Publication Date Title
US11960513B2 (en) User-customized question-answering system based on knowledge graph
US10262062B2 (en) Natural language system question classifier, semantic representations, and logical form templates
US11822890B2 (en) Method, system, and computer program for artificial intelligence answer
US11010284B1 (en) System for understanding navigational semantics via hypothesis generation and contextual analysis
US20200285528A1 (en) Application program interface lists
CN111159220B (zh) 用于输出结构化查询语句的方法和装置
WO2024207587A1 (zh) 问答评分方法、问答评分装置、电子设备及存储介质
US12079210B2 (en) System and method for efficient transliteration of machine interpretable languages
KR20190059084A (ko) 자연어 질의응답 시스템 및 그 학습 방법
CN116303537A (zh) 数据查询方法及装置、电子设备、存储介质
CN108932225B (zh) 用于将自然语言需求转换成为语义建模语言语句的方法和系统
CN117932022A (zh) 一种智能问答方法、装置、电子设备及存储介质
CN117520520A (zh) 一种基于知识图谱的知识查询方法和装置
CN117332771A (zh) 内容点的获取方法、装置、计算机可读介质及电子设备
KR102600752B1 (ko) 소스코드 분석을 이용한 텍스트 의미 분석 장치, 시스템 및 방법, 그리고, 이를 이용한 챗봇 질의응답 서비스 제공 방법
CN114428788B (zh) 自然语言处理方法、装置、设备及存储介质
US20240264827A1 (en) Apparatus, system, and method for providing question and answer service including source code explanation, and method for providing chatbot service using same
CN116755683B (zh) 一种数据处理方法和相关装置
US11720531B2 (en) Automatic creation of database objects
CN118035422A (zh) 贸易商品归类问题答复方法、系统、电子设备及存储介质
CN118626697A (zh) 多数据源可视化方法、装置、设备及存储介质
KR20240069959A (ko) 인공지능 기반의 대화형 질의 응답 시스템
CN118673038A (zh) 指标获取方法、装置、电子设备及计算机可读存储介质
CN118503227A (zh) 数据迁移方法、装置、相关设备和计算机程序产品
CN117540001A (zh) 数据查询方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A107 Divisional application of patent