KR102373146B1 - 군집 기반 중복문서 제거 장치 및 제거 방법 - Google Patents

군집 기반 중복문서 제거 장치 및 제거 방법 Download PDF

Info

Publication number
KR102373146B1
KR102373146B1 KR1020200035384A KR20200035384A KR102373146B1 KR 102373146 B1 KR102373146 B1 KR 102373146B1 KR 1020200035384 A KR1020200035384 A KR 1020200035384A KR 20200035384 A KR20200035384 A KR 20200035384A KR 102373146 B1 KR102373146 B1 KR 102373146B1
Authority
KR
South Korea
Prior art keywords
documents
similarity
unit
document
duplicate
Prior art date
Application number
KR1020200035384A
Other languages
English (en)
Other versions
KR20210119041A (ko
Inventor
서영균
이주영
김재성
추하원
차수진
Original Assignee
경북대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 경북대학교 산학협력단 filed Critical 경북대학교 산학협력단
Priority to KR1020200035384A priority Critical patent/KR102373146B1/ko
Publication of KR20210119041A publication Critical patent/KR20210119041A/ko
Application granted granted Critical
Publication of KR102373146B1 publication Critical patent/KR102373146B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/289Phrasal analysis, e.g. finite state techniques or chunking
    • G06F40/295Named entity recognition
    • 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/35Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • 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/268Morphological analysis
    • G06K9/6267

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Probability & Statistics with Applications (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 중복 문서 제거 장치 및 제거 방법에 관한 것으로, 더욱 상세하게는 복수의 문서들에서 정보 추출을 통한 문서의 유사도 분석을 통해 중복 여부를 판단하고, 중복으로 판단되는 문서들을 제거하여 사용자에게 제공하는 장치 및 방법에 관한 것이다. 본 발명은 상기 문서들의 심볼을 제거하고, 문장 단위로 형태소 분석을 수행하며, 벡터화하는 전처리부, 상기 전처리된 문서들을 군집화하는 군집부, 상기 군집 내의 문서들의 단어 빈도수를 기반으로 유사도를 판별하는 유사도 분석부 및 상기 군집 내의 유사도가 임계값 이상이면 중복 문서로 판단하여 중복 문서를 제거하는 중복 제거부로 구성되어 메모리 사용량 감소, 시간 복잡도 감소, 중복 문서 검출 정확도의 증대를 통해 사용자에게 양질의 정보를 제공할 수 있다.

Description

군집 기반 중복문서 제거 장치 및 제거 방법{Device and Method for Cluster-based duplicate document removal}
본 발명은 중복 문서 제거 장치 및 제거 방법에 관한 것으로, 구체적으로는 복수의 문서들에서 정보 추출을 통한 문서의 유사도 분석을 통해 중복 여부를 판단하고, 중복으로 판단되는 문서들을 제거하여 사용자에게 제공하는 장치 및 방법에 관한 것이다.
오늘날 빅데이터 시대를 맞아 다양한 매체를 통하여 하루에도 수천, 수만편씩 올라오는 많은 양의 뉴스 기사와 마주치고 있다. 이러한 많은 양의 기사 데이터를 기반으로 다양하고 흥미로운 응용들이 설계되고 개발되어져 오고 있다. 그럼에도 불구하고, 동일한 사건에 대해 기술된 대부분의 기사들이 동일한 내용을 포함하고 있음을 쉽게 접하게 된다. 그러한 뉴스 기사의 중복은 사용자들이 획일화된 관점을 가질 수 있게 할 뿐만 아니라 기사 데이터를 활용하는 다양한 응용 시스템들의 저장 및 처리 시간 측면에서 성능 저하 문제를 불러일으킬 수 있다.
문서 중복을 제거할 수 있는 가장 확실한 방법은 모든 문서에 대한 비교를 수행하는 것이나, 문서의 수와 문서 안의 단어가 많아지게 될 경우에는 계산 시간과 메모리의 사용량이 크게 증가하게 된다.
때문에, 문서와 단어의 수가 많아질수록 중복 제거에 대한 비용이 매우 커지므로, 확장성이 떨어지며, 문서 중복 제거의 확장성을 높이기 위해 비교하는 문서의 수를 줄이는 것이 가장 효율적인 방법이 될 수 있다.
비교하는 문서의 수를 줄이기 위한 방법 중의 하나는 뉴스 기사의 카테고리(category)데이터를 활용하는 것이나, 카테고리를 정하는 기준이 언론사마다 다르기 때문에 같은 내용이라 하더라도 다른 카테고리로 분류될 수 있으므로 카테고리 기반의 문서 분류 기법을 적용한 방법은 중복 제거의 정확성(accuracy)을 크게 약화시킬 수 있다.
종래에 상기와 같은 문제를 해결하고자 문서 중복 제거를 위한 방법의 하나로써 시스템 파일을 논리적 파티션으로 구성하여 중복 제거를 시행하는 시스템을 발표하였다. 이러한 시스템은 내용이 비슷한 파일들끼리 논리적으로 파티션을 구성한 후에 한꺼번에 중복을 제거하여 오버헤드를 감소시키는 방법을 제시하고 있다.
그러나. 이러한 시스템에 사용된 알고리즘은 해시 리스트(hash list)를 사용하여 데이터를 저장하고 RB_Tree를 이용하여 중복 제거를 수행하기 때문에 논리 파티션이 50%이상일 때 효율적으로써 매일 다른 데이터가 생성되는 뉴스 등의 처리 방법에서는 분명한 한계를 지니고 있다.
또다른 방법으로는 통계적 언어모델인 유니그램 언어모델을 이용하여 문서를 군집화 한 후에 simhash로 중복을 제거하는 방법을 제시하고 있다. 이러한 방법은 성능, 즉 확장성이나 메모리-효율성을 전혀 고려하지 않아 처리하는 문서의 수가 증가할수록 메모리의 사용량이 증대되어 많은 양의 문서를 비교하게 되는 경우 중복 비교에 오랜 시간이 소모되는 문제가 발생할 수 있다.
이와 같이 종래 단어 유사도와 문장 유사도를 검출하는 방법을 포함하여 유사 중복 문서 제거를 위한 다양한 방법들을 제시하고는 있으나, 종래의 중복 문서 제거 방법에서는 메모리의 효율성, 확장성을 포함하는 컴퓨팅 성능에 관해서는 고려하고 있지 않으며, 이로 인해 비교 대상 문서가 증가할수록 이를 처리하기 위한 컴퓨팅 용량 및 시간이 기하급수적으로 증가하는 문제가 여전히 존재하고 있다.
대한민국 등록특허공보 제10-1671227호 (2016년 10월 26일 등록)
공진산, 정호민, 고영웅, "논리 파티션을 이용한 파일 중복 제거 시스템", 한국정보과학회 학술발표논문집, 39(1A), pp. 285-287, June 2012.
본 발명은 상기 기술적 과제에 대한 문제점을 해결하기 위한 것으로, 전처리된 문서들을 군집화하고, 코사인 유사도를 이용하여 문서간 유사도를 계산하는 중복 문서 제거 장치 및 제거 방법을 제공하는데 그 목적이 있다.
다른 측면에서 본 발명은 전처리, 군집화, 유사도 비교 순서를 이용하여 중복 문서를 판단 및 제거함으로써 메모리 효율성을 극대화하여 중복 문서를 효율적으로 제거하는 장치 및 방법을 제공하는데 그 목적이 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 중복 문서 제거 장치는 문서들을 수집하는 문서 수집부, 상기 문서들을 문장 단위로 형태소 분석부를 이용하여 형태소 분석을 수행하고, 벡터화하는 전처리부, 상기 전처리된 문서들을 군집화하는 군집부, 상기 군집 내의 문서들의 단어 빈도수를 기반으로 유사도를 판별하는 유사도 분석부, 상기 군집 내의 유사도가 임계값 이상이면 중복 문서로 판단하여 중복 문서를 제거하는 중복 제거부를 포함하여 구성될 수 있다.
또한, 상기 전처리부는 상기 문서 내 조사, 특수문자, 작성자 정보, 문서 포멧 중 어느 하나 이상을 제거하는 심볼제거부, ETRI 형태소 분석기를 이용하여 개체명(Named Entity), 태그 정보를 포함하는 문장 단위로 형태소 분석을 수행하는 형태소 분석부 및 특정 단어의 빈도수 및 역문서 빈도수를 곱한 TF-IDF 값을 이용하여 벡터화하는 벡터화부로 구성될 수 있다.
또한, 상기 군집부는 기계학습의 한 종류인 k-means 알고리즘을 사용하여 주어진 데이터를 k(단, k는 자연수)개의 클러스터로 묶을 수 있다.
또한, 상기 유사도 분석부는 사이킷 런(scikit learn)내의 라이브러리인 countVectorizer를 이용하여 단어의 빈도수를 이용하여 임베딩을 진행하는 임베딩부, 상기 임베딩된 벡터에 스칼라곱을 한 결과 배열을 구하며, 내적 공간의 두 벡터 간 각도의 코사인 값을 계산하는 코사인 유사도 계산부 및 상기 코사인 유사도 값과 임계값을 비교하여 문서 간 유사도를 판단하는 유사도 판단부로 구성될 수 있다.
또한, 상기 문서는 텍스트 형태로 하나 이상의 문장으로 구성되고, 사용자 간 정보를 전달하는 모든 문서를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 중복 문서 제거 방법은 전처리부가 상기 문서들의 심볼을 제거하고, 문장 단위로 형태소 분석을 수행하며, 벡터화하는 전처리 단계, 군집부가 상기 전처리된 문서들을 군집화하는 단계, 유사도 분석부가 상기 군집 내의 문서들의 단어 빈도수를 기반으로 유사도를 판별하는 유사도 분석 단계 및 중복 제거부에서 상기 군집 내의 유사도가 임계값 이상이면 중복 문서로 판단하여 중복 문서를 제거하는 단계를 포함할 수 있다.
또한, 상기 전처리하는 단계는 심볼제거부가 상기 문서 내 조사, 특수문자, 작성자 정보, 문서 포멧 중 어느 하나 이상을 제거하는 단계, 형태소 분석부가 ETRI 형태소 분석기를 이용하여 개체명(Named Entity), 태그 정보를 포함하는 문장 단위로 형태소 분석을 수행하는 단계 및 벡터화부가 특정 단어의 빈도수 및 역문서 빈도수를 곱한 TF-IDF 값을 이용하여 벡터화하는 단계로 구성될 수 있다.
또한, 상기 군집화하는 단계는 기계학습의 한 종류인 k-means 알고리즘을 사용하여 주어진 데이터를 k(단, k는 자연수)개의 클러스터로 묶을 수 있다.
또한, 상기 유사도 분석 단계는 임베딩부가 사이킷 런(scikit learn)내의 라이브러리인 countVectorizer를 이용하여 단어의 빈도수를 이용하여 임베딩을 진행하는 단계, 코사인 유사도 계산부가 상기 임베딩된 벡터에 스칼라곱을 한 결과 배열을 구하며, 내적 공간의 두 벡터 간 각도의 코사인 값을 계산하는 단계 및 유사도 판단부가 상기 코사인 유사도 값과 임계값을 비교하여 문서 간 유사도를 판단하는 단계로 구성될 수 있다.
또한, 상기 문서는 텍스트 형태로 하나 이상의 문장으로 구성되고, 사용자 간 정보를 전달하는 모든 문서를 포함할 수 있다.
상기한 본 발명의 일 실시예에 따른 중복문서 제거 장치 및 방법은 문서를 형태소 단위로 분석하여 코사인 유사도에 따라 효과적으로 문서의 중복 여부를 판단할 수 있다.
또한, 본 발명은 인터넷상에 분포된 다수의 글을 종합하여 중복된 문서를 제거한 후에 사용자에게 제공함으로써 사용자에게 양질의 정보를 제공할 수 있다.
또한, 본 발명은 문서 간 유사도를 분석하여 사용자에게 제공함으로써 문서를 효율적으로 비교 및 확인할 수 있도록 할 수 있다.
또한, 본 발명은 군집화된 문서의 유사도를 계산하여 유사도가 높은 중복 문서를 제거함으로써 효율적 사용을 통한 메모리 사용량을 최소화할 수 있다.
도 1은 본 발명의 본 발명의 일 실시예에 따른 중복 문서 제거 장치의 블록 다이어그램이다.
도 2는 본 발명의 일 실시예에 따른 중복 문서 제거 장치의 전처리부를 구체화하는 블록 다이어그램이다.
도 3은 본 발명의 일 실시예에 따른 중복 문서 제거 장치의 유사도 분석부를 구체화하는 블록 다이어그램이다.
도 4는 본 발명의 일 실시예에 따른 중복 문서 제거 장치의 실행 알고리즘이다.
도 5는 본 발명의 일 실시예에 따른 중복 문서 제거 방법의 순서도이다.
도 6은 본 발명의 일 실시예에 따른 중복 문서 제거 방법의 전처리 수행단계를 구체화하는 순서도이다.
도 7은 본 발명의 일 실시예에 따른 중복 문서 제거 방법의 문서들의 유사도를 판단하는 단계를 구체화하는 순서도이다.
도 8은 본 발명의 일 실시예에 따른 시뮬레이션 실행 시간 예측 시스템을 종래의 방법들과 비교한 결과를 예시하는 그래프이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시 예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1을 참조하여 본 발명의 시뮬레이션 실행 시간 예측 장치에 관하여 설명하도록 한다.
본 발명의 일 실시예에 따른 중복 문서 제거 장치는 문서 수집부(100), 전처리부(200), 군집부(300), 유사도 분석부(400), 중복 제거부(500)을 포함할 수 있다.
문서 수집부(100)는 복수의 문서에 대하여 수집할 수 있으며, 문서는 신문의 뉴스 기사, 사설, 인터넷 게시판, 블로그, SNS(Social Network Services/Sites), 논문 등의 텍스트로 구성되는 모든 문서를 포함할 수 있다.
또한, 문서를 구성하는 언어는 한글, 영어, 일본어, 중국어, 프랑스어 등 의미를 전달하기 위한 모든 언어를 포함할 수 있다.
문서 수집부(100)는 프로그램을 통한 자동 수집 방법, 사용자가 직접 파일 형태로 존재하는 문서를 입력하는 방법 등을 이용할 수 있으며, 수집된 문서는 뉴스, 논문, 자유기고 등의 형태를 포함할 수 있다.
수집된 문서는 뉴스, 문서 등 특정 주제별로 수집 및 분류하여 유사도 비교를 통해 중복 제거를 수행하거나, 모든 문서를 통합하여 하나의 주제로 중복 문서 제거 시스템을 이용할 수 있다.
전처리부(200)는 상기 문서 수집부(100)에서 수집된 문서가 동일한 형태로 구성되도록 전처리를 수행하며, 도 2를 참조하면, 전처리부(200)는 심볼 제거부(210), 형태소 분석부(220) 및 벡터화부(230)로 구성될 수 있다.
심볼 제거부(210)는 상기 문서 수집부(100)에서 수집된 문서들에 대해 중복 판단을 수행하는데 불필요한 심볼들을 제거할 수 있다.
예를 들어, 뉴스기사 데이터는 언론사 별로 조금씩 다른 문서형태를 가질 수 있으며, 언론사 별로 특수문자를 사용하는 경우도 존재할 수 있다. 또한, 본문 마지막에 기사를 쓴 기자의 정보를 입력하여 기사로 내보낼 수도 있다. 이와 같이 서로 다른 문서형태와 특수문자, 기자의 정보는 데이터를 중복 제거하는 경우 큰 영향을 미칠 수 있기 때문에 제거함이 바람직하다.
상기와 같은 이유로 심볼 제거부(210)에서는 데이터 원문을 가져와 특수문자, 본문이 없고 이미지만 있는 짧은 기사, 기자의 정보, 조사 등을 제거하고, 이후 서로 다른 문서형태와 특수문자, 기자의 정보를 제거하여 순수한 사건의 내용만을 담은 문서로 전처리를 수행할 수 있다.
형태소 분석부(220)는 수집된 문서들의 형태소 분석을 통하여 형태소 단위로 분할하고, 명사 및 서술어의 집합으로 변환할 수 있다. 여기서, 서술어는 주어의 동작, 상태, 성질 따위를 나타내는 동사, 형용사 및 부사 중 적어도 하나를 포함할 수 있다.
형태소 분석부(220)는 형태소 분석을 위하여 한국전자통신연구원에서 개발 및 지원하는 ETRI 형태소 API를 이용하여 형태소 분석을 수행할 수 있으며, 상기 ETRI 형태소 분석기는 개체명(Named Entity), 태그정보 등 다양한 정보를 함께 분석해줄 수 있으며, 또한 문장 단위로 분석을 수행할 수 있다.
벡터화부(230)는 사이킷 런(scikit learn) 내의 메소드(method)를 활용하여 특정한 단어의 빈도수(term frequency, TF)와 역문서 빈도(inverse document frequency, IDF)를 곱한 TF_IDF (Term Frequency - Inverse Document Frequency)값을 이용하여 벡터화를 진행할 수 있다.
TF_IDF는 포함되어 있는 단어의 중요성에 따라 그 단어와 문서의 연관성을 계산할 수 있으며, 이 값은 문서 내 단어 빈도가 높을수록, 전체 문서 중 그 단어가 포함된 문서가 적을수록 높을 수 있다. 즉, 문서에서 의미가 없지만 흔하게 나타나는 전치사, 비동사, 감탄사 등을 제거하여 효율적인 분석을 수행할 수 있다.
TF는 특정 단어가 나온 수/전체 단어 수로 계산할 수 있으며, IDF는 log를 사용하여 1+log(전체 문서의 수/특정 단어를 포함하는 문서의 수)로 계산할 수 있다. 1을 더하여 주는 이유는 특정 단어가 모든 문서에 나타나서 log의 값이 0이 되는 경우를 방지하기 위함이다. 다만, IDF의 경우는 계산 방법이 다양해서, 앞 부분의 “1+”를 생략하고 계산하는 형태로 구성될 수도 있다.
군집화부(200)는 벡터화부(230)에서 벡터화된 문서는 숫자 값으로 표현되게 되며, 이를 논리적으로 분류하기 위해 문서의 내용으로 군집화를 수행할 수 있다.
군집화부(200)는 기계학습의 한 종류인 K-means를 사용할 수 있으며, K-means는 주어진 데이터를 복수 개의 클러스터로 묶어주는 알고리즘이다.
K-means 알고리즘의 단점은 적절한 클러스터 수를 사전에 매개변수로 설정해 주어야 하며, 이러한 매개변수에 따라 성능이 좌우될 수 있다. 따라서, 적절한 클러스터 수를 사전에 지정해줄 필요가 있다.
상기 매개변수를 지정하는 방법은 다양한 방법이 있으나, 본 발명의 일 실시예에서는 'rule of thumb'로 매개변수를 지정할 수 있다. 'rule of thumb'는 어림짐작, 경험에 바탕을 둔 법칙이라는 일반적인 의미를 하고 있다. 'rule of thumb' 방식은 정확한 수식을 통해 지정하는 방법은 아니나, 빠르게 매개변수(클러스터 수)를 설정할 수 있으며, 그만큼 메모리의 효율성 및 동작 속도에서 이득을 가져올 수 있다. 본 발명의 일 실시예에서는 하기의 수학식 1과 같은 형태로 'rule of thumb' 방법을 이용하여 매개변수를 지정할 수 있으나, 이에 한정되지 않으며, 필요에 따라 엘보우 방법(elbow method), 정보 기준 접근법(Information Criterion Approach), 정보 이론 접근법(Information Theoretic Approach), 실루엣 사용법(Choosing k Using the Silhouette), 교차 검증법(Cross-validation) 등을 사용하여 매개변수를 지정할 수 있다.
Figure 112020030631885-pat00001
단, 수학식 1에서 k는 매개변수, n은 오브젝트(벡터 값)을 의미한다.
종래 문서의 유사도 비교 방법에서 많이 사용하는 완전 비교 방법에서는 모든 문서를 비교하고 있다. 그러모르ㅗ 모든 문서를 일일이 비교하기 때문에 알고리즘의 효율성을 표기해주는 빅오 표기법(Big-O notation)으로 이를 표기하게 된다면 N개의 데이터(문서)가 주어졌을 때, O(N2)의 시간 복잡도(단, N은 비교되는 문서의 갯수)를 가지게 되며 이는 군집화에 오랜 시간을 요구하게 되는 문제를 가지고 있다.
본 발명의 일 실시예에서 빅오 표기법을 활용하여 알고리즘의 시간이 얼마나 오래 걸리는지에 대한 시간 복잡도를 확인하면, 군집화를 실시하는 경우에 클러스터 내의 문서만을 비교하고, 각 클러스터를 직렬로 처리할 경우 (N/k)2*k의 시간 복잡도를 가질 수 있으며, 이때 rule of thumb를 사용하게 되면 k가
Figure 112020030631885-pat00002
의 값을 가지게 된다. 결과적으로 군집화를 실시하여 동작하는 경우에 기존의 방법보다
Figure 112020030631885-pat00003
만큼의 시간적인 이득을 가져 올 수 있음을 확인할 수 있다.
이러한 시간적인 이득은 하기의 도 8에서 구체적으로 비교하도록 한다.
유사도 분석부(400)는 군집화부(200)에서 군집화된 문서들의 중복성을 비교할 수 있다.
문서 중복성을 검출하는 방법으로는 문장의 단어를 비교하는 방법이 있으며, 문장의 단어를 비교하는 방법으로는 레벤슈타인 거리(Levenshtein Distance) 값을 이용하여 문장의 차이를 계산하는 방법이 있다. 이러한 방법은 정확한 비교를 수행할 수 있는 장점을 가지고는 있으나, 단어를 하나씩 비교하게 되면 단어와 문장이 늘어날수록 시간과 메모리 사용량이 증가하는 문제가 있다.
또한, 예를 들어 “트럼프 미국대통령이 청와대를 방문하여 문재인 대통령을 만나 저녁식사를 하였다.”라는 문장을 “트럼프 미국 대통령이 청와대를 방문하였다. 트럼프 대통령은 문재인 대통령과 저녁식사를 하였다.”로 나누게 되면 같은 말이지만 다른 문장으로 인식하게 되는 문제가 있으며, 이러한 문장이 문서 내에 많아지게 되면 중복성 검출의 정확성이 현저하게 떨어지게 된다.
본 발명의 일 실시예에서는 이러한 문제를 해결하기 위하여 벡터화된 문서를 내적(dot product)하여 중복성을 검출할 수 있다. 이러한 내적 방법을 이용하게 되면 한 문장을 두 문장으로 나누는 경우에도 중복성을 검출할 수 있기 때문에 정확도가 높으며, 또한 벡터 연산을 이용하기 때문에 연산속도가 증가하는 장점을 가지고 있다.
도 3을 참조하면, 유사도 분석부(400)는 벡터화된 문서를 내적하여 중복성을 검출하기 위하여 임베딩부(410), 코사인 유사도 계산부(420), 유사도 판단부(430)로 구성될 수 있다.
임베딩부(410)는 군집 내의 문서를 사이킷 런(scikit learn) 내의 라이브러리인 countVectorizer를 이용하여 계산할 수 있다. countVectorizer는 단어를 빈도수를 카운트하여 임베딩을 진행할 수 있다.
코사인 유사도 계산부(420)는 벡터화된 문서를 내적(dot product)하여 문서 간 유사도를 계산할 수 있다.
구체적으로, 임베딩부(410)에서 임베딩된 문서들의 벡터 값에 스칼라 곱 결과인 cos_sim을 구하는 형태로 코사인 유사도를 계산하여 문서 간 유사도를 계산할 수 있다.
상기 cos_sim은 두 개의 문서에 대하여 벡터화부(230)에서 각가의 문서에 대한 벡터 값이 주어지면, 코사인 유사도인 cos_sim을 유클리디안 스칼라 곱 공식인
Figure 112020030631885-pat00004
에서 유도함으로써 계산할 수 있으며, 서로 다른 두 벡터를 이용하여 스칼라 값을 구함으로써 벡터와 스칼라 곱 연산을 진행할 수 있다.
유사도 판단부(430)는 코사인 유사도 계산부(420)의 코사인 유사도 값인 cos_sim을 기반으로 사용자가 지정한 문서의 중복 정도를 말하는 sim_rate 이상일 경우 중복으로 판단할 수 있다. 상기 sim_rate는 미리 지정된 값이거나, 경험을 토대로 자동 보정되는 값일 수 있다.
유사도 판단부(430)는 코사인 유사도(cosine similarity)를 기반으로 유사도를 판단할 수 있으며, 코사인 유사도는 내적 공간의 두 벡터간 각도의 코사인 값을 이용하여 측정된 벡터간의 유사한 정도를 의미한다. 각도가 0°일 때의 코사인 값은 1이며, 다른 모든 각도의 코사인 값은 1보다 작으므로 이 값은 벡터의 크기가 아닌 방향의 유사도를 판단하는 목적으로 이용될 수 있으며, 두 벡터의 방향이 완전히 같을 경우 1, 90°의 각을 이룰 경우 0, 180°로 완전히 반대 방향인 경우 -1의 값을 가질 수 있다. 벡터의 방향만을 이용하여 유사도를 판단하기 때문에 벡터의 크기는 유사도 값에 아무런 영향을 미치지 않으며, 결과값이 양수 공간에서 0 내지 1 사이의 값으로 떨어질 수 있다.
코사인 유사도(sim_rate)는 하기의 수학식 2를 이용하여 계산할 수 있으며, 사용자가 지정한 값 이상일 경우 중복으로 판단할 수 있다.
Figure 112020030631885-pat00005
단, 수학식 2에서 similarity는 코사인 유사도(sim_rate)로 0 내지 1 사이의 양수 값, θ는 각도, n은 1 이상의 자연수 이고, A, B는 서로 다른 두 문서의 벡터 값일 수 있다.
중복 제거부(500)는 유사도 판단부(430)에서 문서가 유사도가 기설정된 값 이상이어서 중복으로 판단된 문서에 대하여 리스트화 할 수 있다.
리스트화 된 중복 문서는 디스플레이(미도시)를 통해 다양한 형태로 사용자에게 제공될 수 있다.
예를 들어 중복 문서를 제거하여 대표 문서만을 사용자에게 제공하거나, 대표 문서 주변에 중복 문서의 개수 또는 리스트를 확인할 수 있도록 하위 메뉴를 생성하거나, 두 개의 문서일 경우 중복률 및 자세한 중복 단어 정보 등의 비교화면을 제공할 수 있다.
도 4는 본 발명의 일 실시예에 따른 중복 문서 제거 장치의 실행 알고리즘이다.
중복 문서 제거 장치의 실행 알고리즘은 입력 값으로 쿼리(query), k_val, sim_rate를 제공할 수 있다.
도 4에서 쿼리는 뉴스 검색 쿼리로 설명되어 있으나, 본 발명의 일 실시예에서 설명한 바와 같이 뉴스 기사, 사설, 인터넷 게시판, 블로그, SNS(Social Network Services/Sites), 논문 등의 텍스트로 구성되는 모든 문서를 포함할 수 있다. 또한, 쿼리는 둘 이상의 문서를 포함할 수 있다.
k_val은 군집화부(200)에서 설명한 바와 같이 기계학습의 한 종류인 k-means를 이용하여 군집화하는 과정에서 클러스터 수를 의미하며, 클러스터 수는 'rule of thumb'로 매개변수를 지정할 수 있다.
sim_rate는 유사도 분석부(400)에서 두 문서 간의 유사도에 대하여 중복 여부를 판단하기 위한 기준 값으로, 0 내지 1 사이의 양수 값으로 설정될 수 있다.
Line 1 내지 Line 6은 전처리 동작을 수행할 수 있으며, 입력된 문서들에 대하여 각각 전처리를 수행할 수 있다.
예를 들어 뉴스기사 데이터는 언론사 별로 조금씩 다른 문서형태를 가질 수 있으며, 언론사 별로 특수문자를 사용하거나, 본문 마지막에 기사를 쓴 기자의 정보가 입력되어 있는 경우, 중복 검색에 큰 영향을 미칠 수 있기 때문에 정확한 유사도 판단을 위하여 불필요한 정보인 조사, 특수문자, 특수기호, 기자의 정보 등 유사도 판단과 불필요한 정보를 제공할 수 있다.
구체적으로, Line 1에서는 조사, 특수기호, 기자의 정보 등 예외 심볼에 대한 정보를 가져올 수 있다.
Line 2에서는 입력된 상기 쿼리 정보를 가져올 수 있다.
Line 3에서는 상기 Line 1의 예외 심볼 정보를 기반으로 Line 2에서 입력된 상기 쿼리 정보에서 예외 심볼을 제거할 수 있다.
Line 4에서는 입력된 쿼리 중 본문의 내용이 없는 문서(사진 기사 등)를 제거할 수 있다.
Line 5에서는 문장 단위로 형태소 분석을 수행하여 결괏값을 저장할 수 있다. 형태소 분석은 한국전자통신연구원에서 개발 및 지원하는 ETRI 형태소 API를 이용하여 진행할 수 있으며, 개체명(Named Entity), 태그정보 등 다양한 정보를 함께 분석할 수 있다.
Line 6에서는 사이킷 런(scikit learn) 내의 메소드(method)를 활용하여 특정한 단어의 빈도수(term frequency, TF)와 역문서 빈도(inverse document frequency, IDF)를 곱한 TF_IDF (Term Frequency - Inverse Document Frequency)값을 이용하여 벡터화를 진행할 수 있다.
Line 7에서는 상기 Line 1 내지 Line 6에서 전처리된 문서를 군집화할 수 있다. 군집화는 k-means 알고리즘을 이용하여 기설정된 클러스터 수로 군집화를 진행할 수 있다.
Line 8 내지 Line 21은 군집화된 군집 내의 문서를 비교하여 중복 문서를 검출할 수 있다.
구체적으로, Line 8 내지 Line 21에서는 각 군집(클러스터) 별로 동작을 수행하며, 각 군집(클러스터) 내의 문서들을 각각 내적하여 코사인 유사도를 이용해 유사도를 판단할 수 있다.
Line 8에서는 군집화된 각 클러스터 단위로 군집(클러스터)에 포함되어 있는 문서들을 호출할 수 있다.
Line 9에서는 호출된 군집 내 문서들에 대해 사이킷 런(scikit learn) 내의 라이브러리인 countVectorizer를 이용해 단어의 빈도수를 기반으로 임베딩을 수행할 수 있다.
Line 12 내지 Line 13에서는 임베딩 된 문서들에 대해 내적(dot product)하여 코사인 유사도(cosine similarity)인 cos_sim을 계산할 수 있다.
Line 17 내지 Line 18에서는 문서 간 코사인 유사도인 cos_sim과 두 문서 간의 유사도에 대하여 중복 여부를 판단하기 위한 기준 값인 sim_rate를 비교를 수행할 수 있다.
Line 21에서는 상기 Line 17 내지 Line 18의 비교 결과가 sim_rate 이상일 경우 중복으로 판단하고, ddlist 결과값을 리턴(return)하여 중복 리스트에 저장할 수 있다.
도 5는 본 발명의 일 실시예에 따른 중복 문서 제거 방법의 순서도이다.
유사도를 비교하여 중복 제거를 수행하기 위한 둘 이상의 문서를 수집할 수 있다(S100).
상기 문서는 예를 들어, 신문기사, 뉴스, 사설, 논문, 블로그, SNS 등의 텍스트로 구성되는 모든 문서를 포함할 수 있으며, 한글, 영어, 일본어, 중국어 등 특정 문법에 의해 의미를 전달할 수 있는 텍스트로 구성되는 모든 글을 포함할 수 있다.
상기 수집된 문서에 대하여 보다 정확한 유사도 분석을 통한 중복 문서 제거를 위하여 각 문서 단위로 전처리를 수행할 수 있다(S200).
도 6을 참조하면, 상기 S200 단계는, 각 문서의 특수 심볼을 제거하는 단계(S210), 각 문서를 문장 단위로 형태소 분석을 수행하는 단계(S220), 벡터화를 수행하는 단계(S230)로 구체화할 수 있다.
상기 S210 단계에서는 상기 S100 단에서 수집한 문서들에 대하여 중복 판단을 수행하는데 불필요한 심볼들을 제거할 수 있다. 구체적으로, 중복 판단에 방해 요소로 작용할 수 있는 내용이 없는 문서, 이미지만을 포함하고 있는 문서, 조사, 특정 말머리, 맺음말, 특수문자, 작성자 정보 등의 내용을 제거할 수 있다.
상기 S220 단계에서는 한국전자통신연구원에서 개발 및 지원하는 ETRI 형태소 API를 이용하여 문장 단위로 형태소 분석을 수행할 수 있다.
상기 S230 단계에서는 사이킷 런(scikit learn) 내의 메소드(method)를 활용하여 특정한 단어의 빈도수(term frequency, TF)와 역문서 빈도(inverse document frequency, IDF)를 곱한 TF_IDF (Term Frequency - Inverse Document Frequency)값을 이용하여 벡터화를 진행할 수 있다.
상기 S200 단계에서 전처리된 문서는 기계학습의 한 종류인 K-means를 사용하여 k개(단, k는 자연수)의 군집(클러스터)로 군집화를 할 수 있다(S300).
상기 S300 단계에서 자연수 k는 k-means 알고리즘에서 매개변수(군집의 수)를 정하는 다양한 방법인 경험적 법칙(rule of thumb), 엘보우 방법(elbow method), 정보 기준 접근법(Information Criterion Approach), 정보 이론 접근법(Information Theoretic Approach), 실루엣 사용법(Choosing k Using the Silhouette), 교차 검증법(Cross-validation) 등의 방법 중 하나를 이용하여 설정할 수 있다.
군집화된 문서들은 각 군집 단위로 각 군집 내에 포함되어 있는 문서들 사이의 유사도를 비교 및 판단할 수 있다(S400).
도 7을 참조하면, 문서들 사이의 유사도를 판단하는 방법은 각 군집 내에 포함되어 있는 문서들을 각각 임베딩하는 단계(S410), 임베딩된 문서를 내적하는 단계(S420) 및 코사인 유사도를 기반으로 문서 간 유사도를 판단하는 단계(S430)로 구체화할 수 있다.
상기 S410 단계에서는 각 군집 내에 포함되어있는 각각의 문서들에 대하여 사이킷 런(scikit learn) 내의 라이브러리인 countVectorizer를 이용하여 단어의 빈도수를 카운트하는 형태를 기반으로 임베딩을 수행할 수 있다.
상기 S420 단계에서는 상기 S410 단계에서 임베딩된 문서들의 벡터 값을 이용하여 코사인 유사도를 계산할 수 있다.
구체적으로, 서로 다른 두 문서의 임베딩된 벡터 값을 받아 임베딩된 문서들의 벡터에 스칼라 곱 배열을 구하는 형태로 코사인 유사도를 계산할 수 있다.
상기 S430 단계에서는 상기 코사인 유사도와 사용자가 기설정한 기준값을 비교하여 상기 코사인 유사도가 상기 기준값 이상일 경우 두 문서를 중복 문서로 판단할 수 있다.
S500 단계에서는 상기 코사인 유사도가 상기 기준값 이상일 경우에는 S600단계로 진행하며, 상기 코사인 유사도가 상기 기준값 미만일 경우에는 S700단계로 진행할 수 있다.
S600 단계에서는 중복되는 문서에 대하여 중복 문서 리스트를 작성하고, 중복 문서 리스트 및 대표 문서를 사용자에게 제공할 수 있다. 또는, 대표 문서 및 중복 문서의 개수를 사용자에게 제공할 수 있다.
상기 S600 단계에서 중복문서를 사용자에게 제공하는 방법은 관리자 혹은 사용자가 임의로 지정할 수 있으며, 사용자에게 군집 내 문서를 제공할 수 있다면 그 방법을 제한하지 않는다.
S700단계에서는 비교한 문서가 중복이 아니라고 판단하여 판단 결과를 각각 별도로 사용자에게 제공할 수 있다.
도 8은 본 발명의 일 실시예에 따른 시뮬레이션 실행 시간 예측 시스템을 종래의 방법들과 비교한 결과를 예시하는 그래프이다.
이하, 본 발명의 일 실시예에 따르는 중복 문서 제거 시스템은 FLASHer (eFficient, scaLAble ScHeme for nEws aRticle deduplication)로 설명한다.
우선 문서 중복성을 계산하는 방법인 코사인 유사도와 레벤슈타인 거리(Levenshtein Distance, 이하 L.D.)의 정확도와 시간을 비교하였다. 두 개의 방법 모두 사용자가 지정한 비율로 정확도 계산을 진행하였으며, 본 명세서에서는 동일한 실험환경을 위해 비율을 0.99로 지정하여 실험을 진행하였다.
실험 결과로 L.D.는 2386초가 소요되었고, FLASHer는 L.D.보다 약 200배 빠른 12초의 시간이 소요되었다. 즉, 시간적인 측면에서 FLASHer는 L.D.보다 성능이 우수하였으며. 정확도 측면에서도 L.D.는 FLASHer에 비해 82.76%의 문서를 검출하여 중복 문서를 찾는 정확도가 떨어짐을 확인할 수 있었다.
본 실험에서는 코사인 유사도는 문장을 벡터화시켜 벡터연산을 통해 중복성을 검출하지만, L.D는 문장의 단어를 하나하나 비교하여 중복성을 검출하기 때문에 코사인 유사도 방식에 대비하여 속도가 늦은 것으로 판단되었다.
다음으로, FLASHer 알고리즘의 성능을 다양한 방법과 비교하여 메모리, 중복 문서 검출 정확성, 경과시간 성능을 평가하였다. 본 발명에서 제안하는 FLASHer와 (i) 문서를 전부 비교한 완전 비교방법(EXH), (ii) 카테고리 군집을 기준으로 문서를 비교한 방법(CAT), (iii)문서의 제목을 기준으로 군집화를 하여 비교한 방법(TITLE)을 사용한 결과와 메모리, 정확도, 속도 측면에서 비교하였다. 상기 EXH 방법은 모든 문서를 비교하기 때문에 모든 중복 문서를 검출할 수 있다고 판단하였고, 이를 기반으로 나머지 방법들의 중복을 검출하지 못한 문서의 수를 비교하였다.
도 8의 (a)는 메모리를 기준으로 성능을 평가한 성능 평가 결과 그래프이다.
도 8의 (a)를 참조하면, 상기 EXH 방법은 다른 세 가지의 방법에 비교하여 메모리 사용량이 높은 것을 확인할 수 있으며, 특히 문서의 수가 약 30,000건을 넘었을 경우 아웃 오브 메모리(Out Of Memory) 상태가 되어 평가를 진행할 수 없었다. 또한, 상기 CAT 방법과 상기 TITLE 방법은 40,000건을 넘어설 때, 최고 사용량이 되고, 특히 상기 TITLE 방법은 60,000건을 넘는 경우 상기 EXH 방법과 마찬가지로 아웃 오브 메모리(Out Of Memory) 상태가 되어 진행이 멈추는 것을 확인할 수 있다. 그러나, 본 발명의 일 실시예에 따르는 FLASHer는 다른 방법에 대비하여 상대적으로 작은 메모리를 사용함을 확인할 수 있으며, 이러한 결과는 상기 EXH, CAT, TITLE 방법에 대비하여 더 많은 문서에서 동작이 가능하여 확장성이 있고, 메모리 측면에서 효율적으로 동작할 수 있음을 알 수 있다.
도 8의 (b)는 EXH 방법을 기준으로 FLASHer를 포함한 나머지 세 가지 방법에 대하여 중복 문서를 검출 하지 못한 오차의 결과 비교 그래프이다.
정답 데이터(Ground-Truth)는 상기 EXH 방법을 통하여 중복 문서를 찾아내고, 사람이 직접 각 문서의 중복성을 확인하는 형태로 기준 데이터를 생성하였으며, 상기 EXH 방법이 데이터가 30,000개 이상일 때 아웃 오브 메모리(Out Of Memory)가 발생하여 30,000건을 기준으로 실험을 수행하였다.
실험 결과로 상기 TITLE 방법과 상기 CAT 방법은 문서의 수가 많아질수록 중복 문서 검출의 정확성이 떨어지는 것을 확인할 수 있다. 뉴스를 포함하는 문서 데이터에서 문서의 제목과 내용이 전혀 다른 데이터가 많기 때문에 상기 TITLE 방식의 경우 중복 문서 검출 정확성이 떨어지는 것으로 판단되며, 또한, 카테고리를 기준으로 군집화된 데이터는 생산자마다 카테고리의 기준이 다르기 때문에 군집화가 제대로 이루어지지 않아서 중복 문서를 제대로 검출해내지 못한 것으로 판단된다.
그러나, 본 발명의 일 실시예에 따르는 FLASHer는 문서의 수가 늘어나도 중복 문서 검출 정확성이 떨어지지 않고 유지가 되는 것을 확인할 수 있으며, 이는 종래의 기술에 대비하여 정확도가 높다고 판단할 수 있다.
상기 중복문서를 검출하지 못한 오차 실험 결과에서 확인할 수 있는 것처럼 상기 TITLE 방법과 상기 CATE 방법의 정확도가 매우 낮은 것을 보았기 때문에 처리 시간 성능 측정은 상기 EXH와 본 발명의 FLASHer에 대해서 진행하였다.
하기의 표 1은 데이터의 개수가 N개고 클러스터의 개수가 k개라고 가정하였을 때, 두 방법의 시간복잡도를 나타낸다. 이때, FLASHer의 k는 rule of thumb로
Figure 112020030631885-pat00006
이 되며, K-means 군집화의 시간복잡도는 (N/k)2*k 보다 작기 때문에 무시될 수 있다. 그러므로 FLASHer 의 시간 복잡도는
Figure 112020030631885-pat00007
이 될 수 있다.
상기 EXH의 복잡도는 모든 조합이 NC2임을 고려하면, O(N2)가 되므로 FLASHer의 시간복잡도가 EXH의 시간복잡도 보다
Figure 112020030631885-pat00008
만큼 적은 것을 인지할 수 있다.
중복 제거 방법 시간 복잡도
EXH O(N2)
FLASHer K-means 군집화 + (N/k)2*k
도 8의 (c)는 상기와 같은 점근적 분석 결과를 실험적으로 확인하기 위하여 처리 시간 성능에 대하여 실험한 결과이다.
상기 EXH와 본 발명의 FLASHer 두 방법 모두 데이터 수가 늘어날수록 처리 시간도 점차 늘어남을 확인할 수 있다.
그러나, 상기 EXH 방법은 30,000개에서 메모리 부족으로 비정상 종료되었으며, 상기 EXH 방법은 본 발명의 FLASHer보다 시간복잡도가 높기 때문에 고성능 머신에서 실험을 하게 되면, 문서의 수가 많아질수록 도 8의 (c)에서 보이는 것처럼 점선으로 시간이 경과될 가능성이 높아짐을 확인할 수 있다. 그렇기 때문에 문서의 수가 많아질수록 본 발명의 FLASHer가 성능이 더 좋아진다는 것을 유추할 수 있다.
본 발명에서는 일 실시예를 포함하여 문서 데이터에 대한 중복 제거 알고리즘을 제시하고 있으며, 종래 기술에 대비하여 본 발명의 FLASHer는 전처리와 군집화를 수행하여 메모리 사용량을 줄였고, 시간복잡도를 줄여 속도 또한 개선되는 것을 확인할 수 있다. 또한, 중복 문서 검출 정확도가 높음을 확인할 수 있다.
상술한 실시 예에 설명된 특징, 구조, 효과 등은 본 발명의 적어도 하나의 실시 예에 포함되며, 반드시 하나의 실시 예에만 한정되는 것은 아니다. 나아가, 각 실시 예에서 예시된 특징, 구조, 효과 등은 실시예들이 속하는 분야의 통상의 지식을 가지는 자에 의하여 다른 실시예들에 대해서도 조합 또는 변형되어 실시 가능하다.
따라서 이러한 조합과 변형에 관계된 내용들은 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다. 또한, 이상에서 실시 예들을 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 실시 예들에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부한 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
100: 문서 수집부
200: 전처리부
300: 군집부
400: 유사도 분석부
500: 중복 제거부

Claims (10)

  1. 문서들을 수집하는 문서 수집부;
    상기 문서들의 심볼을 제거하고, 문장 단위로 형태소 분석을 수행하며, 벡터화하는 전처리부;
    상기 전처리된 문서들의 개수를 기반으로 군집 수를 결정하고, 결정된 상기 군집 수를 기반으로 군집화를 수행하는 군집부;
    상기 군집 내의 문서들의 단어 빈도수를 기반으로 유사도를 판별하는 유사도 분석부; 및
    상기 군집 내의 유사도가 임계값 이상이면 중복 문서로 판단하여 중복 문서를 제거하는 중복 제거부;
    를 포함하는 중복 문서 제거 장치.
  2. 제1항에 있어서,
    상기 전처리부는,
    상기 문서 내 조사, 특수문자, 작성자 정보, 문서 포멧 중 어느 하나 이상을 제거하는 심볼제거부;
    형태소 분석기를 이용하여 개체명(Named Entity), 태그 정보를 포함하는 문장 단위로 형태소 분석을 수행하는 형태소 분석부; 및
    특정 단어의 빈도수 및 역문서 빈도수를 곱한 TF-IDF 값을 이용하여 벡터화하는 벡터화부;
    로 구성되는 것을 특징으로 하는 중복 문서 제거 장치.
  3. 제1항에 있어서,
    상기 군집부는, 기계학습의 한 종류인 k-means 알고리즘을 사용하여 주어진 데이터를 k(단, k는 자연수)개의 클러스터로 묶는 것을 특징으로 하는 중복 문서 제거 장치.
  4. 제1항에 있어서,
    상기 유사도 분석부는,
    사이킷 런(scikit learn)내의 라이브러리인 countVectorizer를 이용하여 단어의 빈도수를 이용하여 임베딩을 진행하는 임베딩부;
    상기 임베딩된 벡터에 스칼라곱을 한 결과 배열을 구하며, 내적 공간의 두 벡터 간 각도의 코사인 값을 계산하는 코사인 유사도 계산부; 및
    상기 코사인 유사도 값과 임계값을 비교하여 문서 간 유사도를 판단하는 유사도 판단부;
    로 구성되는 것을 특징으로 하는 중복 문서 제거 장치.
  5. 제1항에 있어서,
    상기 문서는 텍스트 형태로 하나 이상의 문장으로 구성되고, 사용자 간 정보를 전달하는 모든 문서를 포함하는 것을 특징으로 하는 중복 문서 제거 장치.
  6. 문서 수집부가 둘 이상의 문서들을 수집하는 단계;
    전처리부가 상기 문서들의 심볼을 제거하고, 문장 단위로 형태소 분석을 수행하며, 벡터화하는 전처리 단계;
    군집부가 상기 전처리된 문서들의 개수를 기반으로 군집 수를 결정하고, 결정된 상기 군집 수를 기반으로 군집화를 수행하는 단계;
    유사도 분석부가 상기 군집 내의 문서들의 단어 빈도수를 기반으로 유사도를 판별하는 유사도 분석 단계; 및
    중복 제거부가 상기 군집 내의 유사도가 임계값 이상이면 중복 문서로 판단하여 중복 문서를 제거하는 단계;
    를 포함하는 중복 문서 제거 방법.
  7. 제6항에 있어서,
    상기 전처리 하는 단계는,
    심볼제거부가 상기 문서 내 조사, 특수문자, 작성자 정보, 문서 포멧 중 어느 하나 이상을 제거하는 단계;
    형태소 분석부가 ETRI 형태소 분석기를 이용하여 개체명(Named Entity), 태그 정보를 포함하는 문장 단위로 형태소 분석을 수행하는 단계; 및
    벡터화부가 특정 단어의 빈도수 및 역문서 빈도수를 곱한 TF-IDF 값을 이용하여 벡터화하는 단계;
    를 포함하는 것을 특징으로 하는 중복 문서 제거 방법.
  8. 제6항에 있어서,
    상기 군집화 하는 단계는,
    기계학습의 한 종류인 k-means 알고리즘을 사용하여 주어진 데이터를 k(단, k는 자연수)개의 클러스터로 묶는 것을 특징으로 하는 중복 문서 제거 방법.
  9. 제6항에 있어서,
    유사도 분석 단계는,
    임베딩부가 사이킷 런(scikit learn)내의 라이브러리인 countVectorizer를 이용하여 단어의 빈도수를 이용하여 임베딩을 진행하는 단계;
    코사인 유사도 계산부가 상기 임베딩된 벡터에 스칼라곱을 한 결과 배열을 구하며, 내적 공간의 두 벡터 간 각도의 코사인 값을 계산하는 단계; 및
    유사도 판단부가 상기 코사인 유사도 값과 임계값을 비교하여 문서 간 유사도를 판단하는 단계;
    로 구성되는 것을 특징으로 하는 중복 문서 제거 방법.
  10. 제6항에 있어서,
    상기 문서는 텍스트 형태로 하나 이상의 문장으로 구성되고, 사용자 간 정보를 전달하는 모든 문서를 포함하는 것을 특징으로 하는 중복 문서 제거 방법.
KR1020200035384A 2020-03-24 2020-03-24 군집 기반 중복문서 제거 장치 및 제거 방법 KR102373146B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200035384A KR102373146B1 (ko) 2020-03-24 2020-03-24 군집 기반 중복문서 제거 장치 및 제거 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200035384A KR102373146B1 (ko) 2020-03-24 2020-03-24 군집 기반 중복문서 제거 장치 및 제거 방법

Publications (2)

Publication Number Publication Date
KR20210119041A KR20210119041A (ko) 2021-10-05
KR102373146B1 true KR102373146B1 (ko) 2022-03-14

Family

ID=78077927

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200035384A KR102373146B1 (ko) 2020-03-24 2020-03-24 군집 기반 중복문서 제거 장치 및 제거 방법

Country Status (1)

Country Link
KR (1) KR102373146B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102392644B1 (ko) * 2021-10-19 2022-04-29 주식회사 애자일소다 유사도 기반의 문서 분류 장치 및 방법
KR102484218B1 (ko) * 2022-06-20 2023-01-04 주식회사 애자일소다 유사도 기반의 분류 모델 결과 검증 장치 및 방법
KR102496212B1 (ko) * 2022-06-30 2023-02-06 주식회사 애자일소다 주요 구절 추출 장치 및 그 방법
KR102524690B1 (ko) * 2022-07-13 2023-04-24 에이셀테크놀로지스 주식회사 뉴스 티커 매핑 방법 및 이러한 방법을 수행하는 장치
KR102671436B1 (ko) * 2023-11-22 2024-05-31 파인더갭 주식회사 인공지능 기반의 보안 리포트 평가 장치, 방법 및 프로그램

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101035037B1 (ko) 2010-09-01 2011-05-19 한국과학기술정보연구원 동적 임계값이 적용된 유사문서 분류화 장치 및 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100896702B1 (ko) * 2007-08-16 2009-05-14 한국과학기술원 신뢰도를 향상시킨 문서 구조 기반 군집 장치 및 방법
KR20120124581A (ko) * 2011-05-04 2012-11-14 엔에이치엔(주) 개선된 유사 문서 탐지 방법, 장치 및 컴퓨터 판독 가능한 기록 매체
KR101671227B1 (ko) 2015-05-22 2016-11-01 줌인터넷 주식회사 문서 중복 및 유사도를 검출하기 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록 매체
KR101737887B1 (ko) * 2015-09-18 2017-05-19 아주대학교산학협력단 크로스 미디어 분석에 기반한 소셜 미디어 텍스트의 주제 카테고리 자동 분류 방법 및 그 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101035037B1 (ko) 2010-09-01 2011-05-19 한국과학기술정보연구원 동적 임계값이 적용된 유사문서 분류화 장치 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"sklearn/문장 특징 추출과 유사도 측정", 2018.03., pp1-8, <url : https://blog.breezymind.com/2018/03/02/sklearn-feature_extraction-text-2>. 1부.*
장민서 외 2명, "TF-IDF를 활용한 k-means 기반의 효율적인 대용량 기사 처리 및 요약 알고리즘", 한국정보처리학회 2018년도 춘계학술발표대회, 2018.05., pp.271 -274. 1부.*

Also Published As

Publication number Publication date
KR20210119041A (ko) 2021-10-05

Similar Documents

Publication Publication Date Title
KR102373146B1 (ko) 군집 기반 중복문서 제거 장치 및 제거 방법
Hua et al. Short text understanding through lexical-semantic analysis
JP5936698B2 (ja) 単語意味関係抽出装置
US8073877B2 (en) Scalable semi-structured named entity detection
US20140214835A1 (en) System and method for automatically classifying documents
Bisandu et al. Data clustering using efficient similarity measures
CN110134777B (zh) 问题去重方法、装置、电子设备和计算机可读存储介质
Atia et al. Increasing the accuracy of opinion mining in Arabic
CN111090731A (zh) 基于主题聚类的电力舆情摘要提取优化方法及系统
Zhang et al. Continuous word embeddings for detecting local text reuses at the semantic level
US20200272696A1 (en) Finding of asymmetric relation between words
Liu et al. Ranking-based name matching for author disambiguation in bibliographic data
CN106599072B (zh) 一种文本聚类方法及装置
Weerasinghe et al. Feature Vector Difference based Authorship Verification for Open-World Settings.
Singh et al. Writing Style Change Detection on Multi-Author Documents.
Fragkou Applying named entity recognition and co-reference resolution for segmenting english texts
US7072827B1 (en) Morphological disambiguation
Saini et al. Intrinsic plagiarism detection system using stylometric features and DBSCAN
Alqaraleh Turkish Sentiment Analysis System via Ensemble Learning
US10140289B2 (en) Identifying propaganda in global social media
Mekala et al. A survey on authorship attribution approaches
Tun et al. A large-scale sentiment analysis using political tweets.
Kalender et al. THINKER-entity linking system for Turkish language
Batista Large-scale semantic relationship extraction for information discovery
Ratna et al. Word level auto-correction for latent semantic analysis based essay grading system

Legal Events

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