정보검색(IR) 에서 Recall & Pricision 용어의 뜻

정보검색 2007. 11. 29. 17:53 Posted by 지민아빠

Recall 과 Precision은 IR에서 중요한 측정 기준 입니다.

Recall은 검색어와 관계되는 문서 전체 중에 몇개를 찾아내느냐를 보는 것입니다. Recall이 높지 않으면 검색 결과 자체가 적기 때문에 품질이 형편 없다고 느껴지게 됩니다. 물론 대상되는 문서 자체가 엄청나게 많다면 Recall이 어느정도 수준만 되면 검색 결과의 양이 충분 하기 때문에 품질에 문제를 느끼지 못합니다. 예를 들어 구글에서 검색하는 결과는 대상되는 문서 자체가 엄청나게 많기 때문에 다른 검색엔진에 비해서 Recall이 떨어진다고 해도 품질 자체는 더 좋아보이게 됩니다. 이 경우 Precision이 더 중요하게 됩니다.

사용자 삽입 이미지

이런 Recall이 아닙니다. 이미지 출처는 요기

Precision은 검색결과 중에서 상위 몇 위까지 중 관계되는 문서가 몇개인가를 보는 것 입니다. 결과의 "정확도"를 측정 하는 자료로서 검색엔진의 "랭킹"이 얼마나 잘 되어 있는가 측정 하는 자료 라고도 볼 수 있을 것 같습니다. 문서모음(= 컬렉션 = 검색대상 전부)의 크기가 커질 수록 높은 Precision을 가진 검색엔진이 필요합니다.

 
100개의 검색대상에서 "블로그"와 관계있는 문서가 50개 라고 했을때, 검색엔진에서 "블로그"를 검색 했을때 20개의 결과를 반환 한다면 Recall은 50분의 20 = 0.4 됩니다. 보통 검색 엔진이 한페이지에 10개의 결과를 보여 주므로.. 상위 10개(첫페이지)를 보았을때 "블로그"와 관계된 문서가 5개가 보인다면 Precision은 10분의 5 = 0.5의 값이 됩니다.

,

초기 구글 검색엔진의 구조

정보검색 2007. 11. 1. 14:42 Posted by 지민아빠

현재 구글에서 사용하고 있는 검색엔진의 구조에 대해서 공개되어 있는 정보는 별로 없지만 몇가지 논문을 통해서 공개된 내용이 약간 있다고 합니다.

대부분은 웹검색 시스템의 구조에 관한 설명이고, 블로그 검색이나, Gmail 검색에 사용되는 시스템도 아마 비슷하지 않을까.. 합니다만.. ^^ (구글은 반영속도가 아주 느려도 되는 웹검색 시스템과, 반영속도가 빨라야 하는 블로그 검색을 다른 시스템으로 돌린다고 합니다. GMail 처럼 실시간 반영되어야 하는 검색의 경우 아예 웹검색 엔진과 다른 엔진을 사용한다고 합니다.)

 
여기에서 잠깐, 간단히 살펴 볼 구글 검색엔진 이라는 것은.. 구글의 창시자 인 "Sergey Brin" 과 "Lawrence Page" 가 1997년 인가 1998년에 "Stanford University" 에 있을때 쓴 "The Anatomy of a Large-Scale Hypertextual Web Search Engine" 이라는 논문의 내용을 바탕으로 합니다. 97년 당시의 내용을 바탕으로 하기 때문에 현재의 구조와는 많이 다를거라고 생각 됩니다만, 기본 구조를 살짝 살펴 볼 수 있다는데 의의가 있는 것 같습니다. ^^ 여기에는 "2.1 Page Rank"의 (간단한 개념적 수학공식) 소개나 "4.1 Google Architecture Overview"와 같은 내용이 들어 있습니다.

사용자 삽입 이미지

Figure 1. High Level Google Architecture


설계된 시스템의 목표는 초당 100~1000개의 쿼리를 처리하는 것 이였으며 (1.2절)

논문에서는 이 시스템으로 2400만 건의 페이지를 모아서, 2억5천900만개 이상의 Anchor를 인덱스 하였다고 합니다. (2.2절)

 
그림1의 개괄적인 구조로 보았을때 이때의 시스템은 크게 2개 이상의 스텝으로 나뉘어 동작하여야 하기 때문에 배치작업으로 이루어 졌을 것 같습니다.

그리고 일반적인 Crawler, Indexer, Searcher 와 같은 구조들이 보이고, Nutch 구조와 비교해 보시면 Crawler -> Indexer -> Searcher 로 가는 구조도 거의 똑같아 보입니다. 여기서 crawl 된 페이지에서 추출된 link 를 다시 crawler로 보낼때 DocIndex 부분에서 보낸 다는 것이 제 눈에는 약간 신기해 보였습니다. ^^


이 글은 얼마전에 주워들은 내용을 복습하는 의미에서 논문을 다시한번 살펴보고 정리하는 중에 올리는 글입니다. ^^


참고문헌:
The Anatomy of a Search Engine

2007/11/01 - 공개 검색엔진 Nutch의 구조
,

공개 검색엔진 Nutch의 구조

정보검색 2007. 11. 1. 01:03 Posted by 지민아빠

Nutch는 자바로 구현된 오픈소스 검색엔진 입니다. Lucene이 Indexer 와 Searcher로 구성되어 있고, Nutch는 Lucene에 없는 웹검색에 필요한 모든 기본요소를 전부 갖추어서 웹검색 용으로 확장 한 것이라고 보면 될 것 같습니다. 그래서 Nutch Lucene 기반의 공개 웹검색 엔진입니다. Nutch는 많은 부분 구글 검색 엔진 구조를 목표로 하고 있습니다.

전체적인 구조는 일반적인 웹검색 시스템의 구조와 비슷한 것 같습니다.

사용자 삽입 이미지

Nutch의 구조는 그림과 같은데, 이걸 지금 제가 알고 있는 웹검색 시스템의 구조로 이해하기 위해서 대충 나누어 보면 아래처럼 나눌 수 있을 것 같습니다.

  1. Crawler
    • Nutch는 웹데이터 들을 효과적으로 가져올 수 있는 fetcher 들을 가지고 있습니다. 이를 통해서 목표로 하는 URL 들의 데이터를 수집하고, 이 작업은 목표로 하는 깊이까지 도착하면 멈춥니다.
  2. Repository
    • 수집된 웹 데이터 들은 Repository에 저장됩니다. Nutch에서는 특별히 Repository 라는 명칭을 사용하지는 않지만, WebDB와 Segment들이 여기에 해당 한다고 볼 수 있을 것 같습니다.
  3. Indexer
    • 수집된 데이터는 Lucene에서 사용 가능한 Index 형식으로 구성되어야 합니다.
  4. Searcher
    • 구성된 Index는 Lucene Searcher 에서 사용됩니다.

몇일 뒤에 어떤 고마운 분이 Nutch의 구조나 특징에 대하여 조사 한것을 설명 해 주실텐데 Nutch가 어떻게 생긴건지 전혀 몰라서 간단히 살펴 보았습니다. 이제 어느정도 설명을 들을 만한 최소한의 기본 준비는 한 것 같으니 이제 기다려야 겠군요. ^^


참고문헌:

Introduction to Nutch, Part 1: Crawling by Tom White 2006/01/10 번역본

Introduction to Nutch, Part 2: Searching by Tom White 2006/02/16

Nutch: Open-Source Web Search Software by Doug Cutting(doug@nutch.org) 2004/11/26

Open Source Search by Doug Cutting(cutting@apache.org) 2005/12/05

,
BLOG main image
지민아빠의 해처리

카테고리

분류 전체보기 (73)
블라블라 (21)
정보검색 (15)
우주전쟁 (37)

최근에 올라온 글

지민아빠의 해처리

지민아빠's Blog is powered by Tattertools
Copyright by 지민아빠 [ http://www.ringblog.com ]. All rights reserved.

Tattertools DesignMyself!
지민아빠's Blog is powered by Textcube. Designed by Qwer999.