Indri是Lemur项目衍生的一个基于语言模型的新的搜索引擎,由University of Massachusetts和Carnegie Mellon University合作开发。
安装
- 下载。下载Indri并进入
indri
文件夹的顶层目录!!! - 修改
configure
文件权限。确认其中的configure
文件的权限是否是rwx
(可读可写可执行)。一般来是rw
,需要改成rwx
。终端输入chmod 744 configure
,再用ls -all查看是否修改为可执行。 - 执行
configure
文件。终端输入./configure --prefix=<install-directory> --enable-java --with-javahome=$JAVA_HOME
- 编译。终端输入
make
,回车即可。 - 安装。终端输入
make install
,回车即可。 - 设置环境变量。
如果配置了--enable-java
,公共的库文件存放在<install-directory>/lib/libindri_jni.so
,java class文件存放在<install-directory>/share/indri/indri.jar
。所以需要将<install-directory>/lib
添加到环境变量LD_LIBRARY_PATH
中,将<install-directory>/share/indri/indri.jar
添加到CLASSPATH
。
至此,安装结束。完成上述步骤后,就会在<install-directory>
中生成需要的所有东西了。
另外,安装过程中总会遇到各种问题:比如configure因为没有执行权限而无法执行,没有在命令行前面加入./而导致不能运行,使用make编译时没有找到zlib.h而导致编译失败。多上网搜一下就可以解决了。
建立索引 (Indexing)
- 进入
IndriBuildIndex
所在目录,默认对目录是/usr/local/bin
。 - 输入
IndriBuildIndex <index_parameter_file>
即可为语料建立索引。其中,index_parameter_file
是参数文件,具体参数说明见参考文献1,也可以见这个系列的另一篇文章。 - 索引保存在
index
目录中,为一系列二进制文件。
注意:Indri在建立了检索之后,如果在重新执行该命令,就不会在重新对已经index过的文件再建立索引了。
检索 (Retrieval)
- 进入
IndriRunQuery
所在路径。如果安装时候没有设置安装路径,则默认路径是/usr/local/bin
。 - 输入
IndriRunQuery path-to-query_parameter_file > path-to-query_result_file
- 结果可以保存为TREC格式,格式为
<queryID> Q0 <DocID> <rank> <score> <runID> 150 Q0 AP890101-0001 1 -4.83646 runName 150 Q0 AP890101-0015 2 -7.06236 runName
评价 (Evaluation)
TREC提供两种评价工具包,java实现的ireval.jar
和c++实现的trec_eval
。
使用ireval.jar
- 首先,注意可能需要要修改
ireval.jar
的menifest
文件才可以执行!!! - 进入
ireval.jar
的目录,输入:java -jar /home/path-to-ireval/ireval.jar path-to-query_result_file path-to-qrel_file
- 使用
trec_eval
。进入trec_eval
的目录,注意编译生成可执行文件trec_eval才可以!!! 输入:./trec_eval -q path-to-qrel_file path-to-query_result_file
参考文献