机器学习和生物信息学实验室联盟

标题: 适合用来参加TREC比赛的terrier平台【1】使用 [打印本页]

作者: chenlin    时间: 2012-2-6 11:21
标题: 适合用来参加TREC比赛的terrier平台【1】使用
Terrier的优点:
1)专门为TREC比赛定制了接口
2)适合科研、写论文,做的都是概率语言模型;相反Lucene的评分函数比较简单,但适合工程开发
3)为语言模型做了很多优化。这次我们的同样模型,用terrier实现要比用Lucene实现普遍提高0.02~0.03,原因暂时未知。

如果参加TREC比赛,可以先用Terrier自带的一些模型试一下水

1)首先安装Terrier
http://www.terrier.org/下载最新的terrier版本,建议用linux的

以terrier 3.5为例

下载的是已经预编译好的,直接解压。
tar -zxvf terrier-3.5.tar.gz
{如果你修改了其中的源代码,重新ant即可}
cd terrier-3.5
ant

由于我们的数据集一般都很大,需要改变一下terrier预定的Java内存使用,方法是在./bin/terrier-env.sh中
添加一行TERRIER_HEAP_MEM=2048m

2)数据集处理
一般TREC格式的数据集是可以直接处理的,如果不是,转换成TREC格式
即每片检索单位(文档)用<DOC></DOC>标记,中间可以用自定义的tag来标注域
如我们把微博数据处理成如下格式
<DOC>
<DOCNO>28968573615472640</DOCNO>
<DATE>Sun Jan 23 00:13:40 +0000 2011</DATE>
<TEXT>
<LA>#Twitition</LA> this is a answer of a hater to me ):
<A>http://twitition.com/p6q53</A> <TO>@TwitterUserNameToReply</TO>
</TEXT>
<SCREENNAME>TwitterUserName</SCREENNAME>
<FULLNAME>Mrs. XXXX </FULLNAME>
<RETWEET_COUNT>0</RETWEET_COUNT>
<URL> http://twitition.com/p6q53</URL>
<HASHTAGS> #Twitition </HASHTAGS>
<MENTIONS> TwitterUserNameToReply </MENTIONS>
</DOC>
数据集可以是多个文件放在一个目录下collection,每个文件中可以包含多个<DOC>

3)query处理
trec.topics文件,以<top></top>标记一个topic,中间可以有多个tag
<top><num> Number: MB001 </num><title> BBC World Service staff cuts </title></top>
这个例子是直接可以被terrier处理的,如果要添加更多的自定义tag,需要改源代码以解析域

4)relevance judgement处理
答案通常在参赛的时候我们没有,但有的时候可能利用sample query人为标注一些训练集
这时候就需要产生trec.qrels文件,指定每个query的答案
每行:
MB001 Q0 28968573615472640 1       

5)一次完整的检索过程

5.1)设置数据集目录
./bin/trec_setup.sh /local/collections/

5.2)参数i指定索引
./bin/trec_terrier.sh -i

5.3)参数r指定检索,参数Dtrec.model指定所用的检索模型,有的模型使用参数,用-c指定
-Dtrec.topics指定查询文件路径
./bin/trec_terrier.sh -r -Dtrec.model=PL2 -c 10.99 -Dtrec.topics=/local/collections/trec.topics

5.4)参数e指定评价
./bin/trec_terrier.sh -e -Dtrec.qrels=/local/collection/trec.qrels
产生的结果文件在./var/result下,以检索模型+参数+版本号,.res是结果文件,.eva是评价文件
可以找到p@n等评价指标

由此一个TREC run就结束了。






欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/) Powered by Discuz! X3.2