Indri使用会遇到的坑和BUG
程序员文章站
2024-03-24 11:20:46
...
最近帮一个大佬处理一下语料,用Indri做个查询,但是中间遇到了不少的坑。虽然我不是做检索的,但还是记录一下吧2333。
首先Indri的安装及使用,可以参考这一篇博客Indri:安装及使用。注意安装过程中可能会因为找不到zlib.h而失败,请自行百度zlib安装。
然后在建立索引和检索的时候要注意一下几点:
1 索引和检索的关键词注意都要进行分词和停用词的去除。停用词需要复制下来然后直接黏贴在建立索引 以及 查询的参数文件中,Indri提供有一份停用词列表。
<parameters>
...
<!--通常都使用krovetz分词工具-->
<stemmer>
<name>krovetz</name>
</stemmer>
<!--Indri需要直接在建立索引和检索的参数文件中指定停用词-->
<stopper>
<word>word1</word>
<word>word2</word>
</stopper>
...
</parameters>
2 使用Indri进行查询的时候需要把关键词中的标点全部去掉!!!例如但不限于! ? . , ( ) ' " : 冒号也要去掉,否则就会出现如下错误。但是连字符不用去掉如so-called 中间的- 就不会引起错误。
EXCEPTION in query 0: IndriRunQuery.cpp(383): QueryThread::_runQuery Exception
../src/QueryEnvironment.cpp(874): Couldn't understand this query: NoViableAlt Seahawks
EXCEPTION in query 122: IndriRunQuery.cpp(410): QueryThread::_runQuery Exception
../src/QueryEnvironment.cpp(890): Couldn't understand this query: NoViableAlt
3 如果语料的格式不完全相同,那么建议单独建立索引,建立不同索引的时候建议完善参数文件中的<field>标签,查询的时候也可以用一个关键词查好几个索引。
<parameters>
...
<index>/home/username/indri/index1</index>
<index>/home/username/indri/index2</index>
<!--当有多个关键词的时候会将每个关键词在每个索引上都进行查询-->
<query>
<number>001</number>
<text>keyword1</text>
</query>
<query>
</number>002</number>
<text>keyword2</number>
</query>
...
</parameters>
上一篇: 封装jdbc 博客分类: java
下一篇: Linux解压rar文件
推荐阅读