Lemur Beginner's Guide to Indexing
Posted 2009/01/22 09:20Contents
- What is an index?
- What kind of data/documents can Lemur index?
- Do the parsers add all words into the index?
- What type of indexes does Lemur have?
- What is an index?
인덱스나 데이터베이스는 기본적으로 key나 point의 reference 같은 정보의 일부를 사용해서 빠르게 access할수 있게 해주는 정보의 모음이다. 우리의 경우 document의 collection에서 term에 대한 정보를 나중에 access할 수 있도록 term이나 document를 이용해서 색인한다.
특히 정보 검색을 하는데 가장 일반적으로 필요한 term의 출현 빈도, term의 위치, document 길이의 통계를 모을 수 있다. 예를 들어, index로부터 document의 collection에서 어떤 term이 얼마나 많이 나오는지 알 수 있고, 특정 document 하나에서 얼마나 나오는지도 알수 있다. 들어온 쿼리에 대해 어떤 문서를 반환할지 선택하는 검색 알고리즘은 각 문서들을 계산하여 기록한 인덱스에 모인 정보를 사용한다.
- What kind of data/documents can Lemur index?
실제로 가지고 있는 document가 어떤 것이든 당신의 파서가 term이라고 인식하고 싶어하는 것을 index에 넣는 한, 그것에 대해 당신만의 parser를 만들수 있다. 그렇지만 우리는 toolkit과 함께 몇개의 parser를 제공한다.
Lemur는 원래 연구를 위한 시스템이다. 그리고 여기 포함된 파서는 같은 파일 내의 여러 문서에 대한 indexing을 돕기 위해 만들어 졌다. 색인이 문서의 경계가 파일 내에서 어디에 있는지 알기 위해, 각각의 document는 시작과 끝에 대한 tag를 가지고 있어야 한다. 이런 tag는 HTML, XML tag과 비슷하고, 실제로 NIST의 Text REtreval Conference(TREC) 문서를 위한 형식이다.
가장 많이 사용되는 파서는 TrecParser와 WebParser이다.
TrecParser : 이 파서는 TEXT, HL, HEAD, HEADLINE, TTL, LP 필드에서 text를 인식. 예를 들면 다음과 같다.
<DOC>
<DOCNO> document_number </DOCNO>
<TEXT>
Index this document text.
</TEXT>
</DOC>WebParser : 이 파서는 HTML comment에서 text뿐만 아니라 HTML tag(SCRIPT tag내의 text)를 제거한다. 문서 경계는 NIST 스타일 형식을 사용한다
<DOC>
<DOCNO> document_number </DOCNO>
Document text here could be in HTML.
</DOC>Lemur는 이들 파서와 더불어 중국어(BG2313 encoding)와 아라비아어(CP1256 encoding) 파서를 제공한다. (더 많은 정보를 보려면 "Parsing in Lemur"를 보라.)
만일 당신의 문서가 NIST의 형식이 아니라면 다음과 같은 방법으로 당신의 문서를 parse하고 index할수 있다.
- document전 후에 NIST 스타일 tag를 추가한다. 그리고 당신만든 것이나 Lemur의 application과 함께 Lemur에서 제공되는 parser중에 하나를 사용한다.
- 파서를 기록하고 index에게 application에 있는 PushIndex API를 이용해서 term을 넘겨준다.
- TextHandler class를 구현한다(parser가 당신의 document format을 제가하기 위함). 그 후 term을 한번 더 전처리 하기 위해 Lemer내의 다른 TextHandler와 함께 pipeline fashion을 사용할 수 있고, index를 구성하기 위해 InvFPTextHandler를 함께 쓸 수도 있다.(자세한 내용은 "Parsing in Lemur"를 보라.)
문서가 한번 index되고 나면 BuildIndex나 IndriBuildIndex application을 이용하여 그 문서들을 index할 수 있다. build index applicaion에 다양한 parameter를 주고 싶다면 API documentation을 보라.
- Do the parsers add all words into the index?
document에서 term으로 초기 parsing한 후, index에 term을 추가하기 전에 추가할 만큼 중요한 단어인지, 그대로 더할 것인지 아니면 stem form 대신에 index할 것인지, 어떤 단어를 acronym으로 인정할 것인지 (ex. WAC = Women's Army Corps) 의문이 생길 수 있들 것이다. Lemur에서 지원되는 feature로 acronym의 리스트도 있고, stopword('the', 'and', 'it' 같은 매우 일반적인 단어)를 무시하며, word stem들('stem', 'stemming', 'stems'는 모두 같은 term이다)을 indexing도 해준다. 이런 feature들은 BuildIndex에서 모두 지원된다.
- What type of indexes does Lemur have?
Lemur는 현재 KeyfileIncIndex와 IndriIndex 두가지 의 index 타입이 가능하다. 다른 데이터를 index하고나, disk상에서 다르게 데이터를 표현할 수 있기 때문에 index들은 다른 값을 갖는다. 각각의 index는 "목차 테이블"파일을 가지고 있다. 이 파일에는 무엇이 index에 있는지 또는 index를 불러오는데 어느 파일이 필요한지에 대해 요약된 약간의 통계가 들어있다. 당신이 index를 사용하고자 할때 이 파일을 불러와야 한다. Keyfile index는 목차테이블 파일의 확장자가 ".key"이다. IndriIndex타입은 목차 테이블로 불러올 단일 파일이 없지만 index를 열기 위한 input 경로로 indriIndex의 루트 directory를 사용한다.
Index Name Extension File
LimitStores
Positions?Load
Fast?Disk Space
UsageApplications Add
documents
to IndexKeyfileIncIndex .key no yes yes Average BuildIndex Yes, use
BuildIndexIndriIndex no yes yes most
(automatically
stores
compressed
version of
original
documents)BuildIndex or
IndriBuildIndexYes
*기존의 문서를 업데이트 하지 않고 index에 새로운 document를 추가하는 것을 지원한다.
두 index 타입에 대한 더 자세한 것은 the Lemur Tutorials에서 찾을 수 있다.
[출처] Lemur 홈페이지 : http://www.lemurproject.org/lemur/indexingfaq.php
- Filed under : Korea Wisenut/Lemur
- Tag : Lemur, Lemur guide, 리머, 리머 가이드
- Comment Trackback