KR20110067337A - 온톨로지를 이용한 문서의 다단계 군집화 방법 및 장치 - Google Patents

온톨로지를 이용한 문서의 다단계 군집화 방법 및 장치 Download PDF

Info

Publication number
KR20110067337A
KR20110067337A KR1020090123897A KR20090123897A KR20110067337A KR 20110067337 A KR20110067337 A KR 20110067337A KR 1020090123897 A KR1020090123897 A KR 1020090123897A KR 20090123897 A KR20090123897 A KR 20090123897A KR 20110067337 A KR20110067337 A KR 20110067337A
Authority
KR
South Korea
Prior art keywords
node
clustering
cluster
documents
document
Prior art date
Application number
KR1020090123897A
Other languages
English (en)
Other versions
KR101070738B1 (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 KR1020090123897A priority Critical patent/KR101070738B1/ko
Publication of KR20110067337A publication Critical patent/KR20110067337A/ko
Application granted granted Critical
Publication of KR101070738B1 publication Critical patent/KR101070738B1/ko

Links

Images

Classifications

    • 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/31Indexing; Data structures therefor; Storage structures
    • G06F16/313Selection or weighting of terms for indexing
    • 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/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/322Trees
    • 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
    • G06F16/355Class or cluster creation or modification
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

온톨로지를 이용한 문서의 다단계 군집화 방법 및 장치가 제공된다. 상기 온톨로지를 이용한 문서의 다단계 군집화 방법은, 복수 개의 문서 각각의 주제어를 선정하는 단계, 상기 선정된 주제어를 포함하는 온톨로지 isA 계층구조에 상기 복수 개의 문서들을 대응시켜 문서 계층구조를 생성하는 단계, 생성된 상기 문서 계층구조를 압축하는 단계, 압축된 상기 문서 계층구조를 순회하면서 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링하는 제 1 클러스터링 단계 및 상기 제 1 클러스터링 단계에서 삭제되지 않은 상기 문서 계층구조 내의 노드들을 순회하면서 상기 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링하는 제 2 클러스터링 단계를 포함한다.

Description

온톨로지를 이용한 문서의 다단계 군집화 방법 및 장치{Method and apparatus for multi-stage document clustering using ontology}
본 발명의 실시예들은 온톨로지를 이용하여 복수 개의 문서들을 군집화(clustering)하기 위한 기술과 관련된다.
최근 들어, 정보의 검색 및 추천 등의 지능형 정보 서비스를 위하여 문서를 체계적으로 분류하여 군집화하기 위한 다양한 연구가 수행되고 있다. 군집화, 또는 클러스터링이란 데이터 마이닝의 한 기법으로서, 다수의 항목이 갖는 속성을 기준으로 하여 그 유사성을 연산한 후 군집화하는 기법이다. 클러스터링은 주어진 데이터 집합을 서로 유사성을 가지는 몇 개의 군집(Cluster)으로 분할해 나가는 과정으로, 하나의 군집에 속하는 데이터 간에는 서로 다른 군집 내의 데이터와는 구분되는 유사성을 갖게 된다.
이러한 문서의 클러스터링 방법으로서 정보 검색 분야에서는 K-means 클러스터링 방법 등을 비롯하여 다양한 방법들이 연구되었다. 그러나 정보의 검색 또는 추천 등을 위하여 온톨로지(Ontology)의 중요성이 높아지게 되면서 온톨로지를 이용하여 문서들을 클러스터링하기 위한 방법에 대한 연구가 필요하게 되었다.
본 발명의 실시예들은 문서의 주제어들을 포함하는 온톨로지를 이용하여 문서를 클러스터링함으로써, 문서의 주제어에 따라 유사한 문서끼리 효과적으로 문서들을 군집화 할 수 있는 방법을 제공하고자 한다.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 따른 온톨로지를 이용한 문서의 다단계 군집화 방법은, 상기 문서의 다단계 군집화 장치에서, 상기 선정된 주제어를 포함하는 온톨로지 isA 계층구조에 상기 복수 개의 문서들을 대응시켜 문서 계층구조를 생성하는 단계; 상기 문서의 다단계 군집화 장치에서, 생성된 상기 문서 계층구조를 압축하는 단계; 상기 문서의 다단계 군집화 장치에서, 압축된 상기 문서 계층구조에 포함된 노드 중 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링하고 클러스터링된 노드를 상기 문서 계층구조에서 삭제하는 제 1 클러스터링 단계; 및 상기 문서의 다단계 군집화 장치에서, 상기 제 1 클러스터링 단계에서 삭제되지 않은 상기 문서 계층구조 내의 비단말 노드들을 순회하면서 상기 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링하는 제 2 클러스터링 단계;를 포함한다.
한편 상기 과제를 해결하기 위한 본 발명의 일 실시예에 따른 온톨로지를 이용한 문서의 다단계 군집화 장치는, 복수 개의 문서 각각으로부터 복수 개의 키워드 및 각 키워드의 상기 문서 내에서의 빈도수를 추출하는 키워드 추출부; 상기 키 워드 추출부에서 추출된 키워드 및 빈도수를 이용하여 상기 복수 개의 문서 각각의 주제어를 선정하는 주제어 선정부; 상기 주제어 선정부에서 선정된 상기 주제어를 포함하는 온톨로지 isA 계층구조에 상기 복수 개의 문서를 대응시켜 문서 계층구조를 생성하는 문서 계층구조 생성부; 상기 문서 계층구조 생성부에서 생성된 상기 문서 계층구조를 압축하는 문서 계층구조 압축부; 상기 문서 계층구조 압축부에서 압축된 상기 문서 계층구조를 순회하면서 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링하고 클러스터링된 노드를 상기 문서 계층구조에서 삭제하는 제 1 클러스터링부; 및 상기 제 1 클러스터링부에 의해 삭제되지 않은 상기 문서 계층구조 내의 비단말 노드들을 순회하면서 상기 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링하는 제 2 클러스터링부;를 포함한다.
전술한 것 외의 다른 측면, 특징 및 이점은 이하의 도면, 특허청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.
본 발명의 실시예들은 문서로부터 주제어를 추출하고 상기 주제어를 포함하는 온톨로지를 이용하여 상기 문서들을 클러스터링함으로써, 문서의 주제어에 따라 유사한 문서끼리 효과적으로 문서들을 군집화 할 수 있다.
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 발명의 기술적 사상은 청구범위에 의해 결정되며, 이하의 실시예는 본 발명의 기술적 사상을 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 효율적으로 설명하기 위한 일 수단일 뿐이다.
본 발명을 설명하기에 앞서, 본 발명의 실시예에 따른 온톨로지 isA 계층구조에 대해 간단히 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 온톨로지 isA 계층구조(100)의 일례를 나타낸 도면이다. 본 발명의 실시예에서는 온톨로지의 isA 관계를 트리 또는 그래프 형태의 계층 구조로 구성하고, 각 키워드(개념, 용어)를 계층 구조의 노드(node)로 표현하며, 상기 트리 또는 그래프의 노드들 사이의 간선(edge)의 수로써 노드 간의 거리(의미상의 거리)를 표현한다. 예를 들어, 도 1에 도시된 온톨로지 isA 계층구조 (100)에서 「동물」과 「무척추동물」간의 거리는 1, 「무척추동물」과 「척추동물」간의 거리는 2이며, 「사람」과 「새우」와의 거리는 6이 된다.
한편, 도 1의 온톨로지 isA 계층구조(100)에서는 간선 간의 거리를 일률적으 로 1로 가정하였지만, 실시예에 따라 노드 간의 거리(의미상의 거리)가 각각 다르게 정해지는 경우가 있다. 예를 들어, 도 2과 같은 온톨로지 isA 계층구조의 경우 노드 B와 D 간의 거리는 0.5로, A와 C 간의 거리는 2.0으로 정의되어 있다. 이와 같이 간선마다 각각 거리가 다른 경우에는, 임의의 두 노드를 연결하는 경로상에 존재하는 각 간선의 거리를 모두 더함으로써 노드 간의 거리를 계산할 수 있다. 예를 들어, 도 2에 도시된 온톨로지 isA 계층구조에서 노드 A와 D 간의 거리는 1.0+0.5=1.5가 되고, 노드 A와 E 간의 거리는 1.0+1.0=2.0이 된다.
또한 온톨로지 isA 계층구조는 반드시 트리 형태로만 구성되는 것은 아니며, 그래프(graph)의 형태를 가질 수도 있다. 그래프의 경우 특정 노드의 부모 노드가 한 개가 아닌 복수 개 존재할 수 있다는 점에서 트리와 상이하다.
본 발명의 실시예에서는 트리 구조의 isA 계층구조를 이용하여 클러스링을 수행하므로 상기 온톨로지 isA 계층구조가 그래프 형태일 경우에는 이를 트리 구조로 변환하여야 하며, 이는 복수 개의 부모 노드를 가진 노드 및 상기 노드의 하위 노드들을 복사하여 각 부모 노드의 서브트리로 구성함으로써 이루어질 수 있다.
도 3은 본 발명의 일 실시예에 따른 온톨로지를 이용한 문서의 다단계 군집화 방법(300)을 나타낸 순서도이다.
도시된 바와 같이, 본 발명의 일 실시예에 따른 온톨로지를 이용한 문서의 다단계 군집화 방법(300)은, 문서의 주제어 선정 단계(302), 문서 계층구조 생성 단계(304), 상기 문서 계층구조를 압축하는 문서 계층구조의 압축 단계(306), 압축된 문서 계층구조상의 노드들을 클러스터링하는 제 1 클러스터링 단계(308), 상기 제 1 클러스터링 단계에서 클러스터링 되지 않고 남아있는 상기 문서 계층구조상의 노드들을 재차 클러스터링하는 제 2 클러스터링 단계(310), 상기 제 1 및 제 2 클러스터링 단계의 수행 결과 생성된 클러스터 각각의 중심어 및 평균 거리를 계산하는 단계(312), 각 클러스터에 속하는 문서들을 서로 조정하는 단계(314) 및 각 클러스터의 응집도를 계산하는 단계(316)를 포함한다.
또한 본 발명의 실시예는 상기 클러스터링의 결과 생성된 각각의 클러스터들에 속한 문서들을 사전에 설정된 단계 수만큼 다시 클러스터링하는 단계를 더 포함할 수 있는 바, 이에 대해서는 이하의 설명 중 해당 항목에서 상세히 설명하기로 한다.
이하에서는 상술한 각 단계별로 본 발명의 일 실시예에 따른 온톨로지를 이용한 문서의 다단계 군집화 방법(300)을 상세히 설명한다.
문서의 주제어 선정(302)
본 단계는 클러스터링을 수행하고자 하는 복수 개의 문서로부터 각각의 주제어를 선정하는 단계이다. 상기 주제어는 각각의 문서로부터 하나 이상을 선정할 수 있으나, 본 발명의 실시예에서는 상기 문서 당 주제어의 개수가 하나인 것으로 가정한다. 먼저, 상기 복수 개의 문서 각각으로부터 키워드 및 각 키워드의 빈도를 추출한다. 상기 키워드는, 예를 들어 상기 문서를 구성하는 텍스트를 키워드 사전 등을 이용하여 형태소 분석함으로써 추출될 수 있다. 이때, 추출된 키워드 중 색인어로서의 가치가 없는 불용어(stop word)는 제거한다. 키워드 추출 과정에서는 상기 키워드 사전을 비롯하여 불용어 사전 등이 활용될 수 있다. 또한 이하의 단계들에서는 온톨로지 isA 계층구조를 이용하여 문서의 범위 및 문서간 유사도를 측정하게 되므로, 상기 온톨로지 isA 계층구조는 상기 문서로부터 추출된 키워드를 노드로 포함하여야 한다.
한편, 상기 단계에서 각 키워드가 나타나는 문서 수를 추출할 수도 있다. 이로부터 각 키워드의 역문헌 빈도(IDF, Inverse Document Frequency)를 계산할 수 있다. 역문헌 빈도는 전체 문서의 수를 해당 키워드가 나타난 문서 수로 나눈 값의 로그(log) 값을 구한 것으로, 적은 수의 문서에 나타난 키워드가 많은 수의 문서에 나타난 키워드보다 높은 값을 갖도록 하며. 키워드의 희소성을 나타낸다. 그리고 이를 이용하여 상기 추출된 키워드 빈도를 키워드의 가중치로 변환하는 다양한 방법들이 존재한다. 일례로 키워드 빈도와 역문헌 빈도를 이용한 TF-IDF(Term Frequency - Inverse Document Frequency) 가중치 부여 방법을 들 수 있다.
본 발명에서는 추출된 키워드 빈도를 그대로 사용하거나 또는 역문헌 빈도 등을 사용하여 추출된 키워드 빈도를 다양한 방식으로 변환하여 키워드의 가중치로 사용하는 경우 모두에 대하여 키워드의 빈도라고 칭하기로 한다. 따라서 키워드의 빈도는 추출된 키워드의 빈도일수도 있고 이를 변환한 값(가중치)일 수도 있다. 그러나 문서내 키워드 빈도를 다양한 방식으로 변환한 경우에는 빈도라는 용어 대신 에 일반적으로 가중치 또는 가중값이란 용어를 사용한다. 따라서 키워드 빈도를 변환한 경우라면 본 발명에서 사용하는 키워드 빈도라는 용어 대신에 키워드 가중치 또는 키워드 가중값으로 바꾸어 사용해도 무방하다.
다음으로, 상기 추출된 키워드 및 키워드 별 빈도를 이용하여 상기 문서의 주제어를 선정한다. 문서의 주제어 선정에는 다음의 3가지 정도의 방법 중 하나를 이용할 수 있다.
(1) 상기 키워드 별 빈도를 각각 비교하여 빈도가 가장 큰 키워드를 주제어로 선정할 수 있다. 문서에서 가장 빈도가 높은 키워드는 해당 문서의 핵심어일 가능성이 매우 높기 때문이다.
(2) 상기 키워드 별로 추출된 키워드들 간의 온톨로지 isA 계층구조 상의 평균 거리를 계산하고, 계산된 상기 평균 거리가 가장 짧은 키워드를 주제어로 선정할 수 있다. 이와 같은 키워드간 평균 거리를 이용한 주제어 선정 방법(400)을 도 4에 나타내었다.
먼저, 문서로부터 추출된 키워드를 이용하여 n*n 매트릭스(M; 이때 n은 추출된 키워드의 개수) 또는 상위 삼각 행렬(T)을 생성한다(402). 상기 n*n 매트릭스 또는 상위 삼각 행렬에서, 각 행 및 열은 상기 추출된 키워드를, 각 셀은 해당 행 및 열에 해당하는 키워드들간의 온톨로지 isA 계층구조상의 거리를 나타낸다.
예를 들어, 문서로부터 추출된 키워드 및 빈도가 다음의 표 1과 같은 경우, 도 1에 도시된 온톨로지 isA 계층구조를 이용하여 매트릭스(M)를 구성하면 표 2와 같다.
일련번호 키워드 빈도
1 사람 2
2 사자 3
3 토끼 1
4 동물 2
M 1 2 3 4
1 0 2 2 3
2 2 0 2 3
3 2 2 0 3
4 3 3 3 0
또한, 상기 도 1의 키워드를 이용하여 상위 삼각 행렬(T)을 구성하면 다음의 표 3과 같다.
T 1 2 3 4
1 0 2 2 3
2 0 2 3
3 0 3
4 0
다음으로, 상기 매트릭스(M) 또는 상위 삼각 행렬(T)을 이용하여 각 키워드 별로 추출된 키워드 간의 온톨로지 isA 계층구조상의 평균거리를 계산한다(404).
예를 들어, 상기 매트릭스(M)를 이용하여 각 키워드 별 평균거리를 계산할 경우에는 다음의 수학식 1을 이용한다.
Figure 112009077026454-PAT00001
상기 수학식에서, K는 키워드의 일련번호, F(i)는 일련번호가 i인 키워드의 빈도, M(i, j)는 상기 매트릭스(M)의 행 i 열 j 인 (i, j) 셀의 값이다.
만약 각 키워드 별 빈도를 고려하지 않을 경우, F(i) 값은 모두 1이 된다.
상기 상위 삼각 행렬(T)를 이용하여 각 키워드 별 평균거리를 계산할 경우에는 다음의 수학식 2를 이용한다.
Figure 112009077026454-PAT00002
상기 수학식에서, K는 키워드의 일련번호, F(i)는 일련번호가 i인 키워드의 빈도, T(i, j)는 상기 상위 삼각 행렬(T)의 행 i 열 j 인 (i, j) 셀의 값이다.
이 때에도 만약 각 키워드 별 빈도를 고려하지 않을 경우, F(i) 값은 모두 1이 된다.
마지막으로, 상기 계산된 평균거리가 가장 짧은 키워드를 상기 문서의 주제어로 선정하게 된다(406).
상기 수학식 1 및 2에 따라 표 1에 기재된 각 키워드의 평균거리를 계산하면 다음과 같다.
사람: (0*2+2*3+2*1+3*2)/8 = 1.75
사자: (2*2+0*3+2*1+3*2)/8 = 1.5
토끼: (2*2+2*3+0*1+3*2)/8 = 2.0
동물: (3*2+3*3+3*1+0*2)/8 = 2.25
즉, 상기 키워드들 중 평균 거리가 가장 짧은 키워드는 「사자」이므로, 상기 문서의 주제어는 「사자」가 된다. 만일 평균거리가 가장 짧은 키워드가 복수 개 존재할 경우에는 이들 중 하나를 주제어로 선정할 수 있다. 예를 들면 본 발명에 기재된 다른 방법을 사용하여 선정할 수도 있고, 역문헌 빈도가 높은 키워드를 선정할 수도 있으며, 온톨로지 계층 구조에서 레벨이 큰 키워드를 선택할 수도 있고, 기타 다양한 방식을 적용할 수 있다.
(3) 주제어 선정을 위한 다른 방법으로는, 상기 추출된 키워드 중 문서의 타이틀(제목)로부터 추출된 키워드 중 하나를 상기 문서의 주제어로 선정하는 방법이 있다. 문서의 타이틀은 보통 문서의 주제와 관련이 높은 경우가 많기 때문이다.
이 경우에는, 문서의 타이틀로부터 추출된 키워드 중 문서 내에서의 빈도가 가장 높은 키워드를 문서의 주제어로 선정할 수 있다. 또는, 문서의 타이틀에서 추출된 키워드들의 문서 내의 키워드들과의 평균 거리를 계산하고(전술한 평균 거리 계산 방법을 이용), 계산된 평균 거리가 가장 짧은 키워드를 주제어로 선정할 수 있다.
이 밖에도 문서의 주제어를 계산하기 위한 다양한 방법이 존재할 수 있으며, 본 발명은 특정 주제어 계산 방식에 한정되는 것은 아님을 유의하여야 한다.
문서 계층구조 생성(304)
본 단계에서는 상기와 같이 주제어가 선정된 복수 개의 문서들을 이용하여 문서 계층구조를 생성한다. 상기 문서 계층구조는 상기 온톨로지 isA 계층구조를 이용하여 생성되며, 구체적으로 상기 온톨로지 isA 계층구조와 동일한 노드 및 isA 관계를 가지는 트리 형태의 계층구조의 각 노드에 해당 노드를 주제어로 하는 문서의 수 및 문서의 리스트를 가리키는 포인터(pointer) 등을 매핑(mapping)함으로써 생성된다.
상기 문서 계층구조를 이루는 각 노드의 데이터 구조는 다음과 같다.
(노드 ID, 주제어, 문서의 수, 서브트리 문서의 수, 문서 리스트 포인터)
상기 데이터 구조에서, 노드 ID는 해당 노드를 상기 문서 계층구조상의 다른 노드와 구별하기 위한 식별자이다. 주제어는 상기 문서 계층구조와 대응되는 온톨로지 isA 계층구조의 노드의 명칭과 동일하며, 주제어 대신 주제어 식별자(ID)를 사용할 수도 있다. 문서의 수는 상기 주제어를 가지는 문서의 수이며, 서브트리 문서의 수는 자신의 문서의 수 및 아직 클러스터링 되지 않은 자신의 자손 노드들의 문서의 수의 합으로서 그 초기값은 자신의 문서의 수이다. 문서 리스트 포인터는 상기 주제어를 가지는 문서들의 문서 식별자(ID) 리스트를 가리키는 포인터(pointer)로서, 상기 문서 식별자의 개수는 상기 문서의 수와 동일하다. 여기서 문서 식별자는 문서를 유일하게 식별할 수 있는 식별 번호나 식별 기호일 수 있으며, 또는 문서의 저장 위치일 수도 있다. 또한 다른 방법으로 문서 리스트 포인터 대신에 해당 문서들의 식별자 리스트 또는 해당 문서들의 저장 위치 리스트를 직접 저장할 수도 있다. 한편 필요 시 각 노드에 부모 노드와 자식 노드 간의 거리(의미상의 거리) 값을 저장할 수도 있다.
상기 데이터 구조 중, 노드 ID, 주제어, 문서의 수, 문서 리스트 포인터는 문서 계층구조 생성 단계(304)에서 그 값이 정해진다. 문서 주제어 선정 단계(302)에서 각 문서의 주제어가 선정되고 나면, 특정 주제어를 가지는 문서 리스트와 문 서의 수를 알 수 있기 때문이다. 그러나 상기 서브트리 문서의 수는 본 문서 계층구조 생성 단계(304)에서는 초기값이 자신의 문서의 수로 설정되며, 후술할 제 1 및 제 2 클러스터링 단계(306, 308)에서 그 값이 정해지게 된다. 또한 상기 제 1 및 제 2 클러스터링 단계 (306, 308)에서는 클러스터가 생성될 때마다 상기 문서 계층구조에서 상기 생성된 클러스터에 포함된 노드들을 삭제하므로, 상기 서브트리 문서의 수는 문서 클러스터링 단계에서 달라질 수 있음에 유의한다.
클러스터링 조건 및 문서 계층구조 순회 방식
이하에서 설명할 제 1 클러스터링 단계(306) 및 제 2 클러스터링 단계(308)는 상기 문서 계층구조를 이용하여 상기 문서들을 복수 개의 그룹으로 분할하는 단계이다. 이와 같은 과정을 문서의 군집화 또는 클러스터링(clustering)이라 하며, 상기 군집화 또는 클러스터링에 의하여 생성된 각각의 그룹을 군집 또는 클러스터(cluster)라 한다.
문서의 클러스터링을 위해서는 먼저 다음과 같은 클러스터링 조건들이 정해져야 한다. 다음의 클러스터링 조건들은 경우에 따라 달라질 수 있다. 즉, 조건이 추가되거나 삭제되거나 변경될 수도 있으며, 클러스터링 방법도 이에 따라 달라져야 한다. 클러스터링은 성공할 수도, 실패할 수도 있으며, 클러스터링의 성공 또는 실패 여부는 생성된 클러스터들이 다음의 클러스터링 조건을 만족하는 지의 여부로 판별된다.
(1) 클러스터의 개수(K): 클러스터링을 통하여 생성하고자 하는 클러스터의 개수이다. 만약 클러스터링이 완료된 이후 생성된 클러스터의 개수가 K보다 작거나 크면 클러스터링 실패로 간주된다.
(2) 각 클러스터의 크기(min, max): 각 클러스터에 포함되는 문서 개수의 최소값 및 최대값이다. 즉 생성된 클러스터들은 모두 상기 min 보다 크거나 같고 상기 max 보다 작거나 같은 개수의 문서를 포함하여야 한다. 클러스터링 하고자 하는 문서의 총 개수를 N이라 할 때, 상기 min, max, K, N은 다음과 같은 관계를 가진다.
Figure 112009077026454-PAT00003
만약 클러스터링 과정에서, 또는 클러스터링의 결과 생성된 클러스터들이 상기 클러스터링 조건들을 만족하기 못할 경우에는 해당 클러스터링은 실패로 간주되며, 이 경우에는 상기 클러스터링 조건들을 조정하여 재차 클러스터링을 시도하게 된다.
본 발명의 실시예에서, 주제어가 동일한 문서, 즉 상기 문서 계층구조에서 동일한 노드에 포함된 문서들은 서로 나뉘어 질 수 없으며 반드시 하나의 클러스터에 속하도록 클러스터링된다고 가정한다. 예를 들어 A, B 이렇게 2개의 주제어가 있고, 주제어 A에 속한 문서가 80개, 주제어 B에 속한 문서가 20개이며, 상기 min, max 값이 각각 30, 70이라면 상기 문서들은 클러스터링 될 수 없다. A 주제어에 속한 문서의 개수가 max 보다 크나 이들을 2개로 나눌 수 없기 때문이다. 따라서 이 경우에는 클러스터링을 위하여 상기 max 또는 min 값을 재조정할 필요가 있다.
한편, 상기 문서 계층구조를 이용하여 문서들을 클러스터링하기 위해서는 상기 문서 계층구조의 각 노드들을 순회(traverse)하여야 한다. 순회란 트리의 각 노드들을 빠짐없이 한 번씩 방문하는 것을 의미한다. 본 발명의 실시예에서는 2번에 걸쳐 상기 문서 계층구조의 각 노드들을 순회하게 되며, 제 1 클러스터링 단계(306)에서는 포스트오더 트리 순회 방식을 이용하여 상기 문서 계층구조의 각 노드들을 순회하고, 제 2 클러스터링 단계(308)에서는 역 레벨 오더(level-order) 트리 순회 방식을 이용하여 상기 문서 계층구조의 비단말 노드들을 순회한다.
포스트오더(postorder) 트리 순회 방식은 트리 내의 특정 노드를 방문하기 위해 상기 특정 노드의 모든 자식 노드 각각을 루트 노드로 하는 서브트리들을 순서대로 포스트오더 트리 순회 방식으로 방문한 후 마지막으로 상기 특정 노드를 방문하는 방식이다. 이 원리를 순환적(recursive)으로 트리의 모든 노드에 적용하면 트리의 모든 노드를 한 번씩 방문할 수 있다.
예를 들어, 도 5와 같은 형태의 트리를 포스트오더 트리 순회 방식으로 방문 할 경우, 노드 A를 방문하기 위해서는 노드 B를 루트로 하는 서브트리, 노드 C를 루트로 하는 서브트리 및 노드 D를 먼저 방문하여야 하며, 노드 B를 방문하기 위해서는 노드 E, F를, 노드 C를 방문하기 위해서는 노드 G, H, I를 먼저 방문하여야 한다(자식 노드들은 왼쪽부터 오른쪽 순서로 방문). 따라서 상기 도 5에 도시된 트리에서 포스트오더 트리 순회 방식에 의한 순회 순서는 다음과 같다.
포스트오더 트리 순회 순서 : E - F - B - G - H - I - C - D - A
역 레벨 오더 트리 순회 방식은 레벨 오더 트리 순회 방식의 역순으로 트리를 방문하는 방식이다. 즉, 트리에서 가장 큰 레벨의 노드들부터 방문하고 (동일 레벨에서는 오른쪽부터 왼쪽 순서로 방문), 레벨의 크기를 1씩 줄여가면서 해당 레벨의 노드들을 방문하여, 마지막으로 레벨이 가장 작은 루트 노드를 방문하는 순회 방식이다. 예를 들어, 상기 도 5의 트리를 역 레벨 오더 트리 순회 방식으로 순회할 경우 순회 순서는 다음과 같다.
역 레벨 오더 트리 순회 순서 : I - H - G - F - E - D - C - B - A
문서 계층구조의 압축 (306)
본 단계는 상기 문서 계층구조 생성 단계(304)에서 생성된 문서 계층구조를 이용한 문서 계층구조 압축 단계로서, 본 단계에서 상기 문서 계층구조의 압축, 각 노드의 서브트리 문서 수 계산, 클러스터 후보 리스트 생성이 동시에 이루어진다.
문서 계층구조의 압축이란 상기 문서 계층구조에서 루트 노드를 제외하고 문서의 수가 0인 노드를 삭제하는 것이다. 상기 문서 계층구조는 전술한 바처럼 온톨로지 isA 계층구조와 동일한 노드 및 isA 관계를 가지는 트리로서, 만일 어느 노드에 해당되는 주제어를 갖는 문서가 존재하지 않을 때는 해당 노드의 문서의 수는 0이 된다. 따라서 문서 계층구조상의 많은 노드들의 문서의 수가 0일 가능성도 있다. 이 경우에는 상기 문서 계층구조를 그대로 사용할 수도 있지만, 문서 계층구조를 압축하는 것이 클러스터링에 효율적이다.
상기 문서 계층구조의 압축은 예를 들어 문서의 수가 0인 노드를 삭제하고, 삭제된 노드의 자식 노드가 있을 경우에 각각의 자식 노드를 삭제된 노드의 부모 노드의 자식 노드로 삽입함으로써 수행될 수 있다. 즉 삭제된 노드의 자식 노드들을 조부모 노드(부모 노드의 부모 노드)의 자식 노드로 삽입하는 것이다. 또한 압축 과정에서 필요 시 각 노드에 부모 노드와 자식 노드간의 관계(원래 문서 계층구조상의 관계, 예를 들면 몇 레벨 차이의 조상/자손)와 거리(의미상의 거리) 값을 저장할 수도 있다. 이와 같이 문서 계층구조가 압축되고 나면 압축된 문서 계층구조의 루트 노드를 제외한 모든 노드의 문서의 수는 1 이상이 되며, 루트 노드의 문서의 수는 0일 수도 있고 1 이상일 수도 있다.
한편 서브트리 문서의 수에 의한 클러스터 후보 리스트 생성은 문서 계층구조의 압축을 위한 문서 계층구조의 순회 과정에서 각 노드의 서브트리 문서의 수가 계산되면, 해당 서브트리 문서의 수를 판단하여 만일 min보다 크거나 같고 max보다 작거나 같으면(즉, 클러스터에 적합한 크기이면) 클러스터 후보 리스트에 추가하는 것이다. 상기 클러스터 후보 리스트는 초기에는 공백(empty) 리스트로 설정되며, 문서 계층 구조의 압축 과정에서 클러스터 구성에 적합한 크기의 노드(서브트리)들이 삽입된다. 클러스터 후보 리스트는 각 노드(Q)의 서브트리 문서의 수와 min과 max의 평균과의 차이(d(Q))의 오름차순으로 정렬될 수 있으며, 다음의 제1 클러스터링 단계에서 이를 이용하여 클러스터링 과정을 수행한다.
도 6은 본 발명의 일 실시예에 따른 문서 계층구조 내의 특정 노드에서의 문서 계층구조의 압축 과정(600)을 도시한 순서도이다. 문서 계층구조의 압축은 문서 계층구조를 포스트오더 트리 순회 방식에 의하여 순회하면서 수행하며, 이 외에도 자식 노드를 부모 노드보다 먼저 방문하는 트리 순회 방삭들 중에서 선택하여 사용할 수도 있다.
상기 포스트오더 트리 순회 방식에 의하여 현재 방문한 상기 문서 계층구조상의 노드를 Q라 하자. 만약 상기 노드 Q가 루트 노드가 아니라면 상기 노드 Q는 하나의 부모 노드 P를 가진다. 또한 상기 노드 Q가 리프 노드가 아니라면 상기 노드 Q는 m 개 (m≥1)의 자식 노드들(Ck, 1≤k≤m)을 가진다. 상기 자식 노드들 또한 리프 노드가 아닌 경우에는 자식 노드를 가진다. 또한 노드 Q는 부모 노드가 같은 형제 노드도 있을 수 있다. 물론 노드 Q가 루트 노드라면 부모 노드가 존재하지 않고, 노드 Q가 리프 노드라면 자식 노드가 존재하지 않는다. 이를 간략히(노드 Q의 부모와 자식 관계만을) 그림으로 도시하면 도 11과 같다. 전술한 바와 같이 상기 문서 계층구조는 압축 과정에서 변경되므로 원래의 문서 계층구조와는 다를 수 있다.
이하의 설명에서 n(Q)를 노드 Q의 문서 수, nd(Q)를 노드 Q가 루트 노드인 서브트리의 문서 수(자신 및 자손 노드들의 문서 수의 합)라고 정의한다. 여기서 n(Q)의 값은 문서 계층구조의 생성 단계에서 미리 정해지며, nd(Q)는 초기값으로 n(Q)와 동일한 값을 갖는다. 이하의 설명에서 용어 '서브트리'는 특정 노드 및 상기 특정 노드의 자손 노드들 모두를 함께 지칭한다. 그리고 노드 Q의 서브트리라는 표현은 노드 Q의 특정 자식 노드를 루트 노드로 하는 서브트리(즉, 노드 Q의 특정 자식 노드 및 상기 특정 자식 노드의 모든 자손 노드들)를 의미한다. 또한 노드 Q가 루트인 서브트리를 '서브트리 Q'라고 칭하기로 한다. 이때 노드 Q가 단말 노드이면 서브트리 Q는 1개의 노드로 구성된다. 따라서 기호 Q는 경우에 따라 노드 Q를 의미할 수도 있고 서브트리 Q를 의미할 수도 있다.
문서 계층구조 압축 과정에서 상기 노드 Q를 방문하기 전에 노드 Q의 자식 노드들은 포스트오더 트리 순회 방식에 따라 압축 과정을 수행한 노드들이다. 각 노드의 압축 과정에서 서브트리 문서의 수가 0인 노드는 문서 계층구조에서 삭제되므로, 노드 Q에게 자식 노드가 존재하는 경우에 상기 자식 노드의 문서의 수는 0보다 크다. 따라서 압축 수행 중의 문서 계층구조는 압축 시작 전 원래의 문서 계층구조와 달라질 수 있다.
문서 계층구조 압축 과정에서 상기 노드 Q를 방문한 경우, 노드 Q의 문서의 수(n(Q))가 max를 초과하는지의 여부를 조사하여(602), n(Q)의 값이 max를 초과하는 경우에는 클러스터링 실패로 간주하여 문서 계층구조의 압축을 중단한다(604). 이 경우에는 상기 클러스터링 조건들을 조정하여 다시 클러스터링을 수행할 수 있다.
만약 상기 n(Q) 값이 max를 초과하지 않는 경우에는, 다음으로 상기 노드 Q가 루트 노드인지의 여부를 판단한다(606). 만약 상기 노드 Q가 루트 노드가 아니라면 다음으로 n(Q) 값이 0인지의 여부를 판단한다(608). 만약 상기 n(Q) 값이 0이라면 상기 노드 Q는 루트 노드가 아니면서 포함하는 문서 수가 0인 노드이므로 상기 노드 Q를 삭제하고 상기 문서 계층구조를 압축한다. 즉, 상기 노드 Q를 문서 계층구조에서 삭제하고(610), 상기 노드 Q의 자식 노드가 존재하면 상기 자식 노드를 상기 노드 Q의 부모 노드와 연결하며(612), 다음 번 순회할 노드로 이동하여 상기 602 단계 이하의 단계를 수행한다(614). 전술한 바와 같이, 상기 612 단계에서 필요한 경우 상기 자식 노드 및 부모 노드에 압축 전 원래 문서 계층구조상의 관계 및 의미상의 거리 값을 저장할 수 있다
만약 상기 판단 결과(606, 608) 상기 노드 Q가 루트 노드이거나 또는 n(Q) 값이 0이 아닐 경우, 상기 노드 Q의 서브트리 문서의 수를 계산한다(616). 상기 서브트리 문서의 수는 다음과 같이 계산된다.
nd(Q) = n(Q) + 노드 Q의 모든 자식 노드들의 서브트리 문서 수의 합
다음으로 상기 노드 Q의 서브트리 문서의 수가 min보다 크거나 같고 max보다 작거나 같은지(즉, 클러스터에 적합한 크기인지)를 판단한다(618). 만일 상기 판단 결과 클러스터에 적합한 크기이면, 다음 수학식에 의해 노드 Q의 서브트리 문서의 수와 클러스터링 조건으로 설정된 min과 max의 평균과의 차이(d(Q))를 구한다(620).
Figure 112009077026454-PAT00004
다음으로 상기 노드 Q를 클러스터 후보 리스트에 추가한다(622). 상기 클러스터 후보 리스트는 (노드 ID, d(Q)) 등의 필드들로 구성될 수 있으며, 다음의 제1 클러스터링 단계에서 이를 이용하여 클러스터링 과정을 수행한다.
클러스터 후보 리스트는 초기에는 공백 리스트이고, 항상 d(Q)의 오름차순으로 정렬된 상태를 유지한다. 즉, 클러스터 후보 리스트에 새로운 노드가 삽입되면 기존의 노드들과 새로운 노드를 합하여 새로 정렬된 클러스터 후보 리스트를 생성한다. 이와 같이 각 노드(Q)의 서브트리 문서의 수와 min과 max의 평균과의 차이(d(Q))의 오름차순으로 정렬하는 이유는 이후의 클러스터링 과정에서 클러스터 크기의 중간값(min과 max의 평균)에 가장 가까운 크기의 서브트리부터 우선적으로 클러스터로 구성하기 위해서이다. 이를 위해서는 다양한 정렬 방법들을 이용할 수 있으며, 일례로 삽입 정렬(insertion sort) 방법을 이용할 수 있다. 물론 클러스터 후보 리스트의 정렬은 문서 계층 구조의 압축 후 제 1 클러스터링의 시작 전에 실시할 수도 있다.
다음으로, 노드 Q가 루트 노드인지를 판단하여(624), 판단 결과 루트 노드라면 문서 계층구조의 압축을 종료하고(626), 루트 노드가 아니라면 포스트오더 트리 순회 방식에 따라 다음 번 순회할 노드로 이동한다(628).
한편 상기 노드 Q의 서브트리 문서의 수가 min보다 크거나 같고 max보다 작거나 같은지 판단 결과 클러스터에 적합한 크기가 아니라면(즉, min보다 작거나 max보다 크다면) 노드 Q가 루트 노드인지를 판단하여(624), 루트 노드라면 문서 계층구조의 압축을 종료하고(626), 루트 노드가 아니라면 포스트오더 트리 순회 방식에 따라 다음 번 순회할 노드로 이동한다(628).
제 1 클러스터링(308)
본 단계는 상기 문서 계층구조 압축 단계(306)에서 압축된 문서 계층구조를 이용한 첫 번째 클러스터링 단계로서, 클러스터의 조건에 맞는 서브트리의 클러스터링이 이루어진다. 즉, 본 단계는 문서 계층구조의 각 서브트리(단말 노드인 특정 노드 또는 비단말 노드인 특정 노드를 루트 노드로 하는 서브트리)를 클러스터링의 대상으로 고려하며, 특정 서브트리를 복수개로 분할하여 클러스터링 하지는 않는다. 특정 서브트리를 분할하여 클러스터링 하는 것은 제2 클러스터링 단계에서 처리된다. 그리고, 클러스터링의 시작 전에 '생성된 클러스터의 수(L)'는 초기값이 0으로 설정된다.
클러스터링에서 n(Q)의 값이 1 이상인 노드의 모든 문서는 클러스터에 포함시켜야 한다. 그리고 n(Q)의 값이 0인 노드는 문서가 존재하지 않으므로 문서가 클러스터에 포함될 수 없다. 그러나 만일 노드 Q의 n(Q)의 값이 0이더라도 노드 Q에게 서브트리 문서의 수가 1이상인 자식 노드가 존재하는 경우, 상기 자식노드가 루트 노드인 서브트리의 해당 문서도 모두 클러스터에 포함시켜야 한다. 물론 n(Q)의 값이 0인 노드 Q는 루트 노드를 제외하고 문서 계층구조의 압축 과정에서 삭제된다.
클러스터링 과정에서 문서 계층구조의 각 노드에 속한 문서들을 클러스터링하게 된다. 따라서 최종적으로 각 클러스터에 포함되는 것은 문서들이므로, 앞으로의 설명에서 특정 노드 또는 특정 서브트리가 클러스터링 된다는 표현은 최종적으로 해당 노드 또는 해당 서브트리에 속한 문서들이 클러스터링 되는 것으로 이해되어야 한다. 상황에 따라 클러스터링 과정 중에는 노드들로 클러스터를 구성하고 클러스터링 종료 후에 최종적으로 문서들로 클러스터를 구성할 수도 있으며, 또는 클러스터링 과정 중에 실제 문서들로 클러스터를 구성하여도 무방하다.
제 1 클러스터링 단계에서는 상기 문서 계층 구조 압축 과정에서 생성한 클 러스터 후보 리스트를 이용하여 클러스터링을 수행한다. 전술한 바대로 클러스터 후보 리스트는 클러스터에 적합한 크기의 모든 노드(서브트리)들을 포함하며 각 노드(Q)의 서브트리 문서의 수와 min과 max의 평균과의 차이(d(Q)) 순으로 정렬되어 있다. 즉, 클러스터 후보 리스트는 우선순위 큐(priority queue)로 구현될 수 있으며, 클러스터 후보 리스트에서 노드의 삭제는 가장 우선순위가 높은(즉, 해당 노드의 서브트리 문서 수와 min과 max의 평균과의 차이가 가장 작은) 노드부터 하나씩 식제하며, 새로운 노드가 삽입되면 다시 리스트를 정렬하여 정렬된 상태를 유지한다. 앞으로의 제1 클러스터링 과정에서 클러스터 후보 리스트는 노드가 삭제될 수도 있고 삽입될 수도 있다.
본 단계에서는 클러스터 후보 리스트에서 서브트리 문서 수와 min과 max의 평균과의 차이(d(Q))가 가장 작은 노드(Q)를 삭제하여 해당 서브트리로 클러스터를 생성하고, 문서 계층 구조에서 해당 서브트리를 삭제하며, 클러스터 후보 리스트를 갱신하는 과정을 수행한다.
도 7은 본 발명의 일 실시예에 따른 제 1 클러스터링 단계(700)를 나타낸 순서도이다.
먼저, 클러스터 후보 리스트가 공백(empty) 리스트인지 판단한다(702). 만일 공백 리스트라면 문서 계층 구조에 문서의 수가 1 이상인 노드가 남아있는지를 판단한다(704). 만일 문서의 수가 1 이상인 노드가 남아있다면 이하에서 설명할 제 2 클러스터링 단계를 수행한다. 그러나 만일 문서 계층구조에 문서의 수가 1 이상인 노드가 남아있지 않다면, 아직 클러스터 수의 목표치를 달성하지 못하였으므로 클 러스터링은 실패한 것이 된다(706).
만일 클러스터 후보 리스트가 공백 리스트가 아니라면, 클러스터 후보 리스트에서 가장 우선순위가 높은(즉, 해당 노드의 서브트리 문서의 수와 min과 max의 평균과의 차이가 가장 작은) 노드(Q)를 삭제하고(708), 서브트리 Q(Q와 Q를 루트 노드로 하는 서브트리)로 클러스터를 생성한다(710). 여기서 서브트리 Q는 단말 노드일 수도 있고 또는 노드 Q를 루트 노드로 하는 서브트리일 수도 있다.
이후, 클러스터에 포함된 서브트리 Q를 상기 문서 계층구조에서 삭제하고(712), 상기 문서 계층구조에서 노드 Q의 조상 노드가 존재하면 해당 조상 노드(노드 Q의 부모 노드부터 루트 노드까지)의 서브트리 문서의 수를 다시 계산한다(714). 이는 해당 조상 노드의 서브트리 문서의 수에서 상기 클러스터에 포함된 노드 Q의 서브트리 문서의 수(nd(Q))를 빼주는 것으로 이루어질 수 있다.
다음으로 상기 714 단계에서 서브트리 문서 수가 재계산된 노드 Q의 조상 노드를 이용하여 상기 클러스터 후보 리스트를 업데이트한다(716). 즉, 상기 클러스터 후보 리스트에 속한 상기 노드 Q의 조상 노드 중, 상기 714 단계에서 재계산된 서브트리 문서의 수가 min보다 크거나 같고 max보다 작거나 같은 노드를 제외한 상기 노드 Q의 조상 노드들을 상기 클러스터 후보 리스트에서 삭제한다. 또한 클러스터 후보 리스트에 포함되지 않았던 노드 Q의 조상 노드들 중에서 서브트리 문서의 수의 재계산에 의해 서브트리 문서의 수가 클러스터의 크기에 적합하게 된(즉, min보다 크거나 같고 max보다 작거나 같게 된) 조상 노드를 클러스터 후보 리스트에 삽입한다. 클러스터 후보 리스트는 우선순위가 높은 순서로(즉, 해당 노드의 서브 트리 문서 수와 min과 max의 평균과의 차이가 가장 작은 순서로) 다시 정렬된다.
이후, 현재까지 생성된 클러스터의 수(L)를 1 증가시킨 후(718), 상기 L 값과 목표치(K)와의 크기를 비교한다(720). 만약 상기 L 값이 K와 같고 상기 문서 계층구조에 문서 수가 1 이상인 노드가 남아있지 않으면(722) 클러스터링은 성공한 것이 된다(724). 그러나 상기 문서 계층구조에 문서 수가 -1 이상인 노드가 남아 있는 경우에는 클러스터의 개수가 목표치에 도달한 상태에서 문서가 남아 있는 경우이므로, 이 경우에는 만일 남아있는 노드 모두를 상기 생성된 클러스터에 포함시켜도 클러스터의 크기에 적합한지의 여부를 판단하여(726) 적합한 경우에는 남아있는 노드 모두를 상기 생성된 클러스터에 포함시키고(728) 클러스터링의 성공으로 처리한다(724). 만약 상기 726 단계의 판단 결과 남아있는 노드 모두를 생성된 클러스터에 포함시킬 수 없는 경우에는 클러스터링 실패로 처리한다(730).
한편, 상기 L 값이 K보다 작은 경우에는 제 1 클러스터링의 처음 단계로 돌아가서 클러스터링을 반복한다.
제 2 클러스터링(310)
본 단계는 상기 제 1 클러스터링 단계(308)의 수행 결과 생성된 클러스터의 수가 목표치(K)에 미달하고, 상기 문서 계층구조에 노드가 남아 있을 경우에 수행된다.
상기 제 1 클러스터링 단계(308)가 종료되면 상기 문서 계층구조의 노드들은 루트 노드를 제외하고 모두 문서 수가 1 이상이 되며(루트 노드는 문서의 수가 0, 또는 1 이상일 수 있음), 모든 노드의 서브트리 문서의 수는 자신의 문서의 수 및 남아있는 모든 자손 노드의 문서의 수의 합으로 계산되어 있게 된다. 또한 상기 문서 계층구조의 모든 노드의 서브트리 문서의 수는 min 보다 작거나 또는 max 보다 크다. 또한 상기 문서 계층구조의 모든 단말 노드의 문서의 수는 min보다 작다. 그 이유는 서브트리 문서의 수가 min과 max 사이인 서브트리 및 단말 노드들은 제 1 클러스터링 단계에서 모두 클러스터로 분할되어 삭제되었기 때문이다. 그러나 상기 문서 계층구조는 제2 클러스터링 단계에서 클러스터에 포함되는 노드들의 삭제로 인해 달라질 수 있으며, 이에 따라 상기 서브트리 문서의 수도 달라질 수 있다. 예를 들면, 비단말 노드가 단말 노드로 바뀌거나, 또는 특정 노드의 자식 노드의 수 및 서브트리 문서의 수 등이 달라질 수도 있다. 또한 특정 노드의 서브트리 문서의 수가 변경되면 해당 서브트리가 클러스터로 구성 가능할 수도 있다.
도 8 내지 10은 본 발명의 일 실시예에 따른 제 2 클러스터링 단계(800)를 나타낸 순서도이다.
제 2 클러스터링 단계(310)에서는 남아있는 문서 계층구조의 노드들을 역 레벨 오더 순회 방식으로 순회한다. 물론 이 외에도 자식 노드를 부모 노드보다 먼저 방문하는 다른 트리 순회 방식들을 사용할 수도 있다. 이때 역 레벨 오더 순회 방식으로 방문하는 문서 계층구조의 노드를 노드 Q라 하자. 먼저 노드 Q의 자식 노드의 수를 조사한다(802). 자식 노드의 수가 0이면 노드 Q는 단말 노드이고, 자식 노드의 수가 1 이상이면 노드 Q는 비단말 노드이다.
1) 노드 Q가 단말 노드인 경우
이 경우, 먼저 노드 Q의 n(Q)의 값이 min보다 크거나 같은지의 여부를 판단한다(804). 만약 상기 n(Q) 값이 min 보다 크거나 같은 경우에는 노드 Q로 클러스터를 구성하고(806), 노드 Q를 상기 문서 계층구조에서 삭제하고(808), 노드 Q의 조상 노드들의 서브트리 문서의 수를 재계산한다(810). 즉, 노드 Q의 조상 노드가 존재하면 해당 조상 노드(노드 Q의 부모 노드부터 루트 노드까지)의 서브트리 문서의 수에서 노드 Q의 문서의 수를 빼주게 된다. 이후, 현재까지 생성된 클러스터의 수(L)를 1 증가시키고(812), 상기 L 값과 목표치(K)와의 크기를 비교한다(814).
만약 상기 L 값이 K보다 작은 경우에는 다음으로 상기 노드 Q가 루트 노드인지의 여부를 판단한다(816). 만약 상기 노드 Q가 루트 노드라면 더 이상 클러스터를 구성할 노드가 남아있지 않은 상태에서 L 값이 목표치(K)에 도달하지 못한 경우이므로 클러스터링은 실패한 것이 된다(818). 그러나 만약 상기 노드 Q가 루트 노드가 아니라면 역 레벨 오더 트리 순회 방식에 따라 다음 노드로 이동하여 클러스터링을 계속한다(820).
한편, 만약 상기 L 값이 K 값과 같은 경우에는, 다음으로 상기 노드 Q가 루트 노드인지의 여부를 판단한다(822). 만약 상기 노드 Q가 루트 노드인 경우는 생성된 클러스터의 수가 목표치(K)를 달성한 상태에서 더 이상 클러스터를 구성할 노드가 남아 있지 않은 경우이므로 클러스터링은 성공한 것이 된다(824). 그러나 만 약 상기 노드 Q가 루트 노드가 아닌 경우에는 다음으로 서브트리 문서의 수가 1 이상인 노드가 남아있는지의 여부를 판단한다(826). 만약 서브트리 문서의 수가 1 이상인 노드가 남아있으면, 다음으로 남아있는 노드 모두를 상기 생성된 클러스터에 포함 가능한지의 여부를 판단한다(828). 만일 남아있는 노드 모두를 상기 생성된 클러스터에 포함시켜도 클러스터의 크기에 적합한 경우에는, 남아있는 노드 모두를 상기 생성된 클러스터에 포함시키고(830), 클러스터링의 성공으로 처리한다(824).그러나 만약 남아있는 노드 모두를 상기 생성된 클러스터에 포함시킬 수 없는 경우에는 클러스터링은 실패한 것이 된다(818). 한편,--- 서브트리 문서 수가 1 이상인 노드가 남아있지 않은 경우에는 상기 문서 계층구조에 노드는 존재하나 문서는 존재하지 않는 경우이므로 클러스터링 성공으로 처리한다(루트 노드는 문서의 수가 0일 수 있음)(824).
한편, 상기 804 단계의 판단 결과 상기 노드 Q의 문서의 수가 min 보다 작아서 클러스터를 구성할 수 없는 경우, 다음으로 상기 노드 Q가 루트 노드인지의 여부를 판단한다(832). 만약 상기 노드 Q가 루트 노드라면 더 이상 순회할 노드가 남아있지 않은 경우이므로 클러스터링은 실패한 것이 된다(834). 이때 노드 Q가 루트 노드이면서 문서의 수가 0일 때에도 클러스터링은 실패로 처리된다. 그러나 만약 상기 노드 Q가 루트 노드가 아니라면 다음 노드로 이동한다(836)..
2) 노드 Q가 비단말 노드인 경우
노드 Q가 비단말 노드인 경우에 대해서는 도 9에서 설명한다. 먼저, 노드 Q가 비단말 노드인 경우에는 노드 Q의 서브트리 문서의 수(nd(Q))가 max보다 작거나 같은지를 판단한다(902).
2-1) 노드 Q가 비단말 노드인 경우이면서 nd(Q)가 max보다 작거나 같은 경우
먼저 노드 Q의 nd(Q)의 값이 min 보다 크거나 같은지의 여부를 판단한다(904). 만약 상기 n(Q)의 값이 min보다 크거나 같은 경우에는 서브트리 Q(노드 Q와 노드 Q의 모든 서브트리)로 클러스터를 구성하고(906), 서브트리 Q를 상기 문서 계층구조에서 삭제하고(908), 노드 Q의 조상 노드가 존재하는 경우에는 해당 조상 노드의 서브트리 문서의 수를 다시 계산한다(910). 이는 해당 조상 노드의 서브트리 문서의 수에서 nd(Q)를 빼주는 것으로 이루어진다. 이후, 현재까지 생성된 클러스터의 수(L)를 1 증가시키고(912), 상기 L 값이 목표치(K) 보다 작은지의 여부를 판단한다(914).
만약 상기 L 값이 K보다 작은 경우에는 다음으로 상기 노드 Q가 루트 노드인지의 여부를 판단한다(916). 만약 상기 노드 Q가 루트 노드라면 더 이상 클러스터를 구성할 노드가 남아있지 않은 상태에서 L 값이 목표치(K)에 도달하지 못한 경우이므로 클러스터링은 실패한 것이 된다(918). 그러나 만약 상기 노드 Q가 루트 노드가 아니라면 역 레벨 오더 트리 순회 방식에 따라 다음 노드로 이동하여 클러스터링을 계속한다(920).
한편, 만약 상기 L 값이 K 값과 같은 경우에는 다음으로 상기 노드 Q가 루트 노드인지의 여부를 판단한다(922). 만약 상기 노드 Q가 루트 노드인 경우는 생성된 클러스터의 수가 목표치(K)를 달성한 상태에서 더 이상 클러스터를 구성할 노드가 남아 있지 않은 경우이므로 클러스터링은 성공한 것이 된다(924). 그러나 만약 상기 노드 Q가 루트 노드가 아닌 경우에는 다음으로 서브트리 문서수가 1 이상인 노드가 남아있는지의 여부를 판단한다(926). 만약 서브트리 문서의 수가 1 이상인 노드가 남아있으면, 다음으로 남아있는 노드 모두를 상기 생성된 클러스터에 포함 가능한지의 여부를 판단한다(928). 만약 만일 남아있는 노드 모두를 상기 생성된 클러스터에 포함시켜도 클러스터의 크기에 적합한 경우에는 남아있는 노드 모두를 상기 생성된 클러스터에 포함시키고(930), 클러스터링의 성공으로 처리한다(924). 만약 남아있는 노드 모두를 상기 생성된 클러스터에 포함시킬 수 없는 경우에는 클러스터링은 실패한 것이 된다(918). 한편, 서브트리 문서 수가 1 이상인 노드가 남아있지 않은 경우에는 상기 문서 계층구조에 노드는 존재하나 문서는 존재하지 않는 경우이므로 클러스터링 성공으로 처리한다(루트 노드는 문서의 수가 0일 수 있음)(924).
한편, 상기 904 단계의 판단 결과 상기 노드 Q의 문서의 수가 min 보다 작아서 클러스터를 구성할 수 없는 경우에는, 다음으로 상기 노드 Q가 루트 노드인지의 여부를 판단한다(932). 만약 상기 노드 Q가 루트 노드라면 더 이상 순회할 노드가 남아있지 않은 경우이므로 클러스터링은 실패한 것이 된다(934). 그러나 만약 상기 노드 Q가 루트 노드가 아니라면 역 레벨 오더 트리 순회 방식에 따라 다음 노드로 이동하여 클러스터링을 계속한다(936).
2-2) 노드 Q가 비단말 노드인 경우이면서 nd(Q)가 max보다 큰 경우
노드 Q가 비단말 노드이면서 nd(Q)가 max보다 큰 경우는 도 10에서 설명한다. 이 경우 상기 노드 Q의 서브트리는 독자적으로 클러스터를 구성하지 못하고, 서브트리 Q(노드 Q와 노드 Q의 모든 서브트리) 또한 클러스터를 구성하지 못하므로, 노드 Q 및 노드 Q의 서브트리의 조합으로 클러스터를 구성하여야 한다.
이를 위하여, 먼저 상기 노드 Q와 노드 Q의 서브트리들로 구성되는 모든 조합을 구성한다(1002). 이때 각 조합에 포함되는 노드들의 문서의 개수의 합은 min 보다 크거나 같고 max 보다 작거나 같아야 한다. 또한 상기 노드 Q는 자신의 서브트리들이 우선적으로 조합에 포함된 이후에만(즉 남아있는 서브트리들이 존재하지 않는 경우에만) 조합에 포함될 수 있다. 그 이유는 노드 Q의 서브트리가 조합에 포함되지 않고 남아 있는 상태에서 노드 Q가 조합에 포함될 경우, 이후의 단계에서 노드 Q가 클러스터링되어 문서 계층구조에 삭제되면 상기 문서 계층구조가 더 이상 트리 형태를 유지할 수 없기 때문이다.
여기서 각 조합은 2개 이상 최대 m+1개(노드 Q 및 노드 Q의 m개의 서브트리들)의 원소(노드, 서브트리)들로 구성될 수 있다. 원소의 개수가 m+1일 때 고려해야 할 최대 구성 가능한 조합 후보의 개수는 (2m+1 - m - 2) 개로써, 집합의 원소의 개수가 m+1일 때 상기 집합의 부분집합의 수(2m+1)에서 m+2를 뺀 수와 같다. 즉, 원소가 m+1개인 집합의 부분집합의 개수와 비교하면, 공집합과 원소가 1개인 부분집합을 제외한 부분집합의 개수와 같다. 따라서 상기 조합은 집합의 원소들로 부분집합을 구성하는 방법을 응용하여 구할 수 있다. 조합을 구성하는 방법의 일례는 가능한 모든 조합 후보를 구성한 후 문서의 수가 min 보다 크거나 같고 max 보다 작거나 같은 조합을 선택하는 방법을 사용할 수 있다. 여기서 각 서브트리 및 노드 Q는 선택된 조합 중 하나에만 포함되도록 한다. 상기 조합 구성 과정에서 서브트리 문서의 수가 많은 서브트리들이 우선적으로 선택되도록 할 수도 있다. 또는 문서의 수가 min과 max의 평균에 가까운 조합이 우선적으로 선택되도록 할 수도 있다. 또한 조합을 구성하는 다양한 방법들 중에서 선택하여 사용할 수도 있다. 이와 같은 과정에서 서브트리들의 조합 구성은 문서의 수가 min 보다 크거나 같고 max 보다 작거나 같은 조합이 1 개 이상 복수 개(a 개, a = 1) 구성될 수도 있고, 또는 실패(즉, 구성된 조합이 없음)할 수도 있다.
조합이 구성되면, 다음으로 상기 노드 Q 및 노드 Q의 서브트리들이 모두 2개 이상의 조합에 포함되는지의 여부를 판단한다(1004). 즉, 상기 노드 Q 및 노드 Q의 서브트리 모두가 함께 조합에 포함되는 경우이다.
상기 판단 결과 만약 상기 노드 Q 및 노드 Q의 서브트리들이 모두 2개 이상의 조합에 포함되는 경우에는 상기 생성된 조합들로 a 개의 클러스터를 생성하고(1006, a는 생성된 조합의 수), 생성된 클러스터에 포함된 노드들을 상기 문서 계층구조에서 삭제하고(1008), 노드 Q의 조상 노드가 존재하는 경우에는 해당 조상 노드(노드 Q의 부모 노드부터 루트 노드까지)의 서브트리 문서의 수를 다시 계산한다(1010). 이는 해당 조상 노드의 서브트리 문서의 수에서 nd(Q)를 빼주는 것으로 이루어진다. 이후, 현재까지 생성된 클러스터의 수(L)를 a 만큼 증가시킨 후(1012), 상기 L 값과 목표치(K) 와의 크기를 비교한다(1014,1016).
만약 상기 L 값이 목표치(K) 보다 큰 경우에는 클러스터의 개수가 목표치를 초과한 것이므로 클러스터링은 실패한 것이 된다(1018).
만약 상기 L 값이 K 값과 동일한 경우에는, 다음으로 상기 노드 Q가 루트 노드인지의 여부를 판단한다(1020). 만약 상기 노드 Q가 루트 노드인 경우에는 클러스터링은 성공한 것이 된다.(1022), 그러나 만약 상기 노드 Q가 루트 노드가 아닌 경우에는 다음으로 서브트리 문서의 수가 1 이상인 노드가 남아있는지의 여부를 판단한다(1024). 만약 서브트리 문서의 수가 1 이상인 노드가 남아있으면, 다음으로 남아있는 노드 모두를 상기 노드 Q가 포함된 클러스터에 포함 가능한지의 여부를 판단한다(1025). 만약 남아있는 노드 모두를 상기 노드 Q가 포함된 클러스터에 포함시켜도 클러스터의 크기에 적합한 경우에는 남아있는 노드 모두를 상기 노드 Q가 포함된 클러스터에 포함시키고(1026), 클러스터링의 성공으로 처리할 수 있다(1022). 그러나 만약 남아있는 노드 모두를 상기 노드 Q가 포함된 클러스터에 포함시킬 수 없는 경우에는 클러스터링은 실패한 것이 된다(1030). 한편, 서브트리 문서 수가 1 이상인 노드가 남아있지 않은 경우에는 상기 문서 계층구조에 노드는 존재하나 문서는 존재하지 않는 경우이므로 클러스터링 성공으로 처리한다(루트 노 드는 문서의 수가 0일 수 있음)(1022).
한편, 상기 L 값이 목표치(K) 보다 작은 경우에는, 다음으로 상기 노드 Q가 루트 노드인지의 여부를 판단한다(1028). 만약 상기 노드 Q가 루트 노드인 경우에는 클러스터의 개수가 목표치를 미달한 상태에서 더 이상 클러스터링할 문서가 남아있지 않은 경우이므로 클러스터링은 실패한 것이 된다(1030). 그러나 만약 상기 노드 Q가 루트 노드가 아닌 경우에는 상기 노드 Q의 모든 조상 노드의 서브트리 문서의 수를 재계산하고(1032), 다음 역 레벨 오더 트리 순회 방식에 따라 다음 노드로 이동하여 클러스터링을 계속한다(1034). 즉 상기 노드 Q의 모든 조상 노드(부모 노드부터 루트 노드까지)의 서브트리 문서의 수에서 클러스터로 분할된 문서의 수를 빼고 다음 노드로 진행하게 된다.
만약 상기 1004 단계에서 노드 Q와 노드 Q의 모든 서브트리들로 조합을 구성할 수 없는 경우에는, 다음으로 노드 Q를 제외한 노드 Q의 서브트리들로 1개 이상의 조합을 구성하고(1036), 조합에서 제외되는 노드 Q의 서브트리들(노드 Q를 포함)의 문서의 수의 합계가 max보다 큰지 판단한다(이때 조합에서 노드 Q만이 제외될 수도 있다)(1038). 만일 상기 판단 결과가 max보다 크다면 제외되는 노드들은 클러스터를 구성할 수 없으므로 클러스터링 실패로 처리한다(1040). 이와 같이 클러스터링이 실패한 경우에는 클러스터링 조건들을 적절히 변경하여 다시 클러스터링을 시도할 수 있다.
만일 상기 판단 결과가 max보다 작거나 같다면 (이 경우는 min보다도 작게되며, 그 이유는 min보다 크거나 같다면 조합을 구성할 수 있기 때문임) 상기 1036 단계에서 구성한 조합에 포함된 서브트리들로 다음과 같이 클러스터를 구성한다.
즉, 상기 판단 결과 만약 상기 노드 Q의 서브트리들의 일부 또는 모두가 하나 이상의 조합에 포함되는 경우에는 상기 생성된 조합들로 a 개의 클러스터를 생성하고(1042, a는 생성된 조합의 수), 생성된 클러스터에 포함된 노드들을 상기 문서 계층구조에서 삭제하고(1044), 노드 Q와 노드 Q의 모든 조상 노드(즉, 노드 Q부터 루트 노드까지)의 서브트리 문서의 수를 재계산한다(1046). 즉 상기 노드 Q와 노드 Q의 모든 조상 노드의 서브트리 문서의 수에서 클러스터로 분할된 문서의 수를 삔다. 이후, 현재까지 생성된 클러스터의 수(L)를 a 만큼 증가시킨 후(1048), 상기 L 값과 목표치(K) 와의 크기를 비교한다(1050).
만약 상기 1050 단계의 비교 결과, L 값이 목표치(K) 보다 크거나 같은 경우에는 조합에서 제외된 노드 Q 및 노드 Q의 서브트리에 포함된 문서가 남아 있는 상태에서 클러스터의 개수가 목표치보다 크거나 같아진 경우이므로 클러스터링은 실패한 것이 된다(1052).
만약 상기 1050 단계의 비교 결과 L 값이 목표치(K) 보다 작은 경우에는, 다음으로 상기 노드 Q와 노드 Q의 모든 조상 노드의 서브트리 문서의 수를 재계산하고(1032), 다음 노드로 이동한다(1034). 즉 상기 노드 Q와 노드 Q의 모든 조상 노드(노드 Q부터 루트 노드까지)의 서브트리 문서의 수에서 클러스터로 분할된 문서의 수를 빼고 다음 노드로 진행하게 된다.
다단계 클러스터링
클러스터링이 성공적으로 종료되면 각각 min 과 max 사이의 문서 수를 갖는 K 개의 클러스터들이 생성된다. 본 발명의 실시예에서는 상기 K 개의 클러스터 각각에 대하여 상기 304 내지 310 단계를 반복함으로써 상기 클러스터 각각을 재차 클러스터링 할 수 있으며, 이를 필요한 단계만큼 반복할 수 있다. 이와 같이, 다단계(X 단계)의 클러스터링을 수행하게 되면, 클러스터링의 결과 KX 개의 미니 클러스터들이 생성되게 된다.
생성된 클러스터 각각의 중심어 및 평균 거리 계산(312)
클러스터링이 성공적으로 종료되면 각각 min 과 max 사이의 문서 수를 갖는 K 개의 클러스터들이 생성된다. 본 단계에서는 이와 같이 생성된 상기 각 클러스터들의 중심어 및 상기 중심어로부터의 평균 거리를 계산한다.
상기 클러스터의 중심어는 상기 클러스터에 속한 문서의 주제어들 중에서 주제어들 간 온톨로지 isA 계층구조 상의 평균 거리가 가장 짧은 주제어로 정할 수 있다. 이와 같은 주제어간의 평균 거리를 이용한 클러스터의 중심어 선정 방법(1200)을 도 12에 나타내었다.
먼저, 클러스터로부터 추출된 문서의 주제어를 이용하여 n*n 매트릭스(R; 이 때 n은 상기 클러스터에 속한 주제어의 개수) 또는 상위 삼각 행렬(S)을 생성한다(1202). 상기 n*n 매트릭스 또는 상위 삼각 행렬에서, 각 행 및 열은 상기 추출된 주제어를, 각 셀은 해당 행 및 열에 해당하는 주제어들의 온톨로지 isA 계층구조상의 거리를 나타낸다.
예를 들어, 클러스터로부터 추출된 주제어 및 해당 주제어를 갖는 문서 수가 다음의 표 4와 같은 경우, 도 1에 도시된 온톨로지 isA 계층구조를 이용하여 매트릭스(R)를 구성하면 표 5와 같다.
일련번호 주제어 문서 수
1 붕어 8
2 멸치 6
3 어류 4
R 1 2 3
1 0 2 1
2 2 0 1
3 1 1 0
또한, 상기 도 1의 키워드를 이용하여 상위 삼각 행렬(S)을 구성하면 다음의 표 6과 같다.
S 1 2 3
1 0 2 1
2 0 1
3 0
다음으로, 상기 매트릭스(R) 또는 상위 삼각 행렬(S)을 이용하여 각 주제어 별로 상기 클러스터에 포함된 주제어 간의 온톨로지 isA 계층구조상의 평균거리를 계산한다(1204).
예를 들어, 상기 매트릭스(R)를 이용하여 각 주제어 별 평균거리를 계산할 경우에는 다음의 수학식 6을 이용한다.
Figure 112009077026454-PAT00005
상기 수학식에서, K는 주제어의 일련번호, F(i)는 일련번호가 i인 주제어를 갖는 문서의 수, R(i, j)는 상기 매트릭스(R)의 행 i 열 j 인 (i, j) 셀의 값이다.
만약 각 주제어 별 문서 수를 고려하지 않을 경우, F(i) 값은 모두 1이 된다.
상기 상위 삼각 행렬(S)를 이용하여 각 키워드 별 평균거리를 계산할 경우에는 다음의 수학식 7을 이용한다.
Figure 112009077026454-PAT00006
상기 수학식에서, K는 주제어의 일련번호, F(i)는 일련번호가 i인 주제어를 갖는 문서의 수, S(i, j)는 상기 상위 삼각 행렬(S)의 행 i 열 j 인 (i, j) 셀의 값이다.
이 때에도 만약 각 주제어 별 문서 수를 고려하지 않을 경우, F(i) 값은 모두 1이 된다.
마지막으로, 상기 계산된 평균거리가 가장 짧은 주제어를 상기 클러스터의 중심어로 선정하게 된다(1206).
상기 수학식 5 및 6에 따라 표 4에 기재된 주제어들간의 평균거리를 계산하면 다음과 같다.
붕어: (0*8+2*6+1*4)/18 = 0.89
멸치: (2*8+0*6+1*4)/18 = 1.11
어류: (1*8+1*6+0*4)/18 = 0.78
즉, 상기 주제어들 중 평균 거리가 가장 짧은 주제어는 「어류」이므로, 상기 클러스터의 중심어는「어류」가 되며, 상기 중심어로부터의 평균 거리는 0.78이 된다. 만일 평균거리가 가장 짧은 키워드가 복수 개 존재할 경우에는 이들 중 하나를 주제어로 선정할 수 있다. 예를 들면 본 발명에 기재된 다른 방법을 사용하여 선정할 수도 있고, 온톨로지 계층 구조에서 레벨이 큰 키워드를 선택할 수도 있고, 기타 다양한 방식을 적용할 수 있다.
클러스터에 속하는 문서들의 조정(314)
상기와 같이 클러스터들의 중심어 및 평균 거리가 계산되면, 다음으로 각 클러스터의 중심어와 다른 주제어간의 평균 거리가 일정 수치(D) 이하가 되도록 각 클러스터에 속하는 문서들을 조정할 수 있다. 즉, 상기 클러스터링 조건에 클러스터 내 중심어들의 평균 거리값(D)을 추가하고, 각 클러스터들에 속한 문서들의 주제어와 중심어와의 평균 거리가 상기 D 값보다 작거나 같은 경우에만 클러스터링이 성공한 것으로 간주할 수 있다.
예를 들어, 상기 중심어와 다른 주제어간의 평균 거리가 D 보다 큰 클러스터가 존재할 경우, 상기 클러스터에 속한 문서 중 중심어로부터의 거리가 D 보다 큰 주제어를 가지는 문서를 상기 평균 거리가 D 보다 작아질 때까지 다른 클러스터로 이동시킬 수 있다. 다만 이 경우 이동하는 문서는 현재 클러스터의 중심어와의 거리보다 이동하려는 클러스터의 중심어와의 거리가 짧아야 하며, 이동 후 두 클러스 터 모두 클러스터링 조건(K, min, max, D)을 만족해야 한다. 만약 어떠한 경우에도 중심어로부터의 평균 거리가 D를 초과하는 문서가 존재할 경우에는 클러스터링은 실패로 처리하며, 이 때에는 상기 클러스터링 조건들을 재조정하여 다시 클러스터링을 수행할 수 있다.
각 클러스터의 응집도 계산(316)
상기와 같이 각 클러스터의 중심어 및 상기 중심어로부터의 평균 거리가 계산되면, 다음으로 각 클러스터에 속한 주제어들의 응집도를 계산할 수 있다. 응집도란 클러스터 내의 주제어들이 중심어와 얼마나 밀접하게 관련되어 있는지를 판단하기 위한 척도로 사용될 수 있다.
상기 응집도는 다음의 수학식 8에 의하여 계산된다. 계산된 응집도는 0에서 1 사이의 값을 가지며, 1에 가까울수록 응집도가 높다.
Figure 112009077026454-PAT00007
예를 들어, 표 5에 도시된 매트릭스(R)에서 중심어를 「어류」라 할 경우, 상기 중심어와 상기 클러스터 내의 주제어들간의 평균거리는 빈도(해당 주제어를 가지는 문서 수)를 고려할 경우 (1*8+1*6+0*4)/18 = 0.78이 된다. 여기서 평균거리를 계산할 때 중심어도 주제어로 포함시켰으나, 중심어는 제외하고 계산할 수도 있다. 또한 도 1에 도시된 온톨로지 isA 계층구조에서의 최대거리는 「사람」과 「새우」 사이의 거리로서 6이므로, 상기 응집도는
1 - 0.78/6 = 0.87
이 된다.
문서의 검색
도 13은 본 발명의 일 실시예에 따라 생성된 복수 개의 클러스터로부터의 문서 검색 방법(1300)을 나타낸 순서도이다.
먼저 문서를 검색하기 위한 질의문으로부터 질의 주제어를 추출한다(1302). 상기 질의문은 문서, 하나 이상의 단락, 문장 또는 키워드의 조합 등으로 구성될 수 있다. 또한 상기 질의문으로부터 질의 주제어를 추출하는 방법은 전술한 문서로부터의 키워드 추출 방식을 사용하여 수행될 수 있다.
다음으로, 생성된 상기 질의 주제어와 각 클러스터들의 중심어와의 온톨로지 계층구조상의 거리를 비교하여 질의 주제어로부터의 거리가 가장 가까운 클러스터를 선택한다(1304). 이때, 거리가 같은 클러스터가 복수 개 존재하는 경우에는 해당 클러스터를 모두 선택할 수 있다. 또한, 다단계의 클러스터링이 이루어진 경우에는 상기 904 단계를 각각의 단계에 대하여 반복하여 수행할 수 있다. 예를 들어, 첫 번째 단계의 클러스터링으로부터 생성된 클러스터 중 중심어와의 거리가 가장 가까운 클러스터를 선택한 후, 상기 클러스터 내부에 생성된 미니 클러스터의 중심어들과 상기 질의 주제어를 비교하여 이들 중 가장 가까운 미니 클러스터를 선택하도록 할 수 있다.
다음으로, 상기 선택된 클러스터 내의 문서들의 주제어와 상기 질의 주제어 간의 거리를 계산하고(1306), 필요한 경우 상기 거리에 따라 상기 선택된 클러스터 내의 문서들에 랭킹을 부여한 뒤, 상위 일정 개수의 문서를 상기 질의문과 유사한 문서로 선택한다(1308). 본 실시예에서는 질의 주제어와 문서의 주제어 간 거리 계산을 위하여 온톨로지 계층구조를 이용하였으나, 필요한 경우 온톨로지상의 거리가 아닌 벡터공간모델에 의한 유사도를 계산할 수도 있다. 즉 클러스터 내의 문서들 및 질의문으로부터 벡터를 생성하고 생성된 질의 벡터 및 문서 벡터들 간의 유클리디언 공식 또는 코사인 공식에 의하여 유사도를 구하는 방식으로 질의문과 클러스터 내의 문서들 사이의 랭킹을 부여할 수도 있다. 상기 벡터 공간모델에 의한 유사도 계산 방법은 본 발명이 속하는 기술분야에서는 공지 공용의 기술에 해당하므로 여기서는 그 상세한 설명을 생략하기로 한다.
한편, 본 발명의 실시 예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야에서 통상의 지식을 가진 자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 플로피 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
도 14는 본 발명의 일 실시예에 따른 온톨로지를 이용한 문서의 군집화 장치(1400)를 나타낸 도면이다.
도시된 바와 같이, 본 발명의 일 실시예에 따른 온톨로지를 이용한 문서의 군집화 장치(1400)는, 키워드 추출부(1402), 주제어 선정부(1404), 문서 계층구조 생성부(1406), 문서 계층구조 압축부(1408), 제 1 클러스터링부(1410), 제 2 클러스터링부(1412)를 포함하며, 필요에 따라 중심어 선정부(1414), 클러스터 조정부(1416), 응집도 계산부(1418) 및 문서 검색부(1420) 중 하나 이상을 더 포함할 수 있다.
키워드 추출부(1402)는 전술한 키워드 추출 방법에 의하여 복수 개의 문서 각각으로부터 복수 개의 키워드 및 각 키워드의 상기 문서 내에서의 빈도수를 추출한다.
주제어 선정부(1404)는 키워드 추출부(1402)에서 추출된 키워드 및 빈도수를 이용하여 상기 복수 개의 문서 각각의 주제어를 선정한다.
문서 계층구조 생성부(1406)는 주제어 선정부(1404)에서 선정된 상기 주제어를 포함하는 온톨로지 isA 계층구조에 상기 복수 개의 문서를 대응시켜 문서 계층구조를 생성한다.
문서 계층구조 압축부(1408)는 문서 계층구조 생성부(1406)에서 생성된 상기 문서 계층구조를 압축한다.
제 1 클러스터링부(1410)는 문서 계층구조 압축부(1408)에서 압축된 상기 문서 계층구조를 순회하면서 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링하고 클러스터링된 노드를 상기 문서 계층구조에서 삭제한다.
제 2 클러스터링부(1412)는 제 1 클러스터링부(1410)에 의해 삭제되지 않은 상기 문서 계층구조 내의 비단말 노드들을 순회하면서 상기 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링한다. 상기 제 1 및 제 2 클러스터링부에서의 클러스터링 과정에 대해서는 전술하였다.
중심어 선정부(1414)는 상기 제 1 클러스터링부(1410) 및 제 2 클러스터링부(1412)에 의해 생성된 클러스터 각각의 중심어 및 상기 중심어와 해당 클러스터에 속한 주제어들간의 평균 거리를 계산한다.
클러스터 조정부(1416)는 상기 생성된 모든 클러스터의 주제어와 주제어들간의 평균 거리가 소정값 이하가 되도록 특정 클러스터에 포함된 문서를 다른 클러스터로 이동시킨다.
응집도 계산부(1418)는 전술한 응집도 계산방법에 의하여 상기 생성된 각 클러스터의 응집도를 계산한다.
문서 검색부(1420)는 질의문으로부터 주제어를 추출하고, 추출된 주제어와 각 클러스터의 중심어 간의 온틀로지 계층 구조상의 거리를 비교하여 가장 거리가 가까운 클러스터를 선택하고, 추출된 주제어와 선택된 클러스터에 속한 문서들의 주제어와 온틀로지 계층 구조상의 거리를 비교하여 거리가 가까운 순으로 상위의 일정 개수의 문서들을 검색하거나, 또는 질의문의 벡터와 클러스터에 속한 문서 벡터들간의 유사도 비교에 의해 유사도 순으로 상위의 일정 개수의 문서들을 검색한다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다.
그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 실시예에 따른 온톨로지 isA 계층구조(100)의 일례를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따라 노드 간의 거리가 각기 다르게 설정된 온톨로지 isA 계층구조의 일례를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 온톨로지를 이용한 문서의 다단계 군집화 방법(300)을 나타낸 순서도이다.
도 4는 본 발명의 일 실시예에 따른 키워드간 평균 거리를 이용한 주제어 선정 방법(400)을 나타낸 순서도이다.
도 5는 본 발명의 일 실시예에 따른 포스트오더 트리 순회 방식 및 역 레벨 오더 트리 순회 방식을 설명하기 위한 온톨로지를 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 문서 계층구조 내의 특정 노드에서의 세부 압축 과정(600)을 도시한 순서도이다.
도 7은 본 발명의 일 실시예에 따른 문서 계층구조 내의 특정 노드에서의 제 1 세부 클러스터링 과정(700)을 도시한 순서도이다.
제 8 내지 10은 본 발명의 일 실시예에 따른 문서 계층구조 내의 특정 노드에서의 제 2 세부 클러스터링 과정(800)을 도시한 순서도이다.
도 11은 본 발명의 일 실시예에 따른 문서 계층구조 내의 특정 노드에서의 클러스터링 과정을 설명하기 위한 문서 계층구조를 나타낸 도면이다.
도 12는 본 발명의 일 실시예에 따른 주제어간의 평균 거리를 이용한 클러스 터의 중심어 선정 방법(1200)을 나타낸 순서도이다.
도 13은 본 발명의 일 실시예에 따라 생성된 복수 개의 클러스터를 이용한 문서 검색 방법(1300)을 나타낸 순서도이다.
도 14는 본 발명의 일 실시예에 따른 온톨로지를 이용한 문서의 다단계 군집화 장치(1400)를 나타낸 도면이다.

Claims (30)

  1. 문서의 다단계 군집화 장치에서, 복수 개의 문서 각각의 주제어를 선정하는 단계;
    상기 문서의 다단계 군집화 장치에서, 상기 선정된 주제어를 포함하는 온톨로지 isA 계층구조에 상기 복수 개의 문서들을 대응시켜 문서 계층구조를 생성하는 단계;
    상기 문서의 다단계 군집화 장치에서, 생성된 상기 문서 계층구조를 압축하는단계;
    상기 문서의 다단계 군집화 장치에서, 압축된 상기 문서 계층구조에 포함된 노드 중 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링하고 클러스터링된 노드를 상기 문서 계층구조에서 삭제하는 제 1 클러스터링 단계; 및
    상기 문서의 다단계 군집화 장치에서, 상기 제 1 클러스터링 단계에서 삭제되지 않은 상기 문서 계층구조 내의 비단말 노드들을 순회하면서 상기 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링하는 제 2 클러스터링 단계;
    를 포함하는 온톨로지를 이용한 문서의 다단계 군집화 방법.
  2. 제1항에 있어서,
    상기 문서 계층구조의 각 노드는, 해당 노드의 온톨로지 용어를 주제어로 하는 문서의 수, 해당 노드를 루트 노드로 하는 서브트리의 온톨로지 용어를 주제어로 하는 문서의 수의 합 및 상기 해당 노드의 온톨로지 용어를 주제어로 하는 문서의 리스트를 가리키는 포인터를 포함하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  3. 제2항에 있어서,
    상기 문서 계층구조의 압축 단계는, 상기 문서 계층구조를 포스트오더(postorder) 트리 순회 방식에 따라 순회하고, 상기 순회 과정에서 방문한 상기 문서 계층구조의 각 노드 별로 세부 압축 단계를 수행함으로써 수행되는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  4. 제3항에 있어서,
    상기 문서 계층구조의 압축 단계의 순회 과정에서 방문한 특정 노드에서의 세부 압축 단계는,
    상기 특정 노드에 포함된 문서 수가 기 설정된 클러스터의 최대값보다 작거나 같은지의 여부를 판단하는 제1단계;
    상기 제1단계의 판단 결과 상기 특정 노드에 포함된 문서 수가 상기 최대값보다 작거나 같은 경우, 상기 특정 노드가 루트 노드인지의 여부를 판단하는 제2단계;
    상기 제2단계의 판단 결과, 상기 특정 노드가 루트 노드가 아닌 경우, 상기 특정 노드에 포함된 문서 수가 0인지의 여부를 판단하는 제3단계;
    상기 제3단계의 판단 결과, 상기 특정 노드에 포함된 문서 수가 0인 경우, 상기 특정 노드를 상기 문서 계층구조에서 삭제하고, 상기 특정 노드의 자식 노드를 상기 특정 노드의 부모 노드와 연결하는 제4단계;
    를 포함하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  5. 제4항에 있어서,
    상기 제1단계의 판단 결과, 상기 특정 노드에 포함된 문서 수가 상기 최대값보다 큰 경우, 클러스터링 실패로 판단하고, 상기 문서 압축 단계를 중단하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  6. 제4항에 있어서,
    상기 제2단계의 판단 결과 상기 특정 노드가 루트 노드이거나, 또는 상기 제3단계의 판단 결과 상기 특정 노드에 포함된 문서 수가 0이 아닌 경우,
    상기 특정 노드의 서브트리 문서 수를 계산하는 제5단계;
    상기 특정 노드의 서브트리 문서 수가 기 설정된 클러스터의 최소값보다 크거나 같고 기 설정된 클러스터의 최대값보다 작거나 같은지의 여부를 판단하는 제6단계;
    상기 제6단계의 판단 결과 상기 특정 노드의 서브트리 문서 수가 상기 최소 값보다 크거나 같고 상기 최대값보다 작거나 같은 경우, 상기 특정 노드의 서브트리 문서 수와 기 설정된 클러스터의 최소값 및 최대값의 평균과의 차이를 계산하고, 상기 특정 노드를 클러스터 후보 리스트에 추가하는 제7단계;
    상기 특정 노드가 루트 노드인지의 여부를 판단하여, 루트 노드가 아닌 경우 다음 노드로 이동하는 제8단계;
    를 더 포함하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  7. 제6항에 있어서,
    상기 제8단계에서 상기 특정 노드가 루트 노드인 경우 상기 제 1 클러스터링 단계를 수행하며,
    상기 제 1 클러스터링 단계는,
    상기 클러스터 후보 리스트가 공백 리스트인지의 여부를 판단하는 제9단계;
    상기 클러스터 후보 리스트가 공백 리스트가 아닌 경우, 상기 클러스터 후보 리스트에서 가장 우선순위가 높은 노드를 추출하고, 상기 추출된 노드와 추출된 노드의 서브트리로 클러스터를 생성하는 제10단계;
    상기 생성된 클러스터에 포함된 노드를 상기 문서 계층구조에서 삭제하고, 상기 추출된 노드의 조상 노드의 서브트리 문서 수를 재계산하는 제11단계;
    상기 후보 리스트에 포함된 상기 추출된 노드의 조상 노드 중 서브트리 문서의 수가 기 설정된 클러스터의 최소값보다 작거나 최대값보다 큰 노드를 상기 클러스터 후보 리스트에서 삭제하고, 클러스터 후보 리스트에 포함되지 않은 상기 추출 된 노드의 조상 노드 중 서브트리 문서의 수가 기 설정된 클러스터의 최소값보다 크거나 같고 최대값보다 작거나 같은 노드를 상기 클러스터 후보 리스트에 추가하는 제12단계;
    생성된 클러스터의 총 개수 값을 1 증가시키고, 증가된 상기 생성된 클러스터의 총 개수 값과 기 설정된 클러스터의 목표치를 비교하는 제13단계;
    제13단계의 비교 결과, 상기 생성된 클러스터의 총 개수 값이 기 설정된 클러스터의 목표치와 같은 경우, 상기 문서 계층구조에 문서 수 1 이상인 노드가 존재하는지의 여부를 판단하고, 존재하지 않는 경우 클러스터링 성공으로 판단하여 상기 제 1 클러스터링 단계를 종료하고, 존재하는 경우 상기 서브트리 문서 수 1 이상인 노드를 상기 생성된 클러스터에 포함시킬 수 있는지를 판단하여 포함시킬 수 있는 경우 상기 생성된 클러스터에 포함시키고 클러스터링 성공으로 판단하여 상기 제 1 클러스터링 단계를 종료하고, 포함시킬 수 없는 경우 클러스터링 실패로 판단하여 상기 제 1 클러스터링 단계를 중단하는 제14단계;
    를 포함하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  8. 제7항에 있어서,
    제9단계의 판단 결과 상기 클러스터 후보 리스트가 공백 리스트인 경우, 문서의 수가 1 이상인 노드가 존재하는지의 여부를 판단하여, 존재하지 않는 경우 클러스터링 실패로 판단하여 상기 제 1 클러스터링 단계를 종료하고, 존재하는 경우 제 2 클러스터링 단계를 수행하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  9. 제8항에 있어서,
    상기 제 2 클러스터링 단계는, 상기 제 1 클러스터링 단계가 종료된 상기 문서 계층구조를 역 레벨 오더 순회 방식으로 순회하고, 상기 순회 과정에서 방문한 노드에서 제 2 세부 클러스터링 단계를 수행함으로써 수행되는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  10. 제9항에 있어서,
    상기 제 2 세부 클러스터링 단계는,
    상기 방문한 특정 노드의 자식 노드가 존재하는지의 여부를 판단하는 제15단계;
    상기 제15단계의 판단 결과, 상기 방문한 특정 노드에 자식 노드가 존재하지 않는 경우, 상기 방문한 특정 노드의 문서 수가 상기 클러스터의 최소값보다 크거나 같은지의 여부를 판단하는 제16단계;
    상기 제16단계의 판단 결과, 상기 방문한 특정 노드의 문서 수가 상기 클러스터의 최소값보다 크거나 같은 경우, 상기 방문한 특정 노드로 클러스터를 생성하고 상기 방문한 특정 노드를 상기 문서 계층구조에서 삭제하며, 상기 방문한 특정 노드의 조상 노드의 서브트리 문서 수를 재계산하는 제17단계;
    상기 생성된 클러스터의 총 개수 값을 1 증가시키고, 증가된 상기 생성된 클러스터의 총 개수 값과 기 설정된 클러스터의 목표치를 비교하는 제18단계;
    상기 제18단계의 판단 결과 상기 생성된 클러스터의 총 개수 값이 기 설정된 클러스터의 목표치보다 작은 경우, 상기 방문한 특정 노드가 루트 노드인지의 여부를 판단하여, 루트 노드인 경우 클러스터링 실패로 판단하여 상기 제 2 클러스터링 단계를 중단하고, 루트 노드가 아닌 경우 다음 노드로 이동하는 제19단계;
    를 포함하는 온톨로지를 이용한 문서의 다단계 군집화 방법.
  11. 제10항에 있어서,
    상기 제16단계의 판단 결과, 상기 방문한 특정 노드의 문서 수가 상기 클러스터의 최소값보다 작은 경우, 상기 방문한 특정 노드가 루트 노드인지의 여부를 판단하여, 루트 노드인 경우 클러스터링 실패로 판단하여 상기 제 2 클러스터링 단계를 중단하고, 루트 노드가 아닌 경우 다음 노드로 이동하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  12. 제10항에 있어서,
    상기 제18단계의 판단 결과 상기 생성된 클러스터의 총 개수 값이 기 설정된 클러스터의 목표치와 같은 경우, 상기 방문한 특정 노드가 루트 노드인지의 여부를 판단하는 제20단계; 및
    상기 제20단계의 판단 결과, 상기 방문한 특정 노드가 루트 노드인 경우 클러스터링 성공으로 판단하고 상기 제 2 클러스터링 단계를 종료하는 제 21단계를 더 포함하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  13. 제12항에 있어서,
    상기 제20단계의 판단 결과, 상기 방문한 특정 노드가 루트 노드가 아닌 경우 상기 문서 계층구조에 서브트리 문서 수가 1 이상인 노드가 존재하는지의 여부를 판단하여, 존재하지 않는 경우 클러스터링 성공으로 판단하여 상기 제 2 클러스터링 단계를 종료하고, 존재하는 경우 상기 서브트리 문서 수가 1 이상인 노드를 상기 생성된 클러스터에 포함시킬 수 있는지를 판단하여 포함시킬 수 있는 경우 상기 생성된 클러스터에 포함시키고 클러스터링 성공으로 판단하여 상기 제 2 클러스터링 단계를 종료하고, 포함시킬 수 없는 경우 클러스터링 실패로 판단하여 상기 제 2 클러스터링 단계를 중단하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  14. 제10항에 있어서,
    상기 제15단계의 판단 결과, 상기 방문한 특정 노드에 자식 노드가 존재하는 경우,
    상기 방문한 특정 노드의 서브트리 문서 수와 상기 클러스터의 최대값 및 최대값과의 크기를 비교하는 제22단계;
    상기 제22단계의 판단 결과, 상기 방문한 특정 노드의 서브트리 문서 수가 상기 클러스터의 최대값보다 작거나 같고, 상기 클러스터의 최소값보다 크거나 같은 경우, 상기 방문한 특정 노드 및 상기 방문한 특정 노드의 서브트리로 클러스터를 생성하고, 생성된 클러스터에 포함된 노드를 트리에서 삭제하며, 상기 방문한 특정 노드의 조상 노드들의 서브트리 문서수를 재계산하는 제23단계;
    상기 생성된 클러스터의 총 개수 값을 1 증가시키고, 증가된 상기 생성된 클러스터의 총 개수 값과 기 설정된 클러스터의 목표치를 비교하는 제24단계;
    상기 제24단계의 판단 결과 상기 생성된 클러스터의 총 개수 값이 기 설정된 클러스터의 목표치보다 작은 경우, 상기 방문한 특정 노드가 루트 노드인지의 여부를 판단하여, 루트 노드인 경우 클러스터링 실패로 판단하여 상기 제 2 클러스터링 단계를 중단하고, 루트 노드가 아닌 경우 다음 노드로 이동하는 제25단계;
    를 포함하는 온톨로지를 이용한 문서의 다단계 군집화 방법.
  15. 제14항에 있어서,
    상기 제22단계의 판단 결과, 상기 방문한 특정 노드의 문서 수가 상기 클러스터의 최소값보다 작은 경우, 상기 방문한 특정 노드가 루트 노드인지의 여부를 판단하여, 루트 노드인 경우 클러스터링 실패로 판단하여 상기 제 2 클러스터링 단계를 중단하고, 루트 노드가 아닌 경우 다음 노드로 이동하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  16. 제14항에 있어서,
    상기 제24단계의 판단 결과 상기 생성된 클러스터의 총 개수 값이 기 설정된 클러스터의 목표치와 같은 경우, 상기 방문한 특정 노드가 루트 노드인지의 여부를 판단하는 제26단계; 및
    상기 제26단계의 판단 결과, 상기 방문한 특정 노드가 루트 노드인 경우 클러스터링 성공으로 판단하고 상기 제 2 클러스터링 단계를 종료하는 제27단계를 더 포함하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  17. 제16항에 있어서,
    상기 제26단계의 판단 결과, 상기 방문한 특정 노드가 루트 노드가 아닌 경우 상기 문서 계층구조에 서브트리 문서 수가 1 이상인 노드가 존재하는지의 여부를 판단하여, 존재하지 않는 경우 클러스터링 성공으로 판단하여 상기 제 2 클러스터링 단계를 종료하고, 존재하는 경우 상기 서브트리 문서 수가 1 이상인 노드를 상기 생성된 클러스터에 포함시킬 수 있는지를 판단하여 포함시킬 수 있는 경우 상기 생성된 클러스터에 포함시키고 클러스터링 성공으로 판단하여 상기 제 2 클러스터링 단계를 종료하고, 포함시킬 수 없는 경우 클러스터링 실패로 판단하여 상기 제 2 클러스터링 단계를 중단하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  18. 제14항에 있어서,
    상기 제22단계의 판단 결과, 상기 방문한 특정 노드의 문서 수가 상기 클러스터의 최대값보다 큰 경우,
    상기 방문한 특정 노드와 상기 방문한 특정 노드의 서브트리들을 이용하여 기 설정된 클러스터외 최소값보다 크거나 같고 기 설정된 클러스터의 최대값보다 작거나 같은 문서 수를 포함하는 하나 이상의 조합을 구성하는 제28단계;
    상기 제28단계에서 상기 방문한 특정 노드 및 상기 방문한 특정 노드의 모든 서브트리들이 상기 하나 이상의 조합 중 어느 하나에 포함되는 경우, 구성된 상기 조합들로 하나 이상의 클러스터를 생성하고, 생성된 클러스터를 상기 문서 계층구조에서 삭제하며, 상기 방문한 특정 노드의 조상 노드의 서브트리 문서 수를 재계산하고, 생성된 클러스터의 총 개수 값을 생성된 클러스터의 수만큼 증가시키는 제29단계;
    상기 생성된 클러스터의 총 개수 값을 기 설정된 클러스터의 목표치와 비교하는 제30단계;
    상기 제30단계의 판단 결과, 상기 생성된 클러스터의 총 개수 값이 상기 클러스터의 목표치와 같은 경우, 상기 방문한 특정 노드가 루트 노드인지의 여부를 판단하여, 루트 노드인 경우 클러스터링 성공으로 판단하고 상기 제 2 클러스터링 단계를 종료하는 제31단계;
    를 포함하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  19. 제18항에 있어서,
    상기 제30단계의 판단 결과, 상기 생성된 클러스터의 총 개수 값이 상기 클러스터의 목표치보다 큰 경우, 클러스터링 실패로 판단하고 상기 제 2 클러스터링 단계를 중단하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  20. 제18항에 있어서,
    상기 제31단계의 판단 결과, 상기 방문한 특정 노드가 루트 노드가 아닌 경우, 상기 문서 계층구조에 서브트리 문서 수가 1 이상인 노드가 존재하는지의 여부를 판단하여, 존재하지 않는 경우 클러스터링 성공으로 판단하여 상기 제 2 클러스터링 단계를 종료하고, 존재하는 경우 상기 서브트리 문서 수가 1 이상인 노드를 상기 생성된 클러스터에 포함시킬 수 있는지를 판단하여 포함시킬 수 있는 경우 상기 생성된 클러스터에 포함시키고 클러스터링 성공으로 판단하여 상기 제 2 클러스터링 단계를 종료하고, 포함시킬 수 없는 경우 클러스터링 실패로 판단하여 상기 제 2 클러스터링 단계를 중단하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  21. 제18항에 있어서,
    상기 제30단계의 판단 결과, 상기 생성된 클러스터의 총 개수 값이 상기 클러스터의 목표치보다 작은 경우,
    상기 방문한 특정 노드가 루트 노드인지의 여부를 판단하여, 루트 노드가 아닌 경우 상기 방문한 특정 노드의 노상 노드의 서브트리 문서 수를 재계산하고 다음 노드로 이동하고, 루트 노드인 경우 클러스터링 실패로 판단하고 상기 제 2 클러스터링 단계를 중단하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  22. 제18항에 있어서,
    상기 제28단계에서 상기 방문한 특정 노드 및 상기 방문한 특정 노드의 모든 서브트리들이 상기 하나 이상의 조합 중 어느 하나에 포함되지 않는 경우,
    상기 방문한 특정 노드의 서브트리들을 이용하여 기 설정된 클러스터외 최소값보다 크거나 같고 기 설정된 클러스터의 최대값보다 작거나 같은 문서 수를 포함하는 하나 이상의 조합을 구성하는 제32단계;
    상기 방문한 특정 노드 및 상기 32단계에서 생성된 조합에 포함되지 않은 상기 방문한 특정 노드의 자식 노드에 포함된 문서 수가 상기 클러스터의 최대값보다 작거나 같은 지의 여부를 판단하여, 작거나 같은 경우 상기 제32단계에서 생성된 조합으로 하나 이상의 클러스터를 생성하는 제33단계;
    상기 클러스터에 포함된 노드들을 상기 문서 계층구조에서 삭제하고, 상기 방문한 특정 노드의 서브트리 문서수를 재계산하는 제34단계;
    생성된 클러스터의 총 개수 값을 상기 제33단계에서 생성된 클러스터의 수만큼 증가시키는 제35단계;
    상기 생성된 클러스터의 총 개수 값을 기 설정된 클러스터의 목표치와 비교하는 제36단계;
    상기 제36단계의 판단 결과, 상기 생성된 클러스터의 총 개수 값이 상기 클러스터의 목표치보다 작은 경우, 상기 방문한 특정 노드의 노상 노드의 서브트리 문서 수를 재계산하고 다음 노드로 이동하고, 크거나 같은 경우 클러스터링 실패로 판단하고 상기 제 2 클러스터링 단계를 중단하는 제37단계를 포함하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  23. 제22항에 있어서,
    상기 제33단계의 판단 결과, 상기 방문한 특정 노드 및 상기 32단계에서 생성된 조합에 포함되지 않은 상기 방문한 특정 노드의 자식 노드에 포함된 문서 수가 상기 클러스터의 최대값보다 큰 경우, 클러스터링 실패로 판단하고 상기 제 2 클러스터링 단계를 종료하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  24. 제1항에 있어서,
    상기 제 2 클러스터링 단계의 수행 이후,
    상기 문서의 다단계 군집화 장치에서, 상기 생성된 클러스터 각각의 중심어를 선정하고, 상기 중심어와 해당 클러스터에 속한 주제어들간의 평균 거리를 계산하는 단계;
    상기 문서의 다단계 군집화 장치에서, 생성된 모든 클러스터의 주제어와 주제어들간의 평균 거리가 소정값 이하가 되도록 특정 클러스터에 포함된 문서를 다른 클러스터로 이동하는 단계;
    상기 문서의 다단계 군집화 장치에서, 상기 각 클러스터의 응집도를 계산하는 단계; 및
    상기 문서의 다단계 군집화 장치에서, 질의문에 의해 상기 생성된 각 클러스터의 문서를 검색하는 단계;
    를 더 포함하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  25. 제24항에 있어서,
    상기 중심어 선정 단계는, 해당 클러스터에 속한 문서의 주제어 중에서 주제어들 간 온톨로지 isA 계층구조 상의 평균 거리가 가장 짧은 주제어를 상기 중심어로 선정하는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  26. 제24항에 있어서,
    상기 각 클러스터의 응집도는, 다음의 수학식
    Figure 112009077026454-PAT00008
    을 이용하여 계산되는, 온톨로지를 이용한 문서의 다단계 군집화 방법.
  27. 제24항에 있어서,
    상기 문서 검색 단계는,
    상기 질의문으로부터 질의 주제어를 추출하는 단계;
    상기 질의 주제어와 각 클러스터들의 중심어와의 온톨로지 계층구조상의 거리를 비교하여 질의 주제어로부터의 거리가 가장 가까운 클러스터를 선택하는 단계;
    상기 선택된 클러스터 내의 문서들의 주제어와 상기 질의 주제어 간의 거리를 계산하는 단계; 및
    계산된 상기 거리가 가까운 순서로 소정 개수의 문서를 선택하는 단계;
    를 포함하는 문서의 다단계 군집화 방법.
  28. 제1항 내지 제27항 중 어느 한 항에 기재된 방법을 컴퓨터상에서 수행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  29. 복수 개의 문서 각각으로부터 복수 개의 키워드 및 각 키워드의 상기 문서 내에서의 빈도수를 추출하는 키워드 추출부;
    상기 키워드 추출부에서 추출된 키워드 및 빈도수를 이용하여 상기 복수 개의 문서 각각의 주제어를 선정하는 주제어 선정부;
    상기 주제어 선정부에서 선정된 상기 주제어를 포함하는 온톨로지 isA 계층구조에 상기 복수 개의 문서를 대응시켜 문서 계층구조를 생성하는 문서 계층구조 생성부;
    상기 문서 계층구조 생성부에서 생성된 상기 문서 계층구조를 압축하는 문서 계층구조 압축부;
    상기 문서 계층구조 압축부에서 압축된 상기 문서 계층구조를 순회하면서 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링하고 클러스터링된 노드를 상기 문서 계층구조에서 삭제하는 제 1 클러스터링부; 및
    상기 제 1 클러스터링부에 의해 삭제되지 않은 상기 문서 계층구조 내의 비단말 노드들을 순회하면서 상기 클러스터링 조건을 만족하는 상기 문서 계층구조상의 노드를 클러스터링하는 제 2 클러스터링부;
    를 포함하는 온톨로지를 이용한 문서의 다단계 군집화 장치.
  30. 제29항에 있어서,
    상기 제 1 클러스터링부 및 상기 제 2 클러스터링부에 의해 생성된 클러스터 각각의 중심어 및 상기 중심어와 해당 클러스터에 속한 주제어들간의 평균 거리를 계산하는 중심어 선정부;
    상기 생성된 모든 클러스터의 주제어와 주제어들간의 평균 거리가 소정값 이하가 되도록 특정 클러스터에 포함된 문서를 다른 클러스터로 이동시키는 클러스터 조정부;
    생성된 각 클러스터의 응집도를 계산하는 응집도 계산부;
    질의문에 의해 상기 생성된 각 클러스터의 문서를 검색하는 문서 검색부;
    중 하나 이상을 더 포함하는 온톨로지를 이용한 문서의 다단계 군집화 장치.
KR1020090123897A 2009-12-14 2009-12-14 온톨로지를 이용한 문서의 다단계 군집화 방법 및 장치 KR101070738B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090123897A KR101070738B1 (ko) 2009-12-14 2009-12-14 온톨로지를 이용한 문서의 다단계 군집화 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090123897A KR101070738B1 (ko) 2009-12-14 2009-12-14 온톨로지를 이용한 문서의 다단계 군집화 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20110067337A true KR20110067337A (ko) 2011-06-22
KR101070738B1 KR101070738B1 (ko) 2011-10-07

Family

ID=44399802

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090123897A KR101070738B1 (ko) 2009-12-14 2009-12-14 온톨로지를 이용한 문서의 다단계 군집화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101070738B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160066212A (ko) 2014-12-02 2016-06-10 포항공과대학교 산학협력단 의존 정규화 랜덤 측도를 이용한 트리 기반의 점층적 클러스터링 방법 및 장치
KR20190038309A (ko) * 2017-09-29 2019-04-08 인하대학교 산학협력단 효율적 특허 검색을 위한 검색 결과 다양성 인덱스 생성 장치 및 그 방법
KR20190038310A (ko) * 2017-09-29 2019-04-08 인하대학교 산학협력단 검색 결과 다양성 인덱스 기반의 효율적 검색 장치 및 그 방법
KR20200094514A (ko) * 2019-01-30 2020-08-07 경기대학교 산학협력단 설비 오류 발생 패턴 추출 장치 및 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160066212A (ko) 2014-12-02 2016-06-10 포항공과대학교 산학협력단 의존 정규화 랜덤 측도를 이용한 트리 기반의 점층적 클러스터링 방법 및 장치
KR20190038309A (ko) * 2017-09-29 2019-04-08 인하대학교 산학협력단 효율적 특허 검색을 위한 검색 결과 다양성 인덱스 생성 장치 및 그 방법
KR20190038310A (ko) * 2017-09-29 2019-04-08 인하대학교 산학협력단 검색 결과 다양성 인덱스 기반의 효율적 검색 장치 및 그 방법
KR20200094514A (ko) * 2019-01-30 2020-08-07 경기대학교 산학협력단 설비 오류 발생 패턴 추출 장치 및 방법

Also Published As

Publication number Publication date
KR101070738B1 (ko) 2011-10-07

Similar Documents

Publication Publication Date Title
CN106570128A (zh) 一种基于关联规则分析的挖掘算法
US10002182B2 (en) System and method for computerized identification and effective presentation of semantic themes occurring in a set of electronic documents
US7266548B2 (en) Automated taxonomy generation
Feng et al. Trie-join: a trie-based method for efficient string similarity joins
KR100816923B1 (ko) 문서 분류 시스템 및 그 방법
US20090037440A1 (en) Streaming Hierarchical Clustering
CN108549696B (zh) 一种基于内存计算的时间序列数据相似性查询方法
US20110219000A1 (en) Search apparatus, search method, and recording medium storing program
KR101070738B1 (ko) 온톨로지를 이용한 문서의 다단계 군집화 방법 및 장치
CN111382276A (zh) 一种事件发展脉络图生成方法
CN110688593A (zh) 一种社交媒体账号识别方法及系统
KR101067819B1 (ko) 온톨로지를 이용한 문서의 군집화 방법 및 장치
CN111201532B (zh) k-匿名化装置、方法以及记录介质
US11494555B2 (en) Identifying section headings in a document
KR100859710B1 (ko) 데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 검색, 저장, 삭제하는 방법
KR101615164B1 (ko) 엔-그램 기반의 질의 처리 장치 및 그 방법
CN108664548B (zh) 一种退化条件下的网络访问行为特征群体动态挖掘方法及系统
CN115617981A (zh) 一种面向社交网络短文本的信息层次摘要提取方法
Bustos et al. Improving the space cost of k-nn search in metric spaces by using distance estimators
Bender et al. Performance guarantees for B-trees with different-sized atomic keys
KR101793005B1 (ko) 정적 및 동적 데이터베이스에 대한 점진적 하이 유틸리티 패턴 마이닝 방법
KR20150057497A (ko) 온라인 텍스트 문서의 계층적 트리 기반 주제탐색 방법 및 시스템
KR101108600B1 (ko) 온톨로지를 이용한 문서간 유사도 측정 방법 및 장치
CN114943004B (zh) 属性图查询方法、属性图查询装置以及存储介质
Li et al. Large-scale documents reduction based on domain ontology and E2LSH

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
FPAY Annual fee payment

Payment date: 20140926

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150827

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181016

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20191008

Year of fee payment: 9