2011년 7월 28일 목요일

LUCENE으로 TREC WT10G dataset 인덱싱하기

WT10G dataset은 웹문서를 모아놓은 dataset으로 아직도 많이 쓰인다.

WT10G에는 1,692,096개의 문서가 있고 용량은 대략 4G정도 된다. 

데이터는 WTX001 ~ WTX104개의 폴더에 각각 B01.gz ~ B50.gz로 

되어 있다. 

하나의 BXX.gz 파일에는 여러개의 웹 문서가 들어있어서 독립적인 포맷으로 

합쳐져 있는데 포맷은 대략 다음과 같다. 























WT10G에 대해서 더 궁금하신 분은 

http://ir.dcs.gla.ac.uk/test_collections/wt10g.html를 가보시라.

검색을 해보면 lucene으로 WT10G 데이터를 인덱싱해서 낸 논문은 많지만

실제로 어떻게 인덱싱을 했지는 코드를 공개한 것은 거의 없다. 

http://code.google.com/p/lucene-web-search-and-trec-wt10g/ 주소로 

가보면 거의 유일하게 코드를 공개한 프로젝트이다. 중국의 어느대학

대학원생들이 텀프로젝트로 수행한 것을 공개한듯하다. 

어찌됐든 lucene으로 WT10G를 인덱싱하는 간단한 코드 IndexTrec.java와

TrecDocument.java를 첨부한다. 

두개의 파일을 org.apache.lucene.demo 패키지 폴더에 추가해 놓고 실행하면

된다. 

IndexTrec.java는 org.apache.lucene.demo 패키지의 IndexFiles.java를 기반으로

만들었으며 코드는 어렵지 않으니 직접 살펴보고 수정해도 좋을것이다.

크게 수정된 부분은 readDocs() 메소드이며 이 메소드에서 WT10G의 gz압축

파일의 스트림을 읽어들여 파싱하는 역할을 한다. 


TrecDocument.java에서는 인덱싱하는 필드를 조금 수정했다. 아래의 그림을 참고하자.














문서가 파일단위가 아닌 <DOCNO> </DOCNO>인 태그의 값으로 설정되어야 

해서 이부분을 추가했으며 기본적으로 WT10G는 웹문서의 집합이므로 

HTMLParser를 써야한다.  


소스 파일을 첨부한다.


댓글 없음:

댓글 쓰기