深度解析 | 垂直搜索引擎構建:一個例子(下)

0 評論 2697 瀏覽 9 收藏 31 分鐘

搜索引擎可以分為三類,元搜索引擎、綜合搜索引擎、垂直搜索引擎。元搜索引擎使用場景較少,綜合搜索引擎逐漸成熟,而許多垂直搜索引擎發展卻參差不齊。一方面,身處垂直行業的企業更關注業務發展,較少關注產品算法和策略。另一方面,網絡上關于搜索引擎的功能設計的文章汗牛充棟,而對搜索引擎的策略設計闡述卻是不常見。針對這種現象,本文將以互聯網房產為例,分享垂直搜索引擎的構建策略和基本框架,希望可以為后來者帶來一些啟發。

前文簡要介紹了房產垂直搜索引擎的含義、特點和作用,隨后敘述了房產搜索引擎的框架搭建,包括query分析、召回策略等。有興趣的讀者可以通過點擊下方鏈接查看。

傳送門:深度解析 | 垂直搜索引擎構建:一個例子(上)

在本文,我們將介紹垂直搜索引擎的排序策略、效果評估等內容,通過本文你將了解垂直引擎的排序和評估方法大致框架。

一、排序

在進行搜索引擎優化項目時,讀者可能會遇到各種關于排序的文章,內容紛繁復雜,讓人眼花繚亂,不知所措。因此,作者對工作中的經驗和相關論文進行回顧,梳理了排序的大致框架。希望通過下面的闡述,能夠揭開排序領域的一角,為讀者在工作和學習上帶來幫助。

1.1 排序簡介

排序是對召回數據按照一定規則重新排列的過程。排序對搜索、推薦和廣告的效果有著直接影響,好的排序可以提高用戶體驗和廣告收入。

排序的發展歷程經歷了多次迭代,可以概括為三個階段:

  1. 統計階段:該主要采用一些靜態得分或統計指標作為規則進行排序。在此階段,我們通常會使用一些基礎的統計指標或者規則,如TF-IDF、PageRank等,對數據進行初步排序。這些算法或規則還會使用一些統計指標,如關鍵詞匹配、item評分等作為排序依據。
  2. 機器學習階段:我們也可稱之為機器學習早期階段。該階段模型較為簡單,參數較少,有一定個性化推薦能力。在早期的機器學習階段,主要將LR(Logistic Regression)、GBDT(Gradient Boosting Decision Tree)、FM(Factorization Machines)、RF(Random Forest)、XGBoost(eXtreme Gradient Boosting)等機器學習算法應用到排序策略中。該方法主要思路是利用業務數據和業務指標(如CTR)訓練高表現的排序模型,可以簡單理解為:求解CTR和Item關系的(局部)最優擬合函數,從而使更有可能被點擊的Item排在前列。
  3. 深度學習階段:深度學習屬于機器學習的一個新領域,深度主要體現在使用多層神經網絡訓練,它也是機器學習的一個領域 。因為其與傳統機器學習有著不同的特點,在此單獨作為一個階段進行敘述。該階段主要使用深度學習(部分企業也使用了強化學習)進行排序,代表模型有:DNN(Deep Neural Network)、DSSM(Deep Structured Semantic Models)、FNN(Feedforward Neural Network)、PNN(Probabilistic Neural Network)、NFM(Neural Factorization Machines)、AFM(Attentional Factorization Machines)。

深度學習思路本質上與機器學習類似,但其不同之處在于參考了人腦神經元結構,引入了多層神經網絡,從而提高了函數的擬合和泛化效果。此外,深度學習還可以降低特征維度,淡化物品的表征能力。

從上述三個發展階段可以看出,排序的發展路徑為:單一數據特征表示 → 多元數據特征表示 → 低維密集向量表示。這些階段都是將用戶、物品、查詢等數據轉換為向量表示,并通過學習來實現排序的業務目標。

1.2 排序流程

排序可以按照流程分為粗排、精排和重排三個階段。

1.2.1 粗排

粗排是使用一定策略,對召回數據進行大致排序,對候選集進行初步篩選,以減少計算量。通過粗排,我們可以減輕精排的壓力,并提高排序效率。由于粗排是對召回數據的預處理過程,因此也被稱為預排序。

粗排需要快速從海量數據篩選出較高質量的數據,因此不能使用過于復雜的模型。在此我們主要介紹幾種經典的方法。

(1)基于統計規則的靜態商品質量評分

該方法主要采用一些靜態指標,使用一定函數給item打分,從而進行排序。評分依據之一是query和item關聯度,如使用TF-IDF、BM25等方法計算item重要程度;其次是item特征得分,包括:

  • item屬性評分:如房源戶型評分、交通評分、生活配套評分、房源發布時間等;
  • 用戶行為評分:包括房源的CTR、點贊率、收藏率等
  • 作者評分:在一些行業,例如短視頻領域,作者賬號的權重也會被考慮在內。這些權重包括關注量、認證情況、平均完播量、平均點贊量、平均收藏量、平均轉發量等等。通過進行加權計算,高得分的賬號將會排名靠前。

通過評分,可以將高質量的item排在前列。不足的是,該方法通常使用離線計算,無法及時更新。同時,它也未能反映用戶個性化特征,使得排序結果加重了馬態效應,降低了長尾item的曝光量。

(2)LR(邏輯回歸)

邏輯回歸雖然名稱中包含“回歸”二字,但實際上它要解決的是分類問題。邏輯回歸包含線性回歸和非線性轉換兩個部分,通過將線性回歸的輸出通過一個非線性函數(通常為 Sigmoid 函數)進行轉換,將其限制在 0 到 1 之間,以表示概率,將概率較大的item排在前列。

以房產搜索引擎為例,假設我們需要預測房源廣告是否會被用戶點擊。每條房源廣告只有兩種可能的結果:被點擊或未被點擊,這是一個典型二分類問題。

我們可以考慮將兩方面的特征作為輸入:①與房源相關特征,如房源類型、面積、戶型、建造年份、價格等。②此外,我們還可以考慮用戶行為特征,如用戶搜索歷史、瀏覽歷史、點擊歷史等。然后將CTR做為輸出。

通過模型訓練,我們可以將房源得分控制在0~1之間。同時,以0.5為閾值,將0.5分以下數據進行剔除,并按得分進行排序。從而提高房源的點擊率

可以看到該模型引入了用戶特征,既提高了房源點擊率,也使搜索結果更加個性化。

(3)DSSM

DSSM(Deep Structured Semantic Models)又稱為雙塔模型,該方法是一種深度學習方法,可以用于學習query和Item之間的語義相似性。它通過神經網絡模型將它們表示為連續的低維向量,使得具有相似語義的query和ietm在向量空間中靠得更近。DSSM 最初是為了解決 Web 搜索中的query-doc匹配問題而提出的,但它在其他自然語言處理任務,如推薦系統、文本匹配等方面也有廣泛的應用。

在房產搜索引擎中,我們可以使用 DSSM 模型來匹配query和房源,以找到與用戶query最為相似的房源。

我們可以通過以下步驟來實現訓練:

通過對用戶query的分析(參考本文前文),將用戶查詢做query分析預處理后,可以使用CBOW(詞袋模型)、 word2vec 等方法將query和房源結構化表示為向量。

構建神經網絡模型(如MLP),分別對query和房源信息進行編碼。該神經網絡將二者表示為連續的低維向量。通過訓練,模型可以使query與相似的房源在向量空間中更為接近。

訓練好后,我們可以通過訓練好的 DSSM 模型,對給定用戶的查詢和房源描述進行編碼,計算它們在向量空間中的相似度打分。然后,根據相似度打分對房源進行排序,將最相關的房源推薦給用戶。

使用DSSM可以匹配query與之關聯最高的房源,可以保證粗排數據的質量。DSSM需要高質量的訓練數據和大量計算資源。在工作場景中,可按需要進行處理。

例如,當用戶的query=“chaoyang兩居二手房”,若分析器處理結果為實體屬性,如{Region:’朝陽’;House Type:’二居’; House Status:’二手房’}。此時我們可將其處理為業務向量,與結構化房源進行相似計算,按相似度進行排序,也可以取得不錯的效果。因此,在實際應用中,根據具體場景和需求選擇合適的方法是十分重要。

(4)個性化模型

個性化排序模型,又被稱作“千人千面”。它基于用戶特征和行為數據,對搜索結果實施個性化排序,以更好地滿足用戶需求。具體而言,該模型可根據用戶的個人屬性、行為屬性、偏好屬性等特征,對搜索結果進行個性化排序。

例如,對于一個搜索“北京市二居室”的用戶來說,如果該用戶歷史多次搜索過三環內的房源,那么搜索結果中三環內的三居室房源將會被優先展示。這種排序策略可以滿足用戶個性化需求,提升用戶體驗。

(5)多目標模型

在房產搜索引擎中,排序不僅要考慮相關性,還要考慮多個業務目標,例如展示盡可能多的優質房源、提高用戶點擊率、收藏率、咨詢率和呼叫率等。

利用深度學習,可以訓練將用戶特征、物品特征、統計特征、場景特征作為輸入,將點擊率、收藏率、咨詢率和呼叫率作為輸出的模型,最后計算四個值的加權平均數。我們可以將該平均數作為房源的目標評分,進行排序。該方法考慮了多個業務指標,業務解釋能力更強。

(6)實時特征排序

實時特征是指用戶在搜索過程中產生的實時行為特征,例如搜索詞、搜索時間、搜索歷史等。這些實時特征可以用來調整排序策略,更好地滿足用戶需求。例如,如果用戶在搜索“北京租房”后又搜索了“朝陽區”,那么在后續的搜索結果中,應該優先展示朝陽區的租房信息。

選取哪種方法需要考慮業務的特性和用戶的需求,同時也需要平衡商業成本與ROI,從而選擇最合適的排序方法。

1.2.2 精排

精排是指通過各種模型對數據做出精細化排序,提高搜索結果的質量。精排也可以提供個性化的結果,使搜索結果更加滿足用戶的個性化需求。

精排需要從粗排數據篩選出較高質量的數據。常規的排序模型LR、GBDT、FM等存在一些問題,如調整參數困難、過擬合(Overfitting)等問題。而使用深度學習或強化學習構建的模型,可以自動學習特征和調整參數,能夠避免上述問題,提高排序模型的準確性。

1.LTR

隨著互聯網的發展,用戶數據不斷增加,計算機芯片算力也實現了很大的提升,這使得排序策略模逐漸向深度學習模型轉移成為可能。使用深度學習進行排序通常稱為學習排序,學習排序通常分為以下三種類類型。

(1)Pointwise:

Pointwise 將排序問題視為一個回歸或分類問題。在這種方法中,我們對每個item單獨處理,不考慮其他item的相關性。CTR方法就是一個典型的Pointwise方法,例如,在房產搜索中,為每個房源分配一個點擊可能性得分,并根據上述得分對搜索結果進行排序。

(1)Pairwise:

Pairwise將排序問題視為一個二分類問題,強調兩個item之間的相對順序。在這種方法中,我們會對每對item進行比較,判斷哪個item與用戶需求更相關。然后,利用二分類模型(如SVM、GBDT等)學習這些特征對之間的關系,從而預測item之間的局部優先順序。

以房產搜索引擎為例,對于每對房源,我們可以計算它們的特征差(如價格差、面積差、戶型差等),并根據這些特征差訓練一個二分類模型,預測輸出房源相對順序。最后,根據預測結果對房源進行排序。

(2)Listwise:

Listwise將整個搜索結果列表作為一個整體進行排序。在該方法中,更關注整個排序列表的質量,而不是單個item或item對之間的關系。通過訓練模型,可以對所有item打分,根據item得分進行列表排序。Listwise方法通常使用NDCG作為評價函數,并基于此迭代排序模型。在房產搜索引擎中,通過輸入無序房源列表,然后輸出有序的房源列表。

該方法為代表的模型有Lamda 、Ada等。由于關注的是整個列表,該方法也通常更符合用戶需求。但也存在數據標注困難、訓練成本高等問題。

2.其他方法

近年來,隨著精細排序進入深度學習時代,排序深度學習模型逐漸出現多個細分方向。

  • 通過組合和交叉原始特征,提取更高級別的特征表示,幫助模型更好地捕捉特征之間的非線性關系,如FM、FFM、DeepFM、DCN等;
  • 基于用戶數據信息,捕捉用戶興趣和行為動態變化。代如DIN、DIEN、SIM等;
  • 同時優化多個目標,如點擊率和轉化率等。這可以幫助模型在多個指標上取得平衡。如ESSM、MMOE、SNR和PLE等。

限于行文空間,上述模型的細節不作展開講解,我們將在后續專欄其他文章進行闡述。

1.2.3 重排

重排是利用各種方式對精排數據進行重新排序,以實現搜索結果多樣化、運營內容混排、流量調控等目標。

  • 多樣性:通過展示多樣化數據,可以降低內容、品類單一等問題,提供內容異質性;
  • 內容混排:如在房源列表中插入廣告、視頻/圖文/直播內容、主題聚合等。
  • 流量調控:流量調控可以看作是對部分特殊item流量進行控制,避免缺乏曝光和過度曝光。如常見的新發布房源冷啟動、曝光保量等問題。流量調控實際上有許多問題需要注意,有興趣的讀者可以查閱相關內容進行閱讀。

在本文,我們主要介紹以下幾種重排方法:

(1)固定策略

固定策略是指在搜索引擎中,將某些內容固定展示在搜索結果的某個位置。比較常用的是方式是等距插值,如每4個房源后插入一條廣告/素材/主題等。

(2)規則策略

規則策略是指根據業務方需求,對搜索結果進行規則性的調整。常見方法如下:

①根據類別排序,優先展示真房源、新上架房源、高評分房源等;

②排除不感興趣、B端黑名單等;

③廣告競價:根據B端廣告付費競價,進行優先排序。房源的點擊會直接影響競價廣告的收益率,間接影響客戶的續費率。

(3)listwise

使用pointwise時,同一用戶query,每個item在精排階段都是獨立的,可能存在召回item的特征相似,缺乏異質性。listwise方法主要思想:將用戶原始query與所有候選item聯系起來,用來關注上下文信息??紤]上下文因素,并進行重排。

值得注意的是,在排序方面需要注意排序的一致性,避免召回、粗排、精排、重排策略不一致的情況。在各個階段使用矛盾的模型可能提高搜索結果的不確定性,降低排序結果的表現。

最后,對于排序而言,應避免陷入技術追求陷阱,認為搜索引擎如果沒有采用 GBDT、DNN 等復雜技術,就算不上好的搜索引擎。

實際上,構建一個高效的搜索引擎應當關注業務需求和用戶體驗,適當地根據實際場景選擇相應的技術方法。比如,在某些特定場景下,簡單的基于關鍵詞匹配的排序策略可能就已經足夠滿足用戶需求。此時,使用復雜模型,不僅浪費了寶貴的技術資源,還會降低搜索引擎的響應速度。

因此,在選擇排序方法時,應該根據實際業務需求和場景來權衡,而不是過度追求技術復雜度。

二、搜索評價

如果沒有科學的評價系統,我們很難衡量搜索引擎的好壞,也就難以改進系統,提升搜索性能。通過評價系統我們可以找到搜索引擎存在的問題或缺陷,提高搜索引擎的表現。同時表現較好的特征,我們也可以進行遷移學習。

2.1 搜索引擎的評價體系

搜索指標通常應該具備客觀性、可測量性、科學性。也就是說,指搜索系統評價應盡量采用客觀指標,這些指標是可以測量的,并且科學的反映了搜索系統的性能。

參考相關文章,我們將搜索系統的評價分為兩個方面:①效率指標;②效果指標

2.1.1 效率指標

效率指標主要對搜索引擎時間性能和空間性能進行評價。主要關注響應時間、開銷、索引量等指標。

  • 響應時間:提交query到返回結果的時間。響應時間通常要求在0-100ms以內。由于搜索容易受到網絡、設備等因素影響,計算時通常采取多次搜索的平均響應時間
  • 開銷:主要指系統占用的內存和外存空間。
  • 索引量:用戶可以檢索到item的數量,索引的配置將影響搜索的執行時間。

2.1.2 效果指標

效果指標主要針對搜索結果效果評價而言,通常有以下方法:

(1)精準率

精準率 (Precision):搜索結果中相關item與所有item之間的比例。計算公式為:精準率 = 搜索結果相關item / 搜索結果item數量。例如,用戶搜索京海市的房源,如果在前10個搜索結果中有8個與京海區相關,則精準率為0.8。

注意與準確率的區分,準確率=識別正確item/所有item數量。假設在數據庫中,擁有100條item,與dog相關有60條,不相關的有40條。用戶搜索返回50條(其中40條相關,10條不相關),那么:準確率=40+(40-10)/100=70%

所以,準確率=識別正確數/總樣本數

注:40表示識別正確的數量(即正例識別正確40條,負例識別正確30條)

(2)召回率

召回率 (Recall):召回率是搜索結果中相關item與所有相關item之間的比例。計算公式為:召回率 = 相關item數量 / 所有相關item數量。例如,當用戶搜索青華區的房源時,搜索結果中有40個相關房源,而數據庫共有100個與青華區相關的房源,則召回率為0.4。

需要注意的是,當召回和準確率達到一定程度時,就會互為掣肘。繼續要求更高的召回,必然會犧牲準確性,反之依然。使用如何衡量,需要依據實際場景決定。如在房源搜索中,要求召回更多的房源,需要降低query與item的匹配度,精準率也隨之降低,反之亦然。

(3)F1分數

F1分數 (F1 Score):F1分數是準確率和召回率的調和平均數,用于綜合評價搜索引擎的性能。計算公式為:F1 = 2 * (Precision * Recall) / (Precision + Recall)。使用調和平均數可以綜合反映系統性能。

(4)P@k

對于海量的搜索結果,我們不可能根據所有結果計算準確率和召回率。因此,我們假設用戶關注的是排序比較靠前(前k條)的item。P@k 是評估搜索引擎在前 k 個結果中相關item的比例。計算公式為:P@k = 相關文檔數量 / k。當k=10或20,稱為p@10,p@20。

(5)MAP

平均準確率 (Mean Average Precision, MAP):多個query在搜索引擎中準確率的平均值,該方法的假設前提是每個用戶都期望找到相關的item。

5.MRR

使用p@k方法通過多次對query查詢進行評價,降低了計算的復雜度,但也忽略了前k個item的排序質量評價。因此,我們引入MRR的概念。

假設用戶首次查詢海淀小學,搜索結果中第5條為關于相關的學區房源,那么得到的評價為1/5=0.2;用戶第二次查詢為“國家圖書館”,第2條就返回了相關的地標房源,我們將其評價賦分為0.5。那么MMR=(0.2+0.5)/2=0.35

由上可知,MRR 是評價搜索引擎對首個相關ietm的排序效果。計算公式為:MRR = (1 / Q) * Σ(1 / rank_i),其中 Q 是查詢數量,rank_i 是第 i 個查詢的首個相關文檔的排名。

(6)nDCG

nDCG (Normalized Discounted Cumulative Gain):nDCG 是一種度量搜索引擎對于相關文檔的排序質量。計算公式為:nDCG = DCG / IDCG,其中 DCG 是折扣累積增益,IDCG 是理想情況下的最大折扣累積增益。

這個公式可能看起來較為復雜,不過沒關系。我們可以抽絲剝繭,娓娓道來。先從CG說起,CG(Cumulative Gain),累積增益,用來計算(排序后的)列表,有多少個item與query相關。

CG:

CG=Σrel_i,即與query存在相關性item的個數累加(個數為了方便理解,實際可能采用打分),下面使用一個例子來說明CG:

假設搜索結果與搜索相關則得1分,否則為0。若query=“西二旗”,返回結果listA= [城西,二手房,西二旗1居,西二莊,西二旗開間]。顯然,CG=[0+0+1+0+1]=2

DCG:

其次是DCG,考慮上述搜索結果listB [城西,西二旗1居,西二旗開間,二手房,西二莊],它的CG[0+1+1+0+0]=2。顯然listB比listA結果更好,但他們的CG卻相等,這是不合理的。

因此,我們考慮引入位置信息,使位置靠前的item得分更高,位置靠后的item得分越低。使用減函數f(x)*rel_i可以降低靠后item的得分。這里,我們使用的減函數為1/log2^(i+1),結合它的圖像,應該可以輕松理解。

我們將調整后的CG稱為DCG(Discounted Cumulative Gain,折扣累計增益),DCG=Σrel_i/log2^(i+1)。折扣累計增益通過求多次查詢DCG的平均數,理論上可以得到較好的評價指標。

IDCG:

使用DCG進行打分真的沒問題嗎?舉個例子。小蘭在高考時,物理考了95分,數學考了135分。如何比較二者的成績呢?如果我們直接比較原始成績,可能會因為滿分不同而導致比較不公平(讀者可以簡單思考一下解決方案)。

應該如何分析小蘭的成績呢?為了消除這種不公平性,我們可以將兩門成績都歸一到0-1的范圍之內。這樣,不論是數學成績還是物理成績,都可以在同一尺度(得分率)下進行比較。我們將小蘭物理成績換算為95/100=0.95,數學成績換算為120/150=0.90,可以發現物理比數學考的更好。這種處理方法被稱為最大值歸一化(除此之外,還有均值歸一化、z值歸一化,有興趣的讀者可以搜索了解)

同理,搜索引擎返回的item數量可能或多或少。比如query=“開間”時,可能只返回3條數據。這時,返回3條結果和5條結果下的DCG,他們的分數計算標準不同,直接比較DCG分數大小就不太妥當。因此我們需要計算每條搜索結果能獲得DCG的滿分,再使用DCG/滿分,得到DCG的得分比例。

我們將所有與query相關的item排在前面,如query=”西二旗”的搜索結果listA =[城西,二手房,西二旗1居,西二莊,西二旗開間],將結果調整為[西二旗1居,西二旗開間,城西,二手房,西二莊]時,可以得到DCG的最高分(對應的CG為[1,1,0,0,0]需要乘減函數計算DCG,只有排在前面才能獲得最高分)這個最高分就是IDCG(Ideal Discounted Cumulative Gain,理想折扣累積增益)。

nDCG:

通過歸一化可以得到nDCG的公式:nDCG=DCG/IDCG,NDCG是一種衡量搜索結果質量的指標,它考慮了搜索結果的相關性和排名位置。NDCG值越高,表示搜索結果的質量越好。

除了本文介紹的方式,還有其他的評價指標,如業務指標點擊率、收藏率等。具體采用哪種評價方式,需要考慮實際場景。

三、總結

分詞有助于更好理解用戶需求,召回決定了搜索結果的上限,搜索排序是搜索結果精細化的好幫手,而搜索評價有助于改進搜索引擎。

本文講述了常見垂直搜索引擎的一些特點、作用,搜索引擎的分詞流程,召回方式。排序之粗排、精排、重排等方法,隨后總結了常見的搜索系統評價指標。

希望對你有幫助~

本文由 @知一 原創發布于人人都是產品經理,未經許可,禁止轉載。

題圖來自 Unsplash,基于 CC0 協議。

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!