如何構(gòu)建一個(gè)好的電商搜索引擎?
掃描二維碼
隨時(shí)隨地手機(jī)看文章
分享嘉賓:邢少敏?第四范式 架構(gòu)師
編輯整理:劉員京
出品平臺(tái):DataFunTalk
-
為什么要做搜索 -
整體的技術(shù)方案 -
實(shí)際應(yīng)用效果
在電商的app里,流量來(lái)自很多不同的渠道,比如說(shuō)搜索、推薦、活動(dòng)和直播等等。搜索,是電商app非常重要的一個(gè)流量入口,可能很多電商app來(lái)自搜索的流量都會(huì)占過(guò)半以上。對(duì)于需求明確的用戶主要還是通過(guò)搜索來(lái)觸達(dá),對(duì)于需求不明確的用戶主要通過(guò)推薦。那么,對(duì)于搜索,因?yàn)樾枨蟊容^明確,所以會(huì)更容易轉(zhuǎn)化。
2.?搜索用戶體驗(yàn)痛點(diǎn)
一些電商巨頭其實(shí)已經(jīng)把搜索體驗(yàn)做得非常好,但是一些體量較小的客戶依然做不好搜索體驗(yàn),所以這就給我們提供了市場(chǎng)機(jī)會(huì)。
3. 搜索痛點(diǎn)下的用戶流失
如果搜索做得不好,用戶搜索多次,瀏覽搜索結(jié)果超過(guò)一定時(shí)間或者翻頁(yè)幾次以后,都找不到結(jié)果,就會(huì)因?yàn)闊o(wú)法忍受搜索體驗(yàn)而流失。
4. 智能搜索挖掘用戶行為數(shù)據(jù)價(jià)值
所以應(yīng)該優(yōu)化搜索體驗(yàn),留住用戶,那應(yīng)該如果做好智能搜索呢?可以通過(guò)用戶行為日志挖掘到很多有價(jià)值的數(shù)據(jù),從這些數(shù)據(jù)中找到豐富的特征,利用這些特征去將搜索流量的價(jià)值最大化。
5. 電商搜索舉例
一般情況下,對(duì)于搜索,除了我們經(jīng)常看到的去搜索框里面敲一些關(guān)鍵詞來(lái)搜索以外,搜索還有其他場(chǎng)景,比如搜索發(fā)現(xiàn)、搜索建議、熱門搜索、猜你喜歡和搜索底紋,其實(shí)這些已經(jīng)不是單純的搜索,而是跟推薦相結(jié)合的場(chǎng)景。
6. 商品搜索?VS. 網(wǎng)頁(yè)搜索
日常生活中,最熟悉的網(wǎng)頁(yè)搜索和商品搜索有什么區(qū)別?可以從這幾個(gè)方面來(lái)分析:
商品搜索和網(wǎng)頁(yè)搜索的優(yōu)化目標(biāo)不一樣,網(wǎng)頁(yè)搜索主要是優(yōu)化網(wǎng)頁(yè)和搜索詞的相關(guān)性 ( 不考慮網(wǎng)頁(yè)搜索中的廣告點(diǎn)擊率優(yōu)化 );而商品搜索主要優(yōu)化目標(biāo)是點(diǎn)擊率 ( CTR )、轉(zhuǎn)化率 ( CVR )、交易額 ( GMV ),兩者的優(yōu)化目標(biāo)是有一些不同的。
從數(shù)據(jù)結(jié)構(gòu)方面來(lái)講,網(wǎng)頁(yè)搜索使用的是全網(wǎng)的非結(jié)構(gòu)化數(shù)據(jù),需要額外的非結(jié)構(gòu)化數(shù)據(jù)處理工作;而對(duì)于商品搜索,使用的是優(yōu)質(zhì)的結(jié)構(gòu)化數(shù)據(jù),比起網(wǎng)頁(yè)搜索里面參差不齊的非結(jié)構(gòu)化數(shù)據(jù),少了數(shù)據(jù)整理和處理的工作。
從數(shù)據(jù)來(lái)源方面來(lái)講,網(wǎng)頁(yè)搜索使用的是整個(gè)互聯(lián)網(wǎng)的數(shù)據(jù),而商品搜索,往往是一家企業(yè)內(nèi)部的數(shù)據(jù),而且這些數(shù)據(jù)存儲(chǔ)在它的業(yè)務(wù)數(shù)據(jù)庫(kù)或者數(shù)倉(cāng)里,相對(duì)來(lái)說(shuō)數(shù)據(jù)是比較好處理的。
從數(shù)據(jù)規(guī)模來(lái)講,網(wǎng)頁(yè)搜索使用的數(shù)據(jù)一般是萬(wàn)億級(jí)的規(guī)模,有超過(guò)萬(wàn)億的網(wǎng)頁(yè),但是商品搜索的話,根據(jù)客戶規(guī)模的大小,商品的SKU數(shù)或者SPU數(shù)基本上是幾萬(wàn)到幾千萬(wàn)這個(gè)級(jí)別,與網(wǎng)頁(yè)搜索不在一個(gè)量級(jí)。
從召回率來(lái)講,網(wǎng)頁(yè)搜索對(duì)召回率的要求不會(huì)太高,但是商品搜索對(duì)召回率的要求是很高的,因?yàn)椴荒茏屢恍┥唐酚肋h(yuǎn)沒有曝光的機(jī)會(huì),所以一定是需要讓所有的商品都有曝光的機(jī)會(huì),商品搜索對(duì)于召回率的要求是很高的。
從個(gè)性化程度來(lái)講,網(wǎng)頁(yè)搜索一般情況下也能做到個(gè)性化,通常像谷歌、百度等搜索公司在個(gè)性化上也會(huì)做一些工作,但是對(duì)個(gè)性化的要求并不高;而商品搜索對(duì)個(gè)性化的要求很高,比如搜索的時(shí)候,不同的人消費(fèi)能力的不同,那么排序的時(shí)候,需要考慮把合適價(jià)格的產(chǎn)品返回給不同消費(fèi)能力的人群。個(gè)性化要求的不同是網(wǎng)頁(yè)搜索和商品搜索的重要區(qū)別,這就決定了兩者技術(shù)實(shí)現(xiàn)的不同。
接下來(lái),介紹一下總體的技術(shù)方案。
技術(shù)架構(gòu)圖主要分為三大塊,一塊是數(shù)據(jù),一塊是模型,一塊是搜索引擎本身,其中數(shù)據(jù)和模型是為搜索引擎服務(wù)的,會(huì)有數(shù)據(jù)接入的一些模塊,把客戶的數(shù)據(jù)接入到系統(tǒng)里面,放入數(shù)據(jù)中臺(tái)上去計(jì)算物料畫像、用戶畫像等等;接下來(lái),需要用這些數(shù)據(jù)建一些模型,這些模型會(huì)在搜索引擎的各個(gè)環(huán)節(jié)中用到,比如意圖、召回、粗排、精排中各個(gè)環(huán)節(jié)都會(huì)用到;再往下,就是一些基礎(chǔ)的數(shù)據(jù)存儲(chǔ)中間件。我們主要圍繞著搜索引擎本身這個(gè)流程展開,最右側(cè)就是搜索引擎的流程,接下來(lái)我們從上往下來(lái)介紹一下整個(gè)搜索是如何做的。
1. Query預(yù)處理
當(dāng)用戶在一個(gè)電商app上輸入搜索詞的時(shí)候,會(huì)先對(duì)搜索詞進(jìn)行預(yù)處理,這種預(yù)處理就包括常見的去停止詞、歸一化、拼音轉(zhuǎn)文字、同義詞替換、分詞、補(bǔ)全、改寫和糾錯(cuò)等等一系列的處理,然后把用戶搜索的不太規(guī)范或者不正確的query處理成規(guī)范形式和正確形式,并且做一些分詞、轉(zhuǎn)換的處理。
2. 實(shí)體識(shí)別
做完預(yù)處理之后,得到了用戶搜索詞分詞的結(jié)果,拿到這個(gè)分詞結(jié)果,要把分詞結(jié)果里面每一個(gè)詞識(shí)別成一個(gè)實(shí)體,什么是實(shí)體呢?在電商里面的實(shí)體類型其實(shí)有很多,這里列出了三種,有商品實(shí)體類型,礦泉水就是一種實(shí)體,屬于商品實(shí)體類型;農(nóng)夫山泉是品牌這種實(shí)體類型;飲用水是一種分類或者叫類目,這些都是實(shí)體類型,實(shí)體類型下面有具體的實(shí)體,實(shí)體就是礦泉水,農(nóng)夫山泉,所以需要知道輸入的詞到底是一個(gè)什么實(shí)體,比如說(shuō)輸入“奧利奧餅干”,做完預(yù)處理之后,得到“奧利奧”和“餅干”兩個(gè)詞,這個(gè)時(shí)候就需要做實(shí)體識(shí)別,識(shí)別后可以知道“奧利奧”是一種品牌,“餅干”是一種商品,這樣就能做后續(xù)的處理。
實(shí)體識(shí)別是序列標(biāo)注的一種,有很多種方法,像CRF、BERT之類的,都可以用來(lái)做實(shí)體識(shí)別,在工程上處理的時(shí)候不一定是在線使用這些算法,因?yàn)檫@些算法在線計(jì)算成本比較高,通常會(huì)進(jìn)行離線計(jì)算,把計(jì)算出的結(jié)果放到緩存中,這樣在線只需要做一些簡(jiǎn)單的匹配,處理會(huì)快很多,另外有時(shí)候還需要經(jīng)過(guò)一些人工糾正,這樣才能得到比較準(zhǔn)確的實(shí)體詞。做實(shí)體識(shí)別有一些前提條件,怎么知道礦泉水是一種商品?農(nóng)夫山泉是一種品牌呢?這些知識(shí)其實(shí)是需要外部輸入才能知道,這就是領(lǐng)域知識(shí),所以首先要積累一些領(lǐng)域知識(shí)。
① 領(lǐng)域知識(shí)積累
領(lǐng)域知識(shí)其實(shí)是不太好分析出來(lái)的,舉個(gè)例子,豬舌和口條其實(shí)是一回事,茭瓜和西葫蘆是一回事,這些知識(shí),當(dāng)然可以去分析,那如何分析?其實(shí)有很多現(xiàn)成的知識(shí)可以抓取過(guò)來(lái)利用,把它作為領(lǐng)域知識(shí)積累下來(lái)。這個(gè)領(lǐng)域知識(shí)有很多形態(tài),最簡(jiǎn)單就是詞庫(kù),也可以構(gòu)建知識(shí)圖譜,構(gòu)建知識(shí)圖譜是構(gòu)建領(lǐng)域知識(shí)最常用的方式。
② 詞庫(kù)挖掘
詞庫(kù)如何構(gòu)建,需要挖掘各種類型的詞,比如最常用的同義詞和上位詞,同義詞理解可以用前面舉的例子,茭瓜和西葫蘆是一回事,獲取同義詞有很多種方法,使用預(yù)訓(xùn)練的詞向量方法去找共現(xiàn)關(guān)系可以大量的找到同義詞 ( 也就是類似word2vec的方法 ),但是找出來(lái)之后可能不太準(zhǔn)確,需要后期處理一下才能使用。從百度百科上可以爬取到很多同義詞,以及業(yè)務(wù)運(yùn)營(yíng)數(shù)據(jù)庫(kù)和企業(yè)現(xiàn)有詞庫(kù)積累都可以找到同義詞,有各種各樣的方法去構(gòu)建同義詞庫(kù)。
那么如何挖掘上位詞,舉例理解上位詞,比如商品類目就是具體商品的上位詞,礦泉水的上位詞就是飲用水。詞庫(kù)的構(gòu)建是做搜索必要的工作,但是在構(gòu)建詞庫(kù)的過(guò)程中,不一定是手工的過(guò)程,完全可以用其他的自動(dòng)化方法甚至模型去篩選詞庫(kù),最后再做一些人工糾正。
③ 商品知識(shí)圖譜構(gòu)建
如何構(gòu)建商品知識(shí)圖譜,我們可以構(gòu)建很多種不同類型的知識(shí)圖譜,本文是根據(jù)不同實(shí)體來(lái)構(gòu)建知識(shí)圖譜,比如按照三種實(shí)體類型來(lái)構(gòu)建知識(shí)圖譜,像上圖最右側(cè)的示意圖,蘋果有很多種型號(hào),如果用戶搜索蘋果,用戶有可能想買iPhone 11、iPhone X或者還是沒出來(lái)的iPhone 12,可以通過(guò)先驗(yàn)知識(shí),把知識(shí)圖譜構(gòu)建出來(lái),最后排序時(shí)可以把這些知識(shí)融入進(jìn)去,比如用戶都更加傾向于去買iPhone X,后面排序的時(shí)候iPhone X就會(huì)更靠前一些。對(duì)于類目來(lái)說(shuō),搜索蘋果有可能是一個(gè)手機(jī),也有可能是水果,那到底是想買手機(jī)還是想吃水果,是有一個(gè)概率的,不同用戶有不同的傾向性,但是目前我們構(gòu)建的圖譜還不能做到特別個(gè)性化,它只是一個(gè)宏觀的統(tǒng)計(jì),搜蘋果時(shí)有80%的用戶其實(shí)是要買蘋果手機(jī)的,有20%的用戶要買水果,這樣就給了我們一種排序的參考。知識(shí)圖譜其實(shí)是做了一個(gè)非個(gè)性化全局的知識(shí)構(gòu)建,通過(guò)商品庫(kù)去分析靜態(tài)概率,最后根據(jù)用戶點(diǎn)擊行為會(huì)做一些動(dòng)態(tài)調(diào)整,調(diào)整完的知識(shí)圖譜再用在后面的排序上。
3. 意圖識(shí)別
將用戶搜索詞做了預(yù)處理之后,基于分詞結(jié)果識(shí)別搜索詞對(duì)應(yīng)的實(shí)體類型,可以知道用戶搜一個(gè)商品的時(shí)候,搜的是什么樣的實(shí)體,是一個(gè)品牌,還是一個(gè)商品名稱,還可以通過(guò)圖譜去猜測(cè)用戶的搜索意圖,如果他只輸一個(gè)蘋果,能猜出來(lái)很大概率上可能要買手機(jī),也可以把其他實(shí)體類型也猜出來(lái),猜完了以后,還是有一部分猜不出來(lái),那猜不出來(lái)的這部分怎么辦呢,就要用意圖識(shí)別。
那么如何做意圖識(shí)別,使用用戶導(dǎo)入的物料庫(kù)自動(dòng)的去訓(xùn)練意圖模型,意圖識(shí)別就是去做類目預(yù)測(cè),甚至去做一些字面沒有表達(dá)出來(lái)的其他實(shí)體類型的預(yù)測(cè)。在初始的物料庫(kù)里面,商品的各種屬性就是一些天然的標(biāo)注數(shù)據(jù),使用這些標(biāo)注數(shù)據(jù)去訓(xùn)練一個(gè)初始的意圖模型,來(lái)預(yù)測(cè)隱含的實(shí)體類型,當(dāng)這個(gè)初始模型訓(xùn)練完成之后,再用搜索日志去動(dòng)態(tài)調(diào)整這個(gè)意圖模型。
做完預(yù)處理、分詞、實(shí)體識(shí)別、基于知識(shí)圖譜的預(yù)測(cè)和意圖識(shí)別,能做到什么效果呢?能做到搜"手機(jī)",根據(jù)這個(gè)用戶的信息,就可以知道手機(jī)是一個(gè)商品名字,還可以猜出來(lái)具體商品,但是猜的可能不一定那么準(zhǔn),這個(gè)用戶可能有80%的概率要買蘋果手機(jī),而且他買的這個(gè)蘋果手機(jī)可能是iPhone 11,還可能猜出來(lái)要買的顏色是紅色的。這樣在用戶輸入一個(gè)詞的時(shí)候,就能預(yù)測(cè)出他可能要搜的所有的信息,當(dāng)然這個(gè)預(yù)測(cè)有時(shí)準(zhǔn)有時(shí)不準(zhǔn),但后面會(huì)調(diào)整,這樣的話,就可以拿著這些信息去做一些召回。
意圖識(shí)別有哪些方法,意圖識(shí)別的方法有很多種,因?yàn)橐鈭D識(shí)別本身用的就是分類器,分類器其實(shí)有好多種,但是經(jīng)過(guò)各種對(duì)比之后,我們選擇了能在線上使用的FastText,同等效果下,F(xiàn)astText是最快的,并且簡(jiǎn)單高效,實(shí)用性高。
4. 粗排
做完前面的工作就開始做召回,從用戶搜索的一個(gè)詞通過(guò)一系列流程,通過(guò)知識(shí)圖譜 ( 其實(shí)知識(shí)圖譜放的是一些比較頭部的實(shí)體,但是長(zhǎng)尾的實(shí)體詞還是需要意圖識(shí)別的方法來(lái)預(yù)測(cè) ) 預(yù)測(cè)出了各種信息,拿著這些信息去構(gòu)建召回的條件,用這個(gè)召回的條件去召回出來(lái)完整的結(jié)果集合,這個(gè)時(shí)候召回的工作就完成了。
召回的工作完成之后,接下來(lái)就是粗排,可以使用簡(jiǎn)單的模型來(lái)粗排,這個(gè)模型里面的特征可以用相關(guān)性 ( 搜索和推薦不同,搜索一開始就會(huì)有相關(guān)性,但推薦就不會(huì)有相關(guān)性,推薦不會(huì)先輸入一些搜索詞 )、時(shí)間、熱度、銷量、好評(píng)數(shù)和收藏?cái)?shù)等等特征,訓(xùn)練出簡(jiǎn)單的模型,做一些粗排的排序,進(jìn)行截?cái)啵M(jìn)入下一個(gè)環(huán)節(jié),想要更簡(jiǎn)單的話,可以找出核心的特征,做加權(quán)平均也可以。粗排還不能達(dá)到個(gè)性化的效果,當(dāng)然也可以把粗排做得更個(gè)性化,可以根據(jù)不同搜索的用戶做個(gè)性化的粗排模型。
5. 精排
得到粗排結(jié)果以后,接下來(lái)就是精排,對(duì)于搜索來(lái)講,目前來(lái)講主要的優(yōu)化目標(biāo)是CTR,用的主要是CTR預(yù)估方法,CTR預(yù)估有很多不同的方法,比如傳統(tǒng)的特征工程方法、深度學(xué)習(xí)方法等,也可以使用第四范式自研的HyperCycle。
特征工程方法主要是利用不同種類的多種特征,構(gòu)建機(jī)器學(xué)習(xí)排序模型,上面列了幾組特征,有搜索詞特征、相關(guān)性特征、用戶特征、商品特征和行為特征等。
深度學(xué)習(xí)方法也是常用的CTR預(yù)估方法,有很多深度學(xué)習(xí)模型可以用于搜索場(chǎng)景的排序,比如DeepFM、Wide&Deep等。
我們系統(tǒng)中主要使用的是自研的HyperCycle。簡(jiǎn)單來(lái)說(shuō)會(huì)自動(dòng)蓄水積累數(shù)據(jù)、自動(dòng)探索模型、自動(dòng)挖掘特征,自動(dòng)訓(xùn)練上線,還會(huì)定期自動(dòng)更新,詳細(xì)信息可以參考后面石光川分享的HyperCycle。
6. 其他
搜索中會(huì)出現(xiàn)推薦相關(guān)的應(yīng)用場(chǎng)景,像搜索底紋、搜索發(fā)現(xiàn)、搜索提示、猜你喜歡和相關(guān)搜索等等都和推薦相關(guān)。
搜索底紋就是搜索框里面唯一的那個(gè)詞,其實(shí)就是對(duì)搜索框top1的推薦,根據(jù)用戶的歷史行為,推薦出該用戶最有可能搜的詞匯取top1放在搜索底紋里,然后推薦給用戶,用戶看見這個(gè)底紋以后就有可能去搜這個(gè)底紋上的搜索詞,目的是希望引導(dǎo)用戶,猜出用戶想要搜什么,提高轉(zhuǎn)化率;搜索發(fā)現(xiàn)跟搜索底紋的原理差不多,只是有了更多推薦的搜索詞;搜索提示是在搜索中做一些推薦,相關(guān)搜索是在沒有搜索結(jié)果時(shí)做一些相關(guān)推薦;有的地方還會(huì)有猜你喜歡,猜你喜歡其實(shí)是一個(gè)純推薦的場(chǎng)景,當(dāng)用戶打開搜索頁(yè)面時(shí),去猜用戶最想要搜索的是什么,然后推薦給用戶。這些其實(shí)都是搜索中的推薦,搜索中的流量和推薦中的流量是完全可以打通的。
以上,逐個(gè)講了整個(gè)搜索的流程,那么現(xiàn)在分步的去看搜索一個(gè)詞時(shí)是怎樣的過(guò)程。第一步會(huì)先輸入搜索詞"康師傅方便面",第二步預(yù)處理,預(yù)處理會(huì)做一些事情,首先是分詞,之后會(huì)算出來(lái)該搜索詞可能的實(shí)體類型,比如康師傅是一個(gè)品牌,它識(shí)別出康師傅是一個(gè)品牌,方便面可能是一種修飾語(yǔ),也可能是一種類型,還有一些同義詞:袋裝面、桶裝面和泡面,做完第二步的處理,會(huì)拿到這樣一些處理結(jié)果;第三步意圖識(shí)別,可以看到有96%的概率所屬類目是糧油調(diào)味;
第四步構(gòu)建一個(gè)搜索query,從ES召回結(jié)果;第五步拿到ES召回的結(jié)果之后,做粗排并截?cái)?;第六步做精排;最后做基于業(yè)務(wù)規(guī)則的運(yùn)營(yíng)干預(yù),把最終的搜索結(jié)果返回給用戶,以上就是完整的技術(shù)流程。
最后,我們看看搜索技術(shù)方案應(yīng)用案例,分析產(chǎn)生的效果。
在一些零售企業(yè)場(chǎng)景應(yīng)用之后搜索結(jié)果準(zhǔn)確率提升了50%,整個(gè)商品的覆蓋率提高了3倍,解決了客戶的搜索體驗(yàn)痛點(diǎn)。
這是上線前后搜索結(jié)果的對(duì)比,沒上線前搜索"蘋果"時(shí),排在前面并不是蘋果,上線智能搜索之后,搜索結(jié)果都是"蘋果"相關(guān)的。
按品類搜索,優(yōu)化前搜索"水",Top 5返回了"豐水梨"、"柔膚水"等完全不相關(guān)產(chǎn)品,優(yōu)化后搜索"水",Top 5返回是和水緊密相關(guān)商品。
按品牌搜索,優(yōu)化前搜索"安慕希",Top 5返回了"希藝歐"完全不相關(guān)商品,優(yōu)化后搜索"安慕希",Top 5返回是和品牌緊密相關(guān)商品。
按同義詞搜索,優(yōu)化前搜索"圣女果",Top5返回了"果汁飲料"、"芒果味果凍"毫不相關(guān)的商品,優(yōu)化后搜索"圣女果",Top5返回是和圣女果緊密相關(guān)商品。
優(yōu)化后,可以進(jìn)行智能糾錯(cuò)和拼音搜索,比如搜索 "平果"、"pingguo" 和 "pinguo" 時(shí),都能準(zhǔn)確搜索出蘋果相關(guān)的商品。
嘉賓介紹:
邢少敏,17年加入第四范式,一直在做業(yè)務(wù)產(chǎn)品的研發(fā),最初做智能客服系列產(chǎn)品,去年孵化了智能搜索產(chǎn)品,今年同時(shí)在做智能推薦產(chǎn)品的研發(fā)。
今天的分享就到這里,謝謝大家。
長(zhǎng)按訂閱更多精彩▼
如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!