神马搜索如何提升搜索的时效性?
一 問題定義
如何理解時效性呢?古語云:“四方上下曰宇,往古來今曰宙”。時間貫穿了一切,時間感知的唯一標(biāo)準(zhǔn)是變化。個人理解相對變化越難時間越慢,接近光速的時候時間變慢就是因為要改變它很困難。
從內(nèi)容側(cè)理解時效性
在信息場景下定義時效性的標(biāo)準(zhǔn)也同樣是變化。
信息的價值會隨時間的延續(xù)而變化,一般通常情況下信息的價值是會衰減,會失效的。這個和物理里面的放射性很像,借用物理里面的觀點我們對信息定義一個時效性半衰期的概念:信息相對價值衰減一半所需要的時間。對于一篇文章定義一個時間,假設(shè)文章剛發(fā)表的時候信息量是100,那么信息量衰減到50的時候需要的時間,就是這篇文章的半衰期。
從需求側(cè)理解時效性
在搜索場景下定義時效性的標(biāo)準(zhǔn)也是變化。
搜索的最佳答案會隨著時間的延續(xù)而變化。對于不同的query,變化快慢也不一樣。對于需求最佳答案變化的頻率,我們定義一個時間敏感度的概念,用戶對時間的敏感度越高,那么越希望得到新的內(nèi)容,內(nèi)容的時效性和整體的滿意度的相關(guān)程度越高。
泛時效性
時效性從需求出現(xiàn)的時間分布上大概可分成3大類:突發(fā)時效性,周期時效性和泛時效性。
具體的分類可以參考下圖,本文核心介紹和解決的是泛時效性。
不同于突發(fā)和周期時效性,泛時效性query和普通搜索query時間分布上基本一致,從時間序列分析上基本屬于平穩(wěn)序列。
比如,杭州西湖限行,阿里市值,從蕭山機(jī)場怎么去阿里西溪園區(qū)方便,今年最流程什么款式的女裝,杭州有哪些店比較好吃,靈隱寺附件民宿推薦等。
上面介紹到內(nèi)容側(cè)和需求側(cè)的時效性相關(guān)的兩個量化指標(biāo):時效性半衰期和時間敏感度。為了方便,我們將這兩個指標(biāo)的強(qiáng)度分類5檔:
二 評估標(biāo)準(zhǔn)
對于任何問題進(jìn)行優(yōu)化的前提是必須知道衡量標(biāo)準(zhǔn),時效性問題也不例外,在進(jìn)行優(yōu)化之前先要制定一套合理的評估方案,一是可以用來對現(xiàn)狀摸底,進(jìn)行Case分類和比例分析進(jìn)行針對性的優(yōu)化,二是優(yōu)化完之后通過前后對比得出優(yōu)化對于整體指標(biāo)的提升。
在做時效性優(yōu)化評估之前,搜索本身是有綜合滿意度評估打分的,但是綜合滿意度打分對于時效性并沒有很強(qiáng)的體現(xiàn),只是在時效性明顯不滿足需求的情況下進(jìn)行扣分,相對較弱。為了更好的暴露出時效性的問題,我們單獨構(gòu)建了時效性滿意度的打分標(biāo)準(zhǔn),評測時按照兩個標(biāo)準(zhǔn)進(jìn)行同時打分。
和神馬搜索滿意度類似采用滿分3分,對Top3的結(jié)果進(jìn)行評測,按照結(jié)果不滿足需求進(jìn)行扣分的方式進(jìn)行時效性滿意度打分。
扣分標(biāo)準(zhǔn)
命中以下規(guī)則時進(jìn)行扣分:
- 時間失效,8年以上,例如:“怎么知道別人開過我電腦沒,09年的消息。
- 信息失效,網(wǎng)頁內(nèi)容已經(jīng)過期,如果頁面是新聞或者招聘、下載等頁面時間敏感較強(qiáng)的頁面,時間上要嚴(yán)格一些,保證1-2年內(nèi)。
- 時間過舊,根據(jù)query時間敏感度和結(jié)果的更新頻率進(jìn)行綜合判斷,一般以超過5年結(jié)果進(jìn)行時間是否過舊劃分。
- 時間內(nèi)容和展示不一致。
- 結(jié)果非最新進(jìn)展。
打分流程
- 進(jìn)行query和結(jié)果敏感度衡量。
- 先判斷時間失效, 然后判斷信息失效,時間過舊,內(nèi)外時間不一致,事件最新;每條扣1分。
- 死鏈單獨扣分。
- 單純小說query暫時不評,下載需求按照正常評。
注意
- 時間敏感的query根據(jù)其敏感程度判定,如“優(yōu)惠卷使用超出使用日期”,“新問答電腦故障解決-回答是XP系統(tǒng)的方法”信息失效。
- 關(guān)于視頻資源播放和下載問題:有時間顯示,有簡介,無論能否播放依照時間打分;無時間顯示,對應(yīng)簡介,無法播放算信息失效或者低質(zhì),還是按照時效性最新算,不扣分。
三 整體打法
在做泛時效性項目之前我們做了突發(fā)時效性,經(jīng)歷了從規(guī)則優(yōu)化->遷移模型->抽象特征->模型迭代這四個階段。發(fā)現(xiàn)一個現(xiàn)象,在做一個項目的時候當(dāng)我們把整個項目的優(yōu)化方案定好,然后按照從底層特征到上層模型,這樣穩(wěn)步迭代推進(jìn)的方案,雖然前期特征設(shè)計和優(yōu)化難有收益,但是后期效果提升反而非常顯著,而且速度很快,層次清晰很有條理,問題定位和優(yōu)化都很容易。
因為有了上面的經(jīng)驗總結(jié),我們覺得就先從基礎(chǔ)特征優(yōu)化開始,然后通過標(biāo)注數(shù)據(jù)進(jìn)行排序和召回模型優(yōu)化。
四 基礎(chǔ)特征優(yōu)化
網(wǎng)頁時效性特征
時間抽取
時間抽取是時效性排序的最為基礎(chǔ)的特征,在抽取時間的時候首先要對網(wǎng)頁時間進(jìn)行定義,網(wǎng)頁時間主要分為以下幾個類別:網(wǎng)頁內(nèi)容時間、網(wǎng)頁更新時間、網(wǎng)頁發(fā)布時間和網(wǎng)頁發(fā)現(xiàn)時間。
- 網(wǎng)頁內(nèi)容時間:就是網(wǎng)頁中所描述的內(nèi)容的時間,比如一個網(wǎng)頁描述的是1945年二戰(zhàn)快要結(jié)束的時候的事情,那么這個網(wǎng)頁的內(nèi)容時間就是1945年,如果介紹的是2018年北京奧運會開幕式,就是2018年8月8日,目前的網(wǎng)頁內(nèi)容時間是從網(wǎng)頁內(nèi)容的所有時間中挑選出一個最能代表內(nèi)容的時間,是一個基于標(biāo)注數(shù)據(jù)的Ranking模型來實現(xiàn)的。
- 網(wǎng)頁發(fā)布時間:一般是指網(wǎng)頁的生成的時間,一般情況下是指網(wǎng)頁的Link創(chuàng)建的時間,對于一些內(nèi)容頁,比如新聞,二手交易等,網(wǎng)頁發(fā)布時間一般在網(wǎng)頁上會明確給出。
- 網(wǎng)頁更新時間:一般是指網(wǎng)頁主體內(nèi)容發(fā)生最近一次變化的時間,對于一般的新聞和普通的文章頁,一般生成后不會再進(jìn)行更新,所以最后一次更新時間一般情況下都是網(wǎng)頁的發(fā)布時間。
- 網(wǎng)頁發(fā)現(xiàn)時間:一般是指網(wǎng)頁鏈接被搜索引擎爬蟲發(fā)現(xiàn)的時間,由于爬蟲Flowlink需要一定的時間窗口還有內(nèi)容孤島等現(xiàn)象,網(wǎng)頁發(fā)現(xiàn)時間有可能嚴(yán)重滯后于網(wǎng)頁發(fā)布時間。
- 網(wǎng)頁首次進(jìn)入索引時間:因為網(wǎng)頁被爬蟲發(fā)現(xiàn)后,網(wǎng)頁并不一定能夠及時的被抓取和解析到,可能首次進(jìn)入索引的時間會嚴(yán)重滯后于網(wǎng)頁發(fā)現(xiàn)時間。
- 網(wǎng)頁時間:就是最能代表一個網(wǎng)頁價值的時間,一般情況下是從這5個時間進(jìn)行選擇,目前我們使用的是一個規(guī)則的方法進(jìn)行時間挑選。
規(guī)則的方法主要是:
- 對于新聞等內(nèi)容頁面,如果網(wǎng)頁發(fā)布時間可以通過模版和規(guī)則明確抽取出來,就選擇該時間作為網(wǎng)頁時間。
- 當(dāng)多個時間存在嚴(yán)重不一致的情況下會優(yōu)先選擇置信度高的時間,比如網(wǎng)頁發(fā)現(xiàn)時間或者網(wǎng)頁首次進(jìn)入索引時間。
時間敏感度(時效性半衰期)
網(wǎng)頁的時間敏感度,也就是網(wǎng)頁信息衰減的一個速率,我們用一個時效性半衰期來衡量網(wǎng)頁的時間衰減的速率,也就是假設(shè)從當(dāng)前時間開始網(wǎng)頁信息衰減為當(dāng)前信息量一半所需要的時間。
半衰期作為一個明確的時間其實很難定量標(biāo)注,為了簡單起見,我們將半衰期進(jìn)行定性的離散化,通過標(biāo)注數(shù)據(jù)來學(xué)習(xí)網(wǎng)頁的半衰期。
標(biāo)注數(shù)據(jù)的GuideLine:
1)時間敏感度標(biāo)注
在時間敏感度標(biāo)注的時候,為了讓標(biāo)注的同學(xué)能夠盡可能的有內(nèi)容的時效性感知,我們沒有定義很明確的詳細(xì)細(xì)則,只是有一些例子補(bǔ)充,核心還是希望能夠讓標(biāo)注的同學(xué)去感知內(nèi)容的時間敏感度,能夠去進(jìn)行有效的思考,而不是去逼近學(xué)習(xí)標(biāo)注細(xì)則,從而獲取到更為優(yōu)質(zhì)的數(shù)據(jù)。
這種粗GuideLine的標(biāo)注雖然帶來的數(shù)據(jù)質(zhì)量上的提升,但是也存在一些問題:
- 標(biāo)注同學(xué)的培訓(xùn)成本很高,需要消耗大量的時間去培訓(xùn)標(biāo)注的成員,同時進(jìn)行case解釋,這個陸續(xù)地持續(xù)了大概1個月的時間。
- 標(biāo)注的擬合率較低,在項目初期5人的跨檔(也就是5個人中有3個以上的人標(biāo)注的是比鄰的檔位)擬合率不到50%,即使到了項目的最后階段,5人的單檔擬合率(也就是5個人中3個以上的人標(biāo)注的是相同的檔位)也在60%左右,跨檔擬合率在70%~80%之間波動。
2)時間敏感度的模型
目前我們的模型使用的是Pairwise和PointWise兩個模型。
- Pairwise模型輸出的連續(xù)值,分辨率更高,更適合上層排序的基礎(chǔ)特征。
- PointWise模型輸出的主要是0,1,2及以上,主要是用來進(jìn)行索引挑選以及上層排序的偽反饋標(biāo)記特征,通過統(tǒng)計召回結(jié)果時間敏感的網(wǎng)頁的分布來反推Query的時間敏感度,這個后面會詳細(xì)介紹一下。
頁面信息失效
雖然定義了網(wǎng)頁的時間敏感度,對于一些時間敏感的網(wǎng)頁過了一段時間自然價值會變低,這種網(wǎng)頁定義信息失效比較困難,但是對于一些有明確時間邊界的頁面來說信息失效是可以明確定義的。
比如一些信息發(fā)布頁面,類似二手交易、組織活動、房產(chǎn)信息等都具有明確的時間邊界,當(dāng)交易發(fā)生,商品下架,或者活動時間過期等都是可以明確定義的,我們把這種信息稱為信息失效頁面,這種頁面可以認(rèn)為時效性價值為0,是需要做一些惡劣Case打壓的,這個在后續(xù)的排序模塊中也會介紹。
對于這種頁面的識別,目前是通過一些規(guī)則的方式,對于不同站點和類型的網(wǎng)頁進(jìn)行識別的。
需求時效性特征
需求的時間敏感度
Query的時間敏感度和網(wǎng)頁的時間敏感度是同樣的概念。
Query的時間敏感度: Query需要的網(wǎng)頁的時間敏感度,可以通過召回結(jié)果中網(wǎng)頁的時間敏感度來反推時效性的敏感度。
Query的時間敏感度的特征因為涉及到時效性結(jié)果的召回和時效性粗排,所以線上無法通過召回結(jié)果的分析來進(jìn)行反推,需要直接通過Query端的分析就獲取到Query的時間敏感度。
Query時間敏感度的模型主要是經(jīng)歷了3個版本的迭代,這里面簡單介紹一下:
1)第一版:基于時間敏感詞的Attention機(jī)制的ABCNN的模型
通過一些時間敏感的Patten做Attention來確定Query是否可以和某些時間敏感的詞進(jìn)行搭配,如果Query和這些時間敏感詞的搭配比較合理在搜索語料中也比較常見,那么這個Query是時間敏感的Query的概率自然也會比較高,這些常用的搭配的詞主要是:最新,最近,今年,年份,今天等。
2)第二版:基于偽反饋的蒸餾技術(shù)
剛才上面提到了其實我們已經(jīng)有一個網(wǎng)頁端的時間敏感度的模型,因為網(wǎng)頁本身的信息量大,網(wǎng)頁結(jié)構(gòu)特征多,更容易做的準(zhǔn)確。當(dāng)我們有一個比較準(zhǔn)確的網(wǎng)頁時間敏感度的模型的時候,可以通過召回結(jié)果的分布分析,生成大量的偽標(biāo)注的樣本。通過這些偽標(biāo)注的樣本可以訓(xùn)練一個大樣本的CNN的模型,效果對比第一版提升也比較明顯。
3)第三版:基于主動學(xué)習(xí)的樣本標(biāo)注的迭代技術(shù)
時效性的上層排序的時候需要一個TriggerModel,TriggerModel的作用是用來判斷Query是否需要時效性的調(diào)整,以及時效性調(diào)整的力度。
這個TriggerModel是基于人工標(biāo)注數(shù)據(jù)的Model,這個Model使用的特征更為豐富,包括相關(guān)搜索的時間敏感詞(因為用戶有的時候會修改Query,給Query加上時間限詞來進(jìn)行結(jié)果篩選),網(wǎng)頁的時間敏感度的分布,Query的時間敏感度的分布,用戶的點擊行為等特征,同時通過ActiveLearing進(jìn)行臨界樣本標(biāo)注,增加模型的分辨率。
當(dāng)我們獲取到了一個分辨率和準(zhǔn)確率都比較高的Query的時間敏感度的TriggerModel,用這個Model來生成大量的高分辨率的樣本,同時結(jié)合強(qiáng)大的Bert語言模型,可以訓(xùn)練得到一個比較好的時間敏感度的模型。
同時因為TriggerModel使用了第二版的Query的時間敏感度的特征,當(dāng)Query敏感度效果提升的時候TriggerModel可以重訓(xùn)提升效果,同時新的TriggerModel又可以指導(dǎo)Query的時間敏感度的模型的訓(xùn)練,這樣迭代訓(xùn)練同時提升。
時效性需求強(qiáng)度
時效性需求強(qiáng)度是和時間敏感度并列,主要判斷是用戶是否顯示的表達(dá)出對結(jié)果的時間維度上的需求(比如最新,2020年)。
這個模型相對來說較為簡單,早期是一個基于規(guī)則的模型,來識別Query是否具有顯著的時效性Pattern。后期同樣是通過召回結(jié)果和用戶行為(比如用戶的顯式的query修改的二次查詢,當(dāng)用戶搜索”杭州限行規(guī)則“的時候,如果結(jié)果不好用戶會修改query為“2020杭州限行規(guī)則”,“最新杭州限行規(guī)則”等)來生成偽標(biāo)注樣本進(jìn)行模型的訓(xùn)練。方法類似于時效性敏感度模型的第二版。
五 數(shù)據(jù)標(biāo)注
目前神馬搜索的上層的排序的模型核心是基于標(biāo)注樣本的LTR Model,所以時效性優(yōu)化的比較合理的方案是:通過標(biāo)注樣本的方式,重訓(xùn)LTR的模型來進(jìn)行時效性的優(yōu)化。
要訓(xùn)練LTR Model需要標(biāo)注時效性的學(xué)習(xí)的目標(biāo),在迭代的過程中主要經(jīng)歷的2個階段,第一個階段是嘗試講時效性的目標(biāo)融入到AC的5檔標(biāo)注里面(Prefect, Excelent, Good, Fair, Bad),后續(xù)由于標(biāo)注的難度的問題,采用二階段的單獨標(biāo)注的方法。
時效性滿意度融入AC標(biāo)注
目前神馬搜索的AC標(biāo)注分為5檔(Prefect, Good, Excelent, Fair, Bad= 4,3,2,1,0),為了把時效性的目體現(xiàn)在AC中,我們增加了3檔,分別是2.5,1.5和0.5。
具體的打分的原則主要是:
- 對于時效性特別不好的結(jié)果,如果影響到了滿意度,那么則直接降低1檔或者2檔。
- 對于時效性不是特別理想的結(jié)果,但是不影響滿意度,適當(dāng)降低0.5檔,對于時效性特別好的結(jié)果適當(dāng)提升0.5檔。
由于從原來的5檔提升到了8檔,而且AC的標(biāo)注是7人擬合導(dǎo)致標(biāo)注難度大大增加,同時神馬搜索AC的標(biāo)注標(biāo)準(zhǔn)和標(biāo)注人員都長期穩(wěn)定,標(biāo)注人員形成了一定的任務(wù)感知。讓標(biāo)注人員重新學(xué)習(xí)新的的標(biāo)注標(biāo)注,導(dǎo)致標(biāo)注人員的擬合率降低比較嚴(yán)重,低于60%,多次培訓(xùn)之后仍然沒有顯著提升,所以后來放棄了把時效性的標(biāo)注融合神馬搜索AC的標(biāo)注體系中,啟用了新的單獨的標(biāo)注原則。
單獨時效性滿意度
單獨時效性的標(biāo)注原則是,對于神馬搜索已經(jīng)標(biāo)注過AC的樣本進(jìn)行第二個輔助Label的標(biāo)注。從神馬搜索已經(jīng)標(biāo)注的AC樣本中,挑時間敏感的Query,對于該Query的非0檔的Q-U的結(jié)果進(jìn)行時效性滿意度的標(biāo)注。
時效性滿意度標(biāo)注的GuideLine:每個query會對應(yīng)多個url,我們評測人員需要理解query含義——判斷頁面是否滿足用戶需求——判斷頁面時效性的滿足程度。
- 理解query含義,推斷用戶的需求。
- 從用戶需求出發(fā),判斷結(jié)果的時效性能多大程度的滿足用戶。
- 根據(jù)后邊提到的標(biāo)準(zhǔn),給出合理打分。
分檔標(biāo)準(zhǔn)2/1/0分檔均在結(jié)果相關(guān)的情況下判斷。
只要有時間屬性頁面,均以2、1、0打分,與敏感度的區(qū)別是,不拋棄變化頁面(按照主體內(nèi)容的時效性判斷)。
- 2——頁面結(jié)果的時效性滿足很好,為最新/價值高結(jié)果。
- 1——頁面結(jié)果的時效性的滿足一般,不為最新/價值結(jié)果,但是有一定參考價值。
- 0——頁面結(jié)果的時效性滿足很差,為很舊的結(jié)果,或者已經(jīng)無參考價值。
- 不相關(guān)——頁面內(nèi)容與query完全不相關(guān)。
- 死鏈/spam——頁面作弊/內(nèi)容失效/空白頁。低質(zhì)。
- 無時效性需求——query明顯無時效性需求(例, 論語全文)。
- 無法判斷——頁面內(nèi)容不包含時效性因素,無法按照時效性滿足打分(例,百科、長視頻頁面、網(wǎng)站首頁)。
單獨時效性滿意度的標(biāo)準(zhǔn)和時間敏感度的標(biāo)注一樣,我們沒有設(shè)定特別細(xì)的GuideLine,核心還是要讓標(biāo)注的同學(xué)進(jìn)行主要的思考,讓標(biāo)注的同學(xué)去感知時效性的損失對用戶的滿意的影響。前期標(biāo)注的擬合率也較低,低于60%,后期經(jīng)過長時間的培訓(xùn)和case講解,最終擬合的準(zhǔn)確率大概在75%~85%之間。
六 排序模型
時效性排序的Model主要分為四層。
時效性粗排
對于時間敏感的query,在索引召回的層盡可能的將一些時間比較新的結(jié)果召回上來。時效性粗排項目進(jìn)行的比較早,當(dāng)時還沒有標(biāo)注數(shù)據(jù),主要的方式使用的是特征增強(qiáng)的方法,來提升新的結(jié)果排序靠前的概率。
神馬搜索排序Model加入時效性特征
AC的部分標(biāo)準(zhǔn)里面其實是考慮到了時效性的因素的。
- 第一類:比如一些新聞,因為很多新聞事件,雖然人物、地點等沒有變化但是核心的事情已經(jīng)變化了,這個就會影響基礎(chǔ)的滿意度,這種在AC標(biāo)準(zhǔn)中有體現(xiàn)。
- 第二類:另外的一種是信息失效,信息失效在AC標(biāo)準(zhǔn)里面是有明確定義的,屬于無價值內(nèi)容的,這個是可以直接作用于滿意度的。一般來說信息失效的概率和時間敏感度和網(wǎng)頁離現(xiàn)在的時間成正比,一定量的信息失效的目標(biāo)可以學(xué)習(xí)到部分時效性的目標(biāo)。
其他類型:還有很多其他的類型的比如用戶顯示的說明了年份的,比如“最新的閱兵式”,“51放假安排”等。
因為時效性敏感的Query的標(biāo)注的結(jié)果是和標(biāo)注的時間有關(guān)系的,所以我們必須要記錄AC樣本標(biāo)注的時間,這樣才能準(zhǔn)確地計算時間特征,同時在Dump特征的時候必須把樣本的時間還原到標(biāo)注時間。為此我們對神馬搜索的特征Dump的流程進(jìn)行了改動,增加了時間還原功能,保證時效性特征的準(zhǔn)確性。
時效性獨立雙Label排序模型
因為時效性的標(biāo)注數(shù)據(jù)是有2個Label的,我們必須開發(fā)一套獨立的多Label的排序框架,為此我們進(jìn)行了一些的算法改動,升級了原來的LightGBM的工具支持多Lable的訓(xùn)練。
主要的思想就是LambdaMart在計算交換Doc的PairwiseLoss的時候考慮到2個Label:
- 第一版的方法:當(dāng)?shù)谝粋€Label的相同的時候,增加輔助Label的作用,計算輔助Label的Loss,后來在應(yīng)用中發(fā)現(xiàn)這種方法存在一定的問題,就是這種情況下輔助Label只能在Label相同的樣本上起作用,Label不同的樣本無法產(chǎn)生Loss。
- 第二版的方法:為了彌補(bǔ)第一種方法的不足,我們通過Label放大的方法,將原來的Label進(jìn)行縮放,將AC的標(biāo)準(zhǔn)變成 8,6,4,2,0,然后將時效性的目標(biāo)3,2,1,0,變成(1,0,-1,-2)。通過這種方式,將時效性的Label增加到AC的Label上,形成了新的Label目標(biāo),同時將LightGBM的交換Loss的2^Label 變成2*Label(這里參考了神馬搜索的做法),這個主要是因為放大了Lable之后,2^Label會使得頭部的Loss特別的大,導(dǎo)致和線上真實的交換損失不一致。
- 第三版的算法:后來我們在觀察樣本的時候發(fā)現(xiàn),時效性的作用其實和樣本本身的Label有一定的關(guān)系,當(dāng)樣本本身的Label是1的時候,其實用戶不太關(guān)心時效性,當(dāng)Label本身是3的時候時效性起的作用又很小,基本上用戶也不太關(guān)心。時效性主要起作用的是標(biāo)注樣本的2檔這部分,我們通過降低3檔和1檔的時效性作用,增加2檔的時效性作用,來提升時效性特征目標(biāo)的區(qū)分度。
時效性獨立Model對神馬搜索的Model進(jìn)行動態(tài)矯正
時效性單獨的模型計算出的排序的分?jǐn)?shù)是無法直接對結(jié)果進(jìn)行時效性排序的,因為要考慮到時間敏感度和時效性需求強(qiáng)度比如:
- 當(dāng)時間敏感度較低的時候時效性起的作用要弱。
- 當(dāng)整體相關(guān)性水平都不高的時候,其實排序的核心還是相關(guān)性。
- 時效性標(biāo)注的樣本量要遠(yuǎn)小于神馬搜索的AC樣本,學(xué)習(xí)能力要弱于神馬搜索的AC Model。
通過結(jié)合這3個方面的考慮,我們設(shè)計了一套動態(tài)平滑的方法,將時效性模型的分?jǐn)?shù)平滑到神馬搜索的排序分?jǐn)?shù)中:
RankScore = RankScoreAC*Lamda + RackScoreTimeliness*(1-Lambda)核心是Lambda的計算,Lambda的計算我們進(jìn)行了3個維度的探索和嘗試:
- 早期的第一版:TriggerModel結(jié)合人工規(guī)則的方式,TriggerModel會計算時間敏感度強(qiáng)弱的特征(TriggerModel在上面Query信號的地方簡單介紹了一下),然后根據(jù)TriggerModel反饋到時間敏感度的分檔信號上,然后人工指定Lambda的值。
- 中期的第二版:在第一種方法的基礎(chǔ)上,將TriggerModel的閾值和Lamba權(quán)重之間的關(guān)系,進(jìn)行平滑,設(shè)計了一個簡單的調(diào)和平均的方法,將Trigger的預(yù)測值和Lamda的值進(jìn)行了關(guān)聯(lián),使得調(diào)整的維度更為平滑。
- 正在嘗試的版本:這個是目前排序里面正在嘗試的多目標(biāo)融合的算法,通過純Pair的標(biāo)注樣本,將多個多目標(biāo)模型(每個多目標(biāo)模型都學(xué)習(xí)了AC的目標(biāo)和一個單獨的子維度)進(jìn)行模型融合,通過一些全局的統(tǒng)計特征等來學(xué)習(xí)不同的多目標(biāo)模型的權(quán)重。
基于IRGAN的泛時效性排序的探索
由于時效性標(biāo)注樣本的成本比較高,當(dāng)時業(yè)界有一些通過IRGAN的方法進(jìn)行模型迭代的,同時同組的突發(fā)時效性的團(tuán)隊通過IRGAN的方法在突發(fā)時效性的場景下拿到了收益。我們也希望能夠通過IRGAN的方式來獲得時效性的收益,這個進(jìn)行了一些探索和嘗試。
紅色是已標(biāo)注的相關(guān)文檔,深藍(lán)是召回的文檔中未標(biāo)注的相關(guān)文檔,淺藍(lán)是召回的文檔中未標(biāo)注的不相關(guān)的文檔。G的訓(xùn)練就是先給未標(biāo)注的文檔打分,把得分較高的文檔送給D進(jìn)行判斷,D對一個pair 進(jìn)行判斷,判斷其是G挑選的(認(rèn)為為假)還是真實已標(biāo)注的(認(rèn)為為真),并將其打分返回給G進(jìn)行修正,如此G最終便能挑選出那些與真實已標(biāo)注的樣本比較接近的文檔。
G和D現(xiàn)在的網(wǎng)絡(luò)結(jié)構(gòu)和預(yù)訓(xùn)練過程都是一樣的,在進(jìn)行對抗之前是幾乎一模一樣的模型(除了預(yù)訓(xùn)練之前的隨機(jī)初始化值不同) 。但對抗訓(xùn)練G的時候,D認(rèn)為 已標(biāo)注的doc 一直是比G挑出來的Doc要好的,即使G 已經(jīng)挑到實際上比較好的文檔( G預(yù)訓(xùn)練之后和D能力一樣,一開始挑的可能已經(jīng)是非常好的了)這時G反而會越學(xué)越差。因此可以考慮D和G采樣不一樣的網(wǎng)絡(luò)結(jié)構(gòu),D要做的只是pair的正逆序判斷,可以簡單點,G要混淆D,可以采用更復(fù)雜的網(wǎng)絡(luò)。
七 召回
時效性排序的召回體系主要是從通用召回的Query端處理,以及時間限定查詢和獨立時效性索引召回這3個維度進(jìn)行的。
Query端的處理
我們發(fā)現(xiàn)時效性Query下,用戶經(jīng)常會搜類似這樣的Query:今年,3月份,最新,最近。類似這種Term在原來神馬搜索的召回體系中的Weight一般都比較大,純字面召回很多時候是只考慮了Term的匹配,而忽略的Term和網(wǎng)頁時間上的不一致。由于沒有考慮到時間上的限制,經(jīng)常會召回一些Term匹配特別好,但是時間上卻特別老的結(jié)果。為了處理這種Case我們對神馬搜索的Query分析的模塊進(jìn)行了單獨的處理,增加了TimelinessTermWeightReadjust和TimelinessQueryRewrite的功能,主要是從TermWeight和Query改寫的角度進(jìn)行召回鏈路上的優(yōu)化。
TimelinessTermWeightReadjust
目前神馬搜索的核心引擎倒排索引,query分析后會指定AND詞,就是倒排索引拉鏈歸并的時候使用的必須要要包含的命中詞。對于時效性場景下,我們其實不太希望今年,最近,最新等這種詞命中,因為這次詞的命都是相對時間,相對于網(wǎng)頁發(fā)布的時候可能是最新的結(jié)果,但是隨著時間推移,如果網(wǎng)頁內(nèi)容不變的話,這些信息的價值會大打折扣。
索引查詢的AND邏輯的核心特征是TermWeight,只要Term的Weighting降低,那么這個詞大概率就會被Rank掉,不參與拉鏈的歸并。為此我們挖掘了一批時效性限定詞語,在時效性場景下將這些詞的Weight調(diào)低,提升召回的效果。
TimelinessQueryRewrite
對于今年,3月份,用戶隱含的意思就是2020年,2020年3月份。通過Query改寫,增加一路指定絕對時間的獨立查詢邏輯,通過限制時效性的時間強(qiáng)制匹配來保證召回結(jié)果的時間維度的滿足。
時間限定查詢
時間限定查詢這個理解起來比較簡單,就是通過query的時間敏感度的半衰期來對召回結(jié)果進(jìn)行時間上的限制,上面的Query的時間敏感度的特征的說明的時候也提到了,時間敏感度的特征主要是作用在這個階段。
當(dāng)我們發(fā)現(xiàn)這個query是時間敏感的時候,會單獨的發(fā)起一次查詢,該查詢會通過Filter語法的方式來限定召回結(jié)果的時間,這個時間就是上面提到的網(wǎng)頁時間。
如果時間敏感度是3,也就是半衰期是1周,那么我們在查詢引擎的是需要通過Filter語法制定只召回最近一周的結(jié)果,同理其他的敏感度的召回按照對應(yīng)的半衰期來進(jìn)行查詢的時間限定,保證召回結(jié)果的時效性足夠的好。
時效性索引召回
時效性索引召回,這個主要是為了解決一些業(yè)務(wù)邏輯的痛點,同時為了做性能和效果的balance,我們把一些足夠新的內(nèi)容放在一個單的索引中,查詢的時候單獨查詢時效性索引增加召回。
- 上面的時間限定查詢和TimelinessQueryRewrite都會單獨的發(fā)起一次查詢,這個查詢?nèi)绻猛ㄓ脦斓脑?#xff0c;按照現(xiàn)在泛時效性Query的觸發(fā)的標(biāo)準(zhǔn),那么索引的查詢量將增加50%,這對索引來說是極具的性能消耗,但是帶來的提升卻并不一定有這么的大。
- 獨立索引之后,時效性的數(shù)據(jù)挑選和生效邏輯可以更加的靈活,擺脫神馬搜索索引的各種限制。
- 新聞和強(qiáng)泛時效性下,需要天級別,小時級別,甚至是分鐘級別的數(shù)據(jù)收錄,在神馬搜索場景下是無法實現(xiàn)的,需要單獨的時效性業(yè)務(wù)索引來承載這塊。
八 收錄
時效性的收錄體系,收錄其實是排序的最基礎(chǔ)的核心部分,如果鏈接沒有收錄再好的排序的算法也沒有用武之地,目前搜索的收錄體系主要分為突發(fā)和強(qiáng)泛時效性時效性的定向收錄體系和神馬搜索的通用的分層收錄體系。
定向收錄體系
基于種子頁面的新聞場景收錄
強(qiáng)時效性特別是新聞場景下,收錄往往是通過新聞的種子列表頁進(jìn)行定向Flowlink進(jìn)行連接發(fā)現(xiàn)的,舉個簡單的例子,新浪首頁,新浪NBA首頁,新浪財經(jīng)首頁,知乎熱門話題頁面,微博熱門話題頁面等。
通過定期的檢查這種種子頁面上是否有新的鏈接來發(fā)現(xiàn)新的內(nèi)容,這種種子頁面一般情況下只Flowlink一層。這個里面其實涉及到的內(nèi)容很多,涉及到種子頁面的發(fā)現(xiàn)標(biāo)注,種子頁面抓取的調(diào)度算法,種子頁面的定期淘汰機(jī)制等,這里面就不在展開了。
基于時效性需求的定向收錄
目前互聯(lián)網(wǎng)的發(fā)現(xiàn)的的現(xiàn)狀和未來的趨勢還是封閉,各個網(wǎng)站和APP內(nèi)的數(shù)據(jù)很難在網(wǎng)上Flowlink到,同時由于自媒體時代的到來,人人都是可能的種子頁面,原來的通過種子調(diào)度的算法不可能這么龐大的內(nèi)容進(jìn)行調(diào)度,即使能調(diào)度的起來時效性和收益也很難保證。
這種情況下一般都是通過需求定向收錄來做的,簡單來講就是各個網(wǎng)站和App都有自己的搜索接口,我們通過構(gòu)造時效性需求的查詢請求來抓取這些網(wǎng)站和App的數(shù)據(jù)來做需求的定向收錄。
通用收錄體系
基于時間敏感度的索引分層收錄
上面收錄的地方介紹過,其實時效性的索引分層是解決時效性業(yè)務(wù)需求和性能平衡點的最佳解決方案。
原文鏈接:https://developer.aliyun.com/article/766467?
版權(quán)聲明:本文中所有內(nèi)容均屬于阿里云開發(fā)者社區(qū)所有,任何媒體、網(wǎng)站或個人未經(jīng)阿里云開發(fā)者社區(qū)協(xié)議授權(quán)不得轉(zhuǎn)載、鏈接、轉(zhuǎn)貼或以其他方式復(fù)制發(fā)布/發(fā)表。申請授權(quán)請郵件developerteam@list.alibaba-inc.com,已獲得阿里云開發(fā)者社區(qū)協(xié)議授權(quán)的媒體、網(wǎng)站,在轉(zhuǎn)載使用時必須注明"稿件來源:阿里云開發(fā)者社區(qū),原文作者姓名",違者本社區(qū)將依法追究責(zé)任。 如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,歡迎發(fā)送郵件至:developer2020@service.aliyun.com 進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的神马搜索如何提升搜索的时效性?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 架构设计:分布式服务,库表拆分模式详解
- 下一篇: 阿里云量产50家独角兽前夜