1. 程式人生 > >查詢改寫(Query Rewrite)方法總結

查詢改寫(Query Rewrite)方法總結

地方 龍門 半角 電子產品 同義詞 特征 檢索 大小 search

為何需要Query改寫

Query分析是搜索引擎的一個重要模塊,對搜索結果的覆蓋率和相關性至關重要。搜索引擎的檢索過程包含了兩個重要的階段:匹配和排序。匹配也叫召回,表示根據用戶的查詢條件,盡可能多地匹配出主題相關的文檔,盡可能少地匹配出主題不相關的文檔。排序是指對召回階段返回的文檔集合進行合理的排序,把最滿足用戶意圖的結果盡可能排到前面。Query分析的主要目標是為匹配過程提供必要的知識和信息,同時兼顧後面的排序過程,為排序模型提供原始特征。

Query改寫是Query分析的一個重要組成部分。通過對原始Query進行改寫,生成一系列相關Query,把相關Query作為原始Query的補充,與原始Query一起參與搜索,從而得到更加豐富和準確的匹配結果。下面分別從網頁搜索、電商搜索和廣告搜索三個方面來論證Query改寫的必要性。

網頁搜索

有研究表明,互聯網用戶在使用網頁搜索功能時,所提交的查詢短語具有以下兩個特點:(1) 查詢短語較短,平均長度為2.2個單詞,其中常用的查詢短語的平均長度為1.7個單詞;(2) 查詢短語的使用頻率呈冪率分布(Power Law),近50%的查詢短語每小時的使用頻率在5次以下。查詢短語短,則字面上蘊含的信息量較少,表義不夠充分,因此需要理解Query的意圖,對查詢短語進行補充。

用戶的查詢語言與網頁的文檔書寫語言之間通常存在一定的鴻溝,用戶和文檔作者可能傾向於用不同的表達方式來描述同一個意思。比如,天文學相關的文檔可能會描述“太陽和地球的距離是XXX”,而用戶的查詢則可能是“地球和太陽有多遠”。

自然語言中存在大量的“一詞多義”和“一義多詞”的現象。比如用戶檢索“蘋果”,可能是想查找作為水果的蘋果,也可能是想找蘋果手機或是其他蘋果品牌的電子產品;再比如用戶檢索“客棧”,其真實意圖是想找住宿的地方,這時標題中包含“賓館”、“酒店”、“旅社”的商品都應該能夠被檢索出來。同一實體存在多種不同的表達方式,比如“土豆”與“馬鈴薯”、“番茄”與“西紅柿”等。不同的人翻譯外文文獻時可能會用不同的術語來表達同一個概念,“reinforcement learing”有人翻譯為“強化學習”,有人翻譯為“增強學習”。

另一方面,用過的查詢短語還經常包含錯別字,比如“克莉絲汀”可能會被寫成“克裏斯汀”等;網絡上還存在大量沒有寫完的查詢,比如“noki”表示“nokia(諾基亞)”。

上述問題的存在都為通過文本匹配是搜索系統帶來了挑戰,而Query改寫正是解決上述問題的一種思路。

電商搜索

電商搜索引擎一般都是對商品標題分詞建立倒排索引,用戶搜索時對用戶Query進行分詞然後與倒排索引進行匹配召回。如果不對用戶Query做任何改寫,只有Query與商品標題中的詞完全匹配時才能被召回,那麽雖然這種召回方法比較簡單,但也會導致很多問題:

  • Query和商品的標題描述語言之間存在一些差異, 可能導致一些滿足用戶Query意圖但不完全匹配的商品無法被召回。例如:

    Query:老年機; 商品:老年手機
    Query:牛仔連衣裙; 商品:連衣牛仔裙
    Query:歐美涼鞋平底; 商品: 羅馬鞋 夾趾

  • 熟悉搜索機制的賣家會對標題進行SEO、堆砌與寶貝不符的詞,以獲取額外流量;而一些B類大商家的商品標題通常比較簡潔,卻很難與用戶Query完全匹配,導致無法召回而損失流量。例如:

    Query=襪子 男; 商品:男裝 短襪

  • 搜索Query用戶可能無意識的會輸入一些冗余的詞。由於所有的查詢詞都要出現在商品標題中,用戶無意識輸入的這些冗余詞會對召回造成比較大損失。例如:

    連衣裙 女, 羽絨服 冬季, 女裝 媽媽裝

廣告搜索

廣告搜索引擎的索引方式和普通是搜索引擎有很大的差異,因為廣告搜索需要匹配的是廣告的競價詞,而不是廣告內容本身的文本信息。廣告搜索引擎的倒排索引一般是以廣告的競價詞(歸一化之後的形式)為查詢的Key。用戶的Query(包括改寫之後的Query)需要和競價詞完全匹配才能召回廣告。

在進行廣告檢索時,往往由於查詢短語較短,只能夠獲得部分與查詢相匹配的廣告;同時,由於某些查詢對應的直接競標廣告數據較少,數量不夠在搜索結果頁面中展示;另外,由於查詢短語的使用頻率呈冪率分布,往往會導致部分廣告被頻繁地檢索到。為了解決這些問題,贊助商搜索系統通常都會引入查詢重寫機制。相應的贊助商搜索系統架構通常分裂成兩個部分,如下圖所示。

技術分享圖片

在上圖中,前端接受輸入查詢q並產生一系列重寫結果,這些重寫結果與查詢q之間具有一定的相關性。比如,對於查詢“相機”,查詢“數碼相機”和“拍攝設備”可能是有用的,因為用戶可能會對與這些查詢相關的廣告感興趣。同時,查詢“電池”和原始查詢也具有一定的相關性,盡管它們在文本上毫不相關,因為用戶在購買相機的時候也會對相機的備用零件感興趣。因而,Query改寫方法需要能把“相機”改寫為“數碼相機”和“拍攝設備”,甚至是“電池”。

原始查詢和重寫查詢會被後端處理,與這些查詢相關聯的競價廣告會被檢索出來。把系統架構分裂成兩個部分降低了系統的復雜性。系統前端專註於查詢重寫,後端專註於處理快速變化的廣告競價數據、匹配相關內容和對檢索結果排序。

Query分析的層次結構

Query分析可以按照如下的層次結構來理解:
技術分享圖片

  1. 文本歸一化。包括特殊符號過濾、大小寫歸一、繁體轉簡體、全角轉半角等操作。

  2. Term:對Query做中文切詞/糾錯處理/同義詞轉換/term標簽與重要度。

    舉例:Query=“nokia 5230 皮套”
    切詞結果:nokia / 5230 /皮套
    同義詞:諾基亞 / 5230 /(手機皮套,手機套,皮殼)
    Term標簽:品牌-nokia; 型號-5230; 產品詞-皮套
    Term重要度:nokia:score=0.5; 5230:score=0.8; 皮套:score=1.0

  3. Phrase:對Query做短語單元切分。

    舉例:Query=“雙眼皮貼”不可以切分成“雙眼皮”和“貼”
    隱含詞:“龍門將軍”等同於“龍門將軍鬥魚”

  4. WordSense: Query中term的相關term擴展,從而得到改寫query。
    改寫query與原始query具有一定的相關性

    舉例:Translation Model將query與其他query通過相同的term位置對齊,得到擴展的相關term.

  5. Topic: 對Query做分類、識別Query的主題。

  • 電商特有的類目體系就是一個天然的寶貝聚合類別標簽庫,類目預測模塊作用就是將query分類到N個類目下。

    舉例:Query=nokia
    類別:手機類目 / 二手閑置手機類目

  • 通過PLSA、LDA等主題模型計算Query所包含的主題的概率分布。
  1. Structure:對Query做結構化分析和標註。

    舉例:Query=白色雪紡連衣裙
    標註為:tag1=連衣裙類目-裙子款式-連體; score=1
    tag2=連衣裙類目-顏色分類-白色; score=0.5
    tag3=連衣裙類目-材質-雪紡; scsore=0.8

    有了這些屬性標註和權重,我們可以做很多有意義的事情:

  • query擴展:通過相同的屬性做term擴展。
    舉例:連衣裙類目-材質-雪紡 和連衣裙類目-材質-蕾絲
    從而得到擴展term:雪紡 與 蕾絲
  • query或寶貝相似度計算:將標註tag作為特征加入相關性模型中,作為query-query或query-寶貝的相似度計算特征
  • query聚類:提取重要tag組合作為類別,對query或寶貝聚類。還可以構建一顆語義樹,樹的每個結點是屬性tag,結點下掛載標註該tag的query或寶貝。在這顆語義樹上做策略裁剪,就可以得到不同的類別集合。

Query改寫的常用方法

Query改寫本質上是要找到和原始Query相似的候選Query,如何找相似Query呢?

基於Query的內容

  1. 基於文本相似度。比如,文本編輯距離(基於字或者詞)。
  2. 基於Query的意圖。比如識別出query中的產品、品牌、性別、顏色、型號等重要屬性,在這些重要屬性組成的向量上計算相似度。
  3. 基於預測類目的相似度或差異度。比如,計算兩個query預測類目集合的Jaccard相似度;

基於Query的點擊行為

該方法適用於用戶行為比較豐富的Query;由於許多賣家的SEO,標題對同一種商品有多種描述堆砌,導致這些商品在相似Query下都能被召回而且有點擊行為。

  1. 協同過濾。例如可以用7的日誌數據,建立Query下商品點擊行為矩陣;采用協同過濾的思想計算Q1和Q2相似度,具體計算相似度的方法可以有很多種,常用的入cosine余弦相似度。在query的點擊行為比較稀疏時,還可以通過在query和商品的點擊二部圖上遊走來擴充query的行為向量。
  2. 基於隨機遊走的方法。比如SimRank、SimRank++等。
  3. 基於點擊文檔集合的差異度。比如電商搜索中,計算query點擊商品集合或點擊商品的類目集合的差異度。差異度越小,說明query越相似。

    f1=#(S(q2)-S(q1))/#S(q2); f2=#(S(q1)-S(q2))/#S(q1); 其中,S(q)表示q點擊寶貝的集合,#表示取集合是size

  4. 基於點擊商品的圖片的相似度。電商平臺的一些賣家賣的商品和別人是完全相同的,但在電商平臺上有不同的商品ID。有些小賣家經常會盜用別人的圖,或者直接用代理商的圖,因此相同或相似的圖實際上是對商品做了聚類。

基於語義信息

計算query的語義向量,並根據語義向量計算Q1和Q2的語義相似度。

  1. 先計算出詞向量,再通過(加權)加和的方法融合詞向量得到query向量。
  2. 采用Doc2Vec方法將Query向量化。考慮到搜索Query通常比較短,將Query本身當做doc比較難以向量化。用Query下點擊的商品的標題作為一個完整的doc, 采用doc2vec向量化Query。在用戶點擊行為的基礎上加入一些語義信息,應該能挖掘到比行為相似更豐富的一些候選。每個Query限制用N個點擊商品標題來構造doc;中高頻Query點擊商品數大於N時,按商品的點擊次數進行采樣:點擊次數越多被采樣的概率越大。

技術分享圖片

基於Session

將用戶session內的所有行為看做一個doc, 而每個query看做這個doc內的詞。再用word2vec的方法學習每個query的語義向量。假設用戶session內的行為具有比較高的相似性,在相似session context下的Query可能具有比較高的相似度。

技術分享圖片

計算Query相似度的統一模型

上節介紹的各種方法都可以用來生成候選query,不同的方法生成的候選query與原始query的相關程度通常難以直接比較,因此,需要一個統一的模型來考量最終的相關程度。

上述的方法本身在生成候選query時,可以計算出針對該方法本身的候選query相似性分數,這些分數就可以用來作為統一模型的特征。

技術分享圖片

有了度量相似度的統一模型,就可以選取與原始查詢最相似的topK個候選查詢, 與原始查詢一起參與召回。

參考文獻

Context- and Content-aware Embeddings for Query Rewriting in Sponsored Search

查詢改寫(Query Rewrite)方法總結