Terrier使用目录

  • 1、相关链接
  • 2、实验要求的逐字逐句分析
    • 2.1 数据介绍:
      • 2.1.1 数据集:
      • 2.1.2 查询集:
      • 2.1.3 文档相关性判定文件:
    • 2.2 应该有的实验步骤:
    • 2.3 不同工具介绍:
    • 2.4 评价指标
  • 3、配置环境(虚拟机安装+linux系统安装+terrier安装+linux上java环境安装)
    • 3.1 虚拟机VMware Workstation Pro的安装+centos7安装:
    • 3.2 terrier安装:
    • 3.3 linux上java环境配置:
    • 3.4 实验数据到位:
  • 4、实验阶段
    • 4.1 数据转换:
      • 4.1.1 数据集处理
      • 4.1.2 查询集处理
    • 4.2 索引建立:
      • 4.2.1 索引初始化
      • 4.2.2 批量建立索引
    • 4.3 搜索处理:
      • 4.3.1 批量查询
      • 4.3.2 进行相关性反馈
    • 4.4 评估结果:
      • 4.4.1 eval文件生成(p、bpref、map)
      • 4.4.2 ndcg结果
  • 5、结果一览:(此部分仅供参考,不同情况下评估结果肯定不同,路径可以参考)

1、相关链接

下面链接这是我们当时找的资料,对我们的整体实验有着比较大的帮助,可以先看进行理解。看懂了,ok,再看看我们这篇文章吧;看不懂,没事,还有我们这篇文章呢。
由于我们在使用terrier的时候找资料非常费劲,我们就想把我们的实验经验分享出来,同时也非常感谢各位给我们提供过帮助的朋友。我们尽量在文章中把每一步都讲出来,以及处理中的一些问题。
(链接)TREC Precision Medicine 使用Terrier进行信息检索_GouGe_CSDN的博客-CSDN博客
信息检索平台Terrier的使用_klaas的博客-CSDN博客
Terrier文档翻译:安装与运行_XiaoPANGXia的专栏-CSDN博客

2、实验要求的逐字逐句分析

看到这的同学应该都是面临一个实验吧(蜜汁微笑),我们先来看看2020的例子实验:

图1:实验要求

我们来把每一句话都来分析一下,看看这个实验到底在讲什么。

2.1 数据介绍:

包括了数据集(多个json)、查询集(xml)、文档相关性判定文件(txt),这三个文件都是需要的。

2.1.1 数据集:

路径“/cord-19_2020_07_16/document_parses/”下有两个json文件夹,其中包含多个json文件,打开任意一个,里面数据类型为dict类型。之后会对其进行处理。

图:数据集(局部)

2.1.2 查询集:

其中包含多个query,然后注意这个格式,后面需要对其进行修改。

图:查询集(局部)

2.1.3 文档相关性判定文件:

这个文件不需要对其进行修改。

图:文档相关性判定文件(局部)

2.2 应该有的实验步骤:

如图1标红处,整个的实验过程包括了创建索引、评分排序策略、相关性反馈,给出评价指标的得分。这是使用terrier可以运行的。具体操作将在第三部分介绍。
创建三种不同的索引策略可以是:我们用的索引策略是对数据集进行处理,只保留标题,只保留标题、摘要,不进行删减。还有一种创建索引策略是对停用词进行修改。对数据集进行处理对应实验过程中的数据预处理阶段,建立索引对应实验过程的索引建立阶段。
采用三种不同的评分排序策略:就是用不同的模型,如PL2,BM25,BB2等等,这一步会在var/results路径下生成res文件,这一步对应实验过程的检索处理阶段。
在以上的检索测量中加入相关性反馈:就是在评分排序生成res文件之后,再执行一条命令进行操作,这一步会在var/results路径下生成res文件,这一步也对应实验过程的检索处理阶段。
给出评价指标的得分:对第二第三步的res文件在路径var/results路径下生成eval文件,其中包含评价指标,这一步对应实验过程的评估结果阶段。

2.3 不同工具介绍:

其实这个实验提及到了Galago、Elastic Search、Terrier、Anserini四种工具,terrier可以最方便最直接处理trec的相关任务。

2.4 评价指标

nDCG@10,p@5,bpref,MAP这四种评价指标想了解的可以自行搜索一下原理。

ps:在下面查询集可能用topics代替,文档相关性判定文件可能能用qrels代替。
知道了实验是啥意思,那我们就在linux上运行这个实验。

3、配置环境(虚拟机安装+linux系统安装+terrier安装+linux上java环境安装)

我们用的是linux系统的centos(在windows系统上跑terrier好像基本没怎么成功的,也可以在mac上跑)

3.1 虚拟机VMware Workstation Pro的安装+centos7安装:

下方参考确实超详细,只是在它的第四步骤的“安装系统”中的第六步“模块配置”中的“软件选择”,我们是直接选择“带GUI的服务器”。同时网络的那一步确实很重要
参考:超详细!VMware Workstation Pro15.5 安装、创建虚拟机及安装CentOS 7教程_Bruce·Anti的博客-CSDN博客

3.2 terrier安装:

我们是在windows上下载terrier5.0tar.gz,然后通过xshell的rz命令导入到linux系统中,然后运行” tar -zxvf 文件名.tar.gz”
xshell参考:XShell 下载 安装_T_Daniel_C的博客-CSDN博客
(xshell是一个可以远程访问服务器的软件,比较方便好用,可以官网下载使用(学校学习版是免费的)。)

3.3 linux上java环境配置:

自行搜索解决吧

3.4 实验数据到位:

数据集、topics、qrels移入linux某个文件夹中(xshell的rz命令)
我们先在linux建立一个新的文件夹covid,然后将所有的实验数据用xshell导入。

以上总体是实验预备阶段,有了以上的内容才能开始做实验。

4、实验阶段

4.1 数据转换:

包括数据集处理+查询集处理

4.1.1 数据集处理

每个json头加上<DOC>,第二行加上<DOCNO>一个字符串(后面解释)</DOCNO>,尾加上</DOC>,然后合并成为一个json文件(在windows、linux,任何语言处理都行,这一步自己写代码哟)。
ps:“一个字符串”来源metadata.csv文件,其中这个字符串与paper_id是一一对应的。(你现在这一块可能没跑到最后,不太明白,但之后就肯定知道是咋回事)

图:处理后的数据集(局部)

4.1.2 查询集处理

把原有的查询集处理成下图(这个就是固定格式),然后在terrier.properities中设置TrecQueryTags.doctag,TrecQueryTags.idtag,TrecQueryTags.process(也是固定格式)(这个在linux上修改也很方便),两个处理对应起来就行了。

图:处理后的查询集(局部)

图:处理后的terrier设置文件
在上面所有的数据都处理好后,我们既可以进行索引了。

4.2 索引建立:

下面所有的指令都是在linux系统中,解压后的terrier目录下(相对路径)
包括索引初始化和批量建立索引。

4.2.1 索引初始化

运行./bin/trec_setup.sh /(covid所在的路径)
此步骤将在etc/中产生collection,spec等文件,为后续的操作提供路径。
ps1:covid设置在第三部分“配置环境”的第五小步“实验数据到位”
ps2:这一步基本不会出任何问题

4.2.2 批量建立索引

运行./bin/trec_terrier.sh -i
对总json文件进行批量建立索引,索引生成后,在var/index目录下可以看见建好的索引。
ps:这一步基本不会出任何问题,但这一步比较耗费时间,只要不报错,等就对了。

4.3 搜索处理:

包括批量查询和进行相关性反馈。

4.3.1 批量查询

运行./bin/trec_terrier.sh -r -Dtrec.model=PL2 -c 10.99 -Dtrec.topics=/(covid所在路径)/covid/topics.xml
其中-Dtrec.model为指定的模型,是-Dtrec.topics为指定查询集的地址。"-r" 参数指示Terrier做检索,"-c" 告诉Terrier加权模型的参数(-c可以不用,直接使用默认就行了)。不对c进行设置的代码如下。
./bin/trec_terrier.sh -r -Dtrec.model=PL2 -Dtrec.topics=/(covid所在路径)/covid/topics.xml
下面是var/results路径下的截图,.res是需要的,.res.settings无用。

ps1.这一步也没有什么问题。
ps2.topics.xml和topic.txt都是一样的。

4.3.2 进行相关性反馈

运行./bin/trec_terrier.sh -r -Dtrec.model=PL2 -Dtrec.topics=/(coivd所在路径)/covid/topics.xml -q -Dqe.feedback.fliename=/var/results/PL2_0.res
-Dqe.feedback.fliename是上一步生成的res文件。
下图是这一步后的var/results路径下截图

ps.这一步好像也没啥问题

4.4 评估结果:

包括eval文件生成和ndcg结果生成

4.4.1 eval文件生成(p、bpref、map)

运行./bin/trec_terrier.sh -e -Dtrec.qrels=/(covid所在路径)/covid/qrelss.txt
-Dtrec.qrels是文档相关性判定文件所在位置。

用其中一个为例子:其中包括map、bpref、p三种评价指标。

ps:这一步可能会出现大问题,报错为num_nut?(具体不是特别记得了),这是因为res文件中存在重复的内容,需要对res文件进行去重处理,可以解决这个问题(这里需要一段代码,对res去重)。

4.4.2 ndcg结果

运行sh trec_eval.sh -m ndcg /(covid路径)/covid/qrelss.txt / var/results/PL2_o.res
只生成一行,并不生成文件

ps.这一步没啥问题,但我们实现对res进行去重之后运行的,如果出现上一步报错,解决方案就和上面一样。

5、结果一览:(此部分仅供参考,不同情况下评估结果肯定不同,路径可以参考)

一个covid文件夹:包括数据集.json,topics.xml,qrelss.txt
一个var/results文件夹:包括多个res文件,每个res对应一个eval文件

以上就是整个实验最基本的内容,比较有条理且完整地解决了绝大多数terrier的问题。

TREC之使用terrier进行信息检索相关推荐

  1. TREC Precision Medicine 使用Terrier进行信息检索

    一.实验目标 学会使用一个信息检索系统完成给定的信息检索任务,包括创建索引.选择检索模型并设置参数.评价检索结果等等. 二.实验描述 使用一个信息检索系统,例如Galago.Elastic Searc ...

  2. 区块链技术与支付_区块链技术将如何确保在线支付

    区块链技术与支付 Look around at the business climate today and you will find a multitude of fintech startups ...

  3. 关于信息检索评价TREC:session track 的说明

    Input. runID数据格式:topic+Q0+文档ID+rank+score+runID 1     Q0   clueweb09-enwp00-61-01138    999  -11.445 ...

  4. 大三本科生获最佳短论文奖,清华大学狂揽信息检索顶会SIGIR 2020多个奖项

    机器之心报道 编辑:魔王.杜伟.小舟 第 43 届国际计算机协会信息检索大会(ACM SIGIR)于本月 25 日举行.昨日,大会公布了最佳论文等奖项.来自清华大学的研究人员获得最佳论文荣誉提名奖.最 ...

  5. 国际顶级学术会议SIGIR 2020开幕在即,重量级嘉宾带你窥探信息检索前沿

    第43届国际 "信息检索研究与发展" 年会(SIGIR - The International ACM SIGIR Conference on Research and Devel ...

  6. Indri和Terrier搜索引擎的使用

    介绍 Indri和Terrier都是开源的搜索引擎,当中Indri作为Lemur项目的一个重要部分,具有强大的查询接口,易建索引,可扩展,高效率等长处.能够在SourceForge Lemur Pro ...

  7. 文本信息检索基本知识【转】

    文本信息检索是针对文本的信息检索技术.在技术社区中,文本信息检索常常被等同于信息检索技术本身. 相对视频.音频检索而言,文本信息检索是发展较快也较成熟的,其他模态的信息检索技术,往往也要仰赖文本信息检 ...

  8. 最新进展概述:澄清式提问辅助理解信息检索中的用户意图

    ©PaperWeekly 原创 · 作者|金金 单位|阿里巴巴研究实习生 研究方向|推荐系统 用户使用搜索引擎的过程中,通常很难用单一的查询表达复杂的信息需求.在真实应用的过程中,用户需要根据当前搜索 ...

  9. 信息检索IR评价中常见的评价指标-MAP\NDCG\ERR\P@10等

    信息检索评价是对信息检索系统性能(主要满足用户信息需求的能力)进行评估的活动.通过评估可以评价不同技术的优劣,不同因素对系统的影响,从而促进本领域研究水平的不断提高.信息检索系统的目标是较少消耗情况下 ...

最新文章

  1. 在nginx上部署vue项目(history模式);
  2. Delphi APP 開發入門(五)GPS 定位功能
  3. PAT乙级——1001害死人不偿命的(3n+1)猜想(太简单)
  4. java写入单个字符_将2个字符写入单个Java char
  5. 随堂小测冲刺.第19天
  6. CentOS服务器下对mysql的优化
  7. mvc中去除html标签,MVC ValidationMessage 去除上面的Html 标签
  8. RuiJi Scraper基础 – RuiJi表达式模型
  9. 知道一点怎么设直线方程_直线初步
  10. vue ----组件数据共享
  11. 最小环(【CCF】NOI Online能力测试 提高组第三题)
  12. 从 Amazon Graviton3 发布,看 2022 云计算的核心方向
  13. 递归和循环两种方式求解连续数的相加
  14. linux安装vmware没有网络,关于无桌面的linux安装VMWare Tools配置的教程
  15. 为何公众号推送会延迟发送_微信公众号客服消息群发和推送功能如何实现?
  16. VPLS和MPLS 的区别
  17. 网工软考中级数据通信技术
  18. 禾穗HERS | 没人diss你,你就厉害了?
  19. 龙芯电脑平台kubernetes集群编译及部署方案
  20. 中学计算机课小课题,小学信息技术课堂有效教学的探索课题

热门文章

  1. mock.js使用指南
  2. python爬取歌词生成词云图
  3. 前度控制器源代码分析
  4. 瑜伽修身 偷师动物12招(组图)
  5. 选择第K大元素(快排、快选以及k-选取比较)
  6. 应届大学生从Java培训班学完好就业吗?
  7. 查询课程数mysql_mysql_数据查询练习
  8. dw2017不显示动画_10个创建2017年动画视频的最佳工具
  9. 【非洲秃鹫优化算法】基于非洲秃鹫优化算法求解单目标优化问题(AVOA)含Matlab源码
  10. 速率法和终点法的区别_两点法终点法速率法