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