文本相似度計算與檢索

前言:

文本的檢索和相似度計算在nlp的應用中有很重要的作用,本文介紹了一種簡單方法對問答匹配進行一種實現,即在所有的query中找到和用戶輸入query罪匹配的一項。本方法比較適合細粒度的匹配。

主要技術:

(1)關鍵詞分析:提取出Query中主要的關鍵詞,作爲檢索源。
(2)全文檢索:如mysql、ELsearch等均可。 作爲召回。
(3)在召回數據中進行相似度計算找到最高匹配項。完成匹配。

關鍵詞分析將在另一篇文章中進行記錄,這裏只是介紹匹配方法。
該批配方法按照移動距離最低的方式進行計算:
(1)首先需要訓練詞向量。
(2)將短句字pad到長句子的長度。
(3)隨機調整詞序列使得兩個句子最相似(注意否定詞的罰分),也可以進行貪心匹配,這樣效率更高。
效果如下:

wd.sentence_distance(u"雪人 怎麼 製作 呀".split(), u"怎麼 堆 雪人 啊".split())

雪人 怎麼 製作 呀
雪人 怎麼 堆 啊
0.3479853431949209

wd.sentence_distance(u"中國 哪 座 山 最高".split(), u"中國 最高 的 山 是 哪裏".split())
中國 最高 的 山 是 哪裏
中國 最高 * 山 座 哪
0.17140382731208006

後記:
該方法對句法結構不敏感。
需要種子庫中每種語義儘量全,適合語義明確度較高的檢索。
檢索時不能進行詞的相似。

注:之前工作整理。

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