電商搜索全鏈路(PART II)Query理解

語言: CN / TW / HK

本站內容均來自興趣收集,如不慎侵害的您的相關權益,請留言告知,我們將盡快刪除.謝謝.

作者 | kaiyuan

整理 | NewBeeNLP

大家好,我是kaiyuan。電商搜索全鏈路系列文章們躺在我的草稿箱裏已經N久了,上一篇整理還是在上次,錯過的小夥伴點擊傳送門: 電商搜索全鏈路(PART I)Overview

這一篇來聊聊搜索系統第一步, Query理解與處理 。

一般而言用户輸入的Query屬於超短文本(淘寶query切詞後平均長度不足3個),容易存在拼寫錯誤、歧義、表達不準確等問題,因此對Query理解的越精準,搜索服務的效果也就越好。

通常在搜索系統中, QP(Query Processor)模塊 負責這部分的工作。Query理解的整體pipeline大致如下:

Query理解pipeline

可以看到,主要包括query預處理、分詞、糾錯、改寫、類目預測、實體識別、Term重要性分析等模塊,需要注意下,各個業務會根據自身特點對上述各個模塊的順序進行調整或增減,但一些關鍵模塊是相通的。

接下來看看,當你在搜索引擎中輸入一個Query敲下回車後,發生了什幺?

一、Query預處理

預處理這一步相對簡單,大多是一些規則和人工搞定的事,方便後續模塊的進一步分析和處理。主要會包括以下步驟:

運營審核 & 干預:搜索中的case可以説是無處不在,即使如百度、淘寶般成熟的系統,依然每天會有各種badcase,這就需要提前進行審核、干預、替換等人工操作;

歸一化:包括大小寫轉換、繁簡體轉換、全半角轉換、符號表情移除等等;

長度截斷:對於超長的query進行截斷處理;

其他:例如一些case驅動的策略

二、Query分詞

Query分詞就是將Query切分成多個term,如:“手機淘寶”切分成“手機 淘寶”兩個term。分詞可以説很簡單也可以説很複雜,譬如對於英文搜索,分詞可以只按空格切分即可,但是對於中文,就可有的玩了。

文本分詞作為NLP的一個超基礎任務,具體細節這裏不會再囉嗦。對於想要深入瞭解的同學,推薦一些綜述資料,也可以找NewBeeNLP往期推文

Review of Chinese Word Segmentation Studies [1]

NLP分詞算法深度綜述 [2]

目前業界中大部分搜索系統中的分詞模塊都會有專門的基礎中台部門來迭代優化,亦或直接使用開源的分詞工具(譬如JieBa、HanLP、PyLTP、LAC等等),直接調用即可。

三、Query改寫

在搜索引擎中,query改寫是很重要的一環。由於自然語言中有很多近義詞或者同義詞,用户可以有多種方式表達自己的搜索意圖;同時,難免存在用户由於先驗知識掌握不夠或輸入過程引入噪音導致輸入query存在一定錯誤。

因此query改寫是對原始query的有效補充,將改寫query和原始query一起參與搜索可以改善搜索結果。

按照具體功能的不同,大致可以分為三個子模塊:

Query糾錯

Query歸一

Query擴展

3.1 Query糾錯

糾錯源於輸入query拼寫錯誤,一般是由於用户認知或輸入習慣等原因導致。錯誤拼寫影響整個搜索流程,包括召回相關性、排序合理性等,最終影響用户搜索體驗。

query糾錯的業務形態如下,以淘寶為例:

3.1.1 常見錯誤

query錯誤的類型根據業務的不同有不同的劃分,但大同小異。以騰訊搜索為例,他們根據 query中是否有不在詞典中本身就有錯誤的詞語 ,將query錯誤類型進行分類,如下所示。

3.1.2  技術方案

業界和學界的技術方案主要可以分為pipeline和end2end兩種類型

3.1.2.1  Pipeline方法

pipeline的方式將大任務分為多個子模塊執行,中文糾錯任務通常包含錯誤檢測和錯誤糾正兩個子任務,

錯誤檢測:識別輸入句子中錯誤詞的位置。主要方法有以下幾種:

基於詞典:對query切分後,檢查各個詞是否在維護的自定義詞表或挖掘積累的常見糾錯pair中;

基於語言模型:統計大規模語料的n-gram信息,頻率小於一定閾值的即認為是錯誤詞;

基於序列標註:通過模型(bi-LSTM-CRF、BERT-CRF等)來學習錯誤詞的開始和結束位置,’0′ 表示無錯誤,’1′ 表示錯誤;

錯誤糾正:定位到錯詞後,進行錯詞的糾正。首先採用多種策略(編輯距離、HMM模型、訓練深度模型挖掘等)進行糾錯候選召回,然後對該候選集合進行排序得到最終的正確query。

3.1.2.2  End2End方法

End2End的方式聯合優化糾錯任務,如

字節AI Lab的Soft-Mask BERT:由錯誤檢測網絡(Bi-GRU)和基於BERT的錯誤糾正網絡組成。檢測網絡預測每個位置的字符為錯別字的概率,然後利用這個概率對該位置的字符嵌入進行soft masking(軟掩碼),每個位置的soft-masked embedding輸入到糾錯網絡,糾錯網絡使用Bert進行拼寫糾錯。

螞蟻金服SpellGCN:綜合使用漢字的聲音和視覺相似性,通過特殊的圖卷積網絡(graph convolutional network)來解決中文拼寫糾錯(Chinese Spelling Check, CSC)問題

騰訊 PLOME:字音和字形信息引入到bert的輸入中,基於字的拼音序列利用GRU建模拼音表示,基於字的筆畫序列利用GRU建模字形表示。模型輸出該位置的字的概率,也要輸出該位置的正確拼音概率,模型的損失為二者損失之和。預測階段也是結合二者作為預測結果。

3.1.3  業界實現

然而在實際應用場景中,會存在很多論文未涉及的問題,分享一些業界的真實案例,供參考:

百度:中文糾錯技術

哈工大訊飛文本糾錯系統 [3]

平安壽險AI:文本糾錯技術 [4]

阿里:語音對話中的糾錯系統

小愛:基於BERT的ASR糾錯

滴滴:語音交互自然語言理解探索與實踐

流利説:自動語法糾錯

3.2 Query歸一

Query歸一有時也稱為同義近義替換,其目標是對長尾冷門的query/詞語進行歸一到熱門標準query,改善召回結果。和上述query糾錯的區別是,這裏的query更多是正確的,只是在表述上不規範難以與索引匹配。

涉及的主要技術就是同義詞挖掘及語義實體對齊。具體實現上有很多方式,譬如

從知識庫或者結構化數據構造規則模板來挖掘;

利用豐富的行為數據,結合無監督詞向量,來挖掘語義相似詞;

通過深度匹配模型、文本生成模型seq2seq等先挖掘出語義表達相近的query-query、item-item或query-item短語對,然後再將語義相近的query/item短語對進行語義對齊;

3.3 Query擴展

在很多情況下,用户輸入的query是模糊的,並不能準確表達其搜索需求,譬如用户想要購買健身博主劉畊宏的同款瑜伽墊,但是並不知道具體的品牌款式,轉而使用模糊的”劉畊宏”作為query來搜索。

query擴展可以幫助用户挖掘潛在需求(有些類似搜索中的推薦,所以有時也可稱為query推薦),同時也可以擴大搜索的召回。

Query擴展的業務形態如下。具體的實現方式可以根據粒度的不同分為Term粒度和Query粒度兩種:前者往往將query中的部分term使用同義或相關的term進行擴展,更多的為語義上的擴展;後者直接擴展出一個完整的query,與原串同時進行檢索。

可以看下 美團搜索query擴展 方面的技術大圖。

首先離線通過用户搜索日誌、翻譯(詞對齊等)、圖方法(協同過濾、graph embedding等)、詞向量Embedding等方法挖掘得到千萬級別的候選語料;

但一般上述挖掘語料質量不夠高,又設計了基於BERT的語義判別模型進一步提高改寫pair對的準確率;

在線的目標是進一步提高改寫的效果,設計了高精度的詞典改寫、較高精度的模型改寫(基於SMT統計翻譯模型和XGBoost排序模型)、覆蓋長尾Query的基於強化學習方法優化的NMT模型、針對商户搜索的向量化召回四種線上方案。

更多的方案公開總結已有很多,可參考:

丁香園:搜索中的Query擴展技術 [5]

丁香園:搜索中的Query擴展技術(二) [6]

Query 理解和語義召回在知乎搜索中的應用

美團搜索中查詢改寫技術的探索與實踐 [7]

考慮微信公眾號讀者閲讀習慣,還有部分QP內容拆分到下一篇繼續~ 下期再見!

一起交流

想和你一起學習進步!『 NewBeeNLP』 目前已經建立了多個不同方向交流羣( 機器學習 / 深度學習 / 自然語言處理 / 搜索推薦 / 圖網絡 / 面試交流 /  等),名額有限,趕緊添加下方微信加入一起討論交流吧!(注意一定o要 備註信息 才能通過)

本文參考資料

[1]

Review of Chinese Word Segmentation Studies: https://manu44.magtech.com.cn/Jwk_infotech_wk3/CN/Y2020/V4/I2/3/1

[2]

NLP分詞算法深度綜述: https://zhuanlan.zhihu.com/p/50444885

[3]

哈工大訊飛文本糾錯系統: http://cogskl.iflytek.com/archives/1306

[4]

平安壽險AI:文本糾錯技術: https://zhuanlan.zhihu.com/p/159101860

[5]

丁香園:搜索中的Query擴展技術: https://zhuanlan.zhihu.com/p/138551957

[6]

丁香園:搜索中的Query擴展技術(二): https://zhuanlan.zhihu.com/p/296504323

[7]

美團搜索中查詢改寫技術的探索與實踐: https://tech.meituan.com/2022/02/17/exploration-and-practice-of-query-rewriting-in-meituan-search.htm