基於百科語料優化搜狗圖片搜索的方法實踐
轉載請註明出處:8層會議室 - 知乎專欄
原文鏈接:基於百科語料優化搜狗圖片搜索的方法實踐
背景
在檢索任務中,特徵的優劣直接影響最終的排序效果。研究者們一直孜孜以求的,就是希望能在浩如煙海的網路中,找到和query最相關的doc,展示給用戶。
在實際的工作中,我們發現有很大一部分搜索排序的效果不好,是由於query的語義理解不夠好導致。在常用的排序特徵中,如PageRank、bm25、matchrank等,都很難表達出query的具體語義。比如檢索詞「神門」,就有穴位、地名、小說等多種意義。這幾年深度學習火熱,研究者們開始嘗試使用embedding的方式來表達query的語義,在詞義的表達上確實去的了很好的效果,但針對一詞多義的情況,目前多義詞的詞向量表達的研究還比較少。
本文希望通過百科語料的先驗知識能夠優化query的歧義問題,主要分為三個部分,第一部分介紹本文想法來源的論文;第二部分是具體的實現方式;第三部分是總結和展望。
論文介紹
考慮使用百科語料作為先驗知識對query進行擴展和定位,源於論文《 Word-Entity Duet Representations for Document Ranking》中的一些方法。
在該論文中,作者提出了基於word和entity來對query和doc進行表達,其中entity是對query和doc中word的擴展,比如「奧巴馬」的entity包含有「白宮」、「總統」等。而entity的擴展是依據entity網路結構生成的,相當於知識圖譜的作用。當然,構建知識圖譜的成本是較高的,好在目前有一些開源的知識庫、或者半結構化的語料集能夠使用,至於針對具體任務是否合適就需要具體分析了。
在此基礎上,計算query和doc的相關性時,就可以去計算四個部分的特徵,① query words to document words ② query entities to document words ③ query words to document entities ④ query entities to document entities。在每一部分的具體特徵表達上,又使用了傳統的一些計算方式,特徵維度情況如下圖所示,4個table分別對應四個部分的特徵:
前三部分的特徵計算相對比較直觀,理解了作者的整體思路,基本就能根據不同特徵的具體意義進行計算。在第四部分query entity和doc entity的特徵計算上,需要考慮到entity之間的相關性,作者使用了TransE模型來得到網路結構中的entity向量表達,並對特徵值進行了直方圖的pooling操作,得到了離散化的特徵。
在此基礎上,作者還加入了attention特徵,旨在通過attention特徵來對前面的四部分特徵做優化,主要是起到增強word部分特徵作用,減弱了entity部分特徵作用,整體的計算流程如下圖所示:
至此,該論文中整個檢索排序演算法部分已經介紹完畢,看起來並不複雜,但是在測試上取得了較為不錯的效果。其中的細節大家有興趣可以再精讀下論文。
該論文的主要亮點在於提供了一種如何結合現有的知識圖譜,或者說半結構化數據來對排序特徵進行優化和擴充的方法。因為先驗知識是人為總結得到的,準確率較高,很多機器無法區分的實體詞,人類根據語境能夠很清晰的分辨出來。因此利用先驗知識優化排序是一種很好的方式。
實現方法:
在第一部分的論文中,作者結合先驗的方法很有效,但是當需要應用於實際線上產品的時候,卻會出現各種各樣的問題。因為搜索引擎對耗時非常敏感,同時由於數據量大,對doc信息的存儲、召回過程中特徵計算的複雜度都有要求,因此該方案很難直接應用。同時又考慮到實際要解決的一些問題及現有特徵的重複,最終筆者決定結合百科語料拓展tag語義空間來優化排序。具體如下:
1.目標問題:
在圖片檢索中,針對模糊意義檢索詞的檢索一直是個挑戰。模糊意義檢索詞指的是檢索詞為多義詞或指向性不夠明確,比如「李娜」可以指網球運動員李娜,也可以是歌手李娜;「神門」一般指穴位,但也可能召回小說或地名相關的圖片。
為了優化這一問題,筆者嘗試使用百科語料給現有詞條創建語義特徵,根據語義空間特徵優化召回圖片的排序結果。比如檢索詞「飛機頭」在正常檢索下會召回大量飛機頭部的照片,但通過語義空間可知,它跟「時尚」、「髮型」相關性很強,就可以將「飛機頭」時尚髮型的圖片排序更靠前,從而優化排序效果。
2.方法步驟:
基本方法是通過語義空間對檢索詞進行語義解析和定位,比如在檢索詞「飛機頭」的召回圖片中,通過語義空間特徵可以將和「時尚」、「髮型」相關的圖片排名靠前。在此過程中,使用了百科詞條的半結構化數據,來構建詞條的語義空間向量,從而計算檢索詞和圖片的語義空間特徵,主要分為以下步驟:
1.建立基礎語義空間
2.對百科詞條構建語義空間向量
3.檢索詞的語義空間向量定位
4.計算語義空間特徵
2.1 建立基礎語義空間
2.1.1 語義空間概念
在人類語言中,詞和詞之間是有關聯且相互解釋的,比如「鏟球」的語義是足球,「投籃」的語義是「籃球」。我們人腦在進行實體區分的時候也是利用了這樣的信息,比如當說「歐文」的時候我們不知道是誰,但說「籃球 歐文」我們就知道說的是NBA運動員歐文。而語義空間的使用就是為了更好的定位和表達實體詞。
2.1.2 利用百科數據建立語義空間
語義空間應該是由一組比較固定、詞義明確的組成,比如」籃球」、」足球」、」演員」、」歌手」等。在百科頁面的中,經過網友編輯已經有了類似標籤,以「鏟球」為例, 就有如下標籤:
2.1.3 構建語義空間
百科的詞條標籤一共有10W+,構建過程是對百科詞條標籤的篩選過程。通過將百科頁面的所有詞條的所有標籤按tf排序,選擇了top1W作為語義空間的候選詞,通過百科的anchor表述詞對這1W維的語義空間進行了過濾等,最終剩下了1800+維語義空間。在此基礎上對標籤詞進行同義詞和近義詞擴展,如「北京」擴展為「帝都」、「京城」等。
2.2 對百科詞條構建語義空間向量
在這一步中,我們希望在上面建立的語義空間的基礎上,能夠對每個百科詞條建立語義向量,這個向量是能夠很好的描述這個百科詞條的文本。
首先,我們將所有的百科詞條的正文內容取出來,進行分詞,統計詞頻,對關鍵區域如abstract和標籤部分適當增加權重,計算得到詞條語義空間的tf;然後載入全局df文件,計算標籤對應詞條的tfidf權重,即為這個詞條的語義空間。
詞條「大寶」語義空間結果如下:
2.3 檢索詞的語義空間向量定位
語義固定的詞條一般具有唯一的語義空間向量;如果詞條語義多樣,如「李娜 網球」,則根據檢索詞命中語義空間tag和詞條熱度情況進行計算,就可以識別出檢索詞中詞條的語義空間特徵。
此外,在信息不夠的情況下,比如直接檢索「運動員 李娜」,在百科詞條中有就有網球運動員、擊劍運動員、跳水運動員三個李娜,此時我們就結合詞條的熱度來進行篩選,這也是符合我們日常生活的實體詞判斷模式。比如提到「科比」一般指nba籃球員動員科比·布萊恩特而不是成都動物園的大熊貓科比。
2.4 計算語義空間特徵
語義空間特徵計算是根據從上面得到的檢索詞(query)的語義空間向量,再對召回doc進行特徵統計,結合bm25的變形公式計算檢索詞和pic在語義空間的相似程度。
3.優化結果:
在測試試驗中,通過增加基於百科的擴展特徵,使用LambdaMART模型進行排序,ndcg@10在原來基礎上提高了0.5個百分點,在一些case上能夠體現優化效果,基本符合預期。
總結展望
雖然增加該特徵確實對排序效果優化起到了一定的作用,但在實際運用過程中卻同樣發現了很多問題。
1.特徵覆蓋度較低。在實驗數據上,該特徵的實際存在數量只佔樣本的25%左右,大量的匹配特徵為0,這也是使用類似one hot方式的弊端,這使得相似性doc在特徵計算上存在巨大劣勢。
2.語義空間構建問題。在該特徵的計算上,語義空間的覆蓋能力和表達能力很大程度上決定了特徵計算的優劣。雖然通過各種過濾和擴展的方式來優化該空間,但不得不說目前的空間表達依然是簡陋的,且很難量化去評價語義空間的性能。
除了上述兩點問題,在具體實現上,為了節省計算量,需要將一些基本信息保留在索引中,增加了製作成本。
針對這些問題,在實際應用中也得到一些啟發,大致的努力方向是在結合百科語料的前提下,使用embedding的方式來表示tag,對doc和query也都可以映射到向量空間中,從而達到歧義消解的目的,這樣就不需要具體的語義空間,同時特徵覆蓋也可以得到提升。
目前設想很好,如果能夠得到不錯的結果會繼續分享。本文中的一些問題也歡迎大家指摘,共同探討。
推薦閱讀:
※[Paper Reading] 基於文檔主題結構的關鍵詞抽取方法研究
※360搜索推廣效果怎麼樣?
※風雲再起!360搜索在資訊端+視頻搜索領域奪魁
※好書一起讀(72):用好搜索引擎
※3個搜索高端技巧,你知道嗎
TAG:搜索引擎 |