1. 程式人生 > >基於深度學習的語義匹配

基於深度學習的語義匹配

語義匹配技術,在資訊檢索、搜尋引擎中有著重要的地位,在結果召回、精準排序等環節發揮著重要作用。

傳統意義上講的語義匹配技術,更加註重文字層面的語義吻合程度,我們暫且稱之為語言層的語義匹配;而在美團這樣典型的O2O應用場景下,我們的結果呈現除了和使用者表達的語言層語義強相關之外,還和使用者意圖、使用者狀態強相關。

使用者意圖即使用者是來幹什麼的?比如使用者在百度上搜索“關內關外”,他的意圖可能是想知道關內和關外代表的地理區域範圍,“關內”和“關外”被作為兩個詞進行檢索,而在美團上搜索“關內關外”,使用者想找的就是“關內關外”這家飯店,“關內關外”被作為一個詞來對待。

再說使用者狀態,一個在北京和另一個在武漢的使用者,在百度或淘寶上搜索任何一個詞條,可能得到的結果不會差太多;但是在美團這樣與地理位置強相關的場景下就會完全不一樣。比如我在武漢搜“黃鶴樓”,使用者找的可能是景點門票,而在北京搜尋“黃鶴樓”,使用者找的很可能是一家飯店。

如何結合語言層資訊和使用者意圖、狀態來做語義匹配呢?

我們的思路是在短文字外引入部分O2O業務場景特徵,融合到所設計的深度學習語義匹配框架中,通過點選/下單資料來指引語義匹配模型的優化方向,最終把訓練出的點選相關性模型應用到搜尋相關業務中。下圖是針對美團場景設計的點選相似度框架ClickNet,是比較輕量級的模型,兼顧了效果和效能兩方面,能很好地推廣到線上應用。

                                          圖1 clicknet框架

表示層

對Query和商家名分別用語義和業務特徵表示,其中語義特徵是核心,通過DNN/CNN/RNN/LSTM/GRU方法得到短文字的整體向量表示,另外會引入業務相關特徵,比如使用者或商家的相關資訊,比如使用者和商家距離、商家評價等,最終結合起來往上傳。

學習層

通過多層全連線和非線性變化後,預測匹配得分,根據得分和Label來調整網路以學習出Query和商家名的點選匹配關係。

在該演算法框架上要訓練效果很好的語義模型,還需要根據場景做模型調優:首先,我們從訓練語料做很多優化,比如考慮樣本不均衡、樣本重要度、位置Bias等方面問題。其次,在模型引數調優時,考慮不同的優化演算法、網路大小層次、超引數的調整等問題。經過模型訓練優化,我們的語義匹配模型已經在美團平臺搜尋、廣告、酒店、旅遊等召回和排序系統中上線,有效提升了訪購率/收入/點選率等指標。

小結

深度學習應用在語義匹配上,需要針對業務場景設計合適的演算法框架,此外,深度學習演算法雖然減少了特徵工程工作,但模型調優上難度會增加,因此可以從框架設計、業務語料處理、模型引數調優三方面綜合起來考慮,實現一個效果和效能兼優的模型。