본문 바로가기

IT/Search

구글 검색엔진에 관해

4.5 검색(Searching)

검색의 목표는 효율적으로 질 높은 검색 결과를 제공하는 것이다. 많은 대형 상업적 검색 엔진들은 효율성 측면에서는 큰 발전을 이뤄온 것처럼 보인다. 그러므로, 비록 우리 솔루션이 약간의 노력만 더 하면 상업적인 스케일로 확장가능하다고 믿고 있음에도 불구하고, 본 연구에서는 검색의 질적인 측면에 더 포커스를 맞춰왔다. 구글 질의어 평가 과정은 그림 4와 같다.

구글 질의어 평가 과정

응답 시간에 제한을 두기 위해, 일단 일정 숫자(현재는 4만 개)의 관련 문서가 발견되면 서쳐는 자동으로 그림 4의 8단계로 건너 뛴다. 이것은 덜 최적화된(sub-optimal) 결과가 제공될 수도 있음을 의미한다. 우리는 현재 이 문제를 해결할 다른 방법을 찾고 있는 중이다. 과거에는, 히트를 페이지랭크(PageRank)에 따라 정렬했는데, 상황이 개선된 것처럼 보였다.

4.5.1 랭킹 시스템(The Ranking System)

구글은 일반적이 검색엔진들보다 훨씬 더 많은 웹 문서에 관한 정보를 유지관리한다. 각 히트 리스트는 단어 위치, 폰트, 그리고 대소문자 정보를 포함하고 있다. 추가적으로, 앵커 텍스트로부터의 히트와 문서의 페이지랭크도 요소로 넣고 있다. 이런 모든 정보를 조합해서 순위를 매기는 것은 어려운 일이다. 우리는 어떤 특정 요소도 지나치게 많은 영향을 미치지 않도록 랭킹 기능을 디자인하고자 했다. 먼저, 단순한 케이스를 생각해 보자 -- 한 단어 질의어의 경우. 단일 단어로 된 질의어에 대해 어떤 문서를 랭킹하기 위해서, 구글은 그 단어에 대한 그 문서의 히트 리스트를 살펴 본다. 구글은 각 히트가 여러 유형일 수 있다고 생각하며(제목, 앵커, URL, 큰 폰트의 플레인 텍스트, 작은 폰트의 플레인 텍스트,...) 각각은 자신만의 유형가중치(type-weight)를 갖고 있다. 유형 가중치는 유형을 기준으로 인덱싱된 벡터를 구성한다. 구글은 각 유형의 히트가 히트리스트에 몇 번 나오는지 센다. 그 다음 각 카운트는 카운트 가중치(count-weight)로 변환된다. 카운트 가중치는 최초에는 카운트에 따라 선형적으로 증가하지만 곧 급격히 줄어들어 어느 수준부터는 더 이상의 카운트는 의미가 없어진다. 그 다음 카운트 가중치 벡터와 유형 가중치 벡터의 내적(dot product)을 이용해서 그 문서의 IR 점수를 계산한다. 최종적으로, IR 점수는 페이지랭크와 결합해서 문서에 대한 최종 랭크를 제공하게 된다.

복수 단어 검색의 경우, 상황은 훨씬 복잡해진다. 그 경우에는 문서 내에서 복수 단어에 대한 히트들이 서로 가깝게 나타난 경우를 멀리 떨어진 경우보다 더 높은 가중치를 주기 위해서 복수의 히트 리스트를 동시에 훓어 보야야만 한다. 가까운 히트를 함께 매치하기 위해 복수의 히트 리스트로부터의 히트들을 매치 업 한다. 모든 매칭된 히트 세트에 대해 근접성(proximity)을 계산한다. 근접성은 어떤 문서(또는 앵커) 내에서 히트가 얼마나 멀리 떨어져 있는가에 기초하지만 10개의 다른 값을 갖는 "상자(bins)"로 분류되는데, 이들은 정확한 구절 매치(phrase match)로부터 "터무니 없는" 것까지의 범위를 갖는다. 카운트는 히트의 유형에 대해서뿐만 아니라 각각의 유형-근접성에 대해서도 계산된다. 모든 유형-근접성 쌍은 유형-근접성-가중치(type-prox-weight)를 갖는다. 카운트는 카운트 가중치로 변환해서 카운트-가중치와 유형-근접성-가중치의 내적을 구해 IR 점수를 계산한다. 이들 모든 값들과 행렬들은 따로 마련된 디버그 모드(debug mode)를 사용한 검색 결과 출력시 함께 표시될 수 있게 했다. 그렇게 보여지는 것은 랭킹 시스템을 개발하는 데 있어 대단히 큰 도움이 되었다.

4.5.2 피드백(Feedback)

랭킹 함수는 유형-가중치, 유형-근접성-가중치 등과 같은 많은 파라미터(parameters)를 갖고 있다. 이들 파라미터의 올바른 값을 찾아내는 것은 마법과 같은 것이어서, 우리는 이것을 검색 엔진의 사용자 피드백 미케니즘을 이용해 알아내보고자 한다. 신뢰할 수 있는 사용자의 경우 원한다면 모든 검색 결과에 대해 평가를 해볼 수 있다. 그리고 그 피드백은 저장된다. 그래서 랭킹 함수를 수정할 때 과거 랭킹했던 모든 검색에 대해 이것이 미친 영향을 알 수 있다. 완전한 것과는 거리가 있겠지만, 이렇게 함으로써 랭킹 함수를 바꾼 것이 어떻게 검색 결과에 영향을 주는지에 관해 아이디어를 얻을 수 있다.


출처: http://www.emh.co.kr/content.pl?google_search_engine2

'IT > Search' 카테고리의 다른 글

N-gram 알고리즘 기초 두번째  (0) 2014.10.21
N-gram 알고리즘 기초  (0) 2014.10.21
한국어.........  (0) 2014.07.29
크롤링과 색인(Crawling and Indexing)  (0) 2014.07.25
웹 크롤러란?  (0) 2014.07.25