TF/IDF
詞頻(TF)
其實就是一個詞在一篇文章中出現的頻率在開平方,頻率越高,說明這個詞在這篇文章中的權重越高
IDF
idf(word) = 1+log(numDocs/(docFreq +1))
numdocs是所有文檔的數量,docFreq 是包含有word的文檔的數量。可以看出當docFreq越大,則IDF越小,例如像the這樣的詞,幾乎每篇文章裏都有,所以這樣的詞權重就很低
Field-length norm
可以想象,如果文檔的長度越小,那麼某個詞在這個文檔中的權重就越高。Field-length norm
的計算方法
norm(d) = 1/sqrt(numTerms)
在全文索引中Filed-length norm是很重要的,而其他類型的檢索可能不需要field-length norm。對於每個string field norms大約消耗一個字節的存儲容量,所以當我們不需要全文索引,僅僅是查找關鍵詞的時候,不要norms功能可以節省不少的存儲空間。
將上述參數合起來
上述的三個因素—詞頻(TF),逆向文件頻率(IDF)和filed-length norm, 實在在索引時間計算和保存的。這些被用來計算一個單詞在某個特定文檔中的權重。
向量空間模型
當然我們在索引文件的時候並不是單單用一個單詞,當我們用多個詞來搜索某個文件的時候怎麼辦呢?
這時候我使用向量空間模型。一個向量中的每一個數字是一個單詞在這個文檔中的權重(用TF/IDF計算的)。
首先先計算查詢字符串的對於每個詞的權重向量,然後再計算文檔的向量。然後再用餘弦定理計算兩個文檔向量的距離d,d越接近於1說明訪問字符串和這個文檔的相關度越高。