一、實驗目標
學會使用一個信息檢索系統完成給定的信息檢索任務,包括創建索引、選擇檢索模型並設置參數、評價檢索結果等等。
二、實驗描述
使用一個信息檢索系統,例如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給出。
參考: