前言:
文本的檢索和相似度計算在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
後記:
該方法對句法結構不敏感。
需要種子庫中每種語義儘量全,適合語義明確度較高的檢索。
檢索時不能進行詞的相似。
注:之前工作整理。