KR101900285B1 - Dynamic tag cloud system and method in real-time SNS data - Google Patents

Dynamic tag cloud system and method in real-time SNS data Download PDF

Info

Publication number
KR101900285B1
KR101900285B1 KR1020160159236A KR20160159236A KR101900285B1 KR 101900285 B1 KR101900285 B1 KR 101900285B1 KR 1020160159236 A KR1020160159236 A KR 1020160159236A KR 20160159236 A KR20160159236 A KR 20160159236A KR 101900285 B1 KR101900285 B1 KR 101900285B1
Authority
KR
South Korea
Prior art keywords
keywords
data
server
tag cloud
database
Prior art date
Application number
KR1020160159236A
Other languages
Korean (ko)
Other versions
KR20180060114A (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 KR1020160159236A priority Critical patent/KR101900285B1/en
Publication of KR20180060114A publication Critical patent/KR20180060114A/en
Application granted granted Critical
Publication of KR101900285B1 publication Critical patent/KR101900285B1/en

Links

Images

Classifications

    • G06F17/30722
    • 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/38Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Health & Medical Sciences (AREA)
  • Economics (AREA)
  • Human Resources & Organizations (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 클라이언트와 서버를 포함하는 동적 태그 클라우드 시스템에서의 동적 태그 클라우드 방법에 있어서, 상기 클라이언트 측에서 사용자로부터 하나 이상의 키워드가 입력되면, 해당 사용자의 세션 ID와 키워드를 서버 측으로 전송하는 단계, 상기 서버는 전달받은 상기 세션 ID와 키워드를 데이터베이스에 저장하는 단계, 상기 서버는 상기 데이터베이스에서 주기적으로 모든 키워드들을 검색하는 단계, 상기 서버는 키워드들이 포함된 데이터를 수집하는 키워드 필터링을 수행하는 단계, 상기 서버는 수집한 데이터로부터 해시태그를 추출하고, 추출된 해시태그의 수를 집계하는 단계 및 상기 서버는 세션 ID를 사용하여 사용자를 구분하고, 각 사용자에게 태그 클라우드를 시각화하여 제공하는 단계를 포함한다. 본 발명에 의하면, 기존 시각화 기술로는 표현이 어려운 비정형 데이터의 변화를 실시간으로 확인할 수 있다는 효과가 있다.The present invention provides a dynamic tag cloud method in a dynamic tag cloud system including a client and a server, the method comprising the steps of: transmitting one or more keywords from a user on a client side to a server side, The server stores the received session ID and keyword in a database. The server periodically searches all the keywords in the database. The server performs keyword filtering to collect data including keywords, The server extracts the hashtags from the collected data and counts the number of extracted hashtags, and the server classifies the users using the session ID and visualizes and provides the tag cloud to each user . According to the present invention, it is possible to check the change of the unstructured data, which is difficult to express with existing visualization technology, in real time.

Description

실시간 SNS 데이터에 대한 동적 태그 클라우드 시스템 및 방법 {Dynamic tag cloud system and method in real-time SNS data}[0001] The present invention relates to a dynamic tag cloud system and method for real-time SNS data,

본 발명은 SNS 데이터에 대한 관한 것으로서, 더욱 상세하게는 실시간 SNS 데이터에 대한 동적 태그 클라우드 기술에 관한 것이다. The present invention relates to SNS data, and more particularly, to dynamic tag cloud technology for real-time SNS data.

2000년대 후반 이후 각종 스마트기기의 대중화에 따라 소셜 네트워크 서비스(social networking service: SNS)의 사용이 급증하였다. SNS는 사용자 간의 의사 표현, 정보 공유, 친목 도모 등을 목적으로 하며, 대표적으로는 페이스북(Facebook), 트위터(Twitter), 인스타그램(Instagram) 등이 있다. Since the late 2000s, the use of social networking services (SNS) has increased rapidly due to popularization of various smart devices. SNS is aimed at sharing opinions, sharing information, and socializing among users. Typically, SNS includes Facebook, Twitter, and Instagram.

SNS 사용자들은 대부분 텍스트와 함께 사진, 영상, 링크 등 여러 타입의 데이터를 혼합하여 자신의 의견을 게시한다. 이러한 게시글은 전세계적으로 빠르게 생성되며, 해당 데이터는 연간 수십 엑사바이트(exabyte) 이상의 대용량이 된다. 예를 들어, 페이스북은 매일 약 25억 개의 컨텐츠가 공유되고, 트위터는 매초마다 약 5,700 개의 컨텐츠가 공유된다. 이렇게 생성되는 SNS 데이터는 데이터의 다양성(variety), 빠른 생성속도(velocity), 대용량(volume)의 특징을 갖기 때문에 빅데이터로 구분할 수 있다. 특히, 대다수의 사람들은 의사 표현을 위한 도구로 SNS를 많이 사용하기 때문에, SNS 데이터에는 특정 시점의 이슈, 특정 주제에 대한 사람들의 반응이나 의견이 쉽게 드러난다. 따라서, 이를 활용한 분석 및 시각화 결과는 이슈 변화, 상품 트렌드, 고객 니즈 등을 쉽게 파악하는데 효과적이다.Most SNS users mix their text with text, pictures, links, and other types of data and post their opinions. These posts are generated quickly around the globe, and the data is larger than tens of exabytes per year. For example, Facebook has about 2.5 billion shared content every day, and Twitter has about 5,700 shared content every second. The generated SNS data can be divided into big data because it has various kinds of data, fast generation speed and volume. In particular, since the vast majority of people use SNS as a tool for expressing their opinions, SNS data makes it easy to see people's reactions and opinions on issues at a certain point in time, and on specific topics. Therefore, the analysis and visualization results using this are effective to easily identify issue change, product trend, and customer needs.

실시간 데이터 처리 기술은 실시간으로 발생하는 스트림 데이터를 수집 즉시 처리하는 기술이며, 대표적으로 Apache Storm, Apache Spark, EsperTech Esper 등이 있다. 이 중 Storm은 분산된 다수의 서버에서 빠르게 데이터를 처리하는 실시간 분산 처리 기술이며, 필요에 따라 클러스터를 확장(scale-out) 가능하다는 장점이 있다. Storm은 Apache Hadoop과 유사한 마스터/슬레이브 구조를 갖는다. Real-time data processing technology is a technology to collect and process stream data that occurs in real-time. Apache Storm, Apache Spark, and EsperTech Esper are examples. Among them, Storm is a real-time distributed processing technology that processes data quickly in a large number of distributed servers, and has the advantage that a cluster can be scaled-out as needed. Storm has a master / slave structure similar to Apache Hadoop.

도 1은 Apache Storm의 동작 구조를 나타낸 도면이다. 1 is a diagram showing an operation structure of Apache Storm.

도 1을 참조하면, 님버스(Nimbus)는 마스터, 슈퍼바이저(Supervisor)는 슬레이브에 해당하며, 이들은 분산 코디네이터인 주키퍼(Zookeeper)를 통해 관리된다. 님버스는 슬레이브 역할을 수행하는 슈퍼바이저에 작업을 배포/할당하며, 주기적으로 슈퍼바이저의 상태를 파악하고 장애에 대응한다. 슈퍼바이저는 님버스가 할당한 작업을 직접 수행하며 님버스에 상태를 보고한다.Referring to FIG. 1, Nimbus corresponds to a master, and a supervisor corresponds to a slave, which are managed through a distributed coordinator Zookeeper. The nimbus distributes / allocates tasks to the supervisor acting as a slave, periodically grasps the status of the supervisor and responds to the failure. The supervisor directly performs the tasks assigned by nimusbus and reports the status to nimusbus.

도 2는 Apache Storm의 토폴로지를 도시한 도면이다. 2 is a diagram showing a topology of Apache Storm.

도 2에서 보는 바와 같이, Apache Storm은 작업을 처리할 때 데이터의 입력부터 출력까지 일련의 작업을 토폴로지(Topology)로 표현한다. 토폴로지는 스파우트(Spout)와 볼트(Bolt)로 구성된다. As shown in FIG. 2, the Apache Storm expresses a series of operations from input to output of data in a topology when processing a work. The topology consists of a spout and a bolt.

먼저, 스파우트는 스트리밍 데이터의 발생지로부터 데이터를 입력 받아 Storm에서 사용하는 데이터 형태인 튜플(Tuple)로 바꾸어 볼트에게 전달한다.First, the spout receives data from the source of the streaming data, converts it into a tuple, which is the data type used by Storm, and sends it to the vault.

다음으로, 볼트는 스파우트로부터 전달 받은 데이터를 처리하여 다음 볼트로 전달하거나, 결과를 출력 또는 저장 장치로 보낸다. Next, the bolt processes the data received from the spout and transfers it to the next bolt, or sends the result to the output or storage device.

일반적으로 Storm은 튜플 단위로 작업을 처리하는데, 이 방식으로는 집계나 그룹핑 등의 연산을 처리하기 어렵다. 이를 해결하기 위해 Storm은 고수준 추상화 기술인 트라이덴트(Trident)를 제공한다. 트라이덴트는 튜플을 일정량 모아 윈도우 단위로 처리하는 방식을 사용하며, 이를 통해 JOIN, AGGREGATION, GROUPING, FUNCTION, FILTER 등의 연산을 수행할 수 있다. 그래서, 윈도우 단위로 단어의 수를 계산하기 위해 튜플 단위 연산이 아닌 트라이덴트를 사용한다.In general, Storm handles tasks in tuples, which makes it difficult to process operations such as aggregation and grouping. To solve this problem, Storm provides a high-level abstraction technology called Trident. Trident compiles a set of tuples and processes them on a window-by-window basis, and can perform operations such as JOIN, AGGREGATION, GROUPING, FUNCTION, and FILTER. So, to calculate the number of words on a per-window basis, we use a trident rather than a tuple-based operation.

트위터의 비공식 자바 API인 Twitter4J는 트위터로부터 데이터를 가져오는데 많이 사용되는 방식으로, 이 중 스트리밍 API를 사용하면 트위터 사용자들이 게시한 글을 실시간으로 가져올 수 있다. Twitter4J를 통해 가져온 데이터에는 ID, 지역 등의 사용자 정보, 글 번호, 글 내용 등의 게시글 정보, 댓글 정보, 리트윗(retweet) 정보 등 다양한 정보가 포함되어 있다. Twitter's unofficial Java API, Twitter4J, is a popular method for retrieving data from Twitter, and streaming APIs allow you to retrieve articles posted by Twitter users in real time. Data imported via Twitter4J includes various information such as user information such as ID and area, post information such as article number, article contents, comment information, retweet information, and the like.

현재 트위터 데이터를 사용한 시각화 기술의 연구가 활발하며, 대부분 트위터 데이터의 분석 결과를 차트, 지도, 태그 클라우드 등의 다양한 방법으로 시각화한다. Currently, research on visualization technology using Twitter data is actively conducted, and most of the results of Twitter data are visualized by various methods such as chart, map, and tag cloud.

도 3은 트위터 데이터를 사용한 다양한 시각화 기술을 보여주는 도면이다. 3 is a diagram showing various visualization techniques using twitter data.

도 3에서 (a)의 Followthehashtag는 사용자 키워드와 관련된 트위터 데이터의 통계 분석 결과를 차트, 지도 등을 이용해 시각화하지만, 실시간이 아닌 일정 기간의 배치 단위로 제공한다. In (a) of FIG. 3, Followthhashtag visualizes the statistical analysis result of the Twitter data related to the user's keyword by using a chart, a map, etc., but provides it as a batch unit for a certain period rather than real time.

(b)의 TweetStats는 특정 사용자의 트위터 데이터를 분석한 통계 결과를 그래프로 시각화한다. 그러나, Followthehashtag와 마찬가지로 사용자의 모든 데이터를 배치로 분석하며, 검색 요청 후 오랜 대기 시간을 요구한다. In (b), TweetStats visualizes the statistical results of a particular user's Twitter data as a graph. However, like Followthehashtag, it analyzes all the data of the user in batches and requires long waiting time after the search request.

(c)의 TwitterMap은 키워드를 포함하는 트윗의 지역 정보를 기반으로 지도에 시각화한다. 현재 지역, 기간 등의 검색이 가능하나 시각화 이외의 기능은 없으며 속도가 매우 느리다는 단점이 있다.The TwitterMap in (c) visualizes on the map based on the local information of the tweets that contain the keywords. You can search the current region, period, etc., but there is no function other than visualization, and it has a disadvantage that it is very slow.

도 4는 기존 트위터 태그 클라우드 기술을 도시한 도면이다. 4 is a diagram illustrating a conventional tweeter tag cloud technology.

도 4를 참조하면, 트위터의 태그 클라우드 시각화 기술에는 (a) trends24.in, (b) Cloud.li, (c) TwitterSheep, (d) sentiment viz 등이 있다. Referring to FIG. 4, there are (a) trends24.in, (b) Cloud.li, (c) TwitterSheep, and (d) sentiment viz.

먼저, treands24.in은 일일 단위의 배치로 각 나라 별 태그 클라우드를 제공한다. Cloud.li는 키워드가 포함되거나 제외된 트윗의 각 단어를 사용하여 실시간으로 시각화하지만, 현재는 운영되지 않는다. TwitterSheep은 타 사용자의 글을 구독하는 팔로워(follower)의 약력을 기반으로 태그 클라우드를 시각화하며, 마찬가지로 현재는 운영되지 않는다. 다음으로, sentiment viz는 키워드를 포함하는 약 5분 간의 트윗을 기반으로 시각화하는데, 태그 클라우드는 단어의 성향에 따라 화난(upset), 행복한(happy), 안정된(releaxed), 불행한(unhappy)으로 나누어 시각화한다. 그 외에 Potwiture는 사용자가 작성한 트윗에 적합한 사진을 제공하며, Tori's Eye는 키워드를 포함하는 트윗을 검색하는 기능을 갖는다.First, treands24.in provides the tag cloud for each country in batches on a daily basis. Cloud.li visualizes in real time using each word in a tweet that contains or excludes keywords, but it is not currently running. TwitterSheep visualizes the tag cloud based on the bio of the follower who subscribes to other users' posts, and likewise is not currently running. Next, sentiment viz is visualized based on tweets about 5 minutes including keywords. Tag cloud is divided into upset, happy, releaxed and unhappy according to the tendency of words. Visualize. In addition, Potwiture provides the appropriate photos for the tweets you create, and Tori's Eye has the ability to search for tweets that contain keywords.

다양한 시각화 기술 중에서도 태그 클라우드 기술은 문서 집합으로부터 특정 단어의 빈도수를 시각적으로 표현하는데 매우 유용하다. 초기의 태그 클라우드 연구는 문서 집합에 존재하는 단어들을 발생순, 단어순, 빈도순 등의 순서로 나열하고 빈도 수에 따라 단어의 크기를 다르게 나타내었다. 그러나, 이러한 방법은 빈도에 상관없이 모든 단어가 같은 공간을 차지하며, 단어가 많아짐에 따라 빈 공간이 넓어져 높은 빈도를 갖는 단어의 직관성이 낮아진다. 이를 개선하기 위해 전체 공간을 단어의 빈도 수에 따라 나누어 태그 클라우드를 표현하는 연구가 수행되었으나, 모든 단어의 방향이 수평형으로 같기 때문에 단어 사이의 공백이 크다는 단점이 있다.Of the various visualization techniques, tag cloud technology is very useful for visually representing the frequency of certain words from a set of documents. In the initial tag cloud study, the words in the document set are listed in order of occurrence, word order, and frequency, and word sizes are shown differently according to the frequency. However, in this method, all the words occupy the same space irrespective of the frequency, and as the number of words increases, the empty space becomes wider and the intuitiveness of words having a higher frequency becomes lower. In order to improve this, a study has been conducted to express the tag cloud by dividing the whole space according to the frequency of the word, but the disadvantage is that the space between the words is large because all the words have the same direction.

대한민국 등록특허 10-1060487Korean Patent No. 10-1060487

본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 비정형 데이터의 변화를 실시간으로 시각적으로 확인할 수 있는 동적 태그 클라우드 시스템 및 방법을 제공하는데 그 목적이 있다.SUMMARY OF THE INVENTION It is an object of the present invention to provide a dynamic tag cloud system and method capable of visually confirming a change of unstructured data in real time in order to solve the above problems.

본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The objects of the present invention are not limited to the above-mentioned objects, and other objects not mentioned can be clearly understood by those skilled in the art from the following description.

이와 같은 목적을 달성하기 위한 본 발명은 클라이언트와 서버를 포함하는 동적 태그 클라우드 시스템에서의 동적 태그 클라우드 방법에 있어서, 상기 클라이언트 측에서 사용자로부터 하나 이상의 키워드가 입력되면, 해당 사용자의 세션 ID와 키워드를 서버 측으로 전송하는 단계, 상기 서버는 전달받은 상기 세션 ID와 키워드를 데이터베이스에 저장하는 단계, 상기 서버는 상기 데이터베이스에서 주기적으로 모든 키워드들을 검색하는 단계, 상기 서버는 키워드들이 포함된 데이터를 수집하는 키워드 필터링을 수행하는 단계, 상기 서버는 수집한 데이터로부터 해시태그를 추출하고, 추출된 해시태그의 수를 집계하는 단계 및 상기 서버는 세션 ID를 사용하여 사용자를 구분하고, 각 사용자에게 태그 클라우드를 시각화하여 제공하는 단계를 포함한다. According to another aspect of the present invention, there is provided a method for dynamic tag cloud in a dynamic tag cloud system including a client and a server, wherein when one or more keywords are input from a user on the client side, Storing the received session ID and keyword in a database, the server periodically searching all the keywords in the database, and the server retrieving keywords including keywords The server extracts a hash tag from the collected data, and counts the number of extracted hash tags. The server identifies the user using the session ID, and visualizes the tag cloud to each user .

상기 동적 태그 클라우드 시스템은 트위터 데이터를 대상으로 시각화를 수행하며, 스파우트와 볼트로 구성된 토폴로지로 표현되는 아파치 스톰을 기반으로 상기 트위터를 실시간 데이터 처리하고, 상기 아파치 스톰은 트라이덴트를 사용하여 데이터를 처리하며, 상기 키워드 검색 단계에서, 스파우트는 폴링 방식으로 상기 데이터베이스에서 주기적으로 모든 키워드들을 검색할 수 있다. The dynamic tag cloud system performs real-time data processing on the tweeter based on the Apache storm represented by a topology composed of a spout and a bolt, performs visualization on twitter data, and the Apache storm processes data using a trident In the keyword search step, the spout may periodically search all the keywords in the database in a polling manner.

상기 아파치 스톰 토폴로지에서 상기 해시태그를 추출하고, 추출된 해시태그의 수를 집계하는 단계를 수행하되, 스파우트는 트위터로부터 데이터베이스에 저장된 키워드들이 포함된 트윗들을 필터링하는 단계와, 스파우트로부터 필터링된 트윗에서 해시태그를 추출하는 단계와, 윈도우 ID 및 해시태그를 키(key)로 그룹핑하고, 각 키에 대한 집계를 수행하는 단계와, 윈도우 ID 내의 모든 해시태그들을 집계하는 단계로 수행될 수 있다.Extracting the hashtags from the Apache storm topology and counting the number of extracted hashtags, wherein the spout comprises: filtering tweets containing keywords stored in a database from tweeter; Extracting a hash tag, grouping a window ID and a hash tag into a key, performing an aggregation for each key, and aggregating all the hash tags in the window ID.

본 발명의 동적 태그 클라우드 시스템은 사용자로부터 하나 이상의 키워드가 입력되면, 해당 사용자의 세션 ID와 키워드를 서버 측으로 전송하는 클라이언트 및 전달받은 상기 세션 ID와 키워드를 데이터베이스에 저장하고, 상기 데이터베이스에서 주기적으로 모든 키워드들을 검색하고, 키워드들이 포함된 데이터를 수집하는 키워드 필터링을 수행하고, 수집한 데이터로부터 해시태그를 추출하고, 추출된 해시태그의 수를 집계하고, 세션 ID를 사용하여 사용자를 구분하고, 각 사용자에게 태그 클라우드를 시각화하여 제공하는 서버를 포함한다.The dynamic tag cloud system of the present invention stores a client transmitting a session ID and a keyword of a corresponding user to the server and the received session ID and a keyword in a database when one or more keywords are inputted from a user, Keywords are searched, keywords are filtered to collect the data including the keywords, the hashtags are extracted from the collected data, the number of extracted hashtags is counted, the users are classified using the session ID, And a server that visualizes and provides the tag cloud to the user.

상기 동적 태그 클라우드 시스템은 트위터 데이터를 대상으로 시각화를 수행하며, 스파우트와 볼트로 구성된 토폴로지로 표현되는 아파치 스톰을 기반으로 상기 트위터를 실시간 데이터 처리하고, 상기 아파치 스톰은 트라이덴트를 사용하여 데이터를 처리하며, 스파우트는 폴링 방식으로 상기 데이터베이스에서 주기적으로 모든 키워드들을 검색할 수 있다.The dynamic tag cloud system performs real-time data processing on the tweeter based on the Apache storm represented by a topology composed of a spout and a bolt, performs visualization on twitter data, and the Apache storm processes data using a trident And the spout can periodically search all the keywords in the database in a polling manner.

상기 아파치 스톰 토폴로지에서 상기 해시태그를 추출하고, 추출된 해시태그의 수를 집계하되, 스파우트는 트위터로부터 데이터베이스에 저장된 키워드들이 포함된 트윗들을 필터링하고, 스파우트로부터 필터링된 트윗에서 해시태그를 추출하고, 윈도우 ID 및 해시태그를 키(key)로 그룹핑하고, 각 키에 대한 집계를 수행하고, 윈도우 ID 내의 모든 해시태그들을 집계할 수 있다.Extracting the hashtags from the Apache storm topology and counting the number of extracted hashtags, wherein the spout filters tweets including keywords stored in the database from tweeter, extracts the hashtags from the tweets filtered from the spout, Grouping the window ID and the hash tag into a key, performing an aggregation for each key, and aggregating all the hash tags within the window ID.

본 발명의 일 실시예에서 상기 동적 태그 클라우드 시스템은 상기 아파치 스톰에서 주기적으로 집계되는 해시태그와 그 수를 비동기적으로 사용자에게 제공하기 위한 웹 소켓을 더 포함하고, 세션이 종료되면, 상기 데이터베이스에서 해당 세션이 삭제되고, 상기 아파치 스톰에서 데이터가 집계되면 데이터에 포함된 키워드를 기반으로 상기 데이터베이스에서 세션 ID를 검색하고, 상기 웹 소켓을 검색된 세션 ID를 기반으로 사용자를 구분하여 각 세션 ID에 해당하는 사용자에게 태그 클라우드를 시각화하여 제공할 수 있다.In one embodiment of the present invention, the dynamic tag cloud system further includes a hash tag periodically aggregated in the Apache storm and a web socket for asynchronously providing the number of hash tags to a user, and when the session ends, When the session is deleted and the data is aggregated in the Apache storm, the session ID is searched in the database based on the keyword included in the data, and the web socket is classified into the session ID To provide a visualization of the tag cloud to the user.

본 발명에 의하면, 기존 시각화 기술로는 표현이 어려운 비정형 데이터의 변화를 실시간으로 확인할 수 있다는 효과가 있다. 특히, 트위터 데이터의 실시간 수집/처리를 위해 아파치 스톰(Apache Storm)의 기능적 특성을 최대한 활용하여 분석 환경을 구축한다. According to the present invention, it is possible to check the change of the unstructured data, which is difficult to express with existing visualization technology, in real time. Especially, we build the analysis environment by making full use of the functional characteristics of Apache Storm for real-time collection / processing of Twitter data.

또한, 본 발명은 기존 태그 클라우드의 한계점을 개선하여 실시간, 동적 태그 클라우드 시각화 방법을 새롭게 제시한다는 효과가 있다. 즉, 본 발명은 실시간으로 변화하는 사회 이슈를 파악하고, 특정 주제에 대한 반응 및 의견을 분석하고, 예측하지 못한 돌발적 상황에 대한 정보를 수집하는 등 다양한 동적 분석 환경에 활용할 수 있다. In addition, the present invention has the effect of newly providing a real-time, dynamic tag cloud visualization method by improving the limitations of the existing tag cloud. That is, the present invention can be applied to various dynamic analysis environments such as grasping social issues changing in real time, analyzing responses and opinions on specific topics, collecting information on unexpected unexpected situations, and the like.

도 1은 Apache Storm의 동작 구조를 나타낸 도면이다.
도 2는 Apache Storm의 토폴로지를 도시한 도면이다.
도 3은 트위터 데이터를 사용한 다양한 시각화 기술을 보여주는 도면이다.
도 4는 기존 트위터 태그 클라우드 기술을 도시한 도면이다.
도 5는 태그 클라우드의 대표적인 예를 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 키워드를 입력 받는 첫 번째 웹 페이지의 예시 화면예이다.
도 7은 본 발명의 일 실시예에 다른 태그 클라우드 시각화를 위한 결과 페이지의 예시도이다.
도 8은 본 발명의 일 실시예에 따른 다양한 태그 클라우드를 예시한 것이다.
도 9는 본 발명의 일 실시예에 따른 동적 태그 클라우드 시스템의 전체 구조도이다.
도 10은 본 발명의 일 실시예에 따른 해시태그 집계를 위한 트라이덴트 토폴로지의 설계도이다.
도 11은 토폴로지가 웹 서버에게 전달하는 데이터의 예시도이다.
도 12는 본 발명의 일 실시예에 따른 트윗 필터링을 위한 트라이덴트 스파우트 알고리즘이다.
도 13은 본 발명의 일 실시예에 따른 동적 태그 클라우드 시스템에 사용된 데이터베이스의 ER 다이어그램이다.
1 is a diagram showing an operation structure of Apache Storm.
2 is a diagram showing a topology of Apache Storm.
3 is a diagram showing various visualization techniques using twitter data.
4 is a diagram illustrating a conventional tweeter tag cloud technology.
5 is a diagram showing a representative example of a tag cloud.
6 is an example screen image of a first web page that receives a keyword according to an embodiment of the present invention.
7 is an exemplary diagram of a result page for tag cloud visualization in accordance with an embodiment of the present invention.
Figure 8 illustrates various tag clouds in accordance with an embodiment of the present invention.
9 is an overall structure diagram of a dynamic tag cloud system according to an embodiment of the present invention.
10 is a schematic diagram of a trident topology for hash tag aggregation according to an embodiment of the present invention.
11 is an exemplary diagram of data that the topology delivers to the web server.
12 is a trident spurt algorithm for tweet filtering according to an embodiment of the present invention.
13 is an ER diagram of a database used in a dynamic tag cloud system according to an embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the invention is not intended to be limited to the particular embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the terms "comprises" or "having" and the like are used to specify that there is a feature, a number, a step, an operation, an element, a component or a combination thereof described in the specification, But do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 갖는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the contextual meaning of the related art and are to be interpreted in an ideal or overly formal sense unless expressly defined in the present application Do not.

또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.In the following description of the present invention with reference to the accompanying drawings, the same components are denoted by the same reference numerals regardless of the reference numerals, and redundant explanations thereof will be omitted. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the following description, well-known functions or constructions are not described in detail since they would obscure the invention in unnecessary detail.

본 발명은 SNS 데이터의 시각화에 중점을 둔다. 빅데이터의 시각화 기술에는 데이터를 수치적으로 표현하는 단순 차트 및 그래프뿐만 아니라, 개체들의 관계를 나타내는 다이어그램이나 트리, 분포를 알 수 있는 히트맵 등이 있다. 이 중, 태그 클라우드는 단어들을 나열하여 구름 형태로 시각화하는 기술로, 단어의 빈도수에 따라 색이나 크기를 다르게 표현하기 때문에 비중 있는 단어를 좀 더 직관적으로 파악할 수 있다. The present invention focuses on the visualization of SNS data. Visualization techniques of Big Data include not only simple charts and graphs that numerically represent data but also diagrams and trees that show the relationship of objects, and heat maps that show distribution. Among them, Tag Cloud is a technique to visualize words in a cloud form. By expressing color or size differently according to the frequency of words, it is possible to grasp more specific words more intuitively.

도 5는 태그 클라우드의 대표적인 예를 나타낸 도면이다. 5 is a diagram showing a representative example of a tag cloud.

일반적인 태그 클라우드 기술은 고정된 문서 집합에서 단어 수를 계산하여 시각화하는 방식이다. 그러나, 이러한 방법으로는 실시간으로 생성되는 SNS 데이터의 변화를 즉각적으로 표현하는데 제약이 따른다.A common tag cloud technology is to visualize the number of words in a fixed set of documents. However, this method has a limitation in instantly expressing the change of the SNS data generated in real time.

SNS 데이터의 변화를 직관적으로 표현하기 위해, 본 발명은 실시간 데이터 처리 환경을 활용한 동적 시각화 기술을 제안한다. 즉, 여러 SNS 중 트위터 데이터를 대상으로 시각화를 수행하며, 해당 데이터의 수집분석을 위해 아파치 스톰(Apache Storm) 기반 구현 및 실험 환경을 구축한다. In order to intuitively express the change of the SNS data, the present invention proposes a dynamic visualization technique utilizing a real-time data processing environment. That is, visualization is performed on twitter data among several SNSs, and an implementation and experiment environment based on Apache Storm is constructed to collect and analyze the data.

아파치 스톰(Apache Storm)은 다수의 서버로 구성된 클러스터에서 실시간으로 수집되는 데이터를 분산 처리하는 오픈 소스 플랫폼이다. 특히, 아파치 스톰(Apache Storm)은 기존 하둡의 맵리듀스(MapReduce)에 비해 데이터 수집처리 속도가 빠르기 때문에 트위터, 야후, 바이두 등에서 빅데이터 스트림 처리에 활용하고 있다. Apache Storm is an open source platform that distributes data collected in real time on a cluster of servers. In particular, the Apache Storm is used for processing big data streams on Twitter, Yahoo, and Baidu because it has a faster data collection speed than MapReduce in Hadoop.

또한, 본 발명에서는 아파치 스톰(Apache Storm)과 더불어, 전체 시스템의 사용 편의를 위해 시각화 주제 입력 및 분석 결과 확인을 위한 웹 인터페이스를 설계 및 구현한다. 이를 통해 사용자는 시각화 주제에 따라 실시간으로 변화하는 동적 태그 클라우드를 확인할 수 있다.In addition to the Apache Storm, the present invention designs and implements a web interface for inputting a visualization topic and confirming analysis results for ease of use of the entire system. This allows users to see dynamic tag clouds that change in real time based on visualization themes.

최근 웹을 기반으로 데이터 시각화를 지원하기 위해 다양한 자바스크립트 라이브러리가 등장했다. 특히, D3.js에서 제공하는 태그 클라우드는 단어 사이의 공백에 맞게 단어를 회전하여 태그 클라우드를 표현한다. 이 방법을 이용하면 단어가 서로 겹치지 않으면서 단어 사이의 공백을 최소화할 수 있다. 본 발명에서는 이러한 D3.js의 태그 클라우드 라이브러리를 사용한다. Recently, a variety of JavaScript libraries have emerged to support data visualization based on the Web. In particular, the tag cloud provided by D3.js expresses the tag cloud by rotating the word according to the space between words. With this method, you can minimize the space between words without overlapping words. The tag cloud library of D3.js is used in the present invention.

본 발명에서 제안하는 시스템은 사용자 인터페이스를 위해 두 개의 웹 페이지를 구성한다. 첫 번째 페이지는 사용자로부터 키워드를 입력 받으며, 두 번째 페이지는 아파치 스톰 토폴로지로부터 주기적으로 단어와 그 수를 받아 태그 클라우드로 시각화한다.The system proposed in the present invention constitutes two web pages for a user interface. The first page receives keywords from the user, and the second page periodically receives words and numbers from the Apache storm topology and visualizes them in the tag cloud.

도 6은 본 발명의 일 실시예에 따른 키워드를 입력 받는 첫 번째 웹 페이지의 예시 화면예이다. 6 is an example screen image of a first web page that receives a keyword according to an embodiment of the present invention.

도 6을 참조하면, 키워드가 탭(tab) 또는 콤마(,) 키로 구분하여 입력되면 리스트에 추가되며, 이는 공백으로 구분된 여러 단어를 하나의 키워드로 구분할 수 있도록 한다. Referring to FIG. 6, when a keyword is divided by a tab or a comma (,) key, the keyword is added to the list, which allows multiple words separated by a blank to be separated into one keyword.

사용자가 키워드를 모두 입력하면 검색(search) 버튼을 눌러 다음 페이지로 이동할 수 있다. 검색 버튼을 클릭하면 키워드 리스트가 서버에 전송되며, 아파치 스톰 토폴로지가 주기적으로 처리한 윈도우를 두 번째 페이지에서 시각화한다. 예를 들어, 본 발명에서 5초 단위로 윈도우를 처리하도록 스파우트의 윈도우 시간을 설정할 수 있다.When the user enters all the keywords, the user can go to the next page by pressing the search button. Clicking the Search button sends a list of keywords to the server and visualizes the window periodically processed by the Apache Storm Topology on the second page. For example, in the present invention, the window time of the spout can be set to process the window in units of 5 seconds.

도 7은 본 발명의 일 실시예에 다른 태그 클라우드 시각화를 위한 결과 페이지의 예시도이다. 즉, 도 7은 시각화를 위한 결과 페이지로, 예시를 위해 사용한 키워드는 “BigData, 빅데이터, Hadoop, 하둡, Real-time, Visualization, 시각화, Tag Cloud, 태그 클라우드”이다. 앞서 언급한 바와 같이, 본 발명에서는 태그 클라우드 시각화를 위해 D3.js 라이브러리를 사용한다. 7 is an exemplary diagram of a result page for tag cloud visualization in accordance with an embodiment of the present invention. 7 is a result page for visualization. The keywords used for illustration are "BigData, Big Data, Hadoop, Hadoop, Real-time, Visualization, Visualization, Tag Cloud, Tag Cloud". As mentioned above, in the present invention, the D3.js library is used for tag cloud visualization.

도 7 (a)는 두 번째 페이지의 초기 상태이며, 아직 처리 결과가 없어 태그 클라우드가 표현되지 않았다. 7 (a) is the initial state of the second page, and the tag cloud is not expressed because there is no processing result yet.

다음으로, 도 7(b)는 도 7(a)에서 5초가 지나 첫 번째 윈도우 데이터가 처리되어 태그 클라우드가 표현된 것이다. 첫 번째 윈도우 데이터에는 총 3 개의 단어가 입력되었으며, 단어 “BigData”는 다른 단어에 비해 가중치가 높아 더 큰 글자로 표현되었다. Next, FIG. 7 (b) shows the tag cloud processed by processing the first window data after 5 seconds in FIG. 7 (a). A total of three words were entered in the first window data, and the word "BigData" was weighted higher than the other words and expressed in larger letters.

그리고, 도 7(c)는 도 7(b)에서 5초가 지나 두 번째 윈도우 데이터가 처리되어 태그 클라우드가 변경된 것으로, 두 번째 처리에서는 5 개의 단어가 추가로 입력되었다. 7 (c) shows that the second window data is processed after five seconds in FIG. 7 (b), and the tag cloud is changed. In the second process, five words are further input.

도 7(d)와 7(e)는 계속해서 데이터가 처리되어 더 많은 단어가 시각화되었고, 각각 단어 “Analytics”가 추가로 입력되어 더 큰 글자로 표현되었다. Figures 7 (d) and 7 (e) continue to process the data and visualize more words, each with the additional word " Analytics "

마지막으로 도 7(f)는 10분의 시간 동안 시각화된 태그 클라우드이다. 이 중 단어 “BigData”의 가중치가 가장 높기 때문에 가장 큰 글자로 표현되었으며, 계속해서 윈도우가 처리되므로 이는 향후 변경될 수 있다.Finally, Figure 7 (f) is a tag cloud visualized for a 10 minute time period. Of these, the word "BigData" has the highest weight and is therefore represented by the largest character, which can be changed in the future as the window continues to be processed.

도 8은 본 발명의 일 실시예에 따른 다양한 태그 클라우드를 예시한 것이다. 도 8은 다른 키워드를 사용하여 20분 간 시각화한 결과로서, (a)는 자동차 제조 업체의 태그 클라우드이고, (b)는 모바일 기기 제조 업체의 태그 클라우드이다. Figure 8 illustrates various tag clouds in accordance with an embodiment of the present invention. FIG. 8 shows a result of 20 minutes visualization using different keywords, wherein (a) is the tag cloud of the automobile manufacturer, and (b) is the tag cloud of the mobile device manufacturer.

도 8 (a)의 태그 클라우드를 위해 사용한 키워드는 자동차 제조 업체인 “Toyota, Volkswagen, Mercedes-Benz, BMW, Hyundai, Ford, Kia, Volvo, Nissan, Ferrari, Lamborghini, Chevrolet”이며, 수집된 단어 중 “ParisMotorShow”가 가장 많은 빈도수를 나타냈다. The keywords used for the tag cloud of FIG. 8 (a) are the car manufacturers "Toyota, Volkswagen, Mercedes-Benz, BMW, Hyundai, Ford, Kia, Volvo, Nissan, Ferrari, Lamborghini, Chevrolet" "ParisMotorShow" showed the most frequency.

다음으로 도 8 (b)의 키워드로 모바일 기기 제조 업체인 “Samsung, Apple, LG, Huawei, Lenovo, Xiaomi, Motorola, HTC”를 사용하였으며, 단어 “Apple”이 가장 많은 빈도수를 나타냈다.Next, as the keyword in FIG. 8 (b), the mobile device manufacturers "Samsung, Apple, LG, Huawei, Lenovo, Xiaomi, Motorola and HTC" were used and the word "Apple"

이상에서 확인한 바와 같이 본 발명에서 제안하는 시스템은 트위터로부터 해시태그를 수집하여 태그 클라우드로 시각화한다. 또한, 본 발명은 태그가 수집될 때마다 태그 클라우드의 동적인 변화가 가능하며, 여러 사용자가 입력한 키워드를 동시에 처리하여 서로 다른 시각화 결과를 각 사용자에게 제공한다. 따라서, 본 발명에서 제안하는 실시간 동적 태그 클라우드 시스템은 주제에 따른 트렌드를 실시간으로 분석하기에 실용적으로 유용하다. As described above, the system proposed in the present invention collects hash tags from tweeters and visualizes them as tag clouds. In addition, the present invention can dynamically change the tag cloud every time a tag is collected, and simultaneously processes the keywords input by a plurality of users to provide different visualization results to each user. Therefore, the real-time dynamic tag cloud system proposed by the present invention is useful for real-time analysis of trends according to a subject.

도 9는 본 발명의 일 실시예에 따른 동적 태그 클라우드 시스템의 전체 구조도이다. 9 is an overall structure diagram of a dynamic tag cloud system according to an embodiment of the present invention.

도 9를 참조하면, 본 발명의 일 실시예에 따른 동적 태그 클라우드 시스템은 웹 소켓(Web socket)을 기준으로 위는 클라이언트이고, 아래는 서버의 형태로 구성되어 있다. 이와 같은 클라이언트-서버 구조를 채택한 이유는 다양한 키워드를 서로 다른 사용자로부터 받아 아파치 스톰 클러스터에서 분석하고, 각 사용자에게 결과를 제공하기 위함이다. Referring to FIG. 9, the dynamic tag cloud system according to an embodiment of the present invention is a client on the basis of a Web socket, and a server in the following. The reason for adopting such a client-server structure is that various keywords are received from different users in the Apache Storm cluster, and the results are provided to each user.

본 발명의 동적 태그 클라우드 시스템에서 기본적으로 사용자는 자신이 원하는 키워드를 입력하고, 그 결과를 실시간으로 변하는 태그 클라우드로 제공받게 된다In the dynamic tag cloud system of the present invention, the user basically inputs a desired keyword and receives the result as a tag cloud that changes in real time

도 9에 예시된 동작 절차를 사용자 중심으로 자세히 설명하면 다음과 같다.The operation procedure illustrated in FIG. 9 will be described in detail with respect to the user.

(1) 키워드 입력(Input keywords): 동적 태그 클라우드 시스템에 사용자가 키워드를 입력한다. 입력한 키워드는 트위터 스트리밍 데이터 중에서 이 키워드를 포함하는 트윗을 필터링하는 목적으로 사용된다.(1) Input keywords: The user enters keywords into the dynamic tag cloud system. The entered keyword is used to filter tweets that include this keyword among the twitter streaming data.

(2) 세션 ID 입력 및 키워드 전송(Insert session id and keywords): 사용자가 하나 이상의 키워드를 입력하여 검색 버튼을 클릭하면, 사용자의 세션 ID와 키워드들이 서버에 전송된다. 세션 ID는 추후 시각화에서 사용자를 구분하는데 사용된다. 웹 소켓 서버는 전달받은 세션 ID와 키워드들을 데이터베이스에 저장한다.(2) Insert session id and keywords: When the user inputs one or more keywords and clicks the search button, the user's session ID and keywords are transmitted to the server. The session ID is used to identify users in later visualizations. The Web Socket Server stores the session ID and keywords that it receives in the database.

(3) 키워드 검색(Select keywords): 스파우트는 폴링(polling) 방식으로 데이터베이스에서 주기적으로 모든 키워드들을 검색한다. 이로써 사용자의 입력과 토폴로지는 비동기적으로 동작한다.(3) Select keywords: Spout searches all the keywords periodically in the database by polling method. This allows the user's input and topology to operate asynchronously.

(4) 키워드 필터링(Filter Tweet keywords): 스파우트는 Twitter4J를 통해 키워드들을 필터링한다. 즉, 트위터로부터 키워드가 포함된 트윗 만을 실시간으로 수집한다.(4) Filter Tweet keywords: Spout filters keywords through Twitter4J. In other words, only tweets that contain keywords from Twitter are collected in real time.

(5) 해시태그 추출(Extract hashtags): 수집한 트윗으로부터 해시태그를 추출한다.(5) Extract hashtags: Extract hashtags from collected tweets.

(6) 집계(Aggregate): 해시태그의 수를 집계한다.(6) Aggregate: Aggregate the number of hash tags.

(7) 해시태그 전달(Send hashtags): 집계한 해시태그를 웹 서버로 전달한다.(7) Send hashtags: Pass the aggregated hashtags to the web server.

(8) 시각화(Visualize tag cloud): 세션 ID를 사용하여 사용자를 구분하고, 각 사용자에게 태그 클라우드를 시각화하여 제공한다.(8) Visualize tag cloud: Use the session ID to distinguish users and visualize the tag cloud for each user.

도 9의 시스템 구조에서의 핵심은 태그를 집계하는 부분과 이를 시각화하는 부분이다. 따라서, 트윗을 수집하고 해시태그를 집계하는 아파치 스톰 토폴로지를 설명하고, 사용자 관리 및 태그 클라우드의 시각화를 위한 웹 서버 및 데이터베이스를 설명하기로 한다. The core of the system structure of FIG. 9 is the portion that aggregates the tag and the portion that visualizes it. Therefore, we will describe the Apache storm topology that collects tweets and aggregates hash tags, and describes the web server and database for user management and tag cloud visualization.

본 발명의 일 실시예에서 일반적인 아파치 스톰이 아닌 트라이덴트를 사용한다. 이는 본 발명에서 제안하는 시스템에서 수집한 해시태그들을 일정 시간마다 윈도우 형태로 집계하기 위함이다. In one embodiment of the present invention, a non-Apache storm is used. This is because the hash tags collected by the system proposed by the present invention are aggregated in window form at predetermined time intervals.

도 10은 본 발명의 일 실시예에 따른 해시태그 집계를 위한 트라이덴트 토폴로지의 설계도이다.10 is a schematic diagram of a trident topology for hash tag aggregation according to an embodiment of the present invention.

도 10을 참조하면, 토폴로지는 데이터베이스에 저장된 사용자들의 키워드로 트윗을 필터링하고, 각 윈도우 별로 트윗의 해시태그를 집계한다.Referring to FIG. 10, the topology filters tweets using keywords of users stored in the database, and compiles hash tags of tweets for each window.

도 10의 각 단계에 대한 자세한 설명은 다음과 같다.The detailed description of each step in FIG. 10 is as follows.

(1) 트윗 필터링(Filter tweet): 스파우트는 트위터로부터 데이터베이스에 저장된 키워드들이 포함된 트윗들을 필터링한다. 이때, 일정 기간의 윈도우 단위로 데이터를 집계할 수 있도록 기간 내에 발생한 데이터는 동일한 윈도우 ID를 부여한다.(1) Filter tweet: Spout filters tweets that contain keywords stored in the database from twitter. At this time, the same window ID is assigned to the data generated within the period so as to aggregate data in units of windows of a certain period.

(2) 해시태크 추출(Extract hashtag): 스파우트로부터 필터링된 트윗에서 해시태그를 추출한다. 이때, 하나의 트윗에는 하나 이상의 해시태그가 포함될 수 있으며, 윈도우 ID, 해시태그, 트윗에 포함된 키워드의 리스트를 다음 트윗으로 전달한다.(2) Extract hashtag: Extract a hash tag from a tweet filtered from a spout. At this time, one tweet may include one or more hash tags, and the window ID, the hashtag, and the list of the keywords included in the tweet are transmitted to the next tweet.

(3) 해시태그 계산(Count hashtag): 윈도우 ID 및 해시태그를 키(key)로 그룹핑하고, 각 키에 대한 집계를 수행한다. 이 결과로 같은 윈도우 ID 내에서 해시태그와 그 수가 계산된다.(3) Count hashtag: Group the window ID and the hash tag into a key, and perform an aggregation for each key. As a result, hash tags and their number are calculated in the same window ID.

(4) 해시태그 집계(Bind hashtag and count): 윈도우 ID 내의 모든 해시태그들을 집계한다.(4) Bind hashtag and count: It compiles all the hash tags in the window ID.

(5) 전달(Submit batch): 앞서 집계한 윈도우를 웹 소켓을 통해 웹 서버로 전달한다. 이때 전달하는 데이터의 형태는 JSON을 사용할 수 있는데, 도 11은 이 데이터 구조를 표현한 예시이다. (5) Submit batch: Transfers the previously aggregated window to the web server via Web socket. At this time, JSON can be used as a type of data to be transmitted, and FIG. 11 is an example of expressing this data structure.

도 11은 토폴로지가 웹 서버에게 전달하는 데이터의 예시도이다. 11 is an exemplary diagram of data that the topology delivers to the web server.

도 11에서, 데이터는 data를 키로 하는 리스트 구조를 가지며, 내부에 단어(tag), 단어의 수(count), 키워드(keyword)가 저장된다. 도 11의 예시에서는 apple, banana, car의 해시태그가 각각 키워드 fruit, yellow, vehicle로 빈도수 5회, 3회, 2회 수집되었다.In Fig. 11, data has a list structure in which data is a key, and a tag, a count of words, and a keyword are stored therein. In the example of FIG. 11, the hash tags of apple, banana, and car are collected five times, three times, and two times as keywords fruit, yellow, and vehicle, respectively.

앞서 토폴로지 구성 단계 중 트윗 필터링(Filter tweet) 단계에서는 필터링된 트윗이 어떤 키워드로 필터링이 되었는지 알아야 한다. 이는 다수의 사용자 지원을 위한 것으로, 사용자 기준으로 입력 키워드를 구분하고, 각 키워드 별로 집계된 결과를 해당 사용자에게 올바르게 전달하기 위함이다. 그러나, 기존 트위터 API는 키워드 재추출 기능을 제공하지 않으므로 트윗의 재탐색이 필요하며, 이를 위해 본 발명에서는 스파우트에 관련 기능을 추가한다. During the topology configuration phase, in the Filter tweet phase, you need to know which keywords filtered the filtered tweets. This is to support a large number of users, to distinguish input keywords on the basis of the user, and to correctly transmit the aggregated result to each user. However, since the existing Twitter API does not provide a keyword re-extraction function, it is necessary to re-search for a tweet. To this end, the present invention adds a related function to the spout.

도 12는 본 발명의 일 실시예에 따른 트윗 필터링을 위한 트라이덴트 스파우트 알고리즘이다. 도 12의 알고리즘을 실제 스파우트 내의 emitBatch() 메서드에 구현할 수 있다. 12 is a trident spurt algorithm for tweet filtering according to an embodiment of the present invention. The algorithm of FIG. 12 can be implemented in the emitBatch () method in the actual spout.

도 12를 참조하면, 먼저 일정 기간의 윈도우를 위해 라인 2에서 시작 시간을 초기화하고, 라인 3에서 현재 시간과 시작 시간의 차가 윈도우 시간을 초과할 경우 반복을 종료한다. 다음으로, 라인 4에서 키워드를 기반으로 트윗을 필터링하고, 라인 5~9에서 트윗을 재탐색하여 트윗에 포함된 키워드를 다시 추출한다. Referring to FIG. 12, the start time is initialized in line 2 for a window of a certain period, and the repeat is terminated when the difference between the current time and the start time exceeds the window time in line 3. Next, filter the tweet based on the keyword in line 4, and re-search the tweet in lines 5 through 9 to re-extract the keywords contained in the tweet.

마지막으로, 라인 10은 윈도우 ID, 트윗, 트윗에 포함된 키워드의 리스트를 튜플로 묶어 볼트에게 전달한다. 이 알고리즘은 아파치 스톰 실행 시 끊임없이 반복되어 실시간으로 윈도우 데이터를 생성하며, 이후 단계에서 이를 처리하여 시각화를 수행한다.Finally, line 10 tuples the list of keywords contained in the window ID, tweets, and tweets and forwards them to the vault. This algorithm is continuously repeated when Apache Storm is executed and generates window data in real time, and processes it at a later stage to perform visualization.

본 발명에서 제안하는 동적 태그 클라우드 시스템은 아파치 스톰에서 주기적으로 집계되는 해시태그와 그 수를 비동기적으로 사용자에게 제공하기 위해 웹 소켓을 사용한다. 사용자들이 서로 다른 키워드를 입력하는 경우, 제공받는 해시태그 집계 결과 역시 달라진다. 따라서, 웹 소켓에서 사용자를 구분할 수 있는 방법이 필요하며, 본 발명에서는 이를 위해 사용자의 세션 ID를 이용한다.The dynamic tag cloud system proposed by the present invention uses hash tags periodically counted in Apache Storm and a web socket to provide the number of hash tags asynchronously to a user. When users enter different keywords, the results of the hash tag aggregation provided are also different. Therefore, a method for distinguishing a user from a web socket is required, and the present invention uses a session ID of the user for this purpose.

즉, 사용자가 키워드를 검색할 때 키워드와 함께 사용자의 세션 ID를 데이터베이스에 저장하고, 세션이 종료되면 데이터베이스에서 해당 세션을 삭제한다. 결과적으로, 아파치 스톰에서 윈도우 데이터가 집계되면 데이터에 포함된 키워드를 기반으로 데이터베이스에서 세션 ID를 검색하고, 세션 ID에 해당하는 사용자에게 결과를 제공하게 된다. That is, when a user searches for a keyword, the session ID of the user is stored in the database together with the keyword, and when the session ends, the session is deleted from the database. As a result, when the window data is aggregated in Apache Storm, it retrieves the session ID from the database based on the keywords contained in the data, and provides the result to the user corresponding to the session ID.

도 13은 본 발명의 일 실시예에 따른 동적 태그 클라우드 시스템에 사용된 데이터베이스의 ER 다이어그램이다. 13 is an ER diagram of a database used in a dynamic tag cloud system according to an embodiment of the present invention.

도 13을 참조하면, 테이블 keyword_tb는 사용자가 입력한 키워드와 그 키워드를 입력한 사용자의 수를 관리하고, 테이블 session_tb는 각 사용자의 세션 ID를 관리한다. 여기서, 한 사용자는 여러 키워드를 입력할 수 있으며, 하나의 키워드는 여러 사용자가 중복 입력할 수 있다. Referring to FIG. 13, the table keyword_tb manages the keyword entered by the user and the number of users who input the keyword, and the table session_tb manages the session ID of each user. Here, one user can input multiple keywords, and one keyword can be input by multiple users.

그리고, 테이블 session_keyword_tb는 이러한 키워드, 세션 간의 N:M 관계를 지원한다.The table session_keyword_tb supports the N: M relationship between these keywords and sessions.

기존 태그 클라우드 기술은 문서 내의 단어, 각 단어의 빈도수를 사용하여 시각화를 수행하지만, 본 발명에서 제안하는 동적 태그 클라우드 시스템에서는 아파치 스톰을 통해 지속적으로 윈도우 데이터의 빈도를 계산하고, 기존 태그 클라우드의 단어와 빈도수에 최신 결과를 반영하여 태그 클라우드를 수정한다. 이러한 방법을 통해 태그 클라우드는 일정 시간마다 동적으로 바뀌게 된다.However, in the dynamic tag cloud system proposed in the present invention, the frequency of window data is continuously calculated through the Apache storm, and the word of the existing tag cloud And correct the tag cloud to reflect the latest results in frequency. In this way, the tag cloud is dynamically changed at certain times.

이처럼, 본 발명에서 제안하는 동적 태그 클라우드 시스템은 아파치 스톰을 사용하여 SNS 데이터를 집계하고, 그 결과를 태그 클라우드로 시각화한다. 따라서 본 발명의 동적 태그 클라우드 시스템을 활용하면, 빠르게 발생하는 SNS 데이터에서 발생하는 여러 이슈 및 변화를 직관적으로 판단할 수 있게 된다.As described above, the dynamic tag cloud system proposed in the present invention aggregates the SNS data using the Apache storm and visualizes the result in the tag cloud. Therefore, by using the dynamic tag cloud system of the present invention, it is possible to intuitively determine various issues and changes occurring in the SNS data generated rapidly.

이상 본 발명을 몇 가지 바람직한 실시예를 사용하여 설명하였으나, 이들 실시예는 예시적인 것이며 한정적인 것이 아니다. 본 발명이 속하는 기술분야에서 통상의 지식을 지닌 자라면 본 발명의 사상과 첨부된 특허청구범위에 제시된 권리범위에서 벗어나지 않으면서 다양한 변화와 수정을 가할 수 있음을 이해할 것이다.While the present invention has been described with reference to several preferred embodiments, these embodiments are illustrative and not restrictive. It will be understood by those skilled in the art that various changes and modifications may be made therein without departing from the spirit of the invention and the scope of the appended claims.

Claims (7)

클라이언트와 서버를 포함하는 동적 태그 클라우드 시스템에서의 동적 태그 클라우드 방법에 있어서,
상기 클라이언트 측에서 사용자로부터 하나 이상의 키워드가 입력되면, 해당 사용자의 세션 ID와 키워드를 서버 측으로 전송하는 단계;
상기 서버는 전달받은 상기 세션 ID와 키워드를 데이터베이스에 저장하는 단계;
상기 서버는 상기 데이터베이스에서 주기적으로 모든 키워드들을 검색하는 단계;
상기 서버는 키워드들이 포함된 데이터를 수집하는 키워드 필터링을 수행하는 단계;
상기 서버는 수집한 데이터로부터 해시태그를 추출하고, 추출된 해시태그의 수를 집계하는 단계; 및
상기 서버는 세션 ID를 사용하여 사용자를 구분하고, 각 사용자에게 태그 클라우드를 시각화하여 제공하는 단계를 포함하는 동적 태그 클라우드 방법.
A dynamic tag cloud method in a dynamic tag cloud system including a client and a server,
When one or more keywords are inputted from a user on the client side, transmitting a session ID and a keyword of the user to the server side;
Storing the received session ID and keyword in a database;
The server periodically searching all the keywords in the database;
The server performing keyword filtering to collect data including keywords;
The server extracts a hash tag from the collected data, and counts the number of extracted hash tags. And
Wherein the server identifies users using a session ID and visualizes and provides a tag cloud to each user.
청구항 1에 있어서,
상기 동적 태그 클라우드 시스템은 트위터 데이터를 대상으로 시각화를 수행하며,
스파우트와 볼트로 구성된 토폴로지로 표현되는 아파치 스톰을 기반으로 상기 트위터를 실시간 데이터 처리하고,
상기 아파치 스톰은 트라이덴트를 사용하여 데이터를 처리하며,
상기 키워드 검색 단계에서, 스파우트는 폴링 방식으로 상기 데이터베이스에서 주기적으로 모든 키워드들을 검색하는 것을 특징으로 하는 동적 태그 클라우드 방법.
The method according to claim 1,
The dynamic tag cloud system performs visualization on twitter data,
Realtime data processing of the tweeter based on Apache Storm, which is represented by a topology composed of spout and bolt,
The Apache Storm processes the data using Trident,
Wherein, in the keyword search step, the spout searches all the keywords periodically in the database in a polling manner.
청구항 2에 있어서,
상기 아파치 스톰 토폴로지에서 상기 해시태그를 추출하고, 추출된 해시태그의 수를 집계하는 단계를 수행하되,
스파우트는 트위터로부터 데이터베이스에 저장된 키워드들이 포함된 트윗들을 필터링하는 단계와, 스파우트로부터 필터링된 트윗에서 해시태그를 추출하는 단계와, 윈도우 ID 및 해시태그를 키(key)로 그룹핑하고, 각 키에 대한 집계를 수행하는 단계와, 윈도우 ID 내의 모든 해시태그들을 집계하는 단계로 수행되는 것을 특징으로 하는 동적 태그 클라우드 방법.
The method of claim 2,
Extracting the hashtag from the Apache storm topology and counting the number of extracted hashtags,
The spout includes the steps of filtering tweets containing keywords stored in a database from a tweeter, extracting a hash tag from a tweet filtered from the spout, grouping the window ID and the hash tag into a key, Performing an aggregation, and aggregating all the hash tags within the window ID.
사용자로부터 하나 이상의 키워드가 입력되면, 해당 사용자의 세션 ID와 키워드를 서버 측으로 전송하는 클라이언트; 및
전달받은 상기 세션 ID와 키워드를 데이터베이스에 저장하고, 상기 데이터베이스에서 주기적으로 모든 키워드들을 검색하고, 키워드들이 포함된 데이터를 수집하는 키워드 필터링을 수행하고, 수집한 데이터로부터 해시태그를 추출하고, 추출된 해시태그의 수를 집계하고, 세션 ID를 사용하여 사용자를 구분하고, 각 사용자에게 태그 클라우드를 시각화하여 제공하는 서버를 포함하는 동적 태그 클라우드 시스템.
A client that transmits a session ID and a keyword of the user to the server when one or more keywords are input from the user; And
Storing the received session ID and keyword in a database, periodically searching all the keywords in the database, performing keyword filtering to collect data including keywords, extracting a hash tag from the collected data, A server that aggregates the number of hash tags, identifies users using session IDs, and provides each user with a visualized tag cloud.
청구항 4에 있어서,
상기 동적 태그 클라우드 시스템은 트위터 데이터를 대상으로 시각화를 수행하며,
스파우트와 볼트로 구성된 토폴로지로 표현되는 아파치 스톰을 기반으로 상기 트위터를 실시간 데이터 처리하고,
상기 아파치 스톰은 트라이덴트를 사용하여 데이터를 처리하며,
스파우트는 폴링 방식으로 상기 데이터베이스에서 주기적으로 모든 키워드들을 검색하는 것을 특징으로 하는 동적 태그 클라우드 시스템.
The method of claim 4,
The dynamic tag cloud system performs visualization on twitter data,
Realtime data processing of the tweeter based on Apache Storm, which is represented by a topology composed of spout and bolt,
The Apache Storm processes the data using Trident,
Wherein the spout searches all the keywords periodically in the database in a polling manner.
청구항 5에 있어서,
상기 아파치 스톰 토폴로지에서 상기 해시태그를 추출하고, 추출된 해시태그의 수를 집계하되,
스파우트는 트위터로부터 데이터베이스에 저장된 키워드들이 포함된 트윗들을 필터링하고, 스파우트로부터 필터링된 트윗에서 해시태그를 추출하고, 윈도우 ID 및 해시태그를 키(key)로 그룹핑하고, 각 키에 대한 집계를 수행하고, 윈도우 ID 내의 모든 해시태그들을 집계하는 것을 특징으로 하는 동적 태그 클라우드 시스템.
The method of claim 5,
Extracting the hashtag from the Apache storm topology, counting the number of extracted hashtags,
Spout filters tweets that contain keywords stored in the database from Twitter, extracts the hashtags from the tweets filtered from the spout, groups the window IDs and hashtags into keys, performs an aggregation on each key And aggregates all the hash tags within the window ID.
삭제delete
KR1020160159236A 2016-11-28 2016-11-28 Dynamic tag cloud system and method in real-time SNS data KR101900285B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160159236A KR101900285B1 (en) 2016-11-28 2016-11-28 Dynamic tag cloud system and method in real-time SNS data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160159236A KR101900285B1 (en) 2016-11-28 2016-11-28 Dynamic tag cloud system and method in real-time SNS data

Publications (2)

Publication Number Publication Date
KR20180060114A KR20180060114A (en) 2018-06-07
KR101900285B1 true KR101900285B1 (en) 2018-09-19

Family

ID=62621884

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160159236A KR101900285B1 (en) 2016-11-28 2016-11-28 Dynamic tag cloud system and method in real-time SNS data

Country Status (1)

Country Link
KR (1) KR101900285B1 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100786503B1 (en) * 2006-04-19 2007-12-17 주식회사 케이티 System for generating community by tagging of search information using sobot and contents transmitting method thereof
KR101060487B1 (en) 2007-11-19 2011-08-30 서울대학교산학협력단 Apparatus and method for content recommendation using tag cloud

Also Published As

Publication number Publication date
KR20180060114A (en) 2018-06-07

Similar Documents

Publication Publication Date Title
US11120344B2 (en) Suggesting follow-up queries based on a follow-up recommendation machine learning model
US11461320B2 (en) Determining a user-specific approach for disambiguation based on an interaction recommendation machine learning model
US10885026B2 (en) Translating a natural language request to a domain-specific language request using templates
US9672283B2 (en) Structured and social data aggregator
Padgavankar et al. Big data storage and challenges
US20140337328A1 (en) System and method for retrieving and presenting concept centric information in social media networks
US20160239763A1 (en) Motif recognition
US10713269B2 (en) Determining a presentation format for search results based on a presentation recommendation machine learning model
Chen et al. D-Map: Visual analysis of ego-centric information diffusion patterns in social media
US9288285B2 (en) Recommending content in a client-server environment
Kraft et al. Less after-the-fact: Investigative visual analysis of events from streaming twitter
US20130304819A1 (en) Methods and systems of detection of most relevant insights for large volume query-based social data stream
CN104778208A (en) Method and system for optimally grasping search engine SEO (search engine optimization) website data
US20190034430A1 (en) Disambiguating a natural language request based on a disambiguation recommendation machine learning model
Vanani et al. Analytical evaluation of emerging scientific trends in business intelligence through the utilisation of burst detection algorithm
CN104572757A (en) Microblog group processing method and device
EP2847717A2 (en) Social intelligence architecture
Dongo et al. A qualitative and quantitative comparison between Web scraping and API methods for Twitter credibility analysis
Kavitha et al. Discovering public opinions by performing sentimental analysis on real time Twitter data
Kajáti et al. Advanced analysis of manufacturing data in Excel and its Add-ins
KR101900285B1 (en) Dynamic tag cloud system and method in real-time SNS data
CN104063456A (en) We media transmission atlas analysis method and device based on vector query
Rakshitha et al. Machine Learning based Analysis of Twitter Data to Determine a Person's Mental Health Intuitive Wellbeing
Mavrogiorgos et al. Self-Adaptable Infrastructure Management for Analyzing the Efficiency of Big Data Stores
Murthy et al. TwitSenti: a real-time Twitter sentiment analysis and visualization framework

Legal Events

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