大眾點評搜尋相關性技術探索與實踐

美團技術團隊發表於2022-07-07
搜尋相關性用於衡量Query和Doc的相關程度,是搜尋引擎的重要環節,本文主要講述大眾點評搜尋團隊在相關性計算上的技術探索和實踐,通過多相似矩陣模型結構、多階段訓練等方法提升預訓練模型在相關性問題上的效果,同時解決基於互動的模型線上預測的效能問題,希望為從事相關工作的同學能夠帶來一些啟發或者幫助。

1. 背景

點評搜尋是大眾點評App的核心入口之一,使用者通過搜尋來滿足不同場景下對生活服務類商戶的找店需求。搜尋的長期目標是持續優化搜尋體驗,提升使用者的搜尋滿意度,這需要我們理解使用者搜尋意圖,準確衡量搜尋詞與商戶之間的相關程度,儘可能展示相關商戶並將更相關的商戶排序靠前。因此,搜尋詞與商戶的相關性計算是點評搜尋的重要環節。

大眾點評搜尋場景面臨的相關性問題複雜多樣,使用者的搜尋詞比較多樣,例如搜尋商戶名、菜品、地址、類目以及它們之間的各種複雜組合,同時商戶也有多種型別的資訊,包括商戶名、地址資訊、團單資訊、菜品資訊以及其他各種設施和標籤資訊等,導致Query與商戶的匹配模式異常複雜,容易滋生出各種各樣的相關性問題。具體來說,可以分為如下幾種型別:

  • 文字誤匹配:在搜尋時,為保證更多商戶被檢索和曝光,Query可能會被拆分成更細粒度的詞進行檢索,因此會帶來Query錯誤匹配到商戶不同欄位的問題,如圖1(a)所示的使用者搜“生蠔火鍋”應該想找湯底中包含生蠔的火鍋,而“生蠔”和“火鍋”分別匹配到商戶的兩個不同菜品。
  • 語義偏移:Query與商戶字面匹配,但商戶與Query的主要意圖在語義上不相關,如“奶茶”-“黑糖珍珠奶茶包”,如圖1(b)所示。
  • 類目偏移:Query與商戶字面匹配且語義相關,但主營類目與使用者需求不符,例如使用者搜尋“水果”時一家提供“果盤”的KTV商戶明顯與使用者的需求不相關。

(a) 文字誤匹配示例

(b) 語義偏移示例

基於字面匹配的相關性方法無法有效應對上述問題,為了解決搜尋列表中的各類不符合使用者意圖的不相關問題,需要更準確地刻畫搜尋詞與商戶的深度語義相關性。本文在基於美團海量業務語料訓練的MT-BERT預訓練模型的基礎上,在大眾點評搜尋場景下優化Query與商戶(POI,對應通用搜尋引擎中的Doc)的深度語義相關性模型,並將Query與POI的相關性資訊應用在搜尋鏈路各環節。

本文將從搜尋相關性現有技術綜述、點評搜尋相關性計算方案、應用實戰、總結與展望四個方面對點評搜尋相關性技術進行介紹。其中點評搜尋相關性計算章節將介紹我們如何解決商戶輸入資訊構造、使模型適配點評搜尋相關性計算及模型上線的效能優化等三項主要挑戰,應用實戰章節將介紹點評搜尋相關性模型的離線及線上效果。

2. 搜尋相關性現有技術

搜尋相關性旨在計算Query和返回Doc之間的相關程度,也就是判斷Doc中的內容是否滿足使用者Query的需求,對應NLP中的語義匹配任務(Semantic Matching)。在大眾點評的搜尋場景下,搜尋相關性就是計算使用者Query和商戶POI之間的相關程度。

文字匹配方法:早期的文字匹配任務僅考慮了Query與Doc的字面匹配程度,通過TF-IDF、BM25等基於Term的匹配特徵來計算相關性。字面匹配相關性線上計算效率較高,但基於Term的關鍵詞匹配泛化效能較差,缺少語義和詞序資訊,且無法處理一詞多義或者多詞一義的問題,因此漏匹配和誤匹配現象嚴重。

傳統語義匹配模型:為彌補字面匹配的缺陷,語義匹配模型被提出以更好地理解Query與Doc的語義相關性。傳統的語義匹配模型主要包括基於隱式空間的匹配:將Query和Doc都對映到同一個空間的向量,再用向量距離或相似度作為匹配分,如Partial Least Square(PLS)[1];以及基於翻譯模型的匹配:將Doc對映到Query空間後進行匹配或計算Doc翻譯成Query的概率[2]

隨著深度學習和預訓練模型的發展,深度語義匹配模型也被業界廣泛應用。深度語義匹配模型從實現方法上分為基於表示(Representation-based)的方法及基於互動(Interaction-based)的方法。預訓練模型作為自然語言處理領域的有效方法,也被廣泛使用在語義匹配任務中。

(a) 基於表示的多域相關性模型

(b) 基於互動的相關性模型

基於表示的深度語義匹配模型:基於表示的方法分別學習Query及Doc的語義向量表示,再基於兩個向量計算相似度。微軟的DSSM模型[3]提出了經典的雙塔結構的文字匹配模型,即分別使用相互獨立的兩個網路構建Query和Doc的向量表示,用餘弦相似度衡量兩個向量的相關程度。微軟Bing搜尋的NRM[4]針對Doc表徵問題,除了基礎的Doc標題和內容,還考慮了其他多源資訊(每類資訊被稱為一個域Field),如外鏈、使用者點選過的Query等,考慮一個Doc中有多個Field,每個Field內又有多個例項(Instance),每個Instance對應一個文字,如一個Query詞。模型首先學習Instance向量,將所有Instance的表示向量聚合起來就得到一個Field的表示向量,將多個Field的表示向量聚合起來得到最終Doc的向量。SentenceBERT[5]將預訓練模型BERT引入到雙塔的Query和Doc的編碼層,採用不同的Pooling方式獲取雙塔的句向量,通過點乘、拼接等方式對Query和Doc進行互動。

大眾點評的搜尋相關性早期模型就借鑑了NRM和SentenceBERT的思想,採用了圖2(a)所示的基於表示的多域相關性模型結構,基於表示的方法可以將POI的向量提前計算並存入快取,線上只需計算Query向量與POI向量的互動部分,因此線上上使用時計算速度較快。

基於互動的深度語義匹配模型:基於互動的方法不直接學習Query和Doc的語義表示向量,而是在底層輸入階段就讓Query和Doc進行互動,建立一些基礎的匹配訊號,再將基礎匹配訊號融合成一個匹配分。ESIM[6]是預訓練模型引入之前被業界廣泛使用的經典模型,首先對Query和Doc進行編碼得到初始向量,再用Attention機制進行互動加權後與初始向量進行拼接,最終分類得到相關性得分。

引入預訓練模型BERT進行互動計算時,通常將Query和Doc拼接作為BERT句間關係任務的輸入,通過MLP網路得到最終的相關性得分[7],如圖2(b)所示。CEDR[8]在BERT句間關係任務獲得Query和Doc向量之後,對Query和Doc向量進行拆分,進一步計算Query與Doc的餘弦相似矩陣。美團搜尋團隊[9]將基於互動的方法引入美團搜尋相關性模型中,引入商戶品類資訊進行預訓練,並引入實體識別任務進行多工學習。美團到店搜尋廣告團隊[10]提出了將基於互動的模型蒸餾到基於表示的模型上的方法,實現雙塔模型的虛擬互動,在保證效能的同時增加Query與POI的互動。

3. 點評搜尋相關性計算

基於表示的模型重在表示POI的全域性特徵,缺乏線上Query與POI的匹配資訊,基於互動的方法可以彌補基於表示方法的不足,增強Query和POI的互動,提升模型表達能力,同時,鑑於預訓練模型在文字語義匹配任務上的強勁表現,點評搜尋相關性計算確定了基於美團預訓練模型MT-BERT[11]的互動式方案。將基於預訓練模型的互動式BERT應用在點評搜尋場景的相關性任務中時,仍存在諸多挑戰:

  • 如何更好地構造POI側模型輸入資訊:Doc側模型輸入資訊的構造是相關性模型中的重要環節。在通用網頁搜尋引擎中,Doc的網頁標題對相關性的判斷極為重要,但在點評搜尋場景下,POI資訊具有欄位多、資訊複雜的特點,不存在能提供類似“網頁標題”資訊量的欄位,每個商戶都通過商戶名、類目、地址、團單、商戶標籤等多種結構化資訊來表達。在計算相關性分數時,大量多源商戶資訊無法全部輸入到模型中,而僅使用商戶名和類目等基礎資訊又會因為資訊缺失無法達到滿意的效果,因此如何更好地構造具有豐富資訊量的POI側模型輸入是我們要解決的首要問題。
  • 如何優化模型來更好地適配點評搜尋相關性計算:大眾點評搜尋場景中的文字資訊與通用的預訓練模型語料資訊有一定差異,例如通用語義場景下“開心”和“高興”同義,但在點評搜尋的場景下“開心燒烤”和“高興燒烤”卻是兩家完全不同的品牌。同時,Query和POI的相關性判定邏輯與通用NLP場景的語義匹配任務也不完全相同,Query和POI的匹配模式非常複雜,當Query匹配到POI的不同欄位時,相關性的判定結果也有所不同,例如Query“水果”匹配到“水果店”商戶類目時相關性較高,而命中KTV的“水果拼盤”標籤時則相關性較弱。因此,相比通用的基於互動的BERT句間關係語義匹配任務,相關性計算還需要關注Query和POI兩部分之間的具體匹配情況。如何優化模型來適配點評搜尋的場景,並能處理複雜多樣的相關性判斷邏輯,儘可能地解決各種不相關問題,是我們面臨的主要挑戰;
  • 如何解決預訓練相關性模型的線上效能瓶頸:基於表示的模型雖計算速度較快但表達能力有限,基於互動的模型可以增強Query和POI的互動從而提升模型效果,但線上上使用時存在較大的效能瓶頸。因此,線上上使用12層BERT的基於互動的模型時,如何在保證模型計算效果的同時保證整個計算鏈路的效能,使其線上上穩定高效執行,是相關性計算線上應用的最後一道關卡。

經過不斷探索與嘗試,我們針對POI側的複雜多源資訊,構造了適配點評搜尋場景的POI文字摘要;為了讓模型更好地適配點評搜尋相關性計算,採用了兩階段訓練的方法,並根據相關性計算的特點改造了模型結構;最後,通過優化計算流程、引入快取等措施,成功降低了模型實時計算和整體應用鏈路的耗時,滿足了線上實時計算BERT的效能要求。

3.1 如何更好地構造POI側模型輸入資訊

在判定Query與POI的相關程度時,POI側有十幾個參與計算的欄位,某些欄位下的內容特別多(例如一個商戶可能有上百個推薦菜),因此需要找到合適的方式抽取並組織POI側資訊,輸入到相關性模型中。通用搜尋引擎(如百度),或常見垂類搜尋引擎(如淘寶),其Doc的網頁標題或商品標題資訊量豐富,通常是相關性判定過程中Doc側模型輸入的主要內容。

如圖3(a)所示,在通用搜尋引擎中,通過搜尋結果的標題可以一眼看出對應網站的關鍵資訊及是否與Query相關,而在圖3(b)的搜尋結果中,僅通過商戶名欄位無法得到充足的商戶資訊,需要結合商戶類目(奶茶果汁)、使用者推薦菜品(奧利奧利奶茶)、標籤(網紅店)、地址(武林廣場)多個欄位才能判斷該商戶與Query“武林廣場網紅奶茶”的相關性。

(a) 通用搜尋引擎搜尋結果示例

(b) 大眾點評App搜尋結果示例

標籤抽取是業界比較通用的抽取主題資訊的途徑,因此我們首先嚐試了通過商戶標籤來構造POI側模型輸入的方法,根據商戶的評論、基礎資訊、菜品、商戶對應的頭部搜尋點選詞等抽取出具有代表性的商戶關鍵詞來作為商戶標籤。線上上使用時,將已抽取的商戶標籤,及商戶名和類目基礎資訊一起作為模型的POI側輸入資訊,與Query進行互動計算。然而,商戶標籤對商戶資訊的覆蓋仍不夠全面,例如使用者搜尋菜品“雞蛋羹”時,某個距使用者很近的韓式料理店有雞蛋羹售賣,但該店的招牌菜、頭部點選詞等均與“雞蛋羹”無關,導致該店所抽取的標籤詞也與“雞蛋羹”相關性較低,因此模型會將該店判斷為不相關,從而對使用者體驗帶來傷害。

為了獲取最全面的POI表徵,一種方案是不抽取關鍵詞,直接將商戶的所有欄位拼接到模型輸入中,但是這種方式會因為模型輸入長度過長而嚴重影響線上效能,且大量冗餘資訊也會影響模型表現。

為構造更具資訊量的POI側資訊作為模型輸入,我們提出了POI匹配欄位摘要抽取的方法,即結合線上Query的匹配情況實時抽取POI的匹配欄位文字,並構造匹配欄位摘要作為POI側模型輸入資訊。POI匹配欄位摘要抽取流程如圖4所示,我們基於一些文字相似度特徵,將與Query最相關且最具資訊量的文字欄位提取出來,並融合欄位型別資訊構建成匹配欄位摘要。線上使用時,將已抽取的POI匹配欄位摘要、商戶名及類目基礎資訊一起作為POI側模型輸入。

圖4 POI匹配欄位摘要抽取流程

在確定POI側模型輸入資訊後,我們採用BERT句間關係任務,先用MT-BERT對Query側和POI側匹配欄位摘要資訊進行編碼,然後使用池化後的句向量計算相關分。採用POI匹配欄位摘要的方案構造POI側模型輸入資訊後,配合樣本迭代,相比基於標籤的方法,模型的效果有了極大的提升。

3.2 如何優化模型來更好地適配點評搜尋相關性計算

讓模型更好地適配點評搜尋相關性計算任務包含兩層含義:大眾點評搜尋場景下的文字資訊與MT-BERT預訓練模型使用的語料在分佈上存在著一定的差異;預訓練模型的句間關係任務與Query和POI的相關性任務也略有不同,需要對模型結構進行改造。經過不斷探索,我們採用基於領域資料的兩階段訓練方案,結合訓練樣本構造,使預訓練模型更適配點評搜尋場景的相關性任務;並提出了基於多相似矩陣的深度互動相關性模型,加強Query和POI的互動,提升模型對複雜的Query和POI資訊的表達能力,優化相關性計算效果。

3.2.1 基於領域資料的兩階段訓練

為了有效利用海量使用者點選資料,並使預訓練模型MT-BERT更適配點評搜尋相關性任務,我們借鑑百度搜尋相關性[12]的思想,引入多階段訓練方法,採用使用者點選和負取樣資料進行第一階段領域適配的預訓練(Continual Domain-Adaptive Pre-training),採用人工標註資料進行第二階段訓練(Fine-Tune),模型結構如下圖5所示:

圖5 基於點選及人工標註資料的兩階段訓練模型結構

基於點選資料的第一階段訓練

引入點選資料作為第一階段訓練任務的直接原因是在點評搜尋場景下存在著一些特有的問題,例如“開心”和“高興”兩個詞在通用場景下是幾乎完全同義的詞,但是在點評搜尋的場景下“開心燒烤”和“高興燒烤”卻是兩家完全不同的品牌商戶,因此點選資料的引入能夠幫助模型學習到搜尋場景下的一些特有知識。但是直接將點選樣本用於相關性判斷會存在較大噪聲,因為使用者點選某個商戶可能是由於排序較為靠前導致的誤點選,而未點選某個商戶也可能僅僅是因為商戶距離較遠,而並不是因為相關性問題,因此我們引入了多種特徵和規則來提高訓練樣本自動標註的準確率。

在構造樣本時,通過統計是否點選、點選位次、最大點選商戶距使用者的距離等特徵篩選候選樣本,將曝光點選率大於一定閾值的Query-POI對作為正例,並根據業務特點對不同型別商戶調整不同的閾值。在負例的構造上,Skip-Above取樣策略將位於點選商戶之前且點選率小於閾值的商戶才做為負樣本。此外,隨機負取樣的方式可以為訓練樣本補充簡單負例,但考慮隨機負取樣時也會引入一些噪聲資料,因此我們利用人工設計的規則對訓練資料進行降噪:當Query的類目意圖與POI的類目體系較為一致時或者與POI名高度匹配時,則將其從負樣本中剔除。

基於人工標註資料的第二階段訓練

經過第一階段訓練後,考慮到無法完全清除掉點選資料中的噪音,以及相關性任務的特點,因此需要引入基於人工標註樣本的第二階段訓練來對模型進行糾偏。除了隨機取樣一部分資料交給人工去標註外,為了儘可能提升模型的能力,我們通過難例挖掘和對比樣本增強方式生產大量高價值樣本交給人工去標註。具體如下:

1)難例挖掘

  • 特定型別樣本挖掘:通過設計一種基於Query和POI的特徵和兩者的匹配情況來刻畫BadCase型別的方法,自動化從候選資料集中篩選出特定BadCase型別的樣本進行送標。
  • 使用者點選過但線上舊版模型判定為不相關的:該方法可以挖掘出當前線上模型預測錯誤及語義接近的使用者難以區分的難例。
  • 邊緣取樣:通過邊緣取樣的方式挖掘具有較高不確定性的樣本,如抽取模型預測得分在閾值附近的樣本。
  • 模型或人工識別困難的樣本:用當前模型預測訓練集,將模型預測結果與標註標籤不一致的樣本,及人工標註標籤有衝突的樣本型別重新送標。

2)對比樣本增強:借鑑對比學習的思想,為一些高度匹配的樣本生成對比樣本進行資料增強,並進行人工標註確保樣本標籤的準確率。通過對比樣本之間的差異,模型可以關注到真正有用的資訊,同時提升對同義詞的泛化能力,從而得到更好的效果。

  • 針對菜品詞較容易出現的跨菜品匹配的相關性問題(例如搜“鵝肝漢堡”匹配到售賣“牛肉漢堡”和“鵝肝壽司”的商家),分別用菜品的各個子成分與推薦菜欄位進行匹配,生產大量對比樣本,加強模型對於跨菜品匹配問題的識別能力。
  • 針對菜品詞命中推薦菜字首的問題,通過改造完全匹配到推薦菜的情況(搜“榴蓮蛋糕”匹配到售賣“榴蓮蛋糕”的商家),僅保留搜尋詞中的字首,構造出匹配推薦菜字首的對比樣本(搜"榴蓮"和售賣"榴蓮蛋糕"的商家),使模型能更好的區分匹配推薦菜字首時的情況。

圖6 對比樣本增強示例

以跨菜品匹配的相關性問題為例,如上圖6所示,同樣是Query拆開後與商戶的多個推薦菜欄位匹配的情況,Query“榴蓮蛋糕”與推薦菜“榴蓮千層、黑森林蛋糕”是相關的,但Query“鵝肝漢堡”與“鐵板鵝肝、芝士牛肉漢堡”是不相關的,為了增強模型對這類高度匹配但結果相反的Case的識別能力,我們構造了“榴蓮蛋糕”與“榴蓮千層”、“鵝肝漢堡”與“鐵板鵝肝”這兩組對比樣本,去掉了與Query在文字上匹配但對模型判斷沒有幫助的資訊,讓模型學到真正決定是否相關的關鍵資訊,同時提升模型對“蛋糕”和“千層”這類同義詞的泛化能力。類似地,其他型別的難例同樣可以用這種樣本增強方式來提升效果。

3.2.2 基於多相似矩陣的深度互動模型

BERT句間關係是一個通用的NLP任務,用於判斷兩個句子的關係,而相關性任務是計算Query和POI的相關程度。在計算過程中,句間關係任務不僅計算Query與POI的互動,還計算Query內部和POI內部的互動,而相關性計算更關注Query與POI的互動。此外,在模型迭代過程中,我們發現部分型別的困難BadCase對模型的表達能力有更高要求,例如文字高度匹配但不相關的型別。因此,為進一步提升模型對複雜的Query和POI在相關性任務上的計算效果,我們對第二階段訓練中的BERT句間關係任務進行改造,提出了基於多相似矩陣的深度互動模型,通過引入多相似矩陣來對Query和POI進行深度互動,引入indicator矩陣以更好地解決困難BadCase問題,模型結構如下圖7所示:

圖7 基於多相似矩陣的深度互動相關性模型

受CEDR[8]的啟發,我們將經過MT-BERT編碼後的Query和POI向量進行拆分,用於顯式地計算兩部分的深度互動關係,將Query和POI拆分並進行深度互動,一方面可以專門用於學習Query與POI的相關程度,另一方面,增加的引數量可以提升模型的擬合能力。

參考MatchPyramid[13]模型,深度互動相關性模型計算了四種不同的Query-Doc相似矩陣並進行融合,包括Indicator、Dot-product、餘弦距離及歐氏距離,並與POI部分的輸出進行Attention加權。其中Indicator矩陣用來描述Query與POI的Token是否一致,計算方式如下:

Indicator矩陣可以較好地刻畫Query和POI的匹配關係,該矩陣的引入主要考慮到判定Query和POI相關程度時的一個難點:有時即使文字高度匹配,兩者也不相關。基於互動的BERT模型結構更容易將文字匹配程度高的Query和POI判定為相關,但是在點評搜尋場景中,有些難例卻未必如此。比如“豆汁”和“綠豆汁”雖然高度匹配,但並不相關。“貓空”和“貓的天空之城”雖然是拆開匹配,但因為前者是後者的縮寫而相關。因此,將不同的文字匹配情況通過Indicator矩陣直接輸入給模型,讓模型顯式地接收“包含”、“拆開匹配”等文字匹配情況,在幫助模型提升對難例判別能力的同時,也不會影響大部分正常的Case的表現。

基於多相似矩陣的深度互動相關性模型將Query和POI拆分後計算相似矩陣,相當於讓模型對Query和POI進行顯式互動,使模型更加適配相關性任務。多個相似矩陣則增加了模型對Query和POI相關程度計算的表徵能力,而Indicator矩陣則是針對相關性任務中複雜的文字匹配情況做的特殊設計,讓模型對不相關結果的判斷更加準確。

3.3 如何解決預訓練相關性模型的線上效能瓶頸

將相關性計算部署線上上時,現有方案通常會採用知識蒸餾的雙塔結構[10,14]以保證線上計算效率,但此種處理方式或多或少對於模型的效果是有損的。點評搜尋相關性計算為保證模型效果,線上上使用了基於互動的12層BERT預訓練相關性模型,需要對每個Query下的數百個POI經過12層BERT的模型預測。為保證線上計算效率,我們從模型實時計算流程和應用鏈路兩個角度出發,通過引入快取機制、模型預測加速、引入前置黃金規則層、將相關性計算與核心排序並行化等措施優化相關性模型線上上部署時的效能瓶頸,使得12層基於互動的BERT相關性模型線上上穩定高效執行,保證可以支援數百個商戶和Query間的相關性計算。

3.3.1 相關性模型計算流程效能優化

圖8 相關性模型線上計算流程圖

點評搜尋相關性模型的線上計算流程如圖8所示,通過快取機制及TF-Serving模型預測加速來優化模型實時計算的效能。

為有效利用計算資源,模型線上部署引入快取機制,將高頻Query的相關性得分寫入快取。後續呼叫時會優先讀取快取,若命中快取則直接輸出打分,未命中快取的則進行線上實時計算。快取機制大大節省了計算資源,有效緩解線上計算的效能壓力。

對未命中快取的Query,將其處理為Query側模型輸入,通過圖4所述的流程獲取每個POI的匹配欄位摘要,並處理為POI側模型輸入格式,再呼叫線上相關性模型輸出相關分。相關性模型部署在TF-Serving上,在模型預測時,採用美團機器學習平臺的模型優化工具ART框架(基於Faster-Transformer[15]改進)進行加速,在保證精度的同時極大地提高了模型預測速度。

3.3.2 應用鏈路效能優化

圖9 相關性模型在點評搜尋鏈路中的應用

相關性模型在搜尋鏈路中的應用如上圖9所示,通過引入前置黃金規則、將相關性計算與核心排序層並行化來優化整體搜尋鏈路中的效能。

為了進一步對相關性呼叫鏈路加速,我們引入了前置黃金規則對Query分流,對部分Query通過規則直接輸出相關分,從而緩解模型計算壓力。在黃金規則層中利用文字匹配特徵對Query和POI進行判斷,例如,若搜尋詞跟商戶名完全一致,則通過黃金規則層直接輸出“相關”的判定,而無需通過相關性模型計算相關分。

在整體計算鏈路中,相關性計算過程與核心排序層進行併發操作,以保證相關性計算對搜尋鏈路的整體耗時基本無影響。在應用層,相關性計算被用在搜尋鏈路的召回和排序等多個環節。為降低搜尋列表的首屏不相關商戶佔比,我們將相關分引入到LTR多目標融合排序中進行列表頁排序,並採用多路召回融合策略,利用相關性模型的結果,僅將補充召回路中的相關商戶融合到列表中。

4. 應用實戰

4.1 離線效果

為精準反映模型迭代的離線效果,我們通過多輪人工標註方式構造了一批Benchmark,考慮到當前線上實際使用時主要目標為降低BadCase指標,即對不相關商戶的準確識別,我們採用負例的準確率、召回率、F1值作為衡量指標。經過兩階段訓練、樣本構造及模型迭代帶來的收益如下表1所示:

表1 點評搜尋相關性模型迭代離線指標

初始方法(Base)採用Query拼接POI匹配欄位摘要資訊的BERT句對分類任務,Query側模型輸入採用使用者輸入的原始Query,POI側採用商戶名、商戶類目及匹配欄位摘要文字拼接方式。引入基於點選資料的兩階段訓練後,負例F1指標相比Base方法提升1.84%,通過引入對比樣本、難例樣本持續迭代訓練樣本並配合第二階段的模型輸入構造,負例F1相比Base顯著提升10.35%,引入基於多相似矩陣的深度互動方法後,負例F1相比Base提升11.14%。模型在Benchmark上的整體指標也達到了AUC為0.96,F1為0.97的高值。

4.2 線上效果

為有效衡量使用者搜尋滿意度,點評搜尋每天對線上實際流量進行抽樣並人工標註,採用列表頁首屏BadCase率作為相關性模型效果評估的核心指標。相關性模型上線後,點評搜尋的月平均BadCase率指標相比上線前顯著下降了2.9pp(Percentage Point,百分比絕對點),並在後續幾周BadCase率指標穩定在低點附近,同時,搜尋列表頁的NDCG指標穩定提升2pp。可以看出相關性模型可以有效識別不相關商戶,顯著降低了搜尋的首屏不相關性問題佔比,從而提升了使用者的搜尋體驗。

下圖10列舉了部分線上BadCase解決示例,小標題是該示例對應的Query,左邊為應用了相關性模型的實驗組,右邊為對照組。圖10(a)中當搜尋詞為“佩姐”時,相關性模型將商戶核心詞包含“佩姐”的商戶“佩姐名品”判斷為相關,並將使用者可能想找但輸錯的高質目標商戶“珮姐老火鍋”也判斷為相關,同時,通過引入地址欄位標識,將地址中位於“珮姐”旁邊的商戶判斷為不相關;圖10(b)中使用者通過Query“柚子日料自助”想找一家名為“柚子”的日料自助店,相關性模型將拆詞匹配到有柚子相關商品售賣的日料自助店“竹若金槍魚”正確判斷為不相關並將其排序靠後,保證展示在靠前的均為更符合使用者主要需求的商戶。

(a) 佩姐

(b) 柚子日料自助

5. 總結與展望

本文介紹了大眾點評搜尋相關性模型的技術方案及應用實戰。為了更好地構造商戶側模型輸入資訊,我們引入了實時抽取商戶匹配欄位摘要文字的方法來構造商戶表徵作為模型輸入;為了優化模型來更好地適配點評搜尋相關性計算,使用了兩階段訓練的方式,採用基於點選和人工標註資料的兩階段訓練方案來有效利用大眾點評的海量使用者點選資料,並根據相關性計算的特點提出了基於多相似矩陣的深度互動結構,進一步提升相關性模型的效果;為緩解相關性模型的線上計算壓力,線上上部署時引入快取機制和TF-Serving預測加速,引入黃金規則層對Query分流,將相關性計算與核心排序層並行化,從而滿足了線上實時計算BERT的效能要求。通過將相關性模型應用在搜尋鏈路各環節,顯著降低了不相關問題佔比,有效改善了使用者的搜尋體驗。

目前,點評搜尋相關性模型在模型表現及線上應用上仍有提升空間,在模型結構方面,我們將探索更多領域先驗知識的引入方式,例如識別Query中實體型別的多工學習、融入外部知識優化模型的輸入等;在實際應用方面,將進一步細化為更多檔位,以滿足使用者對於精細化找店的需求。我們還會嘗試將相關性的能力應用到非商戶模組中,優化整個搜尋列表的搜尋體驗。

6. 參考文獻

  • [1] Rosipal R, Krämer N. Overview and recent advances in partial least squares[C]//International Statistical and Optimization Perspectives Workshop" Subspace, Latent Structure and Feature Selection". Springer, Berlin, Heidelberg, 2005: 34-51.
  • [2] Gao J, He X, Nie J Y. Clickthrough-based translation models for web search: from word models to phrase models[C]//Proceedings of the 19th ACM international conference on Information and knowledge management. 2010: 1139-1148.
  • [3] Huang P S, He X, Gao J, et al. Learning deep structured semantic models for web search using clickthrough data[C]//Proceedings of the 22nd ACM international conference on Information & Knowledge Management. 2013: 2333-2338.
  • [4] Zamani, H., Mitra, B., Song, X., Craswell, N., & Tiwary, S. (2018, February). Neural ranking models with multiple document fields. In Proceedings of the eleventh ACM international conference on web search and data mining(WSDM) (pp. 700-708).
  • [5] Reimers N, Gurevych I. Sentence-bert: Sentence embeddings using siamese bert-networks[J]. arXiv preprint arXiv:1908.10084, 2019.
  • [6] Chen Q, Zhu X, Ling Z H, et al. Enhanced LSTM for Natural Language Inference[C]//Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2017: 1657-1668.
  • [7] Nogueira R, Yang W, Cho K, et al. Multi-stage document ranking with bert[J]. arXiv preprint arXiv:1910.14424, 2019.
  • [8] MacAvaney S, Yates A, Cohan A, et al. CEDR: Contextualized embeddings for document ranking[C]//Proceedings of the 42nd International ACM SIGIR Conference on Research and Development in Information Retrieval. 2019: 1101-1104.
  • [9] 李勇, 佳昊等. BERT在美團搜尋核心排序的探索和實踐.
  • [10] 邵雯, 楊揚等. 預訓練技術在美團到店搜尋廣告中的應用.
  • [11] 楊揚, 佳昊等. 美團BERT的探索和實踐.
  • [12] Zou L, Zhang S, Cai H, et al. Pre-trained language model based ranking in Baidu search[C]//Proceedings of the 27th ACM SIGKDD Conference on Knowledge Discovery & Data Mining. 2021: 4014-4022.
  • [13] Pang L, Lan Y, Guo J, et al. Text matching as image recognition[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2016, 30(1).
  • [14] 阿里文娛深度語義搜尋相關性探索. https://mp.weixin.qq.com/s/1a...
  • [15] Faster Transformer. https://github.com/NVIDIA/Dee...

7. 本文作者

校婭 、沈元 、朱迪、湯彪、張弓等,均來自美團/點評事業部搜尋技術中心。

  • 本文共同一作。

招聘資訊

美團/點評事業部-搜尋技術中心,致力於打造一流的搜尋系統和搜尋體驗,滿足大眾點評使用者的多樣搜尋需求,支撐各業務在大眾點評App上的搜尋需求。歡迎感興趣的同學傳送簡歷至:edp.itu.zhaopin@meituan.com

閱讀美團技術團隊更多技術文章合集

前端 | 演算法 | 後端 | 資料 | 安全 | 運維 | iOS | Android | 測試

| 在公眾號選單欄對話方塊回覆【2021年貨】、【2020年貨】、【2019年貨】、【2018年貨】、【2017年貨】等關鍵詞,可檢視美團技術團隊歷年技術文章合集。

| 本文系美團技術團隊出品,著作權歸屬美團。歡迎出於分享和交流等非商業目的轉載或使用本文內容,敬請註明“內容轉載自美團技術團隊”。本文未經許可,不得進行商業性轉載或者使用。任何商用行為,請傳送郵件至tech@meituan.com申請授權。

相關文章