2013년 5월 30일 목요일

[indri by cygiwn]cygwin에서 indri 실행

cygwin에서 indri 실행

indri란 검색 시스템이다. 코퍼스(테스트)들을 인덱싱하고 쿼리를 넣어서 실행하면 어떤 문서가 얼마만큼 스코어를 가지는지 알 수가 있다.
indri 시스템은 다른 시스템과 마찬가지로 Linux용과 Window 버전 두개가 존재하는데, Window 버전 같은경우 설치가 쉽고 Window 유저에게는 사용이 쉬우나 쿼리를 한개 뿐이 넣을수 없다는 단점이 있다.
따라서 본 저자는 Window용 indri의 단점을 보완해주는 Linux용 indri를 설치 및 실행 해 볼 것이다.

이글은 2013년 5월 30일에 작성한다.

1.indri 설치
아래의 사이트에서 최신 버전의 indri를 다운 받자.
http://www.lemurproject.org/download-archive.php

tar 파일을 cygwin이 설치된 폴더에 복사를 하고 압축 해제를 한다.
>tar -xvf indri-5.4.tar

압축이 풀린 폴더에 들어 가서 아래와 같은 명령어를 입력한다.
>./configure
>make


2.실행
실행은 위에서 언급 한 것 처럼 두 단계로 나눈다.
첫번째, 테스트 코퍼스를 인덱싱(indexing)하고
두번째, 쿼리를 넣어서 실행을 한다.

하지만, 각 단계 마다 파라미터 파일이라고 일종의 옵션을 설정하는 파일을 만들어야 하는데  그파일의 내용은 아래와 같다
"//" 이것은 프로그래밍 언어에서 주석과 같다

인덱싱 할때(indexing.txt)
<parameters>
 <corpus>
   <path>Courpus</path> //코퍼스의 위치
   <class>txt</class> //코퍼스 파일의 형태 ex)ppt,pdf,...
 </corpus>
 <index>./data/index</index> //인덱싱 파일을 만들 폴더 이름
</parameters>

그리고 쿼리는 INQUERY로 만들어야 하는데
INQUERY에 대해서 나중에 시간이 난다면 다시 정리해보겠다
우선 쿼리를 실행할 때는 아래와 같은 파라미터 파일을 만들면 된다.

쿼리를 실행할때(query.txt)
<parameters>
<index>./data/index</index>
<query>
 <number>1</number> //몇번째 쿼리 인지
 <text>#combine(#wsyn(0.944036 대통령과 0.873368 대통령의) #wsyn(0.981478 에봇에 0.97925 다툼이 0.956589 찔러 0.948236 짜서) #wsyn(1.0 해변의) alberto fujimori #wsyn(1.0 스캔들에서) #wsyn(1.0 신문해서 1.0 받아서도 0.75493 용서받는))</text>
</query> //INQUERY의 형태 예제
<runID>testID</runID> //아이디 입력
<trecFormat>true</trecFormat>
</parameters>

여기서 쿼리가 여러개면 <number>,<text>만 순서대로 여러개 늘어 주면 된다.

이렇게 파라미터 파일이 완성 되었다면. 아래와 같은 명령어를 입력해서 인덱싱과 쿼리를 실행하면 된다.

인덱싱
./BuildIndex ./data/indexing.txt(인덱싱 파일이 있는 경로)

그러면 indexing.txt 파라미터 파일에 적힌 <index>속성의 폴더 경로에 위 테스트 코퍼스를 인덱싱한 파일이 완성 되게 된다. 여기서 중요한건 인덱싱을 한번더하게되면 중복이 되겠때문에 다른 문서를 인덱싱 할려고한다면 인덱싱 폴더의 경로를 바꿔주던가, 같은 폴더안에 파일 들을 지워 줘야한다.

그리고 실행은
./IndriRunQuery ./data/query.txt(쿼리 파일이 있는 경로)
이렇게 하면 화면에 뿌려 지게 되는데
파일로 존재하게 하고 싶다면
./IndriRunQuery ./data/query.txt >>a.txt
라하면된다. 여기서도 마찬가지로 a.txt 한 파일의 결과 값에 쿼리를 실행 했다면 결과 값이 중복되어 쌓이게 때문에 주의 해야 한다.


수정중

댓글 없음:

댓글 쓰기