토픽추출 및 네트워크 생성엔진 TopicRank

개요

TopicRank는 사용자가 입력한 질의어에 기반을 두어 검색 결과에 대해 공시적 분석과 워드 클러스터링을 진행하고 동적으로 상호 작용하는 시맨틱 네트워크를 생성하는 알고리즘입니다. 사용자 질의어에 의해 제시된 키워드의 배열은 의미적 유사도 수식에 따라 결정됩니다. 같은 기본 질의라 하더라도 사용자가 입력한 다양한 조건에 (날짜, 어떤 특정, 카테고리) 따라 시맨틱 네트워크를 구성할 수 있는 편리한 인터페이스가 제공됩니다.

목적

키워드 매칭을 기반으로 하는 전통적인 검색 엔진은 사용자의 질의에 너무 많은 검색 결과를 보여주지만, 결과 대부분은 관련이 없는 경우가 많습니다. 그리고 대부분 사용자는 자신의 의도에 맞는 검색 질의어를 찾아내기 힘들어합니다. 아울러 사용자는 문서를 보는 것뿐만 아니라 전체 콘텐츠에 대한 통찰을 얻고자 합니다.

이러한 문제점을 해결하기 위해 솔트룩스가 제시하는 시맨틱 검색 기능의 일부가 토픽랭크 알고리즘입니다. 현재까지의 많은 검색 엔진 업체나 포털에서 사용자에게 다음과 같은 직관적인 인터페이스를 제공하려고 노력합니다.

토핑랭크는 사용자가 자기 자신의 의도에 맞는 검색 질의어를 쉽게 생성하도록 하고 많은 문서를 쉽고 빠르게 조회하도록 합니다. 또한, 관련 주제 발견, 문서 클러스터링, 다차원 분류 또는 태그 클라우드 등에 기반을 둔 많은 방법은 사용자의 여러 요구를 만족시킬 수 있습니다.

세부 단계

토픽랭크는 다음과 같은 단계를 거쳐 사용자에게 제시됩니다.

Step 1. 주어진 용어와 관련있는 N개의 문서를 가져옴
N개의 Top 문서를 가져오기 위해 쿼리를 검색엔진에 전송한다.
Step 2. 관련 용어 수집
쿼리 키워드를 중심으로 주변의 용어들을 포함하는 snippet들을 구한다. snippet의 용어들을 모두 추출하고, TF, DF를 구한다. co-occurrence 용어 매트릭스 생성한다. snippet은 쿼리 키워드를 중심으로 하는 주변 단어들의 셋을 의미한다. 예를 들어 “2009년 3분기 삼성전자 반도체 실적 보고서”란 문장에서 “삼성전자”가 쿼리 키워드라고 하고, 앞뒤 1개의 단어를 snippet으로 만든다고 했을 때 “3분기 삼성전자 반도체”가 snippet이 된다.
Step 3. M개의 Top 용어를 선택하기 위해 다음의 weight를 사용
weight = sumDFSimple*tf(w)*df(w)2
sumDFSimple: 복합 명사에 가중치를 주는 weight 함수
tf: 쿼리 키워드를 중심으로 거리를 계산한 weighted term frequency
df: document frequency
Step 4. 용어를 벡터로 표현
M개의 Top 용어를 이용하여, 용어 벡터를 구성한다.
Step 5. M개의 Top 용어 클러스터링
M개의 Top 용어 벡터에 대한 클러스터링을 수행한다.

이 알고리즘의 품질과 속도는 여러 가지 요소에 의해 달라질 수 있습니다. 예를 들면, Step 2의 snippet 사이즈, Step 3의 weighting 함수, 그리고 Step 3에 Name Phrase나 Named Entity의 적용 여부 등이 변수가 될 수 있습니다. 여기서 snippet 사이즈란 쿼리 키워드를 중심으로 앞뒤로 몇 개의 단어를 하나의 셋으로 만드냐를 말합니다.

시스템 구성

검색과 같이 TopicRank는 주요 2단계 process에 따라 진행되며 분석/색인 Flow와 검색 Flow는 다음과 같습니다.

분석/색인
문헌 데이터에서 토픽랭크 분석을 통해 주요 관련 어휘를 추출함
추출된 관련 어휘는 색인 과정을 거쳐 검색 인덱스로 저장됨
검색
사용자가 입력한 질의어는 검색 엔진을 통해 검색됨
검색 결과에 포함된 토픽랭크 분석 결과를 이용해서 질의어와 연관된 정보를 분석하고 이를 결과로 제시함