電商搜索系統(tǒng)精講系列三步曲2
編輯導(dǎo)讀:在電商軟件中搜索一款產(chǎn)品,頁面中會出現(xiàn)很多相關(guān)產(chǎn)品的展示。這些頁面是如何展示呢?為什么會這樣展示?本文作者以電商產(chǎn)品為例,對其頁面排序系統(tǒng)進(jìn)行分析,希望對你有幫助。
01 排序的場景模型
上篇文章我們針對一個(gè)電商搜索系統(tǒng)的業(yè)務(wù)以及召回分析器和模型的分析,比如當(dāng)用戶在淘寶APP搜索框中輸入搜索關(guān)鍵詞“2021年新款花式促銷女士連衣裙”,搜索系統(tǒng)會通過分析器和各種模型來理解用戶的搜索意圖,進(jìn)而達(dá)到召回商品的目的(這塊的原型將在“電商搜索系統(tǒng)精講系列三步曲”的下篇會push給大家);
那么思考一個(gè)問題,用戶搜索“2021年新款花式促銷女士連衣裙”之后,頁面怎么展示,為什么會這么展示?依據(jù)是什么,如下圖?
這個(gè)就是我們今天要去講的內(nèi)容,往下看:
在分析這塊的內(nèi)容之前,同樣,我依然舉現(xiàn)實(shí)生活中的場景模型:
某公司產(chǎn)品總監(jiān)A需要招聘具有豐富教育中臺行業(yè)經(jīng)驗(yàn)的產(chǎn)品經(jīng)理,在BOSS直聘的崗位描述JD(Job Description)增加了要具備教育中臺行業(yè)的經(jīng)驗(yàn)的招聘要求,于是有以下求職者去面試:
- 應(yīng)聘者B:有教育行業(yè)經(jīng)驗(yàn),但無中臺產(chǎn)品建設(shè)經(jīng)驗(yàn);
- 應(yīng)聘者C:有教育行業(yè)經(jīng)驗(yàn),但工作年限比較短,不夠豐富;
- 應(yīng)聘者D:有中臺產(chǎn)品建設(shè)經(jīng)驗(yàn),但無教育行業(yè)經(jīng)驗(yàn);
- 應(yīng)聘者E:有豐富的教育中臺行業(yè)經(jīng)驗(yàn),但是之前做的是解決方案,并非產(chǎn)品經(jīng)理崗;
那么現(xiàn)在,假設(shè)你作為該公司的產(chǎn)品總監(jiān),你該怎么選?先不要看下面,先思考;
答案其實(shí)也很簡單,你一定是挑選一個(gè)適合該崗位要求的吧,那么什么才叫適合,評判的依據(jù)是什么?你作為產(chǎn)品總監(jiān)究竟怎么對這四個(gè)求職者進(jìn)行評估?
現(xiàn)在有些大公司采購了線上招聘系統(tǒng),人力資源HR和產(chǎn)品總監(jiān)把對這四位求職者的面試結(jié)論以文字的方式直接錄入到這個(gè)招聘系統(tǒng),系統(tǒng)就會給出一個(gè)建議分,這個(gè)建議分值提供給產(chǎn)品總監(jiān)和HR人員進(jìn)行決策評估和參考,當(dāng)然沒有這個(gè)線上招聘系統(tǒng)也沒關(guān)系,最土的辦法就是下面這種,用手填寫面試評估表,用手打分,只不過這種方式的打分更多帶有主觀色彩。
所以最后的結(jié)論就是對每個(gè)求職者進(jìn)行打分,然后通過打分來對B、C、D、E四名求職者進(jìn)行排序,排序第一、第二、第三及第四,最后擇優(yōu)錄用;
好,上面說的是招聘的工作,想一想,我們每年高考錄取是不是也是這種方式來進(jìn)行擇優(yōu)錄取,同樣的場景模型,我們嘗試搬遷到線上,應(yīng)用在召回商品的排序上,接著看:
那么問題來了,同樣的場景模型搬遷到線上,就會涉及到對召回的商品打分怎么打的問題,這個(gè)是核心,人類有大腦可以用于主觀判斷,但電腦沒有眼睛沒有感官系統(tǒng),沒法等同于人類那樣去思考,所以我們需要做的就是給他輸入一系列的打分規(guī)則,電腦就能打分,就能對召回的商品進(jìn)行排序,從而實(shí)現(xiàn)我們的目標(biāo),接下來我們看排序的策略;
02 排序策略
大家回想之前浙江衛(wèi)視的中國好聲音節(jié)目,那些在電視熒幕上看到的唱歌選手也一定是提前開始海選,然后逐層選拔通過才會參加電視上的唱歌比賽吧,如果沒有海選這個(gè)環(huán)節(jié)呢,每個(gè)人只要報(bào)名都可以直接在電視上唱那么一曲,那豈不是要把浙江衛(wèi)視那些工作人員累死,所以選手是通過海選,逐層比賽,一關(guān)一關(guān)的通過,最后挑選出表現(xiàn)優(yōu)秀的前100名參與電視上的唱歌比賽;
我們采用同樣的套路,召回的商品(因?yàn)檫@個(gè)量級也是非常巨大的)先海選,再去精選,業(yè)內(nèi)很多人稱海選為粗選,所以召回的商品先要進(jìn)行粗選,通過粗選把可能滿足用戶意圖并且是相對優(yōu)質(zhì)的商品(比如有一萬個(gè))全部篩選出來,再去優(yōu)化(一萬個(gè)召回的商品精選排序)這個(gè)選擇的結(jié)果,最后把選出來的前1000(只是假設(shè))個(gè)商品進(jìn)行排序展示給用戶;
搜索引擎本身對于檢索性能要求比較高,所以需要采用上面說的兩個(gè)階段排序過程:粗排和精排。粗排就是上面說的海選,從檢索結(jié)果中快速找到優(yōu)質(zhì)的商品,取出TOP N個(gè)結(jié)果再按照精排進(jìn)行打分,最終返回最優(yōu)的結(jié)果給用戶。所以一般在搜索系統(tǒng)中,粗排對性能影響比較大,精排對最終排序效果影響比較大,因此,粗排要求盡量簡單有效,只提取數(shù)據(jù)庫表中的關(guān)鍵因子(字段)即可,關(guān)鍵的問題在于打分怎么打,下面將給大家介紹常見的打分策略:
我們首先引入一個(gè)新的概念—-表達(dá)式計(jì)算法
所謂表達(dá)式計(jì)算法:通俗的講,就是通過不同的計(jì)算公式來運(yùn)算每個(gè)被召回的產(chǎn)品和用戶意圖的相關(guān)度,這個(gè)相關(guān)度某種意義上講就是打的分?jǐn)?shù),業(yè)內(nèi)普遍稱這個(gè)過程為相關(guān)算分,一般常見的計(jì)算公式比如基本運(yùn)算(算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算、位運(yùn)算、條件運(yùn)算)、數(shù)學(xué)函數(shù)和排序特征(feature)等。
基本運(yùn)算:
數(shù)學(xué)函數(shù):
以上兩個(gè)函數(shù)比較簡單,高等數(shù)學(xué)里面都有的內(nèi)容,這里不再細(xì)說,下面來看下上面提到的粗排常用的幾個(gè)函數(shù)(以下為天貓搜索為例):
關(guān)鍵詞相似文本分Text similarity()函數(shù):用于計(jì)算用戶輸入的關(guān)鍵詞文本與召回的商品相關(guān)度,值越大,則相關(guān)度越高;
召回商品距離現(xiàn)在的時(shí)間GoodsTime()函數(shù):用于計(jì)算召回的商品距離現(xiàn)在的時(shí)間,一般取值為(0,1)之間,一般值越大,表商品距離現(xiàn)在時(shí)間越近,越容易被展示在用戶的界面;
類目預(yù)測函數(shù)CategoryPredic():用于計(jì)算用戶輸入的關(guān)鍵詞與商品類目的相關(guān)度,關(guān)于類目預(yù)測這里需要仔細(xì)說明下:
所謂類目預(yù)測,指的是通過計(jì)算機(jī)的算法去預(yù)測搜索的關(guān)鍵詞與商品
類目的相關(guān)程度,我們舉個(gè)例子,當(dāng)用戶在淘寶APP搜索框中輸入關(guān)鍵詞“蘋果”,則類目預(yù)測會計(jì)算商品所屬類目與輸入的蘋果這個(gè)關(guān)鍵詞的相關(guān)度,類目與關(guān)鍵詞的相關(guān)度越高,商品就獲得了越高的排序得分,也就是上文說到的相關(guān)算分值就越高,從而這個(gè)商品就會排在越前面,借助下面這兩張圖,就更好理解了:
第一張圖:搜索的關(guān)鍵字是“蘋果”,既有手機(jī)類的商品也有食物類的商品,左圖就是典型的沒有使用類目預(yù)測模型來打分,所以把食物類的蘋果也召回并且優(yōu)先排序在前面,右圖是使用后類目預(yù)測模型后的打分排序效果;
用戶輸入“蘋果”,查詢到一批商品,這些商品中有一部分的商品類目是“手機(jī)類”,另一部分的商品類目是“食物類”,根據(jù)計(jì)算機(jī)大數(shù)據(jù)對全量用戶的搜索歷史行為分析得出,搜索“蘋果”的人里面,點(diǎn)擊“手機(jī)類”類目商品的人要比點(diǎn)擊“食物類”類目商品的人多得多,則類目預(yù)測就會給出這樣的預(yù)測結(jié)果:“手機(jī)類”類目與“蘋果”的相關(guān)度要比“食物類”類目與“蘋果”的相關(guān)度高,所以在計(jì)算每個(gè)商品的相關(guān)算分時(shí),“手機(jī)類”類目商品的算分值就會比“食物類”類目的商品算分值高,因此“手機(jī)類”類目的商品會排在更前面,這樣就提高了搜索的業(yè)務(wù)價(jià)值;
所以我們在做產(chǎn)品原型設(shè)計(jì)的時(shí)候也要考慮搜索的關(guān)鍵詞與商品類目的相關(guān)程度,需要在原型的設(shè)計(jì)里面增加類目預(yù)測的模型的設(shè)計(jì);
再來回過頭看,我前面講的,排序首選要進(jìn)行海選也就是粗排,再針對粗排后的商品結(jié)果進(jìn)行精排,粗排已經(jīng)講了,精排怎么排?
同樣是要通過函數(shù)去計(jì)算搜索的關(guān)鍵詞與商品的相關(guān)度,常見的函數(shù)有:
文本相關(guān)度函數(shù):
- text_relevance: 關(guān)鍵詞在字段上的商品匹配度
- field_match_ratio:獲取某字段上與查詢詞匹配的分詞詞組個(gè)數(shù)與該字段總詞組個(gè)數(shù)的比值
- query_match_ratio:獲取查詢詞中(在某個(gè)字段上)命中詞組個(gè)數(shù)與總詞組個(gè)數(shù)的比值
- fieldterm_proximity: 用來表示關(guān)鍵詞分詞詞組在字段上的緊密程度
- field_length:獲取某個(gè)字段上的分詞詞組個(gè)數(shù)
- query_term_count: 返回查詢詞分詞后詞組個(gè)數(shù)
- query_term_match_count:獲取查詢詞中(在某個(gè)字段上)命中文檔的詞組個(gè)數(shù)
- field_term_match_count:獲取文檔中某個(gè)字段與查詢詞匹配的詞組個(gè)數(shù)
- query_min_slide_window:查詢詞在某個(gè)字段上命中的分詞詞組個(gè)數(shù)與該詞組在字段上最小窗口的比值
地理位置相關(guān)性:
- distance: 獲取兩個(gè)點(diǎn)之間的球面距離。一般用于LBS的距離計(jì)算。
- gauss_decay,使用高斯函數(shù),根據(jù)數(shù)值和給定的起始點(diǎn)之間的距離,計(jì)算其衰減程度
- linear_decay,使用線性函數(shù),根據(jù)數(shù)值和給定的起始點(diǎn)之間的距離,計(jì)算其衰減程度
- exp_decay,使用指數(shù)函數(shù),根據(jù)數(shù)值和給定的起始點(diǎn)之間的距離,計(jì)算其衰減程度
時(shí)效性:
- timeliness: 時(shí)效分,用于衡量商品的新舊程度,單位為秒
- timeliness_ms: 時(shí)效分,用于衡量商品的新舊程度,單位為毫秒
算法相關(guān)性:
- category_score:類目預(yù)測函數(shù),返回參數(shù)中指定的類目字段與類目預(yù)測query的類目匹配分
- popularity:人氣分,用于衡量物品的受歡迎程度
功能性:
- tag_match: 用于對查詢語句和商品做標(biāo)簽匹配,使用匹配結(jié)果對商品進(jìn)行算分加權(quán)
- first_phase_score:獲取粗排表達(dá)式最終計(jì)算分值
- kvpairs_value: 獲取查詢串中kvpairs子句中指定字段的值
- normalize:歸一化函數(shù),根據(jù)不同的算分將數(shù)值歸一化至[0, 1]
- in/notin : 判斷字段值是否(不)在指定列表中
以上函數(shù)大家不用去研究細(xì)節(jié),看看函數(shù)的中文解釋就好,幫助理解和消化,知道精排的算分怎么統(tǒng)計(jì)、哪些維度去統(tǒng)計(jì)即可,如果依然不理解的,可以跟我一起交流;
說到現(xiàn)在大家一定很好奇,為什么用戶最關(guān)心的商品熱度沒有提到,不著急不著急,接下來,我們就要針對搜索熱度比較高的商品一般怎么排序,引入一個(gè)新的概念—–人氣模型;
上面說的類目預(yù)測模型是要實(shí)時(shí)去計(jì)算,而人氣模型可以在離線的時(shí)候進(jìn)行計(jì)算,一般也叫離線計(jì)算模型,這種模型也是淘寶和天貓搜索最基礎(chǔ)的排序算法模型。
人氣模型會計(jì)算量化出每個(gè)商品的靜態(tài)質(zhì)量以及受歡迎的程度的值,這個(gè)值稱之為商品人氣分,最開始人氣模型是來自淘寶的搜索業(yè)務(wù),但其實(shí)這個(gè)模型對于其他的搜索場景也有很強(qiáng)的通用性,在非商品搜索場景中通過人氣模型也可以計(jì)算出被索引的商品的受歡迎程度,比如某個(gè)論壇,可以通過人氣模型排序搜索比較多的帖子,把這些帖子內(nèi)容優(yōu)先展示給用戶;
那么對于一個(gè)商品而言,這個(gè)人氣模型究竟怎么計(jì)算,畢竟系統(tǒng)的目標(biāo)是通過這個(gè)模型來計(jì)算商品的熱度,進(jìn)而打分排序,你說對吧;
一般情況下,人氣模型從四個(gè)維度去計(jì)算分值,具體如下:
第一個(gè)維度:實(shí)體維度;
比如:商品、品牌、商家、類目等。
第二個(gè)維度:時(shí)間維度;
比如:1天、3天、7天、14天、30天等。
第三個(gè)維度:行為維度;
比如:曝光、點(diǎn)擊、收藏、加購、購買、評論、點(diǎn)贊等。
第四個(gè)維度:統(tǒng)計(jì)維度;
比如:數(shù)量、人數(shù)、頻率、點(diǎn)擊率、轉(zhuǎn)化率等。
每個(gè)特征從以上4個(gè)維度中各取一到兩個(gè)進(jìn)行組合,再從歷史數(shù)據(jù)中統(tǒng)計(jì)該組合特征最終的特征值:
比如:
- 商品(實(shí)體)最近1天(時(shí)間)的曝光(行為)量(統(tǒng)計(jì)指標(biāo));
- 商品所在店鋪(實(shí)體)最近30天(時(shí)間)的銷量(行為類型+統(tǒng)計(jì)維度)等等。
由以上方法產(chǎn)生的結(jié)果數(shù)量級,等同于去計(jì)算4個(gè)維度的笛卡爾積,再對笛卡爾積的算分高低進(jìn)行排序;
好了,說到現(xiàn)在關(guān)于召回的商品排序所采用的算法目前我所了解的就這么多,當(dāng)然能力有限,有些搜索的細(xì)節(jié)依然需要進(jìn)一步去摸索;
03 召回與排序總結(jié)
我們來對上一篇文章和今天講的內(nèi)容簡單的做個(gè)總結(jié),當(dāng)用戶在淘寶APP搜索框中輸入“2021年新款花式促銷女士連衣裙”時(shí),搜索引擎系統(tǒng)首先要去理解用戶的意圖,理解的方式就是上篇文章提到的分析器,通過對語義的理解、命名實(shí)體識別、拼寫糾錯(cuò)、停止詞模型等手段去理解用戶的意圖,進(jìn)而通過這個(gè)意圖計(jì)算機(jī)去到后臺數(shù)據(jù)庫中檢索符合意圖的所有商品,當(dāng)商品被檢索出來之后,搜索引擎系統(tǒng)首先要通過各類函數(shù)和模型對商品進(jìn)行粗排,再對粗排的結(jié)果進(jìn)行精排,精排的依據(jù)就是上面的函數(shù)和模型,當(dāng)然還有類目預(yù)測模型和人氣模型,這個(gè)就是大概的流程;
依然沒有結(jié)束,首先來看下面這張圖:
想一想,上面左圖中的熱搜底紋和熱搜列表是怎么來的、右圖中的下拉提示又是這么出現(xiàn)的?這個(gè)就是原計(jì)劃需要在今天跟大家講的引導(dǎo)排序內(nèi)容;
關(guān)于引導(dǎo)排序這塊的內(nèi)容我們放到下一篇繼續(xù)分享,今天就寫到這,再見!
04 預(yù)告
本文由 @產(chǎn)品研究站?原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Pexels,基于CC0協(xié)議
寫的不錯(cuò)