電商搜尋全鏈路(PART II)Query理解
本站內容均來自興趣收集,如不慎侵害的您的相關權益,請留言告知,我們將盡快刪除.謝謝.
作者 | 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]
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]
美團搜尋中查詢改寫技術的探索與實踐 [7]
考慮微信公眾號讀者閱讀習慣,還有部分QP內容拆分到下一篇繼續~ 下期再見!
一起交流
想和你一起學習進步!『 NewBeeNLP』 目前已經建立了多個不同方向交流群( 機器學習 / 深度學習 / 自然語言處理 / 搜尋推薦 / 圖網路 / 面試交流 / 等),名額有限,趕緊新增下方微信加入一起討論交流吧!(注意一定o要 備註資訊 才能通過)
本文參考資料
[1]
Review of Chinese Word Segmentation Studies: http://manu44.magtech.com.cn/Jwk_infotech_wk3/CN/Y2020/V4/I2/3/1
[2]
NLP分詞演算法深度綜述: http://zhuanlan.zhihu.com/p/50444885
[3]
哈工大訊飛文字糾錯系統: http://cogskl.iflytek.com/archives/1306
[4]
平安壽險AI:文字糾錯技術: http://zhuanlan.zhihu.com/p/159101860
[5]
丁香園:搜尋中的Query擴充套件技術: http://zhuanlan.zhihu.com/p/138551957
[6]
丁香園:搜尋中的Query擴充套件技術(二): http://zhuanlan.zhihu.com/p/296504323
[7]
美團搜尋中查詢改寫技術的探索與實踐: http://tech.meituan.com/2022/02/17/exploration-and-practice-of-query-rewriting-in-meituan-search.htm
- 全自動資料建模平臺打造建模新正規化,人人都能成為資料科學家 | 愛分析調研
- 如何用DBSCAN聚類模型做資料分析?
- 精準使用者畫像!商城使用者分群2.0!
- Test time adaptation方法總結
- 超精準!AI 結合郵件內容與附件的意圖理解與分類!
- AI加速器與機器學習演算法:協同設計與進化
- 使用SINet進行偽裝目標檢測
- ECCV 2022 Oral | 理解藝術字:用於場景文字識別的角點引導Transformer
- AI醫療高精尖!基於AI的新葯研發!
- 谷歌&北大擴散模型(Diffusion Model)首篇綜述-Diffusion Models: A Comprehensive Survey of Meth…
- 協同過濾演算法——基於物品(Item)
- MLOps對比DevOps:有什么區別?
- CVPR 2022 | UniDet:通用的多資料集目標檢測
- ECCV 2022 | k-means Mask Transformer
- IS 2022 | 位元組AI Lab聯合南科大提出:利用偽標註資料提升端到端S2ST
- 自定義分詞起始規則實現關鍵詞全詞高亮專案實戰(全語種通吃)
- 電商搜尋全鏈路(PART II)Query理解
- 機器學習分類問題:九個常用的評估指標總結
- 簡單的文字分類任務:不借助Trainer實現
- Macbook Pro M1晶片使用Pytorch進行深度學習小試