KR20230045080A - 채팅방 관리 서버와 이를 위한 방법 및 이러한 방법을 수행하기 위한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체 - Google Patents

채팅방 관리 서버와 이를 위한 방법 및 이러한 방법을 수행하기 위한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체 Download PDF

Info

Publication number
KR20230045080A
KR20230045080A KR1020237007982A KR20237007982A KR20230045080A KR 20230045080 A KR20230045080 A KR 20230045080A KR 1020237007982 A KR1020237007982 A KR 1020237007982A KR 20237007982 A KR20237007982 A KR 20237007982A KR 20230045080 A KR20230045080 A KR 20230045080A
Authority
KR
South Korea
Prior art keywords
topic
chat room
topics
chatting
activity
Prior art date
Application number
KR1020237007982A
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 주식회사 씨젠
Publication of KR20230045080A publication Critical patent/KR20230045080A/ko

Links

Images

Classifications

    • G06Q50/30
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/216Parsing using statistical methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/20Education
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/22Social work or social welfare, e.g. community support activities or counselling services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/50Business processes related to the communications industry
    • 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/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • 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/21Monitoring or handling of messages
    • 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/52User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail for supporting social networking services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Tourism & Hospitality (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Primary Health Care (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Child & Adolescent Psychology (AREA)
  • Educational Technology (AREA)
  • Educational Administration (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

부모 채팅방에 표시되는 채팅 메시지로부터 복수 개의 토픽을 추출하는 토픽 추출부; 상기 복수 개의 토픽 각각을 메이저 토픽 또는 마이너 토픽으로 분류하는 메이저-마이너 토픽 분류부; 및 상기 마이너 토픽에 대응되는 채팅 메시지가 표시될 자식 채팅방을 생성하는 작업 수행부를 포함하는 채팅방 관리 서버가 제공된다.

Description

채팅방 관리 서버와 이를 위한 방법 및 이러한 방법을 수행하기 위한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체
본 발명은 채팅방 관리 서버와 이를 위한 방법 및 이러한 방법을 수행하기 위한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체에 관한 것이다.
채팅 서비스란, 온라인 상의 채팅방에서 사용자들이 서로 간에 메시지를 교환할 수 있도록 지원해주는 서비스를 지칭한다.
오프라인 대면 접촉이 주를 이루는 사회에서는, 이러한 온라인 채팅 서비스는 의사 소통의 보조적인 수단으로서만 활용된다.
그러나, 인터넷과 스마트폰의 보급이 보편화되고 화상 통화와 같은 기술이 발전하면서, 온라인 채팅 서비스는 의사 소통의 주된 수단으로도 점차 활용되고 있다. 특히 covid-19로 인해 재택 근무가 활성화되고 화상 회의가 보편화되면서, 채팅 서비스 그 자체 또는 화상 회의에 수반되는 채팅 서비스는 일상 생활 뿐 아니라 업무 수행에서도 빈번하고도 주요하게 활용되고 있다.
예컨대, 특정 주제에 대한 토론 내지 세미나의 경우, 과거에는 오프라인 대면 접촉 방식으로만 수행되었다. 그러나, 현재에는 대면 접촉 없이 온라인 상에서의 채팅 서비스를 통해서만 전술한 토론 내지 세미나가 수행되는 경우가 종종 있다.
채팅이 의사 소통의 주된 수단으로 활용되어 감에 따라, 사용자가 채팅 메시지로부터 용이하게 정보를 인식할 수 있도록 하는 기술이 요구되고 있다. 예컨대, 하나의 채팅방에서 복수 개의 토픽에 관한 채팅 메시지가 뒤섞여서 표시되는 경우를 전제하자. 이 때, 사용자가 자신이 원하는 정보를 채팅 메시지로부터 용이하게 획득할 수 있다면, 채팅 서비스는 보다 활성화될 수 있을 것이다.
이에, 본 개시내용의 구현예는 복수 개의 토픽에 관한 채팅 메시지가 하나의 채팅방에서 뒤섞여서 표시되는 상황 발생 시, 사용자가 자신이 원하는 정보를 채팅 메시지로부터 용이하게 획득할 수 있도록 하는 기술적 해결책을 제공할 수 있다.
다만, 본 구현예에 따른 해결하고자 하는 과제가 이에 한정되는 것은 아니다.
본 개시내용의 일 양태에 따르면, 부모 채팅방에 표시되는 채팅 메시지로부터 복수 개의 토픽을 추출하는 토픽 추출부; 상기 복수 개의 토픽 각각을 메이저 토픽 또는 마이너 토픽으로 분류하는 메이저-마이너 토픽 분류부; 및 상기 마이너 토픽에 대응되는 채팅 메시지가 표시될 자식 채팅방을 생성하는 작업 수행부를 포함하는 채팅방 관리 서버가 제공된다.
본 개시내용의 다른 양태에 따르면, 부모 채팅방에 표시되는 채팅 메시지로부터 복수 개의 토픽을 추출하는 단계; 상기 복수 개의 토픽 각각을 메이저 토픽 또는 마이너 토픽으로 분류하는 단계; 및 상기 마이너 토픽에 대응되는 채팅 메시지가 표시되는 자식 채팅방을 생성하는 단계를 포함하는 채팅방 관리 방법이 제공된다
본 개시내용의 또 다른 양태에 따르면, 채팅방 관리 방법을 수행하는 코드를 포함하는 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체가 제공된다. 상기 채팅방 관리 방법은 부모 채팅방에 표시되는 채팅 메시지로부터 복수 개의 토픽을 추출하는 단계; 상기 복수 개의 토픽 각각을 메이저 토픽 또는 마이너 토픽으로 분류하는 단계; 및 상기 마이너 토픽에 대응되는 채팅 메시지가 표시되는 자식 채팅방을 생성하는 단계를 포함할 수 있다.
일 구현예에 따르면, 복수 개의 토픽이 하나의 채팅방에서 다뤄지지 않고 적어도 두 개의 채팅방에서 분산 방식으로 다뤄질 수 있다. 이로써, 하나의 채팅방에 서로 상이한 토픽의 채팅 메시지들이 뒤섞여서 표시되는 정도가 완화될 수 있다. 따라서, 해당 채팅방에 접속한 사용자들은, 채팅 메시지로부터 자신이 원하는 정보를 보다 원활하게 획득할 수 있다.
이 때, 상기 기술을 적용함으로써 복수 개의 토픽이 적어도 두 개의 채팅방으로 분산되어서 다뤄질 때의 각 채팅방에서의 채팅 활성 정도가 상기 기술이 적용되지 않아서 복수 개의 토픽이 하나의 채팅방에서 다루어졌을 때의 채팅 활성 정도에 비해 높을 것으로 예상되는 경우에, 적어도 2개의 채팅방에서 다뤄질 복수 개의 토픽을 분산하기 위한 상기 기술이 실행될 수 있다. 즉, 전술한 기술은 해당 기술의 효과가 있다고 예상되는 경우에 실행될 수 있다. 따라서, 채팅방 관리가 보다 효과적으로 수행될 수 있다.
도 1은 일 구현예에 따른 채팅방 관리 서버 및 이러한 채팅방 관리 서버에 접속함으로써 채팅 서비스를 제공받는 복수 개의 단말 A 내지 F를 예시한다.
도 2는 도 1에 도시된 복수 개의 단말 A 내지 F 각각의 구성을 개략적으로 예시하는 블록도이다.
도 3은 일 구현예에 따른 채팅방 관리 서버의 구성을 개략적으로 예시하는 블록도이다.
도 4는 일 구현예에 따라 메시지들로부터 토픽들이 추출되고, 이렇게 추출된 토픽들이 메이저 토픽이나 마이너 토픽으로 분류되는 동작을 개략적으로 예시한다.
도 5는 일 구현예들에 따른 채팅방 관리 서버가 토픽을 추출하는 시점을 결정하는 일 예를 예시하는 흐름도이다.
도 6은 일 구현예들에 따른 채팅방 관리 서버에 의해 키워드에 따라 토픽을 결정하는 일 예를 예시한다.
도 7은 일 구현예들에 따른 채팅방 관리 서버에 의해 키워드에 따라 토픽을 결정하는 또 다른 예를 예시한다.
도 8은 일 구현예들에 따른 채팅방 관리 서버가 메이저 토픽 및 마이너 토픽을 결정하는 과정의 일 예를 예시한다.
도 9는 일 구현예들에 따른 채팅방 관리 서버에 의해 관련도를 기초로 제1 마이너 토픽을 결정하는 과정의 일 예를 예시한다.
도 10은 일 구현예들에 따른 채팅방 관리 서버에 의해 관련도를 기초로 제1 마이너 토픽을 결정하는 과정의 또 다른 예를 예시한다.
도 11은 일 구현예들에 따른 단말에 의해 채팅방을 표시하는 일 예를 예시한다.
도 12는 일 구현예들에 따른 단말에 의해 메이저 토픽 및 마이너 토픽을 표시하는 일 예를 예시한다.
도 13은 일 구현예들에 따른 단말에 의해 제1 마이너 토픽에 대한 채팅방 생성 여부를 표시하는 일 예를 예시한다.
도 14는 일 구현예들에 따른 채팅방 관리 방법의 흐름도이다.
도 15는 순환 신경망의 아키텍처의 일 예를 개략적으로 예시한다.
도 16은 순환 신경망의 아키텍처의 또 다른 예를 개략적으로 예시한다.
도 17은 일 구현예에 따라 학습이 완료된 순환 신경망에서 데이터가 처리될 때의 흐름이 예시적으로 예시한다.
도 18은 일 구현예에 따라 순환 신경망을 학습시킬 때의 데이터 흐름의 예를 예시적으로 예시한다.
도 19는 BERT 기반의 언어 모델에 대한 아키텍처의 일 예를 개략적으로 예시한다.
도 20은 도 19에 도시된 베이스부의 구성을 개략적으로 예시하는 블록도이다.
도 21은 일 구현예에 따라 학습된 BERT 기반의 언어 모델에서 데이터가 처리될 때의 흐름을 예시적으로 예시한다.
도 22에는 일 구현예에 따라 BERT 기반의 언어 모델을 사전 학습시킬 때의 데이터 흐름의 일 예를 예시적으로 예시한다.
도 23은 일 구현예에 따라 BERT 기반의 언어 모델을 사전 학습시킬 때의 데이터 흐름의 또 다른 예를 예시적으로 예시한다.
도 24는 일 구현예에 따라 BERT 기반의 언어 모델에 대한 세부 조정(fine-tuning) 학습을 수행할 때의 데이터 흐름을 예시적으로 예시한다.
도 25는 일 구현예에 따라 학습이 완료된 채팅 활성도 추론부에서 데이터가 처리될 때의 흐름을 예시적으로 예시한다.
도 26은 다층 신경망에 대한 개략적인 개념도이다.
도 27은 그래프 신경망에 대한 개략적인 개념도이다.
도 28은 일 구현예에서 따른 그래프의 노드와 링크를 예시한다.
도 29는 일 구현예에 따라 학습이 완료된 채팅 활성도 추론부에서 그래프가 처리될 때의 흐름을 예시적으로 예시한다
도 30과 31은 토픽에 관한 계층 구조에 대한 개념을 예시한다.
도 32는 일 구현예에 따른 채팅방 관리 방법의 순서도가 예시적인 흐름도이다.
도 33은 일 구현예에 따라 구현된 전자 장치의 구성을 개략적으로 예시하는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 구현예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 구현예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 구현예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
일 구현예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 일 구현예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 일 구현예에 따른 채팅방 관리 서버 및 이러한 채팅방 관리 서버에 접속함으로써 채팅 서비스를 제공하는 복수 개의 단말 A 내지 F를 예시한다.
여기서, 도 1은 예시적인 것에 불과하므로, 본 발명의 사상이 도 1에 도시된 것으로 한정 해석되는 것은 아니다. 예컨대, 채팅방 관리 서버(100)에 접속하는 단말의 개수는 5개 이하이거나 또는 7개 이상일 수도 있다. 이하, 도 1에 대해 보다 자세하게 살펴보기로 한다.
도 1을 참조하면, 복수 개의 단말 A 내지 F(200) 각각에는 사용자의 ID가 부기되어 있다. 예컨대, 단말 A(200)의 사용자는 a이고, 단말 B(200)의 사용자는 b이며, 단말 C(200)의 사용자는 c이고, 단말 D(200)의 사용자는 d이다. 여기서, 각 단말의 사용자가 변경될 수 있음은 물론이다. 또한, 한 단말의 사용자가 복수 명이 될 수도 있다. 이 때, 이러한 복수 명의 사용자는 고유의 계정으로 서로 간에 구분 가능한 사용자일 수 있다.
이들 단말 A 내지 F(200) 각각은 채팅방 관리 서버(100)에 접속해서 채팅 서비스를 제공받을 수 있는 장치를 지칭한다. 이러한 단말 A 내지 F(200) 각각은 예컨대 스마트폰, 태블릿 PC, 데스크탑 PC 또는 서버 등을 포함할 수 있으며, 그 밖의 다양한 형태의 단말을 포함할 수도 있다. 이들 복수 개의 단말 A 내지 F(200) 각각의 구체적인 구성에 대해서는 도 2에서 보다 자세하게 살펴보기로 한다.
이들 단말 A 내지 F(200)는 채팅방 관리 서버(100)에 접속할 때 네트워크(300)를 이용한다. 여기서의 네트워크(300)는 무선 또는 유선 네트워크망을 의미한다. 이 중, 무선 네트워크 망의 경우, 네트워크(300)은 LTE(long-term evolution), LTE-A(LTE Advance), 5G 무선 접속망, 예컨대 NR(new radio), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), WiFi(wireless fidelity), 블루투스(Bluetooth), NFC(near field communication) 및 GNSS(global navigation satellite system) 등 중 적어도 하나를 포함할 수 있다. 또한, 유선 네트워크 망의 경우, 네트워크(300)은 USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232), LAN(Local Area Network), WAN(Wide Area Network), 인터넷 및 전화망(telephone network) 등 중 적어도 하나를 포함할 수 있다.
채팅방 관리 서버(100)는 단말들(200)에게 채팅 서비스를 제공하거나 이와 같이 제공되는 채팅 서비스를 관리하는 장치를 지칭한다. 이러한 채팅방 관리 서버(100)는 스마트폰, 태블릿 PC, 데스크탑 PC 또는 서버 등을 포함할 수 있거나, 또는 클라우드 방식으로 전술한 채팅 서비스를 제공하거나 관리하는 장치를 포함할 수도 있다. 이러한 채팅방 관리 서버(100)의 구체적인 구성에 대해서는 도 3에서 보다 자세하게 살펴보기로 한다.
채팅방 관리 서버(100)는 채팅방 관리 서버(100)에 접속한 단말(200)의 요청에 의해 채팅방을 생성한다. 물론, 전술한 요청이 없어도, 채팅방 관리 서버(100) 스스로 채팅방을 생성할 수도 있다. 생성되는 채팅방의 개수는 한 개 이상이다.
여기서, 생성되는 채팅방의 종류는 일반 채팅방, 비밀 채팅방 및 오픈 채팅방 중 어느 하나에 해당될 수 있다. 일반 채팅방은 사용자가 일반적으로 채팅 메시지를 주고 받을 수 있는 채팅방을 가리킨다. 비밀 채팅방은 사용자들이 주고 받은 채팅 메시지가 암호화되어서 관리되는 채팅방을 가리킨다. 오픈 채팅방은 익명의 사용자들끼리 채팅 메시지를 주고 받을 수 있는 채팅방을 가리킨다.
이러한 채팅방은 다양한 목적으로 활용될 수 있다. 예컨대 의사나 간호사 또는 의료 연구인들은 의약품이나 의료 장비에 관한 의견을 전술한 채팅방에서 교환할 수 있다. 또는 특정 분야에 대한 세미나나 교육이 온라인으로 진행될 경우, 세미나 참여자들은 의견을 전술한 채팅방에서 교환할 수 있다.
사용자는, 전술한 채팅방에 자신의 단말(200)을 이용해서 입장한다. 입장한 사용자는 단말(200)을 이용해서 채팅 메시지를 생성한다. 생성된 채팅 메시지는 해당 채팅방에 할당되어 있는 채팅창에 표시된다. 만약 동일한 채팅방에 입장한 사용자가 복수 명이면, 이들 복수의 사용자들은 해당 채팅방에서 서로 간에 채팅 메시지를 주고 받을 수 있다.
도 1에는, 일 구현예에 따른 채팅방 관리 서버(100)에 접속해서 채팅 메시지를 주고받는 단말들(200) 중에서 일부 단말 D(200)와 E(200)에서의 화면 캡쳐 이미지가 예시적으로 도시되어 있다. 각각의 화면 캡쳐 이미지를 살펴보면, 단말 D(200)의 사용자 d와 단말 E(200)의 사용자 e는 서로 상이한 채팅방에 입장해 있다. 이들 사용자 d와 e는 각자가 속해 있는 채팅방에서 채팅 메시지를 주고받고 있다.
이 중, 단말 D(200)에 대한 화면 캡쳐 이미지를 먼저 살펴보기로 하자. 단말 D(200)의 사용자 d가 입장해 있는 채팅방을 부모 채팅방이라고 하자. 단말 D(200)에 대한 화면 캡쳐 이미지를 참조하면, 단말 D(200)의 화면은 부모 채팅방에 할당된 채팅창(241), 부모 채팅방에 관한 제1 현황 정보창(2421) 및 부모 채팅방에 관한 제2 현황 정보창(2422)을 포함한다.
이 중, 채팅창(241)에는 해당 채팅방에서 누가 어떤 채팅 메시지를 입력했는지를 나타내는 정보가 표시된다. 도 1을 참조하면, 부모 채팅방에 할당된 채팅창(241)에는 사용자 A 내지 F 각각이 입력한 채팅 메시지가 표시되어 있다.
제1 현황 정보창(2421)에는 사용자 정보가 표시된다. 이러한 사용자 정보는, 해당 채팅방에 입장해 있는 사용자에 대한 정보를 포함한다. 도 1을 참조하면, 부모 채팅방에 입장한 사용자는 a 내지 f이다.
또한, 제1 현황 정보창(2421)에는 사용자 별 토픽 정보가 표시된다. 이러한 사용자 별 토픽 정보는, 해당 채팅방에 입장해 있는 각 사용자가 어떤 토픽에 관한 채팅 메시지를 입력했는지를 나타낸다. 도 1을 참조하면, 부모 채팅방에서 사용자 a에 대한 사용자 별 토픽 정보는 토픽 1이고, 사용자 b에 대한 사용자 별 토픽 정보는 토픽 2이며, 사용자 c에 대한 사용자 별 토픽 정보는 토픽 1이고 사용자 d에 대한 사용자 별 토픽 정보는 토픽 2이다.
여기서, '토픽'이란, 채팅 메시지에서 다뤄지는 주제를 의미한다. 토픽의 종류에는, 예컨대 사회, 경제 및 정치 등이 포함될 수 있다.
한편, 특정 토픽에는 상위 개념의 토픽 또는 하위 개념의 토픽이 존재할 수 있다. 따라서, 복수 개의 토픽은 각각의 상위 개념의 토픽 또는 하위 개념의 토픽과 계층 구조를 형성할 수 있다. 예컨대 투자, 주식 투자, 직접 주식 투자 및 부동산 투자라는 토픽에 대해 살펴보자. 투자는 이 중에서 가장 상위 개념의 토픽이다. 주식 투자와 부동산 투자는 투자의 하위 개념에 속하는 토픽이다. 직접 주식 투자는 주식 투자의 하위 개념에 속하는 토픽이다. 이러한 토픽의 종류 또는 토픽 간의 계층 구조는 온톨로지 기반으로 이미 만들어진 정보로부터 획득된 것일 수 있다.
제2 현황 정보창(2422)에는, 해당 채팅방에서 다뤄지는 각 토픽에 대해, 토픽 별 채팅 활성도가 표시된다. '채팅 활성도'란, 특정 토픽에 대해 얼마만큼 채팅이 활발하게 일어나고 있는지를 나타내는 수치이다. 이러한 채팅 활성도에 대한 구체적인 개념 및 이를 산출하거나 추론하는 방식에 대해서는 뒤에 보다 자세하게 살펴보기로 한다.
전술한 토픽 별 채팅 활성도를 표시하기 위해 숫자 및/또는 도형(원)의 크기가 이용될 수 있다. 예컨대, 도 1에서, 부모 채팅방에 대한 각 토픽에 할당된 원의 지름 또는 각 토픽에 할당된 원에 기재된 숫자로 봤을 때, 채팅 활성도는 토픽 1이 토픽 2에 비해 크다. 다만, 채팅 활성도의 표시 방식이 전술한 것으로 한정되는 것은 아니다.
다음으로, 단말 E(200)에 대한 화면 캡쳐 이미지를 살펴보기로 하자. 단말 E(200)의 사용자 e가 입장해 있는 채팅방을 자식 채팅방이라고 하자. 단말 E(200)의 화면은 자식 채팅방에 할당된 채팅창(241), 자식 채팅방에 관한 제1 현황 정보창(2421) 및 자식 채팅방에 관한 제2 현황 정보창(2422) 중 적어도 하나를 포함한다.
자식 채팅방에 할당된 채팅창(241), 제1 현황 정보창(2421) 및 제2 현황 정보창(2422) 각각에 표시되는 정보의 종류는 부모 채팅방에 관한 그것들과 동일하다. 도 1을 참조하면, 자식 채팅방에는 사용자 e와 f가 입장해 있고, 이들 각각이 할당된 채팅 메시지가 표시되어 있다. 또한, 자식 채팅방에서 사용자 e와 f에 대한 사용자 별 토픽 정보는 토픽 3이다. 또한, 자식 채팅방에서 다뤄지는 토픽 3에 대한 채팅 활성도는, 부모 채팅방에서의 토픽 1보다는 낮지만 부모 채팅방에서의 토픽 2보다는 높다.
이 때, 각 채팅방에서의 토픽의 종류에 대해 살펴보자. 부모 채팅방에서는 토픽 1과 2가 다뤄지고 있지만 토픽 3은 다뤄지고 있지 않다. 자식 채팅방에서는 토픽 3이 다뤄지고 있지만 토픽 1과 2는 다뤄지고 있지 않다. 즉, 복수 개의 토픽이 두 개의 채팅방에서 다뤄지고 있다. 따라서, 부모 채팅방에 입장해 있는 사용자들은 토픽 1과 2에 대해서 집중해서 채팅을 할 수 있고, 자식 채팅방에 입장해 있는 사용자들은 토픽 3에 대해서 집중해서 채팅을 할 수 있다. 즉, 사용자들은 자신이 원하는 토픽에 대해 집중할 수 있다. 따라서 사용자들은 자신이 원하는 정보를 채팅 메시지로부터 용이하게 획득할 수 있다.
전술한 상황, 즉 복수 개의 토픽 각각이 두 개(또는 3개 이상)의 채팅방에서 분산되어서 다뤄지도록 하기 위한, 다양한 방법이 있을 수 있다. 한 가지 방법은 각각의 채팅방에 특정 토픽을 할당한 뒤, 각 채팅방에서는 그에 할당된 토픽만이 다뤄질 수 있도록 사용자에게 공지하고 관리하는 것이다. 또 다른 방법은, 어느 하나의 채팅방(이하, '부모 채팅방'이라고 지칭)에서 복수 개의 토픽에 대한 채팅이 수행되고 있는 것으로 감지되면, 별도로 적어도 하나의 채팅방(이하, '자식 채팅방'이라고 지칭)을 생성한 뒤 이러한 복수 개의 토픽을 부모 채팅방과 자식 채팅방으로 분산시키는 것이다. 일 구현예에 따른 채팅방 관리 서버(100)는 전술한 2가지 방법뿐만 아니라 여기에서 언급되지 않은 다른 방법을 지원할 수 있다.
이하에서는, 도 1에서 살펴본 복수 개의 단말 A 내지 F(200) 각각의 구성, 그리고 채팅방 관리 서버(100)의 구성을 살펴보기로 한다.
도 2는 도 1에 도시된 복수 개의 단말 A 내지 F(200) 각각의 구성을 개략적으로 예시하는 블록도이다.
도 2를 참조하면, 복수 개의 단말 A 내지 F(200) 각각은 통신부(210), 프로세서(220), 메모리(230) 및 디스플레이부(240)를 포함하지만, 이에 한정되는 것은 아니다. 또한, 이하의 설명은 복수 개의 단말 A 내지 F(200) 각각 뿐 아니라, 채팅방 관리 서버(100)에 접속해서 채팅 서비스를 제공받는 단말에 대해서도 적용 가능하다.
먼저, 통신부(210)는 유선 또는 무선 통신 모듈을 포함하도록 구현된다. 유선 통신 모듈은, 예컨대 USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232), LAN(Local Area Network), WAN(Wide Area Network), 인터넷 전화망 등 중 적어도 하나를 포함할 수 있다. 무선 통신 모듈은, 예컨대 LTE(long-term evolution), LTE-A(LTE Advance), 5G NR(New radio), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), WiFi(wireless fidelity), 블루투스(Bluetooth), NFC(near field communication), GNSS(global navigation satellite system) 등 중 적어도 하나를 포함할 수 있다. 이러한 통신부(210)를 통해, 각 단말(200)은 채팅방 관리 서버(100)와 통신할 수 있다.
디스플레이부(240)는 다양한 정보를 표시하는 표시 모듈을 포함하도록 구현된다. 표시 모듈의 예로서는 컴퓨터의 구성 중 하나인 모니터 또는 스마트 기기의 구성 중 하나인 디스플레이 패널 등이 포함될 수 있다.
이러한 디스플레이부(240)에 표시되는 정보는 도 1에 도시된 화면 캡쳐 이미지에 나타난 바와 같이, 예컨대 특정 채팅방에 할당된 채팅창, 채팅 메시지, 해당 채팅방에 입장한 사용자 정보, 사용자 별 토픽 정보 및 토픽 별 채팅 활성도를 포함할 수 있다. 또한, 채팅방 관리 서버(100)에 생성되어 있는 적어도 두 개의 채팅방에 대한 리스트 정보가 전술한 정보에 포함될 수도 있다.
메모리(230)는 데이터 또는 명령을 저장하는 기억 매체를 포함하도록 구현된다. 기억 매체의 예로서는 RAM, ROM, 플래시 메모리 등이 포함될 수 있다. 이러한 메모리(230)에 저장된 데이터 또는 명령은 이하에서 기술될 프로세서(210)에 의해 활용될 수 있다.
입력부(250)는 사용자 또는 외부의 장치로부터 데이터 또는 명령을 입력 받는 입력 모듈을 포함하도록 구현된다. 입력 모듈의 예로서는 키보드, 마우스, 터치 패드 또는 USB 포트 등이 포함될 수 있다. 보다 구체적으로, 단말(200)의 사용자는 입력부(250)를 통해 채팅 메시지를 입력할 수 있다.
프로세서(210)는 메모리(230)에 저장된 데이터 또는 명령을 이용해서 이하에서 설명될 기능을 수행하도록 동작하는 연산 모듈을 포함하도록 구현된다. 연산 모듈의 예로는 CPU나 GPU 등을 포함할 수 있다. 이하, 프로세서(210)에 의해 수행 가능한 기능에 대해 살펴보기로 하자. 다만, 이하에서 설명될 기능은 예시적인 것에 불과하다.
단말(200)은, 프로세서(210)의 동작에 의해, 통신부(210)를 통해서 네트워크(300)를 경유하여 채팅방 관리 서버(100)에 접속할 수 있다.
또한, 프로세서(210)의 동작에 의해, 채팅방에 대한 생성 요청이 통신부(210)를 통해서 단말(200)로부터 채팅방 관리 서버(100)에게 전달될 수 있다.
또한, 프로세서(210)의 동작에 의해, 입력부(250)에 입력된 채팅 메시지가 통신부(210)를 통해 단말(200)로부터 채팅방 관리 서버(100)에게 전달될 수 있다.
또한, 채팅방 관리 서버(100)로부터 통신부(210)를 통해 단말(200)에 수신된 정보가, 프로세서(210)의 동작에 의해서 디스플레이부(240)에 표시될 수 있다.
도 3은 일 구현예에 따른 채팅방 관리 서버(100)의 구성을 개략적으로 예시하는 블록도이다.
도 3을 참조하면, 채팅방 관리 서버(100)는 통신부(110), 토픽 추출부(120), 메이저-마이너 토픽 분류부(125), 및 작업 수행부(180)를 포함하나 이에 한정되는 것은 아니다. 채팅방 관리 서버(100)는 채팅 활성도 산출부(130), 관련도 산출부(140), 채팅 활성도 추론부(150), 및 후보 토픽 선별부(160), 및 계층 구조 파악부(170)를 추가로 포함할 수 있다. 예컨대, 채팅방 관리 서버(100)는 도 3에 도시된 또는 도 3에 도시되지 않은 구성 중 적어도 하나를 포함할 수 있다.
먼저, 통신부(110)는 유선 또는 무선 통신 모듈을 포함하도록 구현된다. 유선 통신 모듈은, 예컨대 USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232), LAN(Local Area Network), WAN(Wide Area Network), 인터넷 전화망 등 중 적어도 하나를 포함할 수 있다. 무선 통신 모듈은, 예컨대 LTE(long-term evolution), LTE-A(LTE Advance), 5G NR(New radio), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), WiFi(wireless fidelity), 블루투스(Bluetooth), NFC(near field communication) 및 GNSS(global navigation satellite system) 등 중 적어도 하나를 포함할 수 있다. 이러한 통신부(110)를 통해, 채팅방 관리 서버(100)는 각 단말(200) 또는 기타 도면에 도시되지 않은 다양한 엔티티와 통신을 수행할 수 있다.
다음으로, 토픽 추출부(120), 메이저-마이너 토픽 분류부(125), 채팅 활성도 산출부(130), 관련도 산출부(140), 후보 토픽 선별부(150), 채팅 활성도 추론부(160), 계층 구조 파악부(170) 및 작업 수행부(180) 각각에 살펴보기로 한다. 여기서 상기 각 구성은 프로세서 및 이러한 프로세서에 의해 수행 가능한 명령어를 저장하는 메모리에 의해 구현될 수 있다. 여기서 프로세서는 CPU, GPU 등을 포함할 수 있다.
먼저, 토픽 추출부(120)는 특정 채팅방에 표시되는 채팅 메시지가 어떤 종류의 토픽을 다루고 있는지, 즉 토픽의 종류를 추출하도록 구현된다. 구현예에 따라, 토픽 추출부(120)는 특정 채팅방에서 소정의 시간 동안 어떤 종류의 토픽이 다뤄진 횟수를 추출할 수도 있다. 이 때, 소정의 시간은 수 초에서 수십 초, 수 분, 수십 분 또는 수 시간일 수 있고, 상황에 따라 변경될 수도 있으나, 이에 한정되는 것은 아니다.
예를 들어, 토픽 추출부(120)에 의해 추출되는 정보의 형태는 다음과 같다.
U t1 t 2 t 3 t p-1 t p
1 2 1 0 0 1
2 0 0 0 0 1
여기서, u는 사용자를 나타내며, 그 값은 사용자 ID를 나타낸다. 아울러, ti는 i번째 토픽을 나타내며, 그 값은 해당 토픽이 특정 채팅방에서 전술한 소정의 시간 동안 다뤄진 횟수를 나타낸다.
상기 추출된 정보 중 사용자 ID가 1인 정보를 살펴보면, t1, t2 및 t3 각각에 대응되는 토픽은 해당 채팅방에서 소정의 시간 동안 2회, 1회 및 0회 다뤄졌음을 알 수 있다. 여기서, 0회 다뤄졌다는 것은, 해당 토픽은 해당 채팅방에서 해당 시간 동안 다뤄지지 않았다는 것을 의미한다.
한편, 토픽 추출부(120)가 추출하는 전술한 정보는, 부모 채팅방, 자식 채팅방 또는 자식 채팅방으로부터 파생된 손자 채팅방에 대해 추출될 수 있다.
여기서, 토픽은 채팅 메시지로부터 추출되는데, 추출의 근거가 되는 채팅 메시지의 단위는, 키보드 또는 키패드에서 'enter'가 입력됨으로써 채팅창 상에서 줄바꿈되는 지점에 의해 구분되는 단어의 집합일 수 있다. 이하에서는 토픽 추출의 대상이 되는 채팅 메시지의 단위를 '단위 채팅 메시지'라고 지칭하기로 하자. 구체적으로, 단위 채팅 메시지에 대해 예를 들어 살펴보면, 사용자 a와 b가 아래와 같이 채팅 메시지를 입력했다고 가정하자. (아래에서 열거된 소문자 a 내지 f 각각은 임의의 단어를 나타낸다).
사용자 a: aaaaa. bbbbb.
사용자 b: ccccc. ddddd. eeeee.
사용자 b: fffff. ggggg.
사용자 a의 채팅 메시지는 'enter'에 의해 줄바꿈되는 지점을 기준으로, 'aaaaa. bbbbb'와 'ccccc. ddddd. eeeee.'와 같이 2개의 단위 채팅 메시지로서 구분된다. 또한, 사용자 B의 채팅 메시지는 'enter'에 의해 줄바꿈되는 지점을 기준으로 'fffff. ggggg.'로 구분된다. 그러면, 토픽 추출부(120)는 사용자 a의 채팅 메시지 중 단위 채팅 메시지 'aaaaa. bbbbb'로부터 토픽을 추출하고, 또한 단위 채팅 메시지 'ccccc. ddddd. eeeee.'로부터 토픽을 추출한다. 뿐만 아니라, 토픽 추출부(120)는 사용자 b의 단위 채팅 메시지 'fffff. ggggg '로부터 토픽을 추출한다. 물론, 토픽 추출의 대상이 되는 단위 채팅 메시지가 'enter'에 의해 구분된다는 것은 예시적인 것에 불과하므로, 본 발명의 사상이 이에 한정되는 것은 아니다.
한편, 전술한 단위 채팅 메시지에 포함된 문장의 개수와 상관없이, 이러한 단위 채팅 메시지로부터 추출되는 토픽의 개수는 1개일 수도 있지만 2개 이상일 수도 있다. 예컨대 1개의 문장에 '전염병의 원인이 되는 변종 바이러스' 및 '전염병에 대한 백신'에 관한 토픽이 포함될 경우, 토픽 추출부(120)가 해당 단위 채팅 메시지로부터 추출한 토픽의 개수는 2개일 수 있다.
이하에서는 토픽 추출부(120)가 채팅 메시지로부터 토픽을 추출하는 방식에 관한 구체적인 구현예에 대해 설명하기로 한다.
일 예로, 토픽 추출부(120)는 언어 모델을 이용해서 토픽을 추출한다. 여기서, 언어 모델이란 자연어에 관한 법칙을 컴퓨터로 모사한 모델을 의미한다. 이러한 언어 모델은, 단어가 입력되면 그 다음에 등장할 것으로 예측되는 단어를 확률과 함께 제공할 수 있다.
토픽 추출부(120)는 다양한 유형의 언어 모델을 이용할 수 있다. 예컨대, 이용 가능한 언어 모델은 딥러닝 모델 중 하나인 순환 신경망(recurrent neural network, RNN) 기반의 언어 모델 또는 BERT(Bidirectional Encoder Representations from Transformers) 기반의 언어 모델을 포함될 수 있다. 이 중 순환 신경망 기반의 언어 모델에 대해서 도 15 내지 17을 참조해서 살펴보자.
도 15는 순환 신경망의 아키텍처의 일 예를 개념적으로 예시한다. 도 15를 참조하면, 입력 데이터는 x이고, 출력 데이터는 y이며, 활성화 함수는 tanh이다. 학습 과정에서 최적화되는 파라미터는, 가중치 Wxh, Whh 및 바이어스에 해당되는 b이나, 이에 한정되는 것은 아니다.
이러한 순환 신경망의 입력단에는, 순서를 갖는 입력 데이터가 그 순서에 따라 입력된다. 순환 신경망의 특성 상, 특정 시점 tn에 순환 신경망의 출력단에서 출력된 출력 데이터는, 직전 시점 tn-1에 출력단에서 출력된 출력 데이터 및 해당 시점 tn에 입력단에 입력된 입력 데이터가 함께 고려되어서 출력된 값이다.
도 16은 순환 신경망의 아키텍처의 또 다른 예를 개략적으로 예시한다.
도 16에서, 3개의 입력 데이터 x1(t=tn-1), x2(t=tn) 및 x3(t=tn+1)가 순차적으로 순환 신경망의 입력단에 입력된다. 그리고 3개의 출력 데이터 Output1, Output2 및 Output3가 출력단에서 출력된다. 이 중, 하나의 출력 데이터 Output2는 다른 출력 데이터 Output1과 하나의 입력 데이터 x2를 고려한 값이고, output3은 또 다른 출력 데이터 output2와 다른 입력 데이터 x3을 고려한 값이다.
이러한 순환 신경망은, 순환 신경망의 입력단에 단위 채팅 메시지가 입력되면, 출력단에서는 해당 단위 채팅 메시지에 대한 토픽의 종류가 출력되도록 동작 가능하다. 이에 대해서는 도 17을 참조하여 살펴보기로 한다.
도 17은 일 구현예에 따라 학습이 완료된 순환 신경망에서 데이터가 처리될 때의 흐름을 예시적으로 예시한다.
여기서, 순환 신경망은 그의 입력단에 소정의 단위 채팅 메시지가 입력되었을 때 출력단에서 해당 단위 채팅 메시지에 대한 토픽이 출력되도록 학습이 완료된 것임을 전제로 한다.
도 17을 참조하면, 토픽 추론의 대상이 되는 단위 채팅 메시지는 cn이다. cn은 3개의 단어(in, n=1, 2, 3)를 포함한다. 3개의 단어는 임베딩부에 의해 임베딩되어서 벡터(xm, m=1, ... k, k는 자연수)로 변환된다. 도 17에서 k=3인 것으로 가정하자. 이러한 임베딩 과정을 거쳐야만, 순환 신경망은 단어를 인식할 수 있다. 순환 신경망은 비숫자 문자 그 자체를 추론 과정 또는 학습 과정에서 인식할 수는 없기 때문이다. 여기서, 임베딩 과정 그 자체는 공지된 기술이므로, 이에 대한 설명은 생략하기로 한다.
벡터의 각 엘리먼트 xm은 m의 값에 따른 순서대로 순환 신경망의 입력단에 입력된다. 도 17에서는 x1 내지 x3가 순차적으로 입력되고, 각각의 입력에 대응해서 s1, s2 및 s3가 순차적으로 출력된다.
여기서, 해당 순환 신경망은 하나의 단위 채팅 메시지 cn이 어떤 토픽에 해당되는지를 추론해서 출력한다. 따라서, 토픽을 추론하는 과정에는, cn에 포함된 모든 단어가 고려되어 있는 s3가 활용될 수 있다.
이러한 s3는 도 17에 기재된 소프트맥스(softmax)부에 입력되며, 그 결과 s3에 대한 소프트맥스 연산이 수행된다. 소프트맥스 연산의 수행 결과, 단위 채팅 메시지 cn이 토픽 1 내지 p(단, p는 자연수) 중 어디에 해당되는지 여부가 확률의 값으로써 산출된다. 여기서, 전술한 바와 같이, 토픽 1 내지 p는 단위 채팅 메시지가 속할 수 있는 모든 종류의 후보 토픽이다. 도 17을 참조하면, cn에 대해 가장 높은 확률값을 갖는 토픽은 p개의 토픽 중 토픽 2이다.
한편, 단위 채팅 메시지에 대해 산출된 확률 중 가장 높은 값을 갖는 확률이 미리 지정된 기준치(예컨대 40%) 미만인 값을 갖는 경우가 있을 수도 있다. 예컨대, 특정 단위 채팅 메시지의 토픽이 p개의 토픽 중 토픽1 내지 5 각각에 해당될 확률이 31%, 30%, 29%, 5% 및 5%일 수 있다. 이 경우, 토픽 추출부(120)는 해당 단위 채팅 메시지 직후에 동일한 사용자에 의해 입력된 또 다른 단위 채팅 메시지 한 개를 해당 단위 채팅 메시지와 함께 고려해서 전술한 확률을 다시 산출할 수 있다. 만약 이렇게 산출된 확률이 전술한 기준치 미만이면, 토픽 추출부(120)는 확률이 전술한 기준치 이상이 될 때까지 반복해서 그 다음의 단위 채팅 메시지를 추가적으로 고려해서 전술한 토픽 추출 과정을 수행할 수 있다.
한편, 단위 채팅 메시지에 대해 산출된 상기 확률 중 미리 지정된 기준치(예컨대 40%)를 초과하는 확률이 적어도 두 개인 상황이 있을 수 있다. 예컨대, 특정 단위 채팅 메시지에 대해 p개의 토픽 중 토픽 1 내지 5 각각에 대해 산출된 확률이 46%, 44%, 5%, 3%, 2%일 수 있다. 이 경우, 토픽 추출부(120)는 해당 단위 채팅 메시지에 대한 토픽의 종류를 토픽 1과 토픽 2인 것으로 추출할 수 있다.
이하에서는 전술한 순환 신경망에 대한 학습 과정에 대해 도 18을 참조해서 살펴보기로 하자.
도 18은 일 구현예에 따라 순환 신경망을 학습시킬 때의 데이터 흐름이 예시적으로 예시한다.
도 18을 참조하기에 앞서, 전술한 순환 신경망은 지도 학습(supervised-learning) 방식에 따라 학습 장치(도면에는 미도시)에 의해 학습될 수 있다. 아울러, 여기서 학습 장치란 GPU와 같은 프로세서를 포함하며, 다만 이에 한정되는 것은 아니다.
학습 과정에 대해 살펴보기로 한다. 우선, 학습용 데이터가 마련된다. 학습용 데이터는 학습용 입력 데이터와 학습용 정답 데이터로 구분된다. 이 중, 학습용 입력 데이터는 복수 개의 문장 각각에 대한 토픽 종류를 포함한다.
이러한 학습용 데이터는 다양한 방식으로 마련될 수 있다. 예컨대 웹페이지 상에서 문서를 크롤링하는 과정 그리고 해당 문서에 포함된 문장을 그 문서의 토픽으로 라벨링하는 과정이 수행됨으로써, 전술한 학습용 데이터가 마련될 수 있다. 이 때, 특정 문서가 어떤 토픽에 대한 것인지 여부는, 해당 문서의 제목이나 해당 문서를 게시하고 있는 웹페이지의 타이틀 등으로부터 추출될 수 있다.
전술한 학습용 입력 데이터인 문장(cn)은 순환 신경망에 입력되기에 앞서, 숫자를 엘리먼트로 갖는 벡터의 형태로서 변환된다. 이 과정은 앞서 살펴본 임베딩 과정이다. 학습 과정에서도, 추론 과정에서와 마찬가지로 임베딩 과정이 수행된다. 이에, 학습 장치에는 전술한 임베딩을 수행하는 임베딩부가 포함될 수 있다. 이러한 임베딩이 수행된 결과로서 벡터가 산출되는데, 이러한 벡터에 포함된 각각의 숫자의 순서는, 대응되는 단어의 순서와 일치해야 한다.
다음으로, 벡터의 엘리먼트 각각(xi, i=자연수)은 그 순서에 따라 순환 신경망에 입력된다. x1 내지 x3가 순차적으로 입력되며, 이에 대응해서 각각 s1 내지 s3가 순차적으로 출력된다. 이러한 출력 데이터 중 cn에 포함된 마지막 단어까지를 고려해서 추론된 출력 데이터 s3가 소프트맥스(softmax)를 거치게 된다. 그 결과 문장 cn이 토픽 1 내지 p(단, p는 자연수) 중 어디에 해당되는지 여부가 확률의 값으로써 출력된다. 여기서, 전술한 바와 같이, 토픽 1 내지 p는 문장이 속할 수 있는 모든 종류의 후보 토픽을 지칭한다. 도 18을 참조하면, cn에 대해 가장 높은 확률값을 갖는 토픽의 종류는 토픽 2이다.
다음으로, cn에 대해 추론된 출력 데이터와 학습용 정답 데이터가 비교된다. 도 18을 참조하면, 학습용 입력 데이터 cn에 대한 출력 데이터는 토픽 2인 반면 학습용 정답 데이터는 토픽 1이다.
cn에 대해 추론된 출력 데이터와 학습용 정답 데이터 간의 차이, 즉 오류가 오류 역전파(backpropagation) 방식에 의해 순환 신경망에 전달된다. 그 결과 순환 신경망에 포함된 파라미터들, 예컨대 가중치와 바이어스의 값은 이러한 오류가 최소화될 수 있도록 업데이트된다. 오류 역전파 방법 그 자체 및 파라미터 업데이트 방법 그 자체는 공지된 기술이므로, 이에 관한 상세한 설명은 생략하기로 한다.
이 후, 또 다른 문장 cn+1을 포함해서, 미리 준비된 학습용 데이터를 이용한 학습이 수행된다.
이러한 학습은 순환 신경망의 성능이 소정의 기준을 만족시킬 때까지 수행된다. 소정의 기준의 만족 여부는 다양한 방식으로 정해질 수 있다. 예컨대 소정의 기준은 교차 검증 방법에 의해 확인될 수 있다. 교차 검증에 대해 살펴보면, 학습용 데이터 중 일부가 검증용(validation) 데이터로 할당된다. 학습 과정에서는 학습용 데이터 뿐 아니라 검증용 데이터도 이용된다. 예컨대, 학습용 데이터를 이용한 결과에 대한 오류 정도가 체크되며, 중간중간에 검증용 데이터를 이용한 결과에 대한 오류 정도 또한 체크된다. 만약, 학습용 데이터에 대한 오류 정도는 줄어드는 상황이지만 검증용 데이터에 대한 오류 정도가 최소값을 갖는 경우, 그 시점이 전술한 기준을 만족시키는 시점이 된다.
다음으로, 토픽 추출부(120)가 이용할 수 있는 BERT 기반의 언어 모델에 대해 살펴보기로 한다.
도 19는 BERT 기반의 언어 모델에 대한 아키텍처의 예를 개략적으로 예시한다.
도 19를 참조하면 BERT 기반의 언어 모델은 베이스부(121) 및 특화부(122)를 포함한다. 다만 상기 언어 모델이 이러한 구성을 포함하는 것만으로 한정되는 것은 아니다.
베이스부(121)는 다량의 코퍼스(corpus)를 학습용 데이터로 이용해서 사전 학습(pre-trained)된 언어 모델을 지칭한다. 이 때, 학습에 이용되는 코퍼스는 그 분야가 의료와 같이 특정 분야로 한정될 수도 있고 또는 한정되지 않을 수도 있다. 베이스부(120)에 대한 사전 학습 과정에 대해서는 도 22와 23에서 보다 자세하게 살펴보기로 한다.
베이스부(121)는, 채팅 메시지와 같은 입력을 받으면 이를 해석해서 1차 결과값을 출력한다. 1차 결과값은 해당 채팅 메시지의 특징을 나타낸다. 이러한 특징은 예컨대 채팅 메시지가 어떤 토픽에 관한 것인지 또는 채팅 메시지가 갖는 뉘앙스 등을 포함될 수 있으나, 이에 한정되는 것은 아니다.
도 20은 도 19에 도시된 베이스부(121)의 구성을 개략적으로 예시하는 블록도이다.
도 20을 참조하면, 베이스부(121)는 복수 개의 인코더부(1211)를 포함한다. 복수 개의 인코더부(1211) 각각은 인접한 인코더부(1211)에 연결될 수 있다.
여기서, 각각의 인코더부(1211)는 서로 동일한 구조를 가질 수 있다. 어느 하나의 인코더부(1211)의 구조에 대해 살펴보면, 인코더부(1211)는 도면에는 도시되어 있지 않지만 자체 집중층(self-attention layer)과 피드-포워드층(feed forward layer)을 포함한다. 여기서, 자체 집중층과 피드-포워드층 그 자체는 BERT와 관련된 논문에 이미 기술되어 있는 바, 이들 각각에 대한 설명은 생략하기로 한다.
다시 도 19를 참조해서 특화부(122)에 대해 살펴보기로 하자. 특화부(122)는 특정 태스크를 수행하도록 구현된다. 예컨대, 특화부(122)는 베이스부(121)로부터 전술한 1차 결과값을 받으면, 그러한 1차 결과값에 기초해서 다양한 기능, 예컨대 분류(classification)와 같은 특화된 기능을 수행할 수 있다.
이러한 특화부(122)는 특정 태스크를 위해 고안된 학습용 데이터에 기초해서, 지도 학습 방식으로 학습된다. BERT 기반의 언어 모델에서 살펴보면, 특화부(122)에 대한 이러한 학습은 세부 조정(fine-tuning)에 해당된다. 이러한 특화부(22)의 학습에 대해서는 도 24에서 보다 자세하게 살펴보기로 한다.
한편, 앞서 살펴본 BERT 기반의 언어 모델은 전술한 단위 채팅 메시지가 주어지면 해당 단위 채팅 메시지가 어떤 토픽을 다루고 있는지를 추론하는데 활용될 수 있다. 이에 대해서는 도 21을 참조하여 살펴보기로 한다.
도 21은 학습된 BERT 기반의 언어 모델 및 또한 이러한 언어 모델에 단위 채팅 메시지가 입력되었을 때의 데이터 흐름을 예시적으로 예시한다.
도 21을 참조하면, 토픽 추론의 대상이 되는 단위 채팅 메시지는 cn이다. 단위 채팅 메시지 cn은 3개의 임베딩 과정을 순차적으로 거친다: 토큰 임베딩(token embedding), 문장 임베딩(sentence embedding), 위치 임베딩(position embedding).
토큰 임베딩 과정에서는, 단위 채팅 메시지에 포함되는 단어를 각 단어의 등장 횟수 및 각 단어의 길이를 고려해서 sub-word라는 단위로 쪼갠다. 예를 들어, 일정 빈도 이상으로 등장하는 단어는 더 이상 쪼개지지 않고 그 자체가 sub-word가 되지만, 일정 빈도 미만으로 등장하는 단어는 어미와 어간 등으로 쪼개진다. 이렇게 쪼개진 부분 각각이 sub-word가 된다.
문장 임베딩은, 단위 채팅 메시지를 구성하는 문장들을 서로 간에 구분하기 위해, 문장과 문장 사이에 문장 구분자(SEP)를 입력하는 것을 지칭할 수 있다. 여기서의 문장은 '절'을 의미할 수 있다. 예를 들어, 단위 채팅 메시지가 2개의 문장 A와 문장 B를 포함할 경우, 문장 임베딩에 따르면 문장 A와 문장 B 사이에는 SEP가 입력된다.
위치 임베딩은 단위 채팅 메시지에 포함된 각 단어에 각 단어의 순서를 부여해서 인코딩하는 것을 지칭한다. 예컨대, 특정 단위 채팅 메시지가 단어 A + 단어 B + 단어 C의 순서로 해당 단어들을 포함한다고 가정해보자. 이 경우 단어 A, 단어 B 및 단어 C는 위치 임베딩에 따라 그 순서가 1, 2 및 3으로 인코딩된다.
한편, 앞서 살펴본 토큰 임베딩, 문장 임베딩 및 위치 임베딩 그 자체는 공지된 기술이므로, 각각에 대한 추가적인 설명은 생략하기로 한다.
단위 채팅 메시지는 전술한 3개의 임베딩 과정을 거쳐서 벡터(xm, m=1 ..., k, k는 자연수)로 변환된다.
베이스부(121)는 벡터의 각 엘리먼트 xm에 기초해서 1차 결과값을 출력한다. 이러한 1차 결과값은 특화부(122)에 전달된다.
특화부(122)는 1차 결과값에 기초해서 2차 결과값을 출력한다. 이러한 2차 결과값은 소프트맥스부를 거치게 된다.
소프트맥스부를 거친 결과, 단위 채팅 메시지 cn이 토픽 1 내지 p(단, p는 자연수) 중 어떤 토픽을 다루는지 여부가 값으로써 출력된다. 여기서, 전술한 바와 같이 토픽 1 내지 p는 채팅 메시지에 의해 다뤄질 수 있는 모든 종류의 후보 토픽을 지칭한다. 도 21을 참조하면, cn에 대해 가장 높은 확률값을 갖는 토픽은 p개의 후보 토픽 중 토픽 2이다.
한편, 특정 단위 채팅 메시지에 대해 출력된 확률 중 가장 높은 값을 갖는 확률이 미리 지정된 기준치(예컨대 40%) 미만일 수 있다. 또는 특정 단위 채팅 메시지에 대해 출력된 확률 중 미리 지정된 기준치(예컨대 40%)를 초과하는 확률이 적어도 두 개인 상황이 있을 수 있다. 이에 대해서는 앞서 살펴본 순환 신경망에서와 동일한 방식에 의해 처리될 수 있는 바, 해당 부분에 대한 설명을 원용하기로 한다.
다음으로는, 베이스부(121)에 대한 사전 학습(pre-training) 과정, 그리고 특화부(122)에 대한 학습 과정(fine-tuning)에 대해 살펴보기로 하자. 먼저, 이러한 베이스부(121)와 특화부(122) 각각은 학습 장치(도면에는 미도시)에 의해 학습될 수 있다. 아울러, 여기서 학습 장치란 GPU와 같은 프로세서를 포함하며, 다만 이에 한정되는 것은 아니다.
도 22는 전술한 베이스부(121)에 대한 사전 학습 과정 중 일부인 마스크된 언어 모델(masked language model, MLM)을 예시적으로 예시한다.
도 22를 참조하면, 우선, 학습용 데이터가 마련된다. 학습용 데이터는 복수 개의 문장을 포함하는 다량의 코퍼스일 수 있다. 예컨대 위키피디아 등이 이러한 학습용 데이터에 포함될 수 있다. 학습용 데이터의 분야는 어느 하나로 한정되지 않는다. 물론, 학습용 데이터가 특정 분야로 한정되는 것이 배제되는 것은 아니다.
이러한 학습용 데이터는 다양한 방식으로 마련될 수 있다. 예컨대 다량의 코퍼스는, 코퍼스를 정제해서 제공하는 웹사이트로부터 무료 또는 유료로 획득 가능하다.
이렇게 획득된 학습용 데이터를 이용해서 베이스부(121)에 대한 사전 학습이 수행된다. 이러한 사전 학습에는 2개의 과정이 포함될 수 있으며, 다만 포함되는 과정의 개수 및 종류가 이에 한정되는 것은 아니다.
그 중 1개는 마스크된 언어 모델(masked language model, MLM)이다. 마스크된 언어 모델에 대해 살펴보면, 학습용 입력 데이터 중 일부가 마스킹되어서 베이스부(121)에 입력된다. 그러면, 베이스부(121)는 이렇게 마스킹된 부분을 추론하여서 출력한다. 출력된 결과와 정답 간에 차이가 줄어들도록 베이스부(121)가 학습된다. 도 22에서 출력된 결과는 B이고, 정답 역시 B임을 알 수 있다. 여기서, 학습 방식은 이미 알려진 지도 학습에 따른 것이므로, 이에 관한 자세한 설명은 생략하기로 한다.
사전 학습의 과정 중 나머지 1개는 다음 문장 예측(next sentence prediction, NSP)이다.
도 23은 전술한 베이스부(121)에 대한 사전 학습 과정 중 나머지인 다음 문장 예측을 예시한다.
도 23을 참조하면, 마찬가지로 학습용 데이터가 마련된다. 이 역시 앞서 살펴보면 다량의 코퍼스이다.
이렇게 마련된 학습용 데이터를 이용해서, 다음 문장 예측에 기초한 사전 학습이 수행된다. 보다 구체적으로 살펴보면, 학습용 입력 데이터 중 앞뒤 순서를 가지면서 서로 인접해 있는 문장 2개가 베이스부(121)에 입력된다. 그러면, 베이스부(121)는 이렇게 입력된 2개의 문장이 서로 간에 붙어있으면서 앞뒤 순서를 갖는지를 추론해서 출력한다. 베이스부(121)는, 이렇게 추론될 결과와 정답 간의 차이가 줄어들도록 학습된다. 도 22에서 문장 A 바로 다음에 오는 문장은 문장 B인 것으로 예측되어서 출력되었고, 정답 역시 문장 A 바로 다음의 문장은 문장 B인 것으로 도시되어 있다.
한편, 앞서 살펴본 마스크된 언어 모델과 다음 문장 예측은 순차적으로 수행되거나 또는 병렬적으로 수행될 수 있다. 아울러, 이러한 마스크된 언어 모델과 다음 문장 예측 각각은 BERT에 대해 공지된 기술과 동일하므로, 이에 관한 자세한 설명은 생략하기로 한다.
다음으로, 특화부(122)에 대한 학습 과정(fine tuning)에 대해 살펴보기로 한다.
도 23은 특화부(122)에 대한 학습 과정을 예시적으로 보여준다.
도 23을 참조하면, 상기 사전 학습이 완료된 베이스부(121)가 마련된다. 아울러 아직 학습이 수행되지 않은 상태의 특화부(122)가 베이스부(121)의 출력단에 연결된다.
다음으로, 학습용 데이터가 마련된다. 학습용 데이터는 학습용 입력 데이터와 학습용 정답 데이터로 구분된다. 이 중, 학습용 입력 데이터는 복수 개의 단위 채팅 메시지를 포함한다. 학습용 정답 데이터는, 복수 개의 단위 채팅 메시지 각각이 다루는 토픽의 종류를 포함한다.
이러한 학습용 데이터는 순환 신경망에서 학습용 데이터가 마련되는 것과 동일한 방식으로 마련될 수 있다. 따라서, 이 부분에 대한 설명은 앞서 설명된 부분을 원용하기로 한다.
다음으로, 학습용 데이터 중 입력 데이터가 베이스부(121)에 입력된다. 베이스부(121)는 이러한 입력 데이터를 해석해서 1차 결과값을 출력한다. 특화부(122)는 베이스부(121)로부터 전술한 1차 결과값을 전달받아서 2차 결과값을 출력한다.
2차 결과값은 소프트맥스부를 거치게 된다. 소프트맥스부를 거친 결과, 단위 채팅 메시지 cn이 토픽 1 내지 p(단, p는 자연수) 중 어떤 토픽을 다루는지 여부가 확률의 값으로써 출력된다.
도 24는 일 구현예에 따라 BERT 기반의 언어 모델에 대한 세부 조정(fine-tuning) 학습을 수행할 때의 데이터 흐름을 예시적으로 예시한다.
도 24를 참조하면, 단위 채팅 메시지 cn에 대해 가장 높은 확률값을 갖는 토픽은 토픽 2이다.
다음으로, 단위 채팅 메시지 cn에 대해 추론된 출력 데이터와 학습용 정답 데이터가 서로 비교된다. 도 24를 참조하면, 학습용 입력 데이터 cn에 대한 출력 데이터는 토픽 2인 반면 학습용 정답 데이터는 토픽 1이다.
cn에 대해 추론된 출력 데이터와 학습용 정답 데이터 간의 차이, 즉 오류가 오류 역전파(backpropagation) 방식에 의해 특화부(122)에 전달된다. 이로써, 그 오류가 최소화될 수 있도록 특화부(122)에 대한 학습이 수행된다.
전술한 학습은 복수 개의 학습용 데이터 각각에 대해 수행되며 소정의 기준이 만족될 때까지 수행될 수 있다.
다시 도 3을 참조하여, 메이저-마이너 토픽 분류부(125)에 대해 살펴보자.
토픽 추출부(120)에 의해 추출된 토픽의 개수가 복수일 때, 메이저-마이너 토픽 분류부(125)는 추출된 토픽 중 일부를 메이저 토픽으로, 그리고 나머지 토픽을 마이너 토픽으로 분류할 수 있다.
토픽 추출부(120)에 의해 추출된 토픽이 하나일 때는 부모 채팅방에서 논의되는 주제가 하나의 공통된 주제라는 것을 의미한다. 따라서, 추출된 토픽을 메이저 토픽과 마이너 토픽으로 분류할 필요가 없다. 대안적으로, 추출된 토픽이 하나일 때는 상기 추출된 토픽을 메이저 토픽으로 분류할 수도 있다.
하지만, 추출된 토픽이 복수개인 경우에는 부모 채팅방에서 사용자들이 복수의 주제에 대해 논의한다는 것을 의미한다. 따라서, 그 중 어떤 주제가 주로 논의되는 주제인지가, 확인될 필요가 있다. 따라서, 메이저-마이너 토픽 분류부(125)는, 추출된 토픽을 주로 논의되는 주제에 대응되는 토픽인 메이저 토픽과 나머지 주제에 대응되는 토픽인 마이너 토픽으로 분류한다.
일 예로, 메이저-마이너 토픽 분류부(125)는 추출된 토픽의 개수가 2개일 때, 추출된 2개의 토픽 중 하나를 메이저 토픽으로 분류하고 다른 하나를 마이너 토픽으로 분류할 수 있다.
또 다른 예로, 메이저-마이너 토픽 분류부(125)는 추출된 토픽의 개수가 3개 이상일 때, 추출된 3개 이상의 토픽 중 하나를 메이저 토픽으로 분류하고 나머지 2개 이상의 토픽을 마이너 토픽으로 분류할 수 있다.
한편, 작업 수행부(180)에 대해 살펴보자. 작업 수행부(180)는 메이저-마이너 토픽 분류부(125)에서 분류된 마이너 토픽 중 하나의 토픽인 제1 마이너 토픽에 대응되는 메시지(이마, '메시지'는 채팅 메시지를 의미하는 것으로 한다)들이 표시될 신규 채팅방인 자식 채팅방을 생성할 수 있다. 물론, 자식 채팅방에서 2개 이상의 마이너 토픽에 대응되는 메시지가 표시되는 구현예가, 본 발명의 사상에서 제외되는 것은 아니다.
즉, 작업 수행부(180)는 부모 채팅방에서 논의되는 복수의 주제 중 주로 논의되는 주제가 아닌 나머지 주제 중 어느 하나 또는 그 이상의 주제에 대응되는 메시지를, 부모 채팅방과 별도의 채팅방인 자식 채팅방으로 분리할 수 있다.
작업 수행부(180)가 자식 채팅방을 생성하는 다양한 방식이 있다.
일 구현예에서, 상기 작업 수행부(180)에 의한 자식 채팅방의 생성은, 제1 마이너 토픽에 대응되는 메시지들 및 제1 마이너 토픽에 대응되는 사용자들을 자식 채팅방에 이동시킴으로써 수행된다. 상기 이동 결과, 부모 채팅방에는 제1 마이너 토픽에 대응되는 메시지 및 사용자들이 존재하지 않게 된다. 반면, 자식 채팅방에는 제1 마이너 토픽에 대응되는 메시지 및 사용자들이 존재하게 된다. 물론, 구현예에 따라 메시지만이 자식 채팅방으로 이동되거나 사용자만이 자식 채팅방으로 이동될 수도 있다.
또 다른 구현예에서, 상기 작업 수행부(180)에 의한 자식 채팅방의 생성은, 제1 마이너 토픽에 대응되는 메시지들 및/또는 제1 마이너 토픽에 대응되는 사용자들을 자식 채팅방에 카피함으로써 수행된다. 상기 카피 결과, 부모 채팅방 및 자식 채팅방 모두에 제1 마이너 토픽에 대응되는 메시지 및 사용자들이 존재하게 된다. 물론, 구현예에 따라 메시지만이 자식 채팅방으로 되거나 사용자만이 자식 채팅방으로 카피될 수도 있다.
이처럼 채팅방 관리 서버(100)는 채팅방에 참여한 사용자들이 수동으로 원하는 토픽을 검색하는 대신, 사용자들이 입력한 메시지에서 자동으로 토픽을 추출하고 추출된 토픽을 기초로 채팅방을 효율적으로 관리할 수 있다.
그리고 주로 논의되지 않는 나머지 토픽을 분리된 채팅방에 이동시킴으로써, 채팅방 관리 서버(100)는 채팅방에 참여한 사용자들의 관심도가 높은 주요 토픽과 관련된 메시지만을 채팅방에 유지시킴으로써 채팅방에 다양한 토픽에 대한 메시지가 입력되어서 참여한 사용자들에게 혼란을 일으킬 가능성을 최소화할 수 있다.
예를 들어, 채팅방에 참여한 사용자가 주로 논의되는 토픽에 관심이 있지만 나머지 토픽과 관련된 메시지로 인해 채팅방에 참여하는데 방해를 받는 경우, 채팅방 관리 서버(100)는 나머지 토픽과 관련된 메시지를 별도의 채팅방으로 이동시켜서 사용자가 주로 논의되는 토픽에만 집중할 수 있도록 한다.
반면, 채팅방에 참여한 사용자가 주로 논의되는 토픽이 아닌 나머지 토픽에 관심있는 사용자들끼리 대화하고 싶은 경우, 채팅방 관리 서버(100)는 나머지 토픽과 관련된 메시지를 별도의 채팅방으로 이동시켜, 나머지 토픽에 대해 관심있는 사용자들끼리만 대화를 할 수 있도록 한다.
도 4는 일 구현예에 따라 메시지들로부터 토픽들이 추출되고, 이렇게 추출된 토픽들이 메이저 토픽이나 마이너 토픽으로 분류되는 동작을 개략적으로 예시한다.
도 4를 참조하면, 채팅방 관리 서버(100)의 토픽 추출부(120)는 부모 채팅방에 입력된 메시지(M1, M2, M3, M4, M5, …)들로부터 하나 이상의 토픽(T1, T2, T3, T4, …)을 추출할 수 있다. 한편, 이하의 구현예에서 메시지 및 토픽의 개수가 특정값인 경우를 예로 들어 설명하나 본 개시내용의 구현예에 적용가능한 메시지 및 토픽의 개수에는 제한이 없다.
채팅방 관리 서버(100)의 메이저-마이너 토픽 분류부(125)는 추출된 하나 이상의 토픽(T1, T2, T3, T4, …)에서 토픽(T1)을 메이저 토픽으로 분류하고, 토픽(T2, T3, T4, …)를 마이너 토픽으로 분류할 수 있다.
이하, 채팅방 관리 서버(100)의 동작에 대한 구체적 구현예를 설명한다. 먼저, 채팅방 관리 서버(100)가 토픽 추출부(120)를 통해 메시지로부터 토픽을 추출하는 시점에 대해 설명한다.
일 예로, 채팅방 관리 서버(100)는 토픽 추출부(120)를 통해, 설정된 주기(예컨대, 1초, 10초)마다 부모 채팅방에 입력된 복수의 메시지들로부터 하나 이상의 토픽을 추출할 수 있다. 부모 채팅방의 주제가 주기적으로 변경될 가능성이 높은 경우, 채팅방 관리 서버(100)는 토픽을 추출하는 시점을 미리 설정된 주기에 따라 결정할 수 있다. 전술한 바와 같이, 토픽이 설정된 주기마다 추출되는 경우, 상기 설정된 주기는, 예를 들어, 1초, 10초, 1분, 10분, 1시간, 12시간, 1일, 10일, 20일, 1개월, 3개월, 6개월 또는 1년일 수 있으나, 이에 제한되지 않는다. 상기 설정된 주기는 채팅방에 참여한 사용자의 수, 단위 시간 동안 채팅방에 메시지가 입력되는 빈도, 채팅방에 입력된 메시지의 총 개수 등을 포함하는 인자에 따라 달라질 수 있다.
또 다른 예로, 채팅방 관리 서버(100)는 단위 시간(예컨대, 10초) 동안 부모 채팅방에 메시지가 입력되는 빈도에 따라 토픽을 추출하는 시점을 결정할 수 있다. 예를 들어, 단위 시간 동안 부모 채팅방에 메시지가 입력되는 빈도가 임계 메시지 입력 빈도(예컨대, 20개/분) 이상일 때, 채팅방 관리 서버(100)는 토픽을 추출할 수 있다. 부모 채팅방에 새로운 메시지가 많이 입력되는 경우 부모 채팅방에서 논의되는 주제가 변경될 가능성이 높기 때문이다.
또 다른 예로, 채팅방 관리 서버(100)는 부모 채팅방에 입력된 메시지의 개수를 기초로 토픽을 추출하는 시점을 결정할 수 있다. 이하 이에 대해 도 5를 참조하여 설명한다.
도 5는 일 구현예에 따른 채팅방 관리 서버(100)가 토픽을 추출하는 시점을 결정하는 일 예를 예시하는 흐름도이다.
도 5를 참조하면, 채팅방 관리 서버(100)의 토픽 추출부(120)는 부모 채팅방에 입력된 메시지들의 개수를 확인할 수 있다(S310).
토픽 추출부(120)는 부모 채팅방에 입력된 메시지들의 개수가 설정된 임계 메시지 개수 이상인지 판단한다(S320).
만약 부모 채팅방에 입력된 메시지들의 개수가 설정된 임계 메시지 개수 이상이면(S320), 토픽 추출부(120)는 부모 채팅방에 입력된 복수의 메시지들로부터 하나 이상의 토픽을 추출할 수 있다(S330).
반면 부모 채팅방에 입력된 메시지들의 개수가 설정된 임계 메시지 개수 미만이면(S320), 토픽 추출부(120)는 부모 채팅방에 입력된 메시지들의 개수가 설정된 임계 메시지 개수 이상인지 판단하는 과정을 반복할 수 있다.
토픽 추출부(120)가 부모 채팅방에 입력된 메시지들의 개수가 설정된 임계 메시지 개수 이상인지 판단하는 이유는, 충분한 양의 메시지들이 존재해야 그 중에서 유의미한 토픽을 추출할 수 있는 가능성이 높아지기 때문이다.
상기 임계 메시지 개수는 채팅방에 참여한 사용자의 수, 연령 등에 따라 달라질 수 있다. 예를 들어, 사용자의 수가 많을수록 임계 메시지 개수는 높을 수 있고, 사용자의 연령이 낮을수록 임계 메시지 개수는 높을 수 있다. 상기 임계 메시지 개수는 100개, 150개, 200개, 300개, 400개, 500개, 600개, 700개, 800개, 900개, 1000개, 또는 그 이상일 수 있으나, 이에 제한되지 않는다.
이상에서 채팅방 관리 서버(100)의 토픽 추출부(120)가 토픽을 추출하는 시점을 결정하는 실시예들을 설명하였다.
이하, 채팅방 관리 서버(100)의 토픽 추출부(120)가 토픽을 추출하는 도 15 내지 도 24에서 이미 설명된 구현예 외의 특정 구현예를 설명한다.
예를 들어, 토픽 추출부(120)는 복수의 메시지들을 설정된 예측 모델에 적용하여 토픽을 추출할 수 있다. 상기 예측 모델은 메시지 그룹으로부터 상기 메시지 그룹을 대표하는 토픽을 자동 추출하는 방법을 지칭한다. 이때, 예측 모델은 일 예로 잠재 디리클레 할당(LDA, Latent Dirichlet Allocation) 모델(Blei, DM, Ng, AY, & Jordan, MI, Latent Dirichlet Allocation, The Journal of Machine Learning Research, 3, pp. 993-1022, 2003 참고), 또는 단어 군집화 기반 방법(word clustering-based method)(Noh, J., Lee, S., Extracting and Evaluating Topics by Region, Multimedia Tools and Application, 75 (20), 2016 참고)이다.
또 다른 예로, 토픽 추출부(120)는 복수의 메시지들에 포함된 복수의 키워드들의 빈도에 따라 토픽을 추출할 수 있다. 토픽 추출부(120)는 복수의 메시지들을 구성하는 단어를 분석하면서 키워드들의 빈도를 계산한다. 이때 토픽 추출부(120)는 어미, 조사, 접속어와 같이 독자적인 의미를 가지지 않는 단어는 제외하고 체언만 키워드로 선택한다. 한편, 이러한 체언은 형태소 분석기 등에 의해 추출될 수 있다. 한편, 토픽 추출부(120)는 체언 중에서도 일상적인 단어(예컨대, 인사말)나 사용자를 지칭하는 단어는 키워드에서 제외할 수 있다.
도 6은 일 구현예에 따른 채팅방 관리 서버(100)에 의해 키워드에 따라 토픽을 결정하는 일 예를 예시한다.
도 6을 참조하면, 채팅방 관리 서버(100)의 토픽 추출부(120)는 복수의 메시지들에 포함된 복수의 키워드들 중에서, 빈도가 임계 빈도 이상인 키워드를 토픽으로 추출할 수 있다.
도 6에서, 메시지(M1, M2, M3, M4, M5, …)에 포함된 키워드들의 빈도가 각각 키워드 K1의 경우 38회, 키워드 K2의 경우 20회, 키워드 K3의 경우 19회, 키워드 K4의 경우 10회, 키워드 K5의 경우 4회, 키워드 K6의 경우 3회이고, 임계 빈도가 10회라고 가정한다.
이때, 토픽 추출부(120)는 빈도가 10회 이상인 키워드 K1, 키워드 K2, 키워드 K3, 키워드 K4를 각각 토픽 T1, 토픽 T2, 토픽 T3, 토픽 T4로 추출할 수 있다. 반면 빈도가 10회 미만인 키워드 K5 및 키워드 K6은 토픽으로 추출되지 않는다.
한편, 도 6에서는 임계 빈도 이상인 키워드가 토픽이 된다. 하지만, 채팅방 관리 서버(100)는 키워드를 직접 토픽으로 추출하는 대신, 미리 설정된 후보 토픽들 중에서 추출될 토픽을 키워드를 통해 선택할 수도 있다. 즉, 채팅방 관리 서버(100)는 제한 없이 토픽이 추출될 수 있도록 하지 않고, 미리 설정된 후보 토픽 내에서만 토픽이 추출될 수 있도록 한다. 이는 채팅방에 참여하는 사용자들의 성향이 특정한 범위 내로 정해진 경우에, 사용자들의 성향과 무관한 토픽이 추출되는 것을 방지하기 위함이다.
도 7은 일 구현예에 따른 채팅방 관리 서버(100)에 의해 키워드에 따라 토픽을 결정하는 또 다른 예를 예시한다.
도 7을 참조하면, 채팅방 관리 서버(100)의 토픽 추출부(120)는 설정된 후보 토픽 집합에 포함된 복수의 후보 토픽들 중에서, 빈도가 임계 빈도 이상인 키워드에 대응되는 후보 토픽을 토픽으로 추출할 수 있다.
이러한 후보 토픽들의 정보는 설정된 사전 데이터베이스에 저장될 수 있다. 한편, 후보 토픽들의 정보는 관리자에 의해 수동적으로 입력될 수도 있고 웹 크롤링을 통해 인터넷 상에서 자동으로 추출될 수도 있다.
도 7에서, 메시지(M1, M2, M3, M4, M5, …)에 포함된 키워드들의 빈도가 각각 키워드 K1의 경우 38회, 키워드 K2의 경우 20회, 키워드 K3의 경우 19회, 키워드 K4의 경우 10회, 키워드 K5의 경우 4회, 키워드 K6의 경우 3회이고, 임계 빈도가 10회라고 가정한다.
그리고 후보 토픽 집합에 포함된 8개의 후보 토픽 T1, T2, T3, T4, T5, T6, T7, 및 T8에 대해, 후보 토픽 T1은 키워드 K1에 대응하고, 후보 토픽 T2는 키워드 K2에 대응하고, 후보 토픽 T3은 키워드 K4에 대응하고, 후보 토픽 T4는 키워드 5에 대응한다고 가정한다.
이때, 토픽 추출부(120)는 빈도가 10회 이상인 키워드 K1, 키워드 K2, 키워드 K3, 키워드 K4 중 어느 하나에 대응되는 후보 토픽 T1, 후보 토픽 T2, 및 후보 토픽 T4를 토픽으로 추출할 수 있다.
반면, 키워드 K5에 대응되는 후보 토픽 T4는, 키워드 K5의 빈도가 임계 빈도 미만이므로 토픽으로 추출되지 않는다. 그리고 나머지 후보 토픽 T5, T6, T7, 및 T8은 대응되는 키워드가 추출되지 않았으므로 역시 토픽으로 추출되지 않는다.
이때, 후보 토픽과 키워드가 대응되는지 여부는 다양한 방식으로 결정될 수 있다. 일 예로 후보 토픽에 대한 태깅(tagging) 정보(예컨대, 해시태그)에 키워드가 포함되어 있을 경우, 토픽 추출부(120)는 후보 토픽이 키워드에 대응된다고 판단할 수 있다. 다른 예로 후보 토픽에 키워드 또는 키워드의 유사어가 포함되어 있을 경우, 토픽 추출부(120)는 후보 토픽이 키워드에 대응된다고 판단할 수 있다.
본 구현예들에서, 후보 토픽의 개수가 8개인 경우를 예를 들어 설명하였으나 후보 토픽의 개수 및 키워드에 대응되는 후보 토픽의 개수에는 제한이 없다.
이상에서, 토픽 추출부(120)가 하나 이상의 토픽을 추출하는 동작에 대해 설명하였다.
이하, 토픽 추출부(120)에 의해 추출된 토픽의 개수가 복수일 때, 추출된 복수의 토픽들을, 채팅방 관리 서버(100)의 메이저-마이너 토픽 분류부(125)가 메이저 토픽과 마이너 토픽으로 분류하는 동작에 대해 설명한다.
일 예로, 메이저-마이너 토픽 분류부(125)는 복수의 토픽들 중에서 하나를 랜덤하게 선택하여, 선택된 토픽을 메이저 토픽으로 분류할 수 있다.
다른 예로, 메이저-마이너 토픽 분류부(125)는 복수의 토픽들 중에서 다른 토픽들의 상위 개념이 되는 토픽이 존재할 때, 상위 개념이 되는 토픽을 메이저 토픽으로 분류할 수 있다.
이때, 특정 토픽이 다른 토픽의 상위 개념이 되는 토픽인지 여부는 각 토픽 간의 상하위 관계를 지시하는 데이터베이스를 기초로 결정될 수 있다. 예를 들어 '동물'이 '개', '말', '소'의 상위 개념이라는 정보가 데이터베이스에 저장되어 있다면, 토픽이 '동물', '개', '말', '소'일 때 '동물'이 메이저 토픽으로 결정될 수 있다.
또 다른 예로, 메이저-마이너 토픽 분류부(125)는 추출된 복수의 토픽들을 상기 복수의 토픽들 각각에 대응되는 메시지의 수에 기초하여 메이저 토픽이나 마이너 토픽으로 분류할 수 있다. 이하 도 8에서 이에 대해 자세히 설명한다.
도 8은 일 구현예에 따른 채팅방 관리 서버에 의해 메이저 토픽 및 마이너 토픽으로 분류하는 과정의 일 예를 예시한다.
도 8에서, 메시지(M1, M2, M3, M4, M5, …) 중에서 각각 토픽 T1에 대응되는 메시지의 수가 25개, 토픽 T2에 대응되는 메시지의 수가 15개, 토픽 T3에 대응되는 메시지의 수가 12개, 토픽 T4에 대응되는 메시지의 수가 7개라고 가정한다.
이때, 메이저-마이너 토픽 분류부(125)는 토픽 T1, T2, T3, 및 T4 중에서 대응되는 메시지의 수가 25개로 가장 많은 토픽인 토픽 T1을 메이저 토픽으로 분류하고, 나머지 토픽 T2, T3, 및 T4를 마이너 토픽으로 분류한다.
또 다른 예로, 메이저-마이너 토픽 분류부(125)는 복수의 토픽들 각각에 대응되는 사용자의 수를 기초로, 복수의 토픽들 중 일부를 메이저 토픽으로 분류할 수 있다. 상기 대응되는 사용자는 토픽과 관련된 메시지 또는 키워드를 입력한 사용자이다.
예를 들어, 메시지(M1, M2, M3, M4, M5, …) 중에서 토픽 T1에 대응되는 사용자의 수가 7명, 토픽 T2에 대응되는 사용자의 수가 5명, 토픽 T3에 대응되는 사용자의 수가 3명, 토픽 T4에 대응되는 사용자의 수가 3명이라고 가정한다.
이때, 메이저-마이너 토픽 분류부(125)는 토픽 T1, T2, T3, 및 T4 중에서 대응되는 사용자의 수가 가장 많은 토픽인 토픽 T1을 메이저 토픽으로 분류하고, 나머지 토픽 T2, T3, 및 T4를 마이너 토픽으로 분류할 수 있다.
이상에서 메이저-마이너 토픽 분류부(125)가, 복수 개의 토픽을 메이저 토픽과 마이너 토픽으로 분류하는 구현예들에 대해 설명하였다.
이하, 채팅방 관리 서버(100)의 작업 수행부(180)가 마이너 토픽 중에서 분리될 제1 마이너 토픽을 결정하고 제1 마이너 토픽에 대응되는 메시지들을 포함하는 신규 채팅방인 자식 채팅방을 생성하는 구현예에 대해 설명한다.
일 예로, 작업 수행부(180)는 마이너 토픽에서 대응되는 메시지의 수가 가장 적은 마이너 토픽을 제1 마이너 토픽으로 결정할 수 있다. 예를 들어 도 8에서는 마이너 토픽인 토픽 T2, 토픽 T3, 토픽 T4 중에서 토픽 T4에 대응되는 메시지의 수가 가장 적으므로 토픽 T4가 제1 마이너 토픽이 될 수 있다.
다른 예로, 작업 수행부(180)는 메이저 토픽과 각 마이너 토픽과의 관련도를 기초로 제1 마이너 토픽을 결정할 수 있다. 이하 도 9를 참조하여 이에 대해 자세히 설명한다.
도 9는 일 구현예에 따른 채팅방 관리 서버(100)에 의해 관련도를 기초로 제1 마이너 토픽을 결정하는 과정의 일 예를 예시한다.
도 9에서, 토픽 T1, T2, T3, 및 T4 중 토픽 T1이 메이저 토픽이고 토픽 T2, T3, 및 T4가 마이너 토픽이라고 가정한다. 그리고 마이너 토픽 T2, T3, 및 T4에 대해서, 토픽 T2와 메이저 토픽 T1과의 관련도가 0.8, 토픽 T3과 메이저 토픽 T1과의 관련도가 0.7, 및 토픽 T4와 메이저 토픽 T1과의 관련도가 0.4라고 가정한다.
이때, 작업 수행부(180)는 메이저 토픽과의 관련도가 가장 낮은 마이너 토픽인 토픽 T4를 제1 마이너 토픽으로 결정하고, 토픽 T4에 대응되는 메시지들을 자식 채팅방에 이동시키거나 카피한다.
한편, 작업 수행부(180)는 메이저 토픽과의 관련도가 설정된 임계 관련도 이하인 마이너 토픽 중에서 하나를 제1 마이너 토픽으로 결정할 수도 있다. 일 예로 임계 관련도가 0.5일 때 작업 수행부(180)는 관련도가 0.5 이하인 토픽 T4를 제1 마이너 토픽으로 결정할 수 있다. 다른 예로 임계 관련도가 0.7일 때 작업 수행부(180)는 관련도가 0.7 이하인 토픽 T3 및 토픽 T4 중 하나를 제1 마이너 토픽으로 결정할 수 있다.
이하, 메이저 토픽과 마이너 토픽과의 관련도를 계산하는 방법에 대해 설명한다.
일 예로, 메이저 토픽과 마이너 토픽과의 관련도는 채팅방에 포함된 복수의 메시지 중에서, 메이저 토픽과 마이너 토픽에 모두 대응되는 메시지의 개수를 기초로 결정될 수 있다. 전체 메시지 중에서 메이저 토픽과 마이너 토픽에 모두 대응되는 메시지의 비율이 높을수록 메이저 토픽과 마이너 토픽과의 관련도의 값도 역시 높아진다.
예를 들어, 메이저 토픽에 대응되는 메시지의 개수가 30개이고 메이저 토픽과 마이너 토픽에 모두 대응되는 메시지가 15개일 때, 관련도는 15/30 = 0.5로 계산될 수 있다.
또 다른 예로, 메이저 토픽과 마이너 토픽과의 관련도는 채팅방 관리 서버(100)의 내부 또는 외부의 데이터베이스에 저장된 토픽 간 관련도 정보를 기초로 결정될 수 있다.
이때, 토픽 간 관련도 정보는 다양한 자료 구조(예컨대, 표, 트리, 그래프)의 형태로 저장될 수 있다. 이하, 도 10에서는 토픽 간 관련도 정보가 그래프 형태인 경우를 예로 들어 설명한다.
도 10은 일 구현예에 따른 채팅방 관리 서버(100)에 의해 관련도를 기초로 제1 마이너 토픽을 결정하는 과정의 또 다른 예를 예시한다.
도 10에서, 토픽 T1, T2, T3, 및 T4 중 토픽 T1이 메이저 토픽이고 토픽 T2, T3, 및 T4가 마이너 토픽이라고 가정한다.
토픽 간 관련도 정보는 각 토픽을 노드(node)로 하고, 토픽 간의 관련 여부를 에지(edge)로 하는 가중치 그래프일 수 있다. 이때, 각 에지의 가중치 값은 연결된 두 토픽 간의 관련도를 지시한다.
이때, 두 토픽 간의 관련도는 두 토픽 사이의 최단 경로에 포함된 관련도 값들의 곱으로 결정될 수 있다. 상기 최단 경로는 가장 적은 수의 에지를 포함하는 경로를 지칭할 수 있다.
도 10에서, 토픽 T1과 토픽 T2는 서로 연결되며 연결된 에지의 가중치가 0.8이므로 토픽 T1과 토픽 T2 사이의 관련도는 0.8로 결정된다. 또한, 토픽 T1과 토픽 T3은 서로 연결되며 연결된 에지의 가중치가 0.7이므로 토픽 T1과 토픽 T3 사이의 관련도는 0.7로 결정된다. 또한, 토픽 T1과 토픽 T4는 직접 연결되지 않고 대신 토픽 T2를 경유하여 연결되는데, 토픽 T1과 토픽 T2 사이의 관련도가 0.8이고 토픽 T2와 토픽 T4 사이의 관련도가 0.5이므로, 토픽 T1과 토픽 T4 사이의 관련도는 두 값의 곱인 0.8 * 0.5 = 0.4일 수 있다.
이때, 작업 수행부(180)는 도 9에서 전술한 기준에 따라 마이너 토픽인 토픽 T2, T3, 및 T4 중 하나를 제1 마이너 토픽으로 결정하고, 제1 마이너 토픽에 대응되는 메시지들을 자식 채팅방에 이동시키거나 카피한다.
본 개시내용에 따른 채팅방 관리 서버(100)는 자식 채팅방을 생성한 후 부모 채팅방에 존재하는 메시지에 대해 토픽 추출, 토픽 결정, 및 채팅방 생성의 일련의 단계를 반복함으로써 제3 채팅방을 추가로 생성할 수 있다.
제1 마이너 토픽에 대응되는 메시지들을 자식 채팅방에 이동시킴으로써 자식 채팅방이 생성되는 구현예에서, 토픽 추출, 토픽 결정 및 채팅방 생성의 일련의 단계를 반복함으로써 제3, 제4, 제5 채팅방 등이 순차적으로 생성될 수 있다.
자식 채팅방이 제1 마이너 토픽에 대응되는 메시지들을 자식 채팅방에 카피함으로써 수행되는 구현예에서, 자식 채팅방에 카피된 제1 마이너 토픽을 제외한 또 다른 마이너 토픽을 새로운 채팅 방에 카피하면서 토픽 추출, 토픽 결정 및 채팅방 생성의 일련의 단계를 반복함으로써 제3 채팅방이 생성될 수 있고, 같은 방식으로 제4, 제5 채팅방 등이 순차적으로 생성될 수 있다.
이상에서는, 채팅방을 관리하는 채팅방 관리 서버(100)에 대해 설명하였다.
도 11은 일 구현예에 따른 단말(200)에 의해 채팅방을 표시하는 일 예를 예시한다.
도 11을 참조하면, 단말(200)은 디스플레이부(240)에 채팅방을 표시할 수 있다. 이때, 채팅방에 참여한 사용자를 나타내는 정보(예컨대, 사용자의 이름 또는 닉네임)가 디스플레이부(240)에 표시될 수 있다. 그리고, 사용자들이 채팅방에 입력한 메시지 역시 디스플레이부(240)에 표시될 수 있다.
한편, 단말(200)은 채팅방에 입력된 메시지들을 기초로 채팅방 관리 서버(100)가 하나 이상의 토픽을 추출한다는 정보 역시 디스플레이부(240)에 표시할 수 있다. 이를 통해, 단말(200)을 사용하는 사용자는 별도의 입력 없이 채팅방의 메시지로부터 자동으로 토픽이 추출된다는 것을 알 수 있다.
도 12는 일 구현예에 따른 단말(200)에 의해 메이저 토픽 및 마이너 토픽을 표시하는 일 예를 예시한다.
도 12를 참조하면, 단말(200)은 디스플레이부(240)에 채팅방에 대한 메이저 토픽과 마이너 토픽에 대한 정보를 표시할 수 있다. 단말(200)은 디스플레이부(240)에 메이저 토픽이 T1이고 마이너 토픽이 T2, T3, 및 T4라는 것을 표시할 수 있다. 이때, 단말(200)은 메이저 토픽과 마이너 토픽에 대한 정보를 통신부(210)를 통해 채팅방 관리 서버(100)로부터 수신할 수 있다.
도 13은 일 구현예에 따른 단말(200)에 의해 제1 마이너 토픽에 대한 채팅방 생성 여부를 표시하는 일 예를 예시한다.
도 13을 참조하면, 단말(200)은 디스플레이부(240)에 마이너 토픽 중 제1 마이너 토픽에 대한 채팅방이 생성되었다는 정보를 표시할 수 있다. 제1 마이너 토픽이 T4일 때, 단말(200)은 제1 마이너 토픽인 T4에 대한 채팅방이 생성되었다는 것을 디스플레이부(240)에 표시하고 또한 사용자가 해당 채팅방에 참여할 지 여부를 선택할 수 있는 창을 디스플레이부(240)에 표시할 수 있다. 이때, 사용자가 해당 채팅방에 참여할 지 여부를 선택할 수 있는 창은 디스플레이부(240)에 표시된 창들 중에서 최상위 레이어에 표시될 수 있다.
도 14는 일 구현예에 따른 채팅방 관리 방법의 흐름도이다. 여기서, 채팅방 관리 방법(1300)은 상기 언급된 구현예에 따른 채팅방 관리 서버(100)에 의해 수행될 수 있으나, 이에 제한되지 않는다.
도 14를 참조하면, 채팅방 관리 방법(1300)은 토픽을 추출하기 위한 토픽 추출 단계(S1310), 메이저 및 마이너 토픽을 분류하기 위한 메이저-마이너 토픽 분류 단계(S1320) 및 자식 채팅방을 생성하기 위한 자식 채팅방 생성 단계(S1330)를 포함할 수 있다.
토픽 추출 단계(S1310)는 복수의 사용자들이 참여한 부모 채팅방에서 복수의 사용자들이 단말을 통해 입력한 복수의 메시지들로부터 하나 이상의 토픽을 추출할 수 있다.
토픽 추출 단계(S1310)에서, 토픽은 복수의 메시지들의 개수가 설정된 임계 메시지 개수 이상일 때 추출될 수 있다.
예를 들어, 토픽 추출 단계(S1310)는 복수의 메시지들에 포함된 복수의 키워드들의 빈도에 따라 토픽을 추출할 수 있다. 일 예로, 토픽 추출 동작(S1310)에서, 복수의 키워드들 중에서 복수의 메시지들에 포함된 임계 빈도 이상의 빈도를 갖는 키워드가 토픽으로 추출될 수 있다. 또 다른 예로, 토픽 추출 단계(S1310)에서, 설정된 후보 토픽 집합에 포함된 복수의 후보 토픽들 중에서 복수의 키워드들 중 임계 빈도 이상인 빈도를 갖는 키워드에 대응되는 후보 토픽이 토픽으로 추출될 수 있다.
메이저-마이너 토픽 분류 단계(S1320)에서, 토픽 추출 단계(S1310)에서 추출된 토픽의 개수가 복수일 때, 추출된 토픽들은 메이저 토픽이나 하나 이상의 마이너 토픽으로 분류될 수 있다.
예를 들어, 메이저-마이너 토픽 분류 단계(S1320)에서, 복수의 토픽들 중에서 대응되는 메시지의 수가 가장 많은 토픽이 메이저 토픽으로 분류될 수 있다.
자식 채팅방 생성 단계(S1330)는 메이저-마이너 토픽 분류 단계(S1320)에서 분류된 마이너 토픽 중 제1 마이너 토픽에 대응되는 메시지들을 포함하는 신규 채팅방인 자식 채팅방을 생성할 수 있다.
다시 도 3을 참조하여, 채팅 활성도 산출부(130)에 대해 살펴보자.
채팅 활성도 산출부(130)는 특정 채팅방에서의 채팅 활성도를 전술한 단위 채팅 메시지에 기반해서 산출하도록 구현된다.
이를 위해 채팅 활성도 산출부(130)는 토픽 추출부(120)로부터, 특정 채팅방에서 소정의 시간 동안 어떤 종류의 토픽이 다뤄진 횟수를 나타내는 아래와 같은 정보를 수신한다. 참고로, 아래의 정보는 토픽 추출부(120)에 관한 상기 부분에서 이미 설명된 바 있다.
U t1 t 2 t 3 t p-1 t p
1 0 0 0 5
여기서 전술한 정보는 토픽 추출부(120)에 의해 소정의 시간에 대해 추출된 값이다. 따라서, 이러한 정보는 소정의 시간을 단위로 해서 갱신될 수 있다. 값이 갱신될 때마다, 상기 정보는 토픽 추출부(120)로부터 채팅 활성도 추론부(150)에게 전달된다. 그러면, 채팅 활성도 추론부(150)는 각 토픽에 대한 채팅 활성도를 이러한 갱신된 값에 기초해서 갱신할 수 있다. 갱신 방법으로서, 첫째, 현재의 값이 갱신된 값으로 대체되거나, 둘째, 현재의 값이 현재의 값과 갱신된 값 간의 평균값으로 대체된다.
다음으로, 관련도 산출부(140)에 대해 살펴보기로 한다. 관련도 산출부(140)는 특정 채팅방에서 다뤄지는 토픽들이 서로 간에 갖는 관련도를 산출하도록 구현된다.
관련도는 다양한 방식으로 산출될 수 있다. 예를 들어, 전술한 단위 채팅 메시지에서 2개 이상의 토픽이 추출되었다면, 이들 2개의 이상의 토픽은 서로 간에 관련도를 갖는 것으로 볼 수 있다. 이를 위해, 관련도 산출부(140)는 토픽 추출부(120)로부터 전달받은 전술한 정보로부터, 각 단위 채팅 메시지에서 함께 추출된 토픽의 종류 및 횟수를 획득한 뒤, 이러한 정보들을 기초로 관련도를 산출할 수 있다. 예를 들어, 관련도 산출부(140)가 토픽 추출부(120)로부터 다음과 같은 정보를 전달받았다고 가정해보자.
U t1 t 2 t 3 t p-1 t p
1 2 1 0 0 3
위의 정보에 기초하면, 사용자 ID가 1인 사용자는 한 개의 단위 채팅 메시지에서 토픽 1을 2번, 토픽 2를 1번 그리고 토픽 p를 1번 언급하였다. 그렇다면, 토픽 1과 2 간의 관련도는 이들 토픽이 언급된 횟수 중 작은 수인 1이 된다. 같은 방식으로, 토픽 1과 3 간의 관련도는 1이 되며, 토픽 2와 3 간의 관련도는 2가 된다. 반면, 토픽 4에 대한 채팅 활성도는 0이므로, 토픽 1과 4 간의 관련도는 0이고, 이는 토픽 2와 4, 토픽 3과 4 간에서도 마찬가지로 0이다. 즉, 두 개의 토픽 간 관련도는 두 개의 토픽 각각의 채팅 활성도 중 상대적으로 작은 값이 될 수 있으며, 다만 이에 한정되는 것은 아니다.
다음으로, 채팅 활성도 추론부(150)에 대해 살펴보자. 우선, 부모 채팅방에서 복수 개의 토픽에 관한 채팅이 이루어지고 있다고 가정하자. 아울러, 이러한 부모 채팅방으로부터 파생되어서 생성될 수 있지만 아직 생성되지는 않은 자식 채팅방을 전제하자. 아울러, 이러한 자식 채팅방에서는 복수 개의 토픽 중 적어도 한 개의 토픽이 다뤄질 수 있다고 전제하자.
채팅 활성도 추론부(150)는 상기 적어도 한 개의 토픽을 다루는 상기 자식 채팅방의 생성을 전제로, 이러한 적어도 한 개의 토픽에 대한 자식 채팅방에서의 채팅 활성도를 추론하도록 구현된다. 이렇게 추론된 채팅 활성도는, 후술하겠지만 작업 수행부(180)에서 자식 채팅방을 생성할지 여부를 결정하는 근거가 될 수 있다. 추론된 결과에 대한 예는 다음과 같다.
t1 t 2 t 3 t p-1 t p
3 0 0 0 0
즉, 자식 채팅방에서는 토픽 1만이 다뤄질 예정이므로, 토픽 1에 대해 추론된 채팅 활성도는 0이 아닌 값이며, 위의 예시에서는 3이다. 반면, 나머지 토픽인 토픽 2 내지 p에 대해 추론된 채팅 활성도의 값은 0이거나 또는 0에 가까운 값일 수 있다.
채팅 활성도 추론부(150)가 상기 추론을 할 때에는 다음과 같은 다양한 파라미터들 중 어느 하나 또는 적어도 두 개가 조합되어서 고려될 수 있으며, 또는 다음에서 언급되지 않은 파라미터가 고려될 수도 있다.
첫째, 부모 채팅방에서 다뤄지는 복수 개의 토픽 중 자식 채팅방에서 다뤄질 적어도 한 개의 토픽의 종류.
둘째, 부모 채팅방에서 다뤄지는 복수 개의 토픽의 종류.
셋째, 부모 채팅방에서 다뤄지는 복수 개의 토픽 각각에 대해 산출된 채팅 활성도.
넷째, 부모 채팅방에서 다뤄지는 복수 개의 토픽이 서로 간에 갖는 관련도.
예를 들어, 부모 채팅방에서 토픽 1 내지 5가 다뤄지고 있고, 각각의 채팅 활성도는 {1,4,2,4,5,…., 0}이며, 각 토픽 간의 관련도 역시 특정값으로 주어져 있고, 자식 채팅방에서는 토픽 3만이 다뤄질 예정이라고 하자.
그러면, 채팅 활성도 추론부(150)에는 입력 데이터로서 다음과 같은 정보가 입력된다.
{0,0,1,0,0,….,0}: 자식 채팅방에서 다뤄질 토픽의 종류 (3번째 파라미터의 값만이 1)
{1,4,2,4,5,0,0,0,….,0}: 부모 채팅방에서 다뤄진 토픽의 종류 및 각 토픽 별 채팅 활성도
{0,1,0,0,0,0,0,0,….,0}: 부모 채팅방에서 다뤄지는 토픽들 간의 관련도
이러한 입력 데이터를 기초로, 채팅 활성도 추론부(150)는 자식 채팅방에서의 토픽 3에 대한 채팅 활성도를 추론할 수 있다. 토픽 3에 대해 추론된 채팅 활성도는 예컨대 다음과 같은 형태일 수 있다.
{0,0,3,0,0,….,0} (3번째 파라미터의 값은 3이며, 이는 토픽 3에 대해 추론된 자식 채팅방에서의 채팅 활성도를 나타냄)
그렇다면, 이러한 파라미터 각각이 자식 채팅방에서의 채팅 활성도 추론에 영향을 미치는 근거에 대해 살펴보기로 하자.
먼저, 첫째 파라미터, 즉 부모 채팅방에서 다뤄진 복수 개의 토픽 중 자식 채팅방에서 다뤄질 토픽의 종류에 대해 살펴보자.
복수 개의 토픽 중에는 사용자들이 관심을 보이는 토픽과 그렇지 않은 토픽이 존재한다. 물론, 관심의 정도는 시기나 장소에 따라 달라질 수 있다. 그러나, 오랜 기간에 걸쳐서 다양한 채팅방에서의 토픽에 관한 관심 정도를 평균 내어 보면, 통상적으로 관심이 상대적으로 많이 가는 토픽과 상대적으로 적게 가는 토픽이 존재한다. 이를 기초로 살펴보면, 자식 채팅방에서 다뤄지는 토픽의 종류는 해당 자식 채팅방에서의 채팅 활성도에 영향을 끼칠 수 있다.
다음으로는, 첫째 파라미터를 제외한 나머지 파라미터들을 살펴보기로 하자. 이들 나머지 파라미터들은 모두 부모 채팅방에 관한 것이다. 부모 채팅방에 관한 파라미터들은 자식 채팅방에서 다뤄질 특정 토픽의 채팅 활성도를 추론하는데 영향을 끼친다. 이는 자식 채팅방이 부모 채팅방으로부터 파생된다는 사실로부터 기인한다. 즉, 자식 채팅방에서 다뤄질 토픽 1은, 사실 부모 채팅방에서 다른 토픽들과 함께 다뤄졌던 토픽이다.
만약 이러한 토픽 1이 부모 채팅방에서 다른 토픽들과 상대적으로 밀접하게 연관되어서 다뤄지고 있었는데 이후에 자식 채팅방에서 토픽 1만이 따로 다뤄지게 된다면, 이러한 자식 채팅방에서는 토픽 1에 관한 채팅 활성도가 부모 채팅방에서의 토픽 1에 관한 채팅 활성도에 비해 낮아질 수 있다.
반면, 토픽 1이 부모 채팅방에서 다른 토픽들과 상대적으로 밀접하게 연관되지 않고 독자적으로 다뤄지고 있었는데 이후에 자식 채팅방에서 토픽 1만이 따로 다뤄지게 된다면, 이러한 자식 채팅방에서는 토픽 1에 관한 채팅 활성도는 부모 채팅방에서의 토픽 1에 관한 채팅 활성도와 유사할 수 있다. 즉, 부모 채팅방에서 다뤄지는 토픽의 종류, 각 토픽에 대한 채팅 활성도나 이들 토픽이 서로 간에 갖는 관련도는, 자식 채팅방에서의 특정 토픽에 관한 채팅 활성도에 영향을 끼칠 수 있다.
도 25는 일 구현예에 따라 학습이 완료되는 채팅 활성도 추론부에서 데이터가 처리될 때의 흐름을 예시적으로 예시한다.
도 25를 참조하면, 전술한 파라미터들은 입력 데이터로서 채팅 활성도 추론부(150)로 입력되고, 입력 데이터의 입력에 대한 반응으로 채팅방에서의 채팅 활성도는 채팅 활성도 추론부(150)로부터의 출력 데이터로서 출력된다.
채팅 활성도 추론부(160)는 추론 모델(161)을 포함한다. 추론 모델(161)은 입력 데이터로서 전술한 파라미터들을 수신할 수 있고, 그 결과로서 자식 채팅방에서의 채팅 활성도를 출력 데이터로서 출력할 수 있다.
이하에서는 이러한 추론 모델(161)의 구현예에 대해 살펴보기로 한다.
첫 번째 구현예로서, 추론 모델(161)은 인공 신경망(artificial neural network, ANN)을 기반으로 학습될 수 있다. 이러한 인공 신경망은, 입력층과 출력층 사이에 히든층(hidden layer)이 복수 개가 배치되어 있는 다층 신경망(multi-layer neural network, MLNN)일 수 있다. 다층 신경망은 도 25에 그 개념도가 예시적으로 도시되어 있다. 다층 신경망 그 자체는 공지된 기술이므로, 이에 관한 자세한 설명은 생략하기로 한다.
다음으로, 다층 신경망 방식으로 구현된 추론 모델(161)의 동작 및 학습 과정에 대해 살펴보기로 한다.
우선, 추론 모델(161)에 대한 학습이 완료된 것을 전제로, 그 동작에 대해 살펴보자. 학습이 완료된 추론 모델(161)에는 입력 데이터로서 자식 채팅방에서 다뤄질 토픽의 종류가 입력된다. 그러면, 채팅 활성도 추론부(160)의 추론 모델(161)은 자식 채팅방에서 다뤄질 토픽에 대한 채팅 활성도를 추론해서 출력한다.
이 때, 구현예에 따라, 추론 모델(161)에는 입력 데이터로서, 전술한 바와 같이 부모 채팅방에서의 복수 개의 토픽 각각의 종류, 복수 개의 토픽 각각에 대한 채팅 활성도 및 복수 개의 토픽 간의 관련도 중 적어도 하나가 추가로 입력될 수 있다.
다음으로, 다층 신경망 방법으로 추론 모델(161)을 학습시키는 방법을 살펴보기로 한다.
먼저, 전술한 추론 모델(161)은 지도 학습(supervised-learning) 방식에 따라 학습 장치(도면에는 미도시)에 의해 학습될 수 있다. 아울러, 여기서 학습 장치란 GPU와 같은 프로세서를 포함하며, 다만 이에 한정되는 것은 아니다.
학습 과정에 대해 살펴보기로 한다. 우선, 학습용 데이터가 마련된다. 학습용 데이터는 학습용 입력 데이터와 학습용 정답 데이터로 구분된다. 이 중, 학습용 입력 데이터는 자식 채팅방에서 다뤄질 토픽의 종류, 부모 채팅방에서 다뤄진 복수 개의 토픽의 종류, 부모 채팅방에서 다뤄진 복수 개의 토픽 각각에 대한 채팅 활성도 및 부모 채팅방에서의 복수 개의 토픽이 서로 간에 갖는 관련도 중 적어도 하나를 복수 개씩 포함한다. 학습용 정답 데이터는 전술한 복수 개의 데이터 각각과 짝을 이루는, 자식 채팅방에서의 특정 토픽(들)에 대한 채팅 활성도를 포함한다.
이러한 학습용 데이터는 다양한 방식으로 마련될 수 있다. 예를 들어, 채팅방 서버가 복수 개의 채팅방을 생성시킨다. 아울러, 이러한 복수 개의 채팅방에서 채팅이 수행된다. 채팅 동안, 전술한 토픽 추출부(120)는 이러한 복수 개의 채팅방으로부터, 다뤄지는 토픽의 종류, 각 토픽에 대한 채팅 활성도 및 토픽 간의 관련성을 획득한다.
다음으로, 이러한 복수 개의 채팅방 각각을 부모 채팅방이라고 한다면, 이러한 부모 채팅방과는 별도로 자식 채팅방이 생성된다.
다음으로, 부모 채팅방에서 다뤄지는 복수 개의 토픽에 관한 채팅 메시지 및 이러한 일부의 토픽과 관련된 사용자가 자식 채팅방으로 이동된다. 이후, 자식 채팅방에서 일부의 토픽에 관한 채팅이 진행된다. 그러면, 자식 채팅방에서 다뤄지는 일부의 토픽에 대해 채팅 활성도가 산출된다. 이러한 과정이 반복적으로 수행되면, 학습용 데이터가 마련될 수 있다.
다음으로, 전술한 학습용 데이터를 이용한 학습 과정에 대해 살펴보자.
먼저, 전술한 학습용 데이터 중 학습용 입력 데이터는 추론 모델(161)의 입력단에 입력된다. 그러면 자식 채팅방에서의 각 토픽에 대한 채팅 활성도가 추론 모델(161)의 출력단에서 출력 데이터로서 출력된다.
다음으로, 상기 출력 데이터와 학습용 정답 데이터 간의 차이, 즉 오류가 오류 역전파(backpropagation) 방식에 의해 추론 모델(161)에 전달된다. 그 결과 추론 모델(161)에 포함된 파라미터들, 예컨대 가중치와 바이어스의 값은 이러한 오류가 최소화될 수 있도록 업데이트된다. 오류 역전파 방식 그 자체는 공지된 기술이므로, 이에 관한 상세한 설명은 생략하기로 한다.
이후, 또 다른 학습용 데이터를 이용한 학습이 수행된다.
이러한 학습은 추론 모델(161)의 성능이 소정의 기준을 만족시킬 때까지 수행된다. 소정의 기준은 다양한 방식으로 정해질 수 있다. 예를 들어, 소정의 기준은 교차 검증에 의해 결정될 수 있는데, 이에 관해서는 전술한 바를 원용하기로 한다.
두 번째 구현예에서는, 첫 번째 구현예에서 다뤄진 인공 신경망은 그래픽 기반의 그래프 신경망(graph neural network, GNN)일 수 있다. 이러한 그래프 신경망의 구조는 전술한 다층 신경망과 동일하다. 다만, 두 번째 구현예에서 그래프 신경망의 입력 데이터는 그래프를 포함할 수 있다. 예를 들어, 그래프 중에서, 부모 채팅방에 대응되는 그래프는 복수의 노드 및 상기 복수의 노드를 연결하는 링크를 포함할 수 있다. 상기 복수의 노드 각각은 복수의 토픽 중 하나를 나타낼 수 있다. 상기 복수의 토픽 각각에 대해 산출된 채팅 활성도는 상기 복수의 노드 각각에 할당될 수 있다.
이하에서는, 이러한 그래프 신경망에 대해 보다 자세하게 살펴보기로 한다.
도 26은 다층 신경망의 개략적인 개념 다이어그램이다. 도 27은 그래프 신경망의 개략적인 개념 다이어그램이다. 다만, 도 26는 예시적인 것에 불과하므로, 본 개시내용의 사상이 도 26에 예시된 것으로 한정되는 것은 아니다.
도 26를 참조하면, 그래프 신경망(GNN)의 입력단에는 그래프 형태의 데이터가 입력된다. 도 26에서는 3개의 노드가 3개의 링크로 연결된 그래프가 입력단에 입력되는데, 각 노드와 각 링크에는 소정의 값이 부여되어 있다. 그래프 형태의 데이터가 그래프 신경망의 입력단에 입력된 것에 대응해서, 그래프 신경망의 출력단에서는 소정의 데이터가 출력된다. 이렇게 출력된 데이터는 입력단에 입력된 그래프가 어떤 노드와 링크로 이루어지며, 각 노드와 링크의 값은 얼마인지를 반영한 값이다. 만약, 그래프 신경망의 입력단에 입력된 제1 데이터가 새로이 입력될 제2 데이터와 노드와 링크의 개수가 다르거나, 링크에 의해 노드가 연결된 양상이 다르거나 또는 노드나 링크 각각의 값이 상이하다면, 그래프 신경망의 출력단에서는 제1 데이터가 입력되었을 때와는 상이한 데이터가 제2 데이터가 입력된 것에 대응해서 출력될 수 있다.
이하에서는 이러한 그래프 신경망의 학습 과정에 대해 살펴보기로 한다.
그래프 신경망의 학습 과정은 일반적인 딥러닝에 다른 모델의 학습 과정과 동일하다. 즉, GPU와 같은 하드웨어에 의해 학습 과정은 수행될 수 있다. 또한 학습용 입력 데이터와 그에 대응되는 학습용 정답 데이터가 마련되어서, 이들을 이용해서 학습이 진행되는 점 또한 동일하다. 한 가지 다른 점은, 그래프 신경망의 입력단에는 그래프 그 자체 또는 그래프에 관한 정보가 입력된다는 것이다. 예컨대, 도 27의 경우, 3개의 노드와 이들 노드를 연결하는 3개의 링크로 이루어진 그래프가 그래프 신경망에 입력된다. 이 때 이러한 그래프는 다음과 같은 형태로 수학적으로 표현될 수 있다.
그래프 G = (V, E)
여기서, V는 노드의 집합을 나타내고, E는 각 노드를 잇는 링크의 집합을 나타낸다. 아울러, 각 노드의 값과 링크의 값 또한 위의 수식에 포함되어서 표현될 수 있다.
예를 들어, 도 27에 도시된 그래프 G는 다음과 같이 표현될 수 있다.
G = ({{{1,5,8},{3,5,7}},{{1,5},{1,8},{5,8}, {1,9,4}}})
여기서, {1,5,8}은 3개의 노드의 종류를 나타낸다. 즉, 그래프 G는 노드 ID가 각각 1, 5 및 8인 노드를 포함한다.
{3,5,7}은 3개의 노드 각각의 값을 나타낸다. 즉, ID가 1인 노드는 3, ID가 5인 노드는 5, ID가 8인 노드는 7의 값을 갖는다.
{1,5}, {1,8}, 및 {5,8}은 노드를 연결하는 링크를 나타낸다. 즉, 노드 1과 5가 서로 연결되고, 1과 8이 서로 연결되며, 5와 8이 서로 연결된다.
{1,9,4}는 각 링크의 값을 나타낸다. 즉, 노드 1과 5 간의 링크는 1, 노드 1과 8 간의 링크는 9, 노드 5와 8 간의 링크는 4의 값을 갖는다.
그렇다면, 일 구현예에서 토픽의 종류와 토픽에 대한 채팅 활성도, 그리고 토픽 간 관련도가 그래프 상에서 어떻게 표시되는지에 대해 도 28을 기초로 살펴보기로 하자.
도 28은 일 구현예에 따른 그래프의 노드 및 링크의 일 예를 예시한다. 도 8에서, 그래프는 일 구현예에서 토픽의 종류와 토픽에 대한 채팅 활성도, 그리고 토픽 간 관련도를 나타낼 수 있다.
도 28을 참조하면, 토픽의 종류는 노드의 명칭에 표기된다. 특정 토픽에 대한 채팅 활성도는 해당 토픽에 대한 노드의 값으로서 표현된다. 특정 토픽 간의 관련도는 해당 토픽에 대한 노드를 연결하는 링크의 값으로서 표현된다. 다만, 도 28 및 이에 관한 전술한 설명은 예시적인 것에 불과하므로, 본 발명의 사상이 이에 한정되는 것은 아니다.
다음으로, 채팅 활성도 추론부(160)의 추론 모델(161)이 그래프 신경망에 의해 구현된 일 구현예에 대해 도 29을 참조해서 살펴보기로 한다.
도 29는 일 구현예에 따라 학습이 완료되는 채팅 활성도 추론부에서 그래프가 처리되는 흐름을 예시적으로 예시한다.
도 29를 참조하면, 채팅 활성도 추론부(160)는 추론 모델로서 GNN 모델(161a), 즉 그래프 신경망 모델을 포함한다. 채팅 활성도 추론부(160)의 입력단에 입력 데이터가 입력되고, 이러한 입력 데이터는 GNN 모델(161a)에 전달된다. 그에 대응해서 GNN 모델(161a)은 출력 데이터를 출력하고, 이러한 출력 데이터는 채팅 활성도 추론부(160)의 출력단에서 출력된다.
입력 데이터는 자식 채팅방에서 다뤄질 적어도 하나의 토픽의 종류에 관한 정보 및 부모 채팅방에 관한 전술한 파라미터를 반영하는 그래프를 포함한다. 여기서, 부모 채팅방에 관한 전술한 파라미터는, 전술한 바와 같이 부모 채팅방에서 다뤄진 복수 개의 토픽의 종류, 부모 채팅방에서 다뤄진 복수 개의 토픽 각각에 대한 채팅 활성도 및 부모 채팅방에서의 복수 개의 토픽이 서로 간에 갖는 관련도 중 적어도 하나를 포함할 수 있다. 도 29에서는 자식 채팅방에서 다뤄질 토픽의 종류는 토픽 1과 2라고 도시되어 있다. 또한, 부모 채팅방에서 다뤄지고 있는 토픽의 종류는 토픽 1 내지 4라고 도시되어 있고, 각 토픽의 채팅 활성도는 3, 4, 5, 및 3으로 도시되어 있으며, 토픽 간 관련도는 토픽 1과 2 사이에는 3, 토픽 1과 3 사이에는 0, 토픽 1과 4 사이에는 2, 토픽 2와 3 사이에는 5, 토픽 2와 4 사이에는 3, 토픽 3과 4 사이에는 1로 도시되어 있다. 여기서, 이러한 값들은 예시적인 것에 불과하다.
아울러, 출력 데이터는 자식 채팅방에서 다뤄질 적어도 하나의 토픽 각각에 대해 추론된 채팅 활성도를 포함한다. 도 29을 참조하면, 토픽 1에 대해 추론된 채팅 활성도는 9이고, 토픽 2에 대해 추론된 채팅 활성도는 10이다. 이 때, 출력 데이터에는 토픽 1과 2 이외의 다른 토픽들, 즉 토픽 3 내지 토픽 p에 대한 채팅 활성도가 0으로서 포함된다. 즉, 채팅 활성도 추론부(160)의 GNN 모델(161a)은 토픽 1 내지 p, 다시 말하면 모든 토픽 각각에 대해 채팅 활성도를 추론해서 출력한다. 다만, 토픽 3 내지 토픽 p는 자식 채팅방에서 다뤄지지 않을 토픽이므로, 이들 토픽 각각에 대한 채팅 활성도는 0의 값을 갖는다. 이러한 출력 데이터를 수식으로 나타내면 다음과 같다.
{9,10, 0,0,….0,0}
여기서, 9와 10은 각각 토픽 1과 2가 자식 채팅방에서 가질 것으로 추론되는 채팅 활성도이고, 나머지 0들은 토픽 3 내지 p 각각이 자식 채팅방에서 가질 것으로 추론되는 채팅 활성도이다.
한편, 부모 채팅방에서 토픽 1과 2에 대해 산출된 채팅 활성도를, 자식 채팅방에서 토픽 1과 2에 대해 추론된 채팅 활성도와 비교해보자. 비교해보면, 부모 채팅방에서 토픽 1과 2에 대해 산출된 채팅 활성도는 각각 3과 4인 반면, 자식 채팅방에서 토픽 1과 2에 대해 추론된 채팅 활성도는 각각 9와 10이다. 즉, 부모 채팅방에서 다뤄지는 토픽 1과 2가 자식 채팅방으로 옮겨지면, 부모 채팅방보다 자식 채팅방에서 해당 토픽 1과 2의 채팅 활성도 모두가 올라갈 것으로 추론된다. 이에, 토픽 1과 2의 경우, 자식 채팅방으로 옮겨서 다뤄지도록 하는 것이, 채팅의 활성도 측면에서 보았을 때 바람직하다고 볼 수 있다.
다시 도 3을 참조하면, 토픽 현황 정보 생성부(160)는 특정 채팅방에서 어떤 종류의 토픽과 어떤 활성도로 다뤄지고 있는지를 나타내는 토픽 현황 정보를 생성하도록 구현된다. 보다 구체적으로, 토픽 현황 정보는 채팅방에서 다뤄지는 토픽의 종류, 각 토픽에 대해 산출된 채팅 활성도, 토픽 간의 관련도 및 각 토픽에 관한 채팅 메시지를 입력하는 사용자에 대한 정보 중 적어도 하나를 포함하며, 다만 이에 한정되는 것은 아니다.
도 30 및 31은 토픽과 관련된 계층 구조의 개념을 예시한다.
전술한 토픽들은 계층 구조에 기반해서 계층적으로 구성될 수 있다. 예를 들어, 도 30에 도시된 바와 같이, 토픽 1과 2를 중심으로, 각각 하위 계층에 적어도 한 개의 토픽이 배치될 수 있고, 이렇게 배치된 적어도 한 개의 토픽 각각의 하위 계층에도 적어도 한 개의 토픽이 배치될 수 있다.
이렇게 토픽들이 계층 구조에 기반해서 계층적으로 구성될 수 있는 이유는, 앞서 살펴본 바와 같이 복수 개의 토픽은 서로 간의 포함 관계를 반영하는 계층 구조를 가질 수 있기 때문이다.
도 3을 참조하면, 계층 구조 파악부(170)는 토픽 간의 계층 구조를 파악하도록 구현된다. 계층 구조를 파악하기 위해, 온톨로지 기반으로 미리 만들어져 있는 토픽에 관한 계층 구조가 이용될 수 있다. 이러한 온톨로지 기반으로 미리 만들어져 있는 토픽에 관한 계층 구조를 이용해서, 계층 구조 파악부(170)가 토픽 간의 계층 구조를 파악하는 기술 그 자체는 공지된 기술이므로 이에 관한 상세한 설명은 생략하기로 한다.
토픽 현황 정보 생성부(160)는 계층 구조 파악부(170)로부터 토픽들에 관한 계층 구조에 대한 정보를 수신할 수 있다. 아울러, 토픽들의 계층 구조에 대한 수신된 정보에 기초해서, 토픽 현황 정보 생성부(160)는 전술한 토픽 현황 정보를 계층적으로 구성할 수 있다. 예를 들어, 도 31에 도시된 바와 같이, 경제라는 토픽과 문화라는 토픽을 상위 노드에 배치한 뒤, 각 노드의 값으로써 각 토픽에 관한 채팅 활성도를 산출해서 기재한다. 아울러, 주식, 부동산 및 금리라는 각각의 토픽을 경제라는 토픽의 하위 노드에 배치한 뒤, 각 노드의 값으로써 각 토픽에 관한 채팅 활성도를 산출해서 기재한다. 또한, 공연과 영화라는 각각의 토픽을 문화라는 토픽의 하위 노드에 배치한 뒤, 각 노드의 값으로써 각 토픽에 관한 채팅 활성도를 산출해서 기재한다. 여기서, 경제라는 토픽과 문화라는 토픽 간의 관련도가 산출되어 이들 노드를 연결하는 링크의 값으로써 기재될 수 있다.
이렇게 계층적으로 구성된 토픽 현황 정보는 채팅방 관리 서버(100)로부터 복수 개의 단말(200)에게 전달되어서, 각 단말(200)의 화면에 표시될 수 있다. 그러면, 각 단말(200)의 사용자는 이러한 토픽 현황 정보를 통해서, 현재 자신이 입장해 있는 채팅방에서 어떤 토픽이 어느 정도의 활성도를 가지고 다뤄지고 있으며 각 토픽이 어느 정도의 관련도를 갖고 있는지를 한 눈에 파악할 수 있다.
뿐만 아니라, 전술한 토픽 현황 정보는 채팅방에는 입장해 있지 않지만 채팅방 관리 서버(100)에 접속해서 대기실에서 대기하고 있는 사용자들에게도 제공될 수 있다. 이러한 정보를 통해서, 대기 중인 사용자들은 자신이 원하는 토픽을 다루고 있는 채팅방을 용이하게 찾을 수 있다.
다시 도 3을 참조하여, 작업 수행부(180)에 대해 살펴보기로 하자. 작업 수행부(180)는 채팅방 관리와 관련된 작업을 수행하도록 구현된다. 이러한 작업은 다음과 같은 것들 중 적어도 하나를 포함할 수 있다:
자식 채팅방을 생성할지 여부를 결정하는 작업,
자식 채팅방을 생성할 것으로 결정된 경우, 부모 채팅방의 사용자들에게 자식 채팅방의 생성 및 일부의 토픽에 대한 이동 여부를 승인할지를 문의하고 그에 대한 답변을 확인하는 작업,
문의에 따른 승인 답변이 부모 채팅방의 사용자 중 과반수가 넘거나 또는 소정의 기준을 만족시키면, 자식 채팅방을 생성하는 작업 (만약, 그렇지 않은 경우, 자식 채팅방은 생성되지 않음),
부모 채팅방에서 다뤄진 복수의 토픽 중에서 자식 채팅방에서 다뤄질 적어도 하나의 토픽에 관한 채팅 메시지를 자식 채팅방으로 이동시키는 작업,
자식 채팅방에서 다뤄질 적어도 한 개의 토픽과 관련된 사용자를 자식 채팅방으로 이동시키는 작업.
전술한 작업은 부모 채팅방의 사용자 전체에 대해 동일하게 적용될 때를 가정하여 설명되었지만, 전술한 작업은 부모 채팅방의 개별 사용자마다 다르게 적용될 수 있다. 예를 들어, 사용자 a에 의해 자식 채팅방의 생성 및 일부의 토픽에 대한 이동 여부의 승인을 받고, 사용자 b에 의해 자식 채팅방의 생성 및 일부의 토픽에 대한 이동 여부의 불승인을 받은 경우, 작업 수행부는 사용자 a 및 b에 대해 다른 작업을 수행할 수 있다. 이 경우, 사용자 a 및 b에게 표시되는 채팅방은 서로 다를 수 있다.
전술한 작업에 대해 보다 자세하게 살펴보자. 작업 수행부(180)는 자식 채팅방을 생성할지 여부를 결정하는 작업을 수행한다. 예를 들어, 자식 채팅방을 생성하지 않을 것으로 결정되면, 작업 수행부(180)는 자식 채팅방을 생성하지 않는다. 이 경우, 부모 채팅방에서는 복수 개의 토픽 각각에 대한 채팅이 수행된다. 대안적으로, 자식 채팅방을 생성할 것으로 결정되면, 작업 수행부(180)는 자식 채팅방을 생성한다. 이 경우, 부모 채팅방에서 다뤄지는 복수 개의 토픽 중 적어도 한 개의 토픽은, 생성된 이후부터 자식 채팅방에서 다뤄질 수 있다.
여기서, 자식 채팅방을 생성할지 여부는, 자식 채팅방에서 다뤄질 적어도 한 개의 토픽이 자식 채팅방에서 어느 정도의 활성도를 갖고 다뤄질 것인지에 대해 추론된 값, 즉 추론된 채팅 활성도에 기초해서 결정될 수 있으며, 다만 이에 한정되는 것은 아니다.
보다 구체적으로, 채팅 활성도 추론부(150)는 전술한 바와 같이 부모 채팅방에서 다뤄지는 복수 개의 토픽 중 자식 채팅방에서 다뤄질 적어도 한 개의 토픽에 대한 채팅 활성도를 추론한다. 이렇게 추론된 채팅 활성도는 작업 수행부(180)에게 전달된다. 그러면, 작업 수행부(180)는 이러한 채팅 활성도에 기초해서 자식 채팅방을 생성할지, 아니면 생성하지 않을 지 여부를 결정한다.
작업 수행부(180)가 자식 채팅방을 생성할지 여부를 결정하기 위한 다양한 기준이 있을 수 있다.
자식 채팅방에서 다뤄질 적어도 한 개의 토픽 각각에 대해 추론된 채팅 활성도의 합이, 부모 채팅방에서 다뤄지고 있는 상기 적어도 한 개의 토픽 각각에 대해 추론된 채팅 활성도의 합 이상이면, 자식 채팅방을 생성하는 것으로 결정될 수 있고, 미만이면 생성하지 않는 것으로 결정될 수 있다. 여기서, '합'은 구현예에 따라 '곱'과 같은 다른 연산자로 변경될 수도 있다.
둘째, 자식 채팅방에서 다뤄질 적어도 한 개의 토픽 각각에 대해 추론된 채팅 활성도 중 어느 하나라도 0으로 결정되면, 자식 채팅방은 생성되지 않는 것으로 결정될 수 있다. 이는, 전술한 첫째 기준에서 채팅 활성도의 합이 부모 채팅방보다 자식 채팅방에서 더 큰 경우에도 적용된다.
일 구현예에 따르면, 부모 채팅방에서 복수 개의 토픽에 대한 채팅이 다뤄진다고 해서 항상 자식 채팅방이 생성되는 것은 아니다. 자식 채팅방을 생성해서 이 중 일부의 토픽을 자식 채팅방으로 옮겨서 다뤄지도록 하는 것이 채팅 활성도 측면에서 그렇지 않은 경우에 비해 활성화된다고 추론되는 경우에만, 자식 채팅방이 생성될 수 있다. 따라서, 부모 채팅방으로부터 자식 채팅방을 파생해서 생성시키는 작업이 보다 효율적으로 수행될 수 있다.
이하에서는, 전술한 채팅방 관리 서버(100)가 수행하는 채팅방 관리 방법 중, 전술한 동작, 즉 채팅 활성도를 추론하는 과정에 대해 살펴보기로 한다.
도 32은 일 구현예에 따른 채팅방 관리 방법의 예시적인 흐름도이다. 에서, 채팅 활성도를 추론하는 과정을 나타내는 순서도이다. 다만, 도 32에 도시된 흐름도는 예시적인 것에 불과하므로, 채팅방 관리 방법은 이에 한정되지 않는다. 예를 들어, 채팅방 관리 방법은 도 32에 도시된 흐름도에 포함된 각 단계 중 적어도 하나를 포함하지 않거나 도 32에 도시되지 않은 단계를 포함하여 수행될 수 있으며, 각 단계가 예시된 순서와는 상이하게 수행될 수도 있다.
도 32를 참조하면, 상기 자식 채팅방의 생성을 전제로, 상기 자식 채팅방에서의 채팅 활성도를 추론하는 단계(S1331)가 수행된다.
또한, 상기 추론된 채팅 활성도에 기초해서 상기 자식 채팅방을 생성하는 단계(S1332)가 수행된다.
한편, 전술한 채팅방 서버(100)는 도 33을 참조하여 전자 장치의 형태로서 구현될 수도 있다.
도 33은 일 구현예에 따라 구현된 전자 장치의 구성을 개략적으로 예시하는 블록도이다.
도 33을 참조하면, 전자 장치(1100)는 통신부(1110), 메모리(1130) 및 프로세서(1120)를 포함한다.
여기서, 통신부(1110)는 도 3에 도시된 통신부(110)와 동일한 기능을 수행하고, 메모리(1130)는 도 3에 도시된 메모리(1130)와 동일한 기능을 수행한다. 따라서, 이들 각각(1110 및 1130)에 대한 설명은 도 3에서 이미 설명된 바를 원용하기로 한다.
다음으로, 프로세서(1120)는 도 3에 도시된 토픽 추출부(120), 채팅 활성도 산출부(130), 관련도 산출부(140), 채팅 활성도 추론부(150), 토픽 현황 정보 생성부(160), 계층 구조 파악부(170) 및 작업 수행부(180) 각각의 기능 중 일부 또는 전부를 수행하도록 구성된다. 이에, 프로세서(1120)가 수행할 수 있는 기능은 도 3에서 이미 설명된 구성을 사용할 것이다. 이때, 프로세서(1120)는 CPU나 GPU와 같은 프로세서에 의해 구현될 수 있다.
한편, 전술한 다양한 구현예들에 따른 방법은 이러한 방법의 각 단계를 수행하도록 프로그램된 컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램의 형태로 구현 가능하고, 또한 이러한 방법의 각 단계를 수행하도록 프로그램된 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체의 형태로 구현될 수도 있다.
본 발명의 구현예의 구성요소 모두는 단일 유닛으로서 커플링되거나 단일 유닛으로 작동하도록 커플링되는 것으로 상기에 기재되었지만, 본 발명은 이러한 구현예에 반드시 제한되는 것은 아니다. 즉, 모든 구조적 요소 중 적어도 2개의 요소들이 선택적으로 결합되어 본 발명의 범위를 벗어나지 않으면서 작동할 수 있다. 또한, 모든 구조적 요소는 각각 독립적인 하드웨어로 구현될 수 있지만, 상기 구조적 요소의 일부 또는 전부는 선택적으로 조합되어 하드웨어의 하나 이상의 부분으로 조합되는 일부 요소 또는 모든 요소의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로 구현될 수 있다. 상기 컴퓨터 프로그램을 형성하는 코드 및 코드 세그먼트는 본 발명의 기술 분야에서 통상의 기술을 가진 자에 의해 쉽게 구상될 수 있다. 이러한 컴퓨터 프로그램은 컴퓨터 판독가능한 기록 매체로 저장되고 컴퓨터에 의해 판독 및 실행됨으로써 본 발명의 구현예를 구현할 수 있다. 자기 기록 매체, 광학 기록 매체 등이 컴퓨터 프로그램의 저장 매체로서 사용될 수 있다.
본 개시내용의 특정한 예시적인 구현예의 전술한 상세한 설명은 모두 포함하거나 본 개시내용을 개시된 정확한 형태로 한정하고자 하는 것이 아니며, 상기 교시 내용에 비추어 명확히 많은 변형 및 변경이 당업자에게 가능하다. 따라서, 본 개시내용의 범위는 전술한 구현예에 한정되지 않으며, 여기 첨부된 청구범위 및 이의 균등범위에 의해 한정되는 것으로 의도된다.
[관련 출원에 대한 상호참조]
본 출원은 대한민국 특허청에 2020년 8월 7일에 출원된 대한민국 특허출원 10-2020-0099008 및 2021년 3월 22일에 출원된 10-2021-0036473의 이익을 주장하며, 이의 개시내용은 그 전체가 참조로 본원에 포함되어 있다.

Claims (35)

  1. 부모 채팅방에 표시되는 채팅 메시지로부터 복수 개의 토픽을 추출하는 토픽 추출부;
    상기 복수 개의 토픽 각각을 메이저 토픽 또는 마이너 토픽으로 분류하는 메이저-마이너 토픽 분류부; 및
    상기 마이너 토픽에 대응되는 채팅 메시지가 표시될 자식 채팅방을 생성하는 작업 수행부
    를 포함하는 채팅방 관리 서버.
  2. 제1항에 있어서, 상기 토픽 추출부는 상기 채팅 메시지의 개수가 소정의 개수 이상일 때 상기 부모 채팅방에 표시되는 채팅 메시지로부터 상기 복수 개의 토픽을 추출하는 것을 특징으로 하는 채팅방 관리 서버.
  3. 제1항에 있어서, 상기 토픽 추출부는 상기 채팅 메시지에 포함된 적어도 하나의 키워드 각각의 빈도를 고려하여 상기 복수 개의 토픽을 추출하는 것을 특징으로 하는 채팅방 관리 서버.
  4. 제3항에 있어서, 상기 토픽 추출부는 상기 적어도 하나의 키워드 중에서 임계 빈도 이상의 빈도를 갖는 키워드로부터 상기 복수 개의 토픽을 추출하는 것을 특징으로 하는 채팅방 관리 서버.
  5. 제3항에 있어서, 상기 토픽 추출부는 기 설정된 복수 개의 후보 토픽들 중 임계 빈도 이상의 빈도를 갖는 키워드에 대응되는 후보 토픽을 상기 복수 개의 토픽으로서 추출하는 것을 특징으로 하는 채팅방 관리 서버.
  6. 제1항에 있어서, 상기 메이저-마이너 토픽 분류부는 상기 복수 개의 토픽 중 대응되는 채팅 메시지의 개수가 가장 많은 토픽을 상기 메이저 토픽으로 분류하는 것을 특징으로 하는 채팅방 관리 서버.
  7. 제1항에 있어서, 상기 메이저-마이너 토픽 분류부는 상기 복수 개의 토픽 중 상기 메이저 토픽으로 분류된 토픽과의 관련도에 기반해서, 상기 복수 개의 토픽 중 적어도 하나를 상기 마이너 토픽으로서 분류하는 것을 특징으로 하는 채팅방 관리 서버.
  8. 제1항에 있어서, 상기 마이너 토픽의 종류를 고려하여 상기 자식 채팅방에서의 채팅 활성도를 추론하는 채팅 활성도 추론부를 추가로 포함하고, 상기 작업 수행부는 상기 추론된 채팅 활성도로부터 상기 자식 채팅방을 생성할지 여부를 판단하는 것을 특징으로 하는 채팅방 관리 서버.
  9. 제8항에 있어서, 상기 마이너 토픽이 상기 부모 채팅방에서 갖는 채팅 활성도를 산출하는 채팅 활성도 산출부를 추가로 포함하고, 상기 채팅 활성도 추론부는 상기 채팅 활성도를 추론할 때 상기 마이너 토픽에 대해 산출된 상기 채팅 활성도를 추가적으로 고려하는 것을 특징으로 하는 채팅방 관리 서버.
  10. 제8항에 있어서, 복수 개의 상기 마이너 토픽이 상기 부모 채팅방에서 서로 간에 갖는 관련도를 산출하는 관련도 산출부를 추가로 포함하고, 상기 채팅 활성도 추론부는 상기 채팅 활성도를 추론할 때 상기 복수 개의 마이너 토픽에 대해 산출된 상기 관련도를 추가적으로 고려하는 것을 특징으로 하는 채팅방 관리 서버.
  11. 제8항에 있어서, 상기 채팅 활성도 추론부는 인공 신경망(artificial neural network, ANN)을 기반으로 학습된 추론 모델을 이용해서 상기 추론을 수행하는 것을 특징으로 하는 채팅방 관리 서버.
  12. 제11항에 있어서, 상기 인공 신경망은 그래프를 수신하고 상기 추론을 수행하는 그래프 신경망(graph neural network, GNN)을 포함하는 것을 특징으로 하는 채팅방 관리 서버.
  13. 제12항에 있어서, 상기 그래프 중 상기 부모 채팅방에 대응되는 그래프는 복수 개의 노드 및 상기 복수 개의 노드를 연결시키는 링크를 포함하고, 상기 복수 개의 노드 각각은 상기 복수 개의 토픽 중 하나를 나타내고, 상기 복수 개의 토픽 각각에 대해 산출된 채팅 활성도는 상기 복수 개의 노드 각각에 할당되며, 상기 복수 개의 마이너 토픽이 부모 채팅방에서 서로에 대해 갖는 관련도는 링크 각각에 할당되는 것을 특징으로 하는 채팅방 관리 서버.
  14. 제12항에 있어서, 상기 그래프 신경망 모델은 복수의 입력 데이터 및 상기 복수의 입력 데이터 각각과 짝을 이루는 정답 데이터를 사용하여 학습되며, 상기 복수의 입력 데이터 각각은 노드와 링크를 포함하는 그래프의 형태이고, 상기 복수의 입력 데이터 각각은 소정의 부모 채팅방으로부터 추출된 토픽의 종류, 상기 소정의 부모 채팅방으로부터 추출된 토픽에 대해 산출된 채팅 활성도 및 상기 소정의 부모 채팅방으로부터 추출된 토픽들에 대해 산출된 관련도를 포함하며, 상기 복수의 입력 데이터 각각과 짝을 이루는 정답 데이터는 상기 소정의 부모 채팅방으로부터 추출된 적어도 하나의 토픽 각각이 상기 소정의 부모 채팅방에서 분기된 자식 채팅방에서 갖는 채팅 활성도를 포함하는 것을 특징으로 하는 채팅방 관리 서버.
  15. 제1항에 있어서, 상기 복수 개의 토픽 각각이 상기 부모 채팅방에서 갖는 채팅 활성도를 산출하는 채팅 활성도 산출부; 및 상기 복수 개의 토픽의 종류 및 상기 복수 개의 토픽 각각에 대해 상기 산출된 채팅 활성도를 포함하는 토픽 현황 정보를 생성하는 토픽 현황 정보 생성부를 추가로 포함하고, 상기 토픽 현황 정보는 상기 채팅방 관리 서버에 접속한 단말에게 전송되어 상기 단말의 화면에 표시되는 것을 특징으로 하는 채팅방 관리 서버.
  16. 제15항에 있어서, 상기 토픽 현황 정보는 상기 복수 개의 토픽 각각에 참여하고 있는 사용자에 대한 정보를 추가로 포함하는 것을 특징으로 하는 채팅방 관리 서버.
  17. 제15항에 있어서, 상기 복수 개의 토픽이 서로 간에 갖는 계층 구조를 파악하는 계층 구조 파악부를 추가로 포함하고, 상기 토픽 현황 정보는 상기 계층 구조에 기반하여 상기 단말의 화면에 계층적으로 표시되는 것을 특징으로 하는 채팅방 관리 서버.
  18. 부모 채팅방에 표시되는 채팅 메시지로부터 복수 개의 토픽을 추출하는 단계;
    상기 복수 개의 토픽 각각을 메이저 토픽 또는 마이너 토픽으로 분류하는 단계; 및
    상기 마이너 토픽에 대응되는 채팅 메시지가 표시되는 자식 채팅방을 생성하는 단계
    를 포함하는 채팅방 관리 방법.
  19. 제18항에 있어서, 상기 복수 개의 토픽 각각을 분류하는 단계는 부모 채팅방에 표시된 채팅 메시지의 개수가 소정의 개수 이상일 때 부모 채팅방에 표시된 채팅 메시지로부터 상기 복수 개의 토픽을 추출하는 것을 특징으로 하는 채팅방 관리 방법.
  20. 제18항에 있어서, 상기 복수 개의 토픽 각각을 분류하는 단계는 상기 채팅 메시지에 포함된 상기 적어도 하나의 키워드 각각의 빈도에 따라 상기 복수 개의 토픽을 추출하는 것을 특징으로 하는 채팅방 관리 방법.
  21. 제20항에 있어서, 상기 복수 개의 토픽 각각을 분류하는 단계는 상기 적어도 하나의 키워드 중에서 임계 빈도 이상의 빈도를 갖는 키워드로부터 상기 복수 개의 토픽을 추출하는 것을 특징으로 하는 채팅방 관리 방법.
  22. 제20항에 있어서, 상기 복수 개의 토픽 각각을 분류하는 단계는 기 설정된 복수의 후보 토픽들 중 임계 빈도 이상의 빈도를 갖는 키워드에 대응되는 후보 토픽을 상기 복수 개의 토픽으로서 추출하는 것을 특징으로 하는 채팅방 관리 방법.
  23. 제18항에 있어서, 상기 분류는 상기 복수 개의 토픽 중 대응되는 채팅 메시지의 개수가 가장 많은 토픽을 상기 메이저 토픽으로 분류하는 것을 특징으로 하는 채팅방 관리 방법.
  24. 제18항에 있어서, 상기 분류는 상기 복수 개의 토픽 중 상기 메이저 토픽으로 분류된 토픽과의 관련도에 기반해서, 상기 복수 개의 토픽 중 적어도 하나를 상기 마이너 토픽으로 분류하는 것을 특징으로 하는 채팅방 관리 방법.
  25. 제18항에 있어서, 상기 자식 채팅방의 생성을 전제로, 상기 마이너 토픽의 종류를 고려하여 상기 자식 채팅방에서의 채팅 활성도를 추론하는 단계를 추가로 포함하고, 자식 채팅방 생성시 상기 추론된 채팅 활성도로부터 상기 자식 채팅방을 생성할지 여부가 결정되는 것을 특징으로 하는 채팅방 관리 방법.
  26. 제25항에 있어서, 상기 마이너 토픽이 상기 부모 채팅방에서 갖는 채팅 활성도를 산출하는 단계를 추가로 포함하고, 상기 채팅 활성도를 추론하는 단계는 상기 채팅 활성도를 추론할 때 상기 마이너 토픽에 대해 산출된 상기 채팅 활성도를 추가적으로 고려하는 것을 특징으로 하는 채팅방 관리 방법.
  27. 제25항에 있어서, 복수 개의 상기 마이너 토픽이 상기 부모 채팅방에서 서로 간에 갖는 관련도를 산출하는 단계를 추가로 포함하고, 상기 채팅 활성도를 추론하는 단계는 상기 채팅 활성도를 추론할 때 상기 복수 개의 마이너 토픽에 대해 산출된 상기 관련도를 추가적으로 고려하는 것을 특징으로 하는 채팅방 관리 방법.
  28. 제25항에 있어서, 상기 채팅 활성도를 추론하는 단계는 인공 신경망(artificial neural network, ANN)을 기반으로 학습된 추론 모델을 이용하여 상기 추론을 수행하는 것을 특징으로 하는 채팅방 관리 방법.
  29. 제28항에 있어서, 상기 인공 신경망은 그래프를 수신하여 상기 추론을 수행하는 그래프 신경망(graph neural network, GNN)을 포함하는 것을 특징으로 하는 채팅방 관리 방법.
  30. 제29항에 있어서, 상기 그래프 중 상기 부모 채팅방에 대응되는 그래프는 복수 개의 노드 및 상기 복수 개의 노드를 연결시키는 링크를 포함하며, 상기 복수 개의 노드 각각은 상기 복수 개의 토픽 중 하나를 나타내고, 상기 복수 개의 토픽 각각에 대해 산출된 채팅 활성도는 상기 복수 개의 노드 각각에 할당되며, 상기 복수 개의 마이너 토픽이 상기 부모 채팅방에서 서로 간에 갖는 관련도는 각 링크에 할당되는 것을 특징으로 하는 채팅방 관리 방법.
  31. 제29항에 있어서, 상기 그래프 신경망 모델은 복수의 입력 데이터 및 상기 복수의 입력 데이터 각각과 짝을 이루는 정답 데이터를 사용하여 학습되며, 상기 복수의 입력 데이터 각각은 노드와 링크를 포함하는 그래프의 형태이고, 상기 복수의 입력 데이터 각각은 소정의 부모 채팅방으로부터 추출된 토픽의 종류, 상기 소정의 부모 채팅방으로부터 추출된 토픽에 대해 산출된 채팅 활성도 및 상기 소정의 부모 채팅방으로부터 추출된 토픽들에 대해 산출된 관련도를 포함하며, 상기 복수의 입력 데이터 각각과 짝을 이루는 정답 데이터는 상기 소정의 부모 채팅방으로부터 추출된 토픽 중 적어도 한 개의 토픽 각각이 상기 소정의 부모 채팅방에서 분기된 자식 채팅방에서 갖는 채팅 활성도를 포함하는 것을 특징으로 하는 채팅방 관리 방법.
  32. 제18항에 있어서, 상기 복수 개의 토픽 각각이 상기 부모 채팅방에서 갖는 채팅 활성도를 산출하는 단계; 및 상기 복수 개의 토픽의 종류 및 상기 복수 개의 토픽 각각에 대해 상기 산출된 채팅 활성도를 포함하는 토픽 현황 정보를 생성하는 단계를 추가로 포함하고, 상기 토픽 현황 정보는 상기 서버에 접속한 단말에게 전송되어 상기 단말의 화면에 표시되는 것을 특징으로 하는 채팅방 관리 방법.
  33. 제32항에 있어서, 상기 토픽 현황 정보는 상기 복수 개의 토픽 각각에 참여하고 있는 사용자에 대한 정보를 추가로 포함하는 것을 특징으로 하는 채팅방 관리 방법.
  34. 제32항에 있어서, 상기 복수 개의 토픽이 서로 간에 갖는 계층 구조를 파악하는 단계를 추가로 포함하고, 상기 토픽 현황 정보는 상기 계층 구조에 기반하여 상기 단말의 화면에 계층적으로 표시되는 것을 특징으로 하는 채팅방 관리 방법.
  35. 채팅방 관리 방법을 수행하는 코드를 포함하는 컴퓨터 프로그램이 저장된 컴퓨터 판독가능한 기록매체에 있어서, 상기 채팅방 관리 방법은,
    부모 채팅방에 표시되는 채팅 메시지로부터 복수 개의 토픽을 추출하는 단계;
    상기 복수 개의 토픽 각각을 메이저 토픽 또는 마이너 토픽으로 분류하는 단계; 및
    상기 마이너 토픽에 대응되는 채팅 메시지가 표시되는 자식 채팅방을 생성하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
KR1020237007982A 2020-08-07 2021-08-06 채팅방 관리 서버와 이를 위한 방법 및 이러한 방법을 수행하기 위한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체 KR20230045080A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
KR20200099008 2020-08-07
KR1020200099008 2020-08-07
KR1020210036473 2021-03-22
KR20210036473 2021-03-22
PCT/KR2021/010454 WO2022031134A1 (en) 2020-08-07 2021-08-06 Server for managing chat room, method therefor and computer recordable medium storing computer program for performing such a method

Publications (1)

Publication Number Publication Date
KR20230045080A true KR20230045080A (ko) 2023-04-04

Family

ID=80118359

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237007982A KR20230045080A (ko) 2020-08-07 2021-08-06 채팅방 관리 서버와 이를 위한 방법 및 이러한 방법을 수행하기 위한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체

Country Status (2)

Country Link
KR (1) KR20230045080A (ko)
WO (1) WO2022031134A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571212B2 (en) * 2002-05-14 2009-08-04 Family Systems, Ltd. Interactive web collaboration systems and methods
JP5775466B2 (ja) * 2012-01-13 2015-09-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 会話から雑談部分を抽出するための雑談抽出システム、方法、およびプログラム
US8843835B1 (en) * 2014-03-04 2014-09-23 Banter Chat, Inc. Platforms, systems, and media for providing multi-room chat stream with hierarchical navigation
KR101929649B1 (ko) * 2017-02-10 2018-12-14 한양대학교 산학협력단 채팅로그 키워드 추출을 통한 관심사 관련 오픈 채팅방 추천 시스템 및 방법
KR101886628B1 (ko) * 2017-04-27 2018-09-10 주식회사 트위니 채팅방 군집화 서비스 제공방법

Also Published As

Publication number Publication date
WO2022031134A1 (en) 2022-02-10

Similar Documents

Publication Publication Date Title
US11847106B2 (en) Multi-service business platform system having entity resolution systems and methods
US20240046043A1 (en) Multi-turn Dialogue Response Generation with Template Generation
Arias et al. Forecasting with twitter data
JP6971853B2 (ja) コミュニケーション及びコンテンツからのコミットメント及びリクエストの自動抽出
US11580112B2 (en) Systems and methods for automatically determining utterances, entities, and intents based on natural language inputs
Dash et al. Summarizing user-generated textual content: Motivation and methods for fairness in algorithmic summaries
US11695721B2 (en) Method, apparatus, and computer program product for categorizing multiple group-based communication messages
US11057322B1 (en) Ranking messages of conversation graphs in a messaging platform using machine-learning signals
US20220284171A1 (en) Hierarchical structure learning with context attention from multi-turn natural language conversations
CN103246690A (zh) 标签继承
US20230316186A1 (en) Multi-service business platform system having entity resolution systems and methods
US20230418793A1 (en) Multi-service business platform system having entity resolution systems and methods
El-Arini et al. Transparent user models for personalization
US9965812B2 (en) Generating a supplemental description of an entity
Ennaji et al. Opinion leaders’ prediction for monitoring the product reputation
Singh et al. AI-based personality prediction for human well-being from text data: a systematic review
US11106662B2 (en) Session-aware related search generation
US10951560B1 (en) Ranking messages of conversation graphs in a messaging platform using predictive outcomes
Pei et al. What drives people to repost social media messages during the COVID‐19 pandemic? Evidence from the Weibo news microblog
KR20230045080A (ko) 채팅방 관리 서버와 이를 위한 방법 및 이러한 방법을 수행하기 위한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체
Wang et al. [Retracted] Application of Improved Machine Learning and Fuzzy Algorithm in Educational Information Technology
CN114093447A (zh) 数据资产推荐方法、装置、计算机设备及存储介质
Zhang et al. NewsQuote: A Dataset Built on Quote Extraction and Attribution for Expert Recommendation in Fact-Checking
Preotiuc-Pietro Temporal models of streaming social media data
Holliger Strategic sourcing via category management: Helping Air Force Installation Contracting Agency eat one piece of the elephant