2、TF-IDF和BM25計算文本相似度

這兩者計算的都是文檔和文本之間的相似度,如果是兩個短文本貌似也可以。

1、TF-IDF = TF * IDF

      假設文本是“我怎麼這麼帥氣”,4個詞,第一個詞“我”, 文檔1中一共有10個詞,“我”有2次,這個詞的詞頻都是2,這就是TF

      第一個詞“我”,在所有文檔中,有“我”這個詞的文檔數是m,文檔總數是n,則IDF = log(n/(m+1))

      則可以計算得到當前詞“我”在當前文檔的重要程度,當前文檔所有詞的重要程度就會組成一個向量,兩個文檔之間向量的相似度就是就是文檔之間的相似度

     優點:從常理來判斷,一個詞在這個文檔中出現的次數越多,對於這個文檔這個詞就越重要;一個詞在很多文檔中都出現過,就說明這個詞不能區分這些文檔,重要性越低;這就是爲何要tf *idf。

    缺點:分詞可能會導致語義的變化;TF的值並沒有歸一化在一個合理的區間。

2、針對上面的缺點,提出了BM25:實際就是TF-IDF的變形

    所以BM25就優化了TF的計算過程,    

fi詞q在文檔1中出現的頻率。k1 = 2, b = 0.75,後面一項一般爲1,dl是文檔1的長度,avgdl是所以文檔的平均長度,這樣的話TF的值就歸一化在一個區間了。BM25TF-IDF上增加了幾個可調節的參數,使得它在應用上更加靈活和強大,具有較高的實用性。詞頻對得分的影響可以控制在一定範圍內,而不是像TF-IDF那樣持續增大

3、除了上面計算兩個文本相似度的方法之外,還有DSSM、MatchPyramid、BiMPM、詞向量

   DSSM:把兩個文本轉換成低位向量,和詞向量類似。正負樣本的構造很簡單,一個樣本=兩個文本,相關就是正樣本

   MatchPyramid:這個比較巧妙了,假設兩個文本句子長度分別是m和n。利用glove向量或者之前訓練過的向量得到一個相似度矩陣m*n,然後多個卷積核得到多個featureMap,再池化,再卷積,再池化,再全連接得到向量,使用softmax得到概率。

                                   

   BiMPM:兩個文本長度是m和n,通過雙向RNN分別計算兩個文本的隱含層向量,再整合這些向量,文本1的還是m個,文本2的還是n,只不過現在都包含了彼此的信息,再分別放入RNN,然後去兩個方向的最終結果,相當於4個向量拼接經過softmax。

                                            

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章