TREC Precision Medicine 使用Terrier進行信息檢索

一、實驗目標

學會使用一個信息檢索系統完成給定的信息檢索任務,包括創建索引、選擇檢索模型並設置參數、評價檢索結果等等。

二、實驗描述

使用一個信息檢索系統,例如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官網

發佈了26 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章