一、实验目标

学会使用一个信息检索系统完成给定的信息检索任务,包括创建索引、选择检索模型并设置参数、评价检索结果等等。

二、实验描述

使用一个信息检索系统,例如Galago、Elastic Search、Terrier、Anserini等,完成TREC 2018 Precision Medicine Track的检索任务,要求至少给出10组不同参数配置或检索方案的结果,并给出每组检索结果的各评价指标的得分,进行分析比较。

三、实验环境

开发环境:Mac OS 10.15.1

软件版本:Java JRE 1.8.0、Python 3.7、Terrier5.0

四、实验过程

4.1 配置Java环境

在oracle官网下载jdk,按提示安装直到安装完成。

Java安装完成后在终端输入java或者java -version查看相关信息,接着在输入echo $JAVA_HOME,此命令将输出Java安装的路径。如果输出为空白,则需要修改zshrc文件,添加exportJAVA_HOME=$(/usr/libexec/java_home)保存退出即可。

4.2 安装Terrier

在进行具体的实验操作之前,本小组调研了多个信息检索的开源工具,包括 Lucene、Elasticsearch和Terrier。相比之下,Terrier 更适合用于完成本次任务,其专门为 TREC 比赛定制了接口,而且 Lucene 的评分函数比较简单,适合于工程开发,而 Terrier 对语言模型做了很多优化,更适合科研类任务。根据以往经验,用 terrier 实现要比用 Lucene 实现效果普遍更好。

可以从官网上或者 Github 下载 terrier-project-5.0-bin.tar.gz,下载完后解压即可。解压完成后目录如下图所示:

其中,

bin: 存放运行脚本,在 linux 系统下用.sh,在 windows 下用相应的.bat

doc:帮助说明文档集

etc: 存放建立索引和检索时的配置文件,如 collection.spec, terrier.properties

var: 检索结果的存放位置,存放 index, result,可以通过修改 etc 文件夹下的

terrier.properties 配置文件,定位到其他文件夹

share:存放 stopword-list.txt 等文件

src: 搜索引擎源代码

4.3 数据预处理

在利用 Terrier 进行检索实验之前,首先对给定数据集进行预处理,既是为了满足Terrier 的数据格式要求,也是为了提升查询检索的效果。

4.3.1 处理科学文摘的数据

原始数据集是从Terrier官网下载的xml类型数据,每个数据中包含多个文献,并且有很多对查询影响较低的信息,所以将原数据中的文章编号、文章题目和文章摘要提取出来,生成新的检索数据,处理后的数据格式如下:

4.3.2 处理临床试验的数据

原始数据集是从Terrier官网下载的xml类型数据,每个数据中标签很多,包含很多不必要的信息,所以对其中有价值的标签进行提取。提取的标签主要有索引要求中涉及的,例如brief_title、official_title、brief_summary、detailed_description、MeSH Terms 和 criteria 等,以及查询文件中涉及的标签,例如minimum_age、maximum_age、gender。以 NCT00000102为例,处理后的格式如下:

4.3.3 格式化查询题目

评测的查询输入是半结构化文本,描述了患者的癌症类型、相关的基因变异、年龄性别以及其他可能相关的因素,文件格式如下。需要说明的是,原始查询文件的根标签是 topic和 number,改成 TOP 和 NUM 之后,便于之后处理。

4.4 收集数据文档并建立索引

4.4.1 收集数据文档

收集需要建索引的数据并设置数据的路径。收集完成后,将会在terrier的etc 目录下创建一个collection.spec 文件,文件中包含将要建立索引的数据信息。执行命令格式如下:

bin/trec_setup.sh    <absolute-path-to-collection-files>

即在bin/trec_setup.sh命令后输入需要建立索引数据所在的绝对路径。

4.4.2 建立索引

数据收集完成之后即可建立索引,命令格式如下:

bin/terrier batchindexing

创建完成之后,将会在Terrier中var目录下的index中生成索引文件。通过下面的命令可以查看建立索引的信息:

bin/terrier indexstats

以建立科学文摘数据的索引为例,结果如下图所示:

4.5 查询检索

检索命令含有多个参数,可以在etc/terrier.properties文件里预先设好,也可以一个一个在命令行里指定。

基本命令为

bin/terrier batchretrieve

首先要设置查询的位置 通过“trec.topics”属性或者“-t”来指定查询位置,建议使用绝对路径。

其次要设置查询所使用的模型,通过“trec.model”属性或者“-w”来指定查询模型,包括BB2,BM25,LGD等等。Terrier默认的检索模型是DPH。

设置检索模型之后可以通过“-c”等参数设置模型参数(有些模型没有参数)。

以用BB2模型检索科学文摘为例,命令如下图所示:

检索完成之后,将在var目录下的results文件夹中生成.res文件,格式如下图所示:

4.6 相关反馈

加入伪相关反馈,其命令如下图。相较于上一步的检索命令,增加了 -q 和-Dqe.feedback.filename 参数,用于指定用哪一个模型的检索结果作为反馈的输入。下图中是以IFB2模型的结果作为反馈输入。

本组利用 Terrier 开源工具中已经实现的 Bo1、Bo2、KL 等伪相关反馈模型进行实验。可以在配置文件terrier.properties 中添加相关的配置项,或者是在每一行命令下添加上述参数。

4.7 结果评估

以评估科学文摘的检索结果为例,利用给定的数据qrels-treceval-abstracts.2018.txt,对结果进行评估,命令如下图所示:

该命令执行后会生成一个模型对应的 eval 文件。该文件中包含了 MAP、Bpref、Recall、P_5、P_10 等度量指标值,下图是 BB2.eval 文件内容。

五、实验结果

5.1 模型选择

Terrier 开源工具中集成了许多信息检索模型,可以直接进行接口调用。实验过程中,本小组选择了 13 种模型进行测试,下表展示了不同模型的测试指标值。没有添加相关反馈的情况下,MAP 的最优结果为 0.2050,由IFB2 模型得到;P@5 的最优结果为 0.5640,由 In_expB2和IFB2 模型得到;P@10 的最优结果为 0.5140,由In_expB2 模型得到。经过实验分析,发现各个模型参数的变动对最终结果影响较小,所以在实验中大多数模型使用了默认参数。

Model

MAP

P@5

P@10

BM25

0.1453

0.4800

0.4560

BB2

0.2024

0.5520

0.5100

DLH13

0.0764

0.2760

0.2640

In_expB2

0.2040

0.5640

0.5140

DPH

0.0846

0.3120

0.3260

Hiemstra_LM

0.1076

0.3320

0.3040

IFB2

0.2050

0.5640

0.5100

LGD

0.0745

0.2480

0.2360

InL2

0.1405

0.4200

0.3940

PL2

0.1228

0.3540

0.3440

TF_IDF

0.1402

0.4400

0.4020

LemurTF_IDF

0.2030

0.5520

0.4800

DFR_BM25

0.1477

0.4560

0.4060

5.2 相关反馈

选出 4 个结果较好的模型添加相关反馈进行下一步测试,分别是In_expB2、BB2、LemurTF_IDF和 IFB2,也使用了一些初始结果较差的模型进行相关反馈实验。由于组合较多,下表只展示部分结果。

Model

MAP

P@5

P@10

IFB2+BB2

0.2134

0.5680

0.5280

BB2+IFB2

0.2116

0.5680

0.5260

In_expB2+BB2

0.2129

0.5680

0.5280

LemurTF+In_expB2

0.1934

0.5320

0.4800

在使用伪相关反馈的情况下,MAP 的最优结果为 0.2134,由 IFB2+BB2 模型得到,相较于未添加相关反馈的结果提升了4%;P@5 的最优结果为 0.5680,P@10的最优结果为0.5280,均无明显提升。

经过实验分析,发现利用BB2的查询结果作为反馈,再利用IFB2模型进行查询检索,得出的效果最优。

六、实验基本原理

6.1 评价指标

(1)召回率(Recall): RR/(RR + NR),返回的相关结果数占实际相关结果总数的比率,也称为查全率,R∈[0,1]。

(2) 正确率(Precision): RR/(RR + RN),返回的结果中真正相关结果的比率,也称为查准率, P∈ [0,1]。

(3)Bpref:基本的思想:在相关性判断(Relevance Judgment) 不完全的情况下,计算在进行了相关性判断的文档集合中,在判断到相关文档前,需要判断的不相关文档的篇数。

(4)NDCG:每个文档不仅仅只有相关和不相关两种情况,而是有相关度级别,比如0,1,2,3。我们可以假设,对于返回结果,相关度级别越高的结果越多越好,相关度级别越高的结果越靠前越好。

(5)MAP:平均正确率(Average Precision, AP):对不同召回率点上的正确率进行平均。

(6)P@K:计算前 K 个位置的平均正确率。

6.2 模型介绍

(1)BB2(DFR):用于随机性的Bose-Einstein模型,用于首次归一化的两个伯努利过程的比率,用于术语频率归一化的归一化2。

(2)BM25:BM25概率模型。。

(3)DLH(DFR):DLH超几何DFR模型(无参数)。

(4)DLH13(DFR):DLH的改进版本(无参数)。

(5)DPH(DFR):使用Popper的归一化(无参数)的另一种超几何DFR模型。

(6)Hiemstra_LM:Hiemstra的语言模型。

(7)IFB2(DFR):用于随机性的逆项频率模型,用于首次归一化的两个伯努利过程的比率,用于项频率归一化的归一化2。

(8)In_expB2(DFR):用于随机性的反向期望文档频率模型,用于首次归一化的两个伯努利过程的比率,用于术语频率归一化的归一化2。

(9)InL2(DFR):用于随机性的逆文档频率模型,用于第一归一化的拉普拉斯继承,以及用于术语频率归一化的归一化2。

(10)LemurTF_IDF:Lemur的tf * idf加权功能版本。

(11)LGD(DFR):对数逻辑DFR模型。

(12)PL2(DFR):用于随机性的Poisson估计,用于第一次归一化的Laplace继承和用于项频率归一化的归一化2。

(13)TF_IDF:tf * idf加权函数,其中tf由罗伯逊的tf给出,idf由标准Sparck Jones的idf给出。

参考:

TREC Precision Medicine / Clinical Decision Support Track

Terrier官网

TREC Precision Medicine 使用Terrier进行信息检索相关推荐

  1. TREC之使用terrier进行信息检索

    Terrier使用目录 1.相关链接 2.实验要求的逐字逐句分析 2.1 数据介绍: 2.1.1 数据集: 2.1.2 查询集: 2.1.3 文档相关性判定文件: 2.2 应该有的实验步骤: 2.3 ...

  2. Medical Data for Machine Learning

    转载自:https://github.com/beamandrew/medical-data Medical Data for Machine Learning This is a curated l ...

  3. 信息检索的评价指标(Precision、Recall、F-score、MAP、ROC、AUC)

    from:https://blog.csdn.net/universe_ant/article/details/70090026 一:Precision.Recall.F-score 信息检索.分类. ...

  4. 信息检索的评价指标(Precision, Recall, F-score, MAP)

    转载自: 信息检索的评价指标(Precision, Recall, F-score, MAP) - 小村长技术blog - 博客频道 - CSDN.NET http://blog.csdn.net/l ...

  5. TREC Real-Time Summarization Track

    最近关注了下TREC的RTS任务,顺便做点笔记. Text Retrieval Conference (TREC) 一.简介 RTS(Real-Time Summarization)是文本检索会议提出 ...

  6. MAP 推荐系统 Mean Average Precision

    MAP 推荐系统 Mean Average Precision 简介 拓展 简介 因被审稿人要求添加MAP指标,在学习时发现网上资料对于在推荐系统中使用MAP指标的介绍不甚清晰,故写此文,总结分享,若 ...

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

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

  8. News | Atomwise获投1.23亿美元推进AI药物研发

    Atomwise宣布,完成由B Capital Group和沙特公共投资基金Sanabil Investments超额认购的B轮投资,总金额1.23亿美元. Atomwise首席执行官兼联合创始人Ab ...

  9. STE:中科院微生物所胡松年组揭示一年内医院ICU环境菌群的生物多样性

    基于中国某ICU一年内的环境微生物多样性监测 Monitoring microbial communities in intensive care units over one year in Chi ...

最新文章

  1. 前端面试查漏补缺--(一) 防抖和节流
  2. 暴涨!BTC忠实粉丝转向BCH为BCH网络添砖加瓦
  3. pthread_join直接决定资源是否能够及时释放
  4. html5 Canvas画图4:填充和渐变
  5. Windows2012R2服务器的安装与亮点功能介绍
  6. SNMP协议介绍和操作截图
  7. 计算机5G英语文献,无线通信英文参考文献精选
  8. C语言 | 语句概述
  9. 前端学习(970):fastclick插件使用
  10. 多个线程访问统一对象的不同方法_C#多线程读写同一文件处理
  11. 用c语言程序编写电池管理系统,基于Freescale单片机的电池管理系统设计.doc
  12. http抓包神器:Charles for Mac 特别版v4.6
  13. oracle11gr2配置监听,Windows环境配置Oracle 11gR2 Listener
  14. 【微信小程序开发•系列文章七】websocket
  15. 缓存击穿、缓存穿透、缓存雪崩简单总结
  16. 【渝粤教育】电大中专职业生涯规划_1作业 题库
  17. 华为数通笔记-QOS
  18. NXP KV30 SDK使用心得
  19. Exception processing template “xxx“: An error happened during tem
  20. 百度移动统计热力图和事件分析的坑

热门文章

  1. T46:字符串转换成整数(Java)
  2. 独立看门狗(IWDG)
  3. Permutation test(排列(组合)检验)
  4. cs无限僵尸服务器,CS1.6僵尸版
  5. python内置类属性 __dict__ __name__ __module__ __doc__ __bases__
  6. 人脸检测:史上最详细人脸检测libfacedetection讲解-网络详解--第二节
  7. 使用小爱同学语音控制电脑关机 - Winform C#
  8. 扡扫机器人_米家扫拖机器人:扫地拖地一把抓,小爱同学不落下
  9. Aspose.Cells的基础用法
  10. 时域测量与频域测量方法的分析