配置phRank

编译iState文件夹中的indri_api

在已经编译好的indri文件夹中,可以找到Makefile.app文件。修改其中内容

APP=indri_API

然后将此文件拷到iState文件夹下。执行命令

make -f Makefile.app

就可以将indri_app编译。

配置phRank_第1张图片
编译indri_api

配置参数

打开phrank文件夹下的params.py文件。配置以下变量

indri = '/mnt/i/databackup/indri/indri-2.12/bin/'
index_collection = '/mnt/i/databackup/testdocs/'
index_wikipedia = '/mnt/i/databackup/wiki412/'
graph_k = 5

其中,indri对应的文件夹中应含有buildindex, dumpindexrunquery三个文件。这三个文件可以在经过编译后的indri文件夹内找到(分别位于三个不同的子文件夹下)。
index_collection对应存放文件index的目录。
index_wikipedia对应存放wiki的index的目录。

使用phrank

使用phrank需要新建两个文件。(假设我们新建了query.txt和term.txt两个文件)。其中query.txt存放我们的query,term.txt存放了query中term的全排列。
格式如下

query.txt

1: player goal area

term.txt

1 : player
1 : goal
1 : area
1 : player goal 
1 : player area
1 : goal area
1 : player goal area

其中1表示query的id,用来区分不同的query。可以使用任意其他值。query.txt和term.txt中可以包含多个query。

要使用phrank对term进行排序时,执行
python phRank.py query.txt terms.txt -c football -r 1
此次,我也不清楚-c和-r的作用。在没有wiki的index的时候,似乎这两个参数没有任何作用。也就是可以把football 和1 替换成任意其他的东西。执行后,在data/keyphr文件夹下将生成term的权重。我执行后生成了如下内容

1 : goal    1.0
1 : player goal 0.861430988572
1 : goal area   0.861386567364
1 : player goal area    0.815211703957
1 : player  0.722861977144
1 : player area 0.722817555936
1 : area    0.722773134728

可以根据term的权重来选择要用哪些term来进行查询。

使用indri来进行检索

首先,需要修正下之前我们建立的index。这个非常坑,让我浪费了好多的时间。
先回忆下,上次我们建立index的时候,每个问题放在一个txt文件里。事实上我们并没有成功建立index。
看下上次的结果图

配置phRank_第2张图片
上次的截图

图中红色圈出的显示,只有一个文件建立的索引。

所以,这次我们先重新修正建立index。

我们依然为每一个问题建立一个文件。
文件的格式如下


1

In all codes, common skills include passing, tackling, evasion of tackles, catching and kicking.[8] In most
codes, there are rules restricting the movement of players offside, and players scoring a goal must put the 
ball either under or over a crossbar between the goalposts.


//注意,此处一定要有一个空行。

文件最后一定要有一个空行,否则会提示错误(我在这浪费了好多时间)。把注释删掉。
其中DOCNO中的是文档id,不可以重复
TEXT中间是题目的文本信息。

参数文件parameter.txt内容与上次差不多,但是要少许修改


8000m
/mnt/i/databackup/test/

/mnt/i/databackup/docs2
trectext //注意,此处与上次不同,类型为trectext


重新执行命令

配置phRank_第3张图片
Paste_Image.png

可以看到,6个文件都成功建立索引了。

接下来我们介绍如何使用indri来检索结果

就像建立索引一样,我们依然需要一个文件来指定参数。


  /mnt/i/databackup/test //指定index的位置
  3 //返回结果的数量
  true//懒得解释了,放上来肯定没错
   //以下为一个query
    1 //query的id
    football //query的内容
  

处理query我们需要runquery。在含有runquery的文件夹下,我们执行命令./runquery params.txt,可以看到一下结果

配置phRank_第4张图片
query 结果

每一行的意思如下
Q0
红色标出来的数字表示retrive到的文档的id,也就是在我们之前用所围起来的数字。

在使用indri来检索文件的时候,还有更多的参数可以使用。本次暂时不做介绍。具体的参数可以参考
http://lemurproject.org/doxygen/lemur/html/IndriRunQuery.html.

你可能感兴趣的:(配置phRank)