Back

Vector Space Model

2020 Fall Infomation Retrieval Homework Report

Kaggle competitions

2020: Information Retrieval and Applications
Homework1: Vector Space Model
https://www.kaggle.com/c/2020-information-retrieval-and-applications/

Github code

https://github.com/chiachun2491/NTUST_IR/tree/master/homework1

Homework report

使用的 tool

Python, Jupyter, numpy, dataframe, sklearn.metrics.pairwise.cosine_similarity, datetime

資料前處理

一開始我將 doc_listquery_list 讀檔進來後,之後將每個 doc 和 query 都使用 split() 儲存起來,並將這些 list 放到 set 中製作 dictionary,這邊做了一個小偷吃步,直接把 dictionary 的範圍縮小到只看所有 query 出現過的字,把 dictionary 的維度從 59680 降到了 123 而已。

模型參數調整

我的 document 和 query 的 term weight 都是使用此公式:

$$tf_{i,j} \times log(1+\frac{N+1}{n_{i}+1})$$

模型運作原理

vector space model 會給出一個 doc 或 query 對應到所有 dictionary 中的向量,所以我們使用一個 doc 的向量和 query 的向量去做 cosine similarity,我們就可以得到兩者間的相似程度,所以我們將所有 doc 的向量都跟 query 的向量算過相似度後,我們就可以從高排到低找出跟該 query 最相關的 doc。

個人心得

一開始模仿 sklearn 套件的公式,算出來的結果剛好超過 baseline 一些些,但大家的分數都蠻高的,所以請教別人後才知道有只看 query 出現過的字這個偷吃步的方法,除了讓程式效率變高之外,也讓我的分數往上不少。

Built with Hugo
Theme Stack designed by Jimmy