如何計算兩個句子的相似度
如何計算句子的語義相似度,很容易想到的是向量空間模型(VSM)和編輯距離的方法,比如A:“我爸是李剛”,B:“我兒子是李剛”,利用VSM方法A(我,爸,是,李剛)B(我,兒子,是,李剛),計算兩個向量的夾角余弦值,不贅述;編輯距離就更好說了將“爸”,“兒子”分別替換掉,D(A,B)= replace_cost;這是兩種相當呆的方法,屬于baseline中的baseline,換兩個例子看一下就知道A:“樓房如何建造?”,B:“高爾夫球怎么打?”,C:“房子怎么蓋?”,如果用VSM算很明顯由于B,C中有共同的詞“怎么”,所以BC相似度高于AC;編輯距離同理;解決這種問題方法也不難,只要通過同義詞詞典對所有句子進行擴展,“如何”、“怎么”,“樓房”、“房子”都是同義詞或者近義詞,擴展后再算vsm或者edit distance對這一問題即可正解。
這種方法一定程度上解決了召回率低的問題,但是擴展后引入噪聲在所難免,尤其若原句中含有多義詞時。例如:“打醬油”、“打毛衣”。
在漢字中有些單字詞表達了相當多的意義,在董振東先生的知網(hownet)中對這種類型漢字有很好的語義關系解釋,通過hownet中詞語到義元的樹狀結構可以對對詞語粒度的形似度進行度量。問題到這里似乎得到了不錯的解答,但實際中遠遠不夠。
VSM的方法把句子中的詞語看做相互獨立的特征,忽略了句子序列關系、位置關系對句子語義的影響;Edit Distance考慮了句子中詞語順序關系,但是這種關系是機械的置換、移動、刪除、添加,實際中每個詞語表達了不同的信息量,同樣的詞語在不同詞語組合中包含的信息量或者說表達的語義信息大不相同。What about 句法分析,計算句法樹的相似度?這個比前兩種方法更靠譜些,因為句法樹很好的描述了詞語在句子中的地位。
實際效果要待實驗證實。對了,還有一種方法translation model,IBM在機器翻譯領域的一大創舉,需要有大量的語料庫進行訓練才能得到理想的翻譯結果。
當然包括中間詞語對齊結果,如果能夠利用web資源建立一個高質量的語料庫對兩兩相似句對通過EM迭代詞語對齊,由詞語對齊生成句子相似度,這個。
想想還是不錯的方法!。
如何計算兩個句子的相似度
如何計算句子的語義相似度,很容易想到的是向量空間模型(VSM)和編輯距離的方法,比如A:“我爸是李剛”,B:“我兒子是李剛”,利用VSM方法A(我,爸,是,李剛)B(我,兒子,是,李剛),計算兩個向量的夾角余弦值,不贅述;編輯距離就更好說了將“爸”,“兒子”分別替換掉,D(A,B)= replace_cost;
這是兩種相當呆的方法,屬于baseline中的baseline,換兩個例子看一下就知道A:“樓房如何建造?”,B:“高爾夫球怎么打?”,C:“房子怎么蓋?”,如果用VSM算很明顯由于B,C中有共同的詞“怎么”,所以BC相似度高于AC;編輯距離同理;
解決這種問題方法也不難,只要通過同義詞詞典對所有句子進行擴展,“如何”、“怎么”,“樓房”、“房子”都是同義詞或者近義詞,擴展后再算vsm或者edit distance對這一問題即可正解。這種方法一定程度上解決了召回率低的問題,但是擴展后引入噪聲在所難免,尤其若原句中含有多義詞時。例如:“打醬油”、“打毛衣”。在漢字中有些單字詞表達了相當多的意義,在董振東先生的知網(hownet)中對這種類型漢字有很好的語義關系解釋,通過hownet中詞語到義元的樹狀結構可以對對詞語粒度的形似度進行度量。
問題到這里似乎得到了不錯的解答,但實際中遠遠不夠。VSM的方法把句子中的詞語看做相互獨立的特征,忽略了句子序列關系、位置關系對句子語義的影響;Edit Distance考慮了句子中詞語順序關系,但是這種關系是機械的置換、移動、刪除、添加,實際中每個詞語表達了不同的信息量,同樣的詞語在不同詞語組合中包含的信息量或者說表達的語義信息大不相同。What about 句法分析,計算句法樹的相似度?這個比前兩種方法更靠譜些,因為句法樹很好的描述了詞語在句子中的地位。實際效果要待實驗證實。
對了,還有一種方法translation model,IBM在機器翻譯領域的一大創舉,需要有大量的語料庫進行訓練才能得到理想的翻譯結果。當然包括中間詞語對齊結果,如果能夠利用web資源建立一個高質量的語料庫對兩兩相似句對通過EM迭代詞語對齊,由詞語對齊生成句子相似度,這個。。想想還是不錯的方法!
機器學習句子相似度計算,最后怎么根據相似度高低排序返回原來的句
先說一個還是從詞的角度出發考慮的,最后的效果非常好,就是怎么樣從詞的向量得到句子的向量,首先選出一個詞庫,比如說10萬個詞,然后用w2v跑出所有詞的向量,然后對于每一個句子,構造一個10萬維的向量,向量的每一維是該維對應的詞和該句子中每一個詞的相似度的最大值。這種方法實際上是bag of words的一個擴展,比如說對于 我喜歡用蘋果手機 這么一句話,對應的向量,會在三星,諾基亞,小米,電腦等詞上也會有比較高的得分。這種做法對于bag of words的稀疏性問題效果非常好。
還做過一個直接訓練句子的相似度的一個query2vec模型,效果也不錯,就不細說了。