搜索引擎中同義詞的挖掘及使用


   用戶在使用搜索引擎過程中,由於表述不清晰或者查詢詞與索引庫描述不一致,為了能召回更多更優質的結果展示給用戶。這時就需要對用戶查詢進行分析,包括詞權、同義詞、糾錯等技術,對原查詢進行處理。通常搜索引擎中對同義詞的處理,線下挖掘同義詞詞典,線上加載詞典,但由於檢索系統應用同義詞時詞典存在部分質量不好、或者本來質量好但是應用同義詞更上下文有很強的關聯性,並不一定適用,因此同義詞主要包括兩大方面,同義詞的挖掘和同義詞的使用。

一、同義詞挖掘方法

1、結構化數據

  獲取同義詞詞林直接生成字典,抓取百度詞典、金山詞霸等的詞條中的數據,提取原詞和同義詞。從百度百科、搜狗百科等網站抓取詞條,在詞條中,有“又稱”、“別名”等特征詞,利用這些特征詞,構成模版提取詞的其他描述,一般從百科中挖掘出的詞條通常質量比較高。

2、anchor數據、session日志

  anchor數據是錨文本,利用指向同一鏈接的不同anchor數據抽取同義詞,如“http://www.apple.com.cn/”的anchor有“蘋果中國”、“Apple 中國”,可以抽出“蘋果”與“Apple”是同義詞。session日志是同一用戶在一段較短時間內搜索的查詢日志,利用session信息可以抽取用戶改寫的同義詞,如用戶在搜索中第一次提交查詢“VMware漢化版下載”,沒有找到想要的結果,然后對查詢進行修改“VMware中文版下載”,並得到滿意結果,通過分析日志,可以抽取“漢化”與“中文”為同義詞。

3、點擊日志

  在搜索引擎中,用戶點擊反饋是提升搜索效果最有效的方法,點擊日志是用戶在使用搜索引擎時產生帶有標注的數據。點擊日志包括query、title、點擊次數,通過統計query中某個詞在點擊的title沒有出現,但有其他替換詞出現,並且這個替換詞在query點擊其他的title中也有出現,並統計包含替換詞的點擊率等特征,可以判斷原詞與替換詞是否是同義詞。利用點擊日志判斷某兩個詞是否是同義詞:一、在多個點擊的title中出現,二、在多個上下文片段下出現,三、點擊含有同義詞的title點擊率比較高。如用戶搜索“一歲半寶寶感冒吃什么葯”,點擊title“1歲半小孩感冒發燒吃什么葯”中“寶寶”與“小孩”是同義詞。

4、統計機器翻譯對齊

  利用點擊日志,構建平行語料,如相似的query集、query-title等,相似query集是指點擊到同一title的不同query,同時過濾掉一些明顯不相關的query,在相似的query集中取query1與query2相差只有一兩個詞不一樣(防止平行語料差異過大,影響翻譯對齊的效果),構建成平行語料,通過統計機器翻譯的對齊算法,學習詞與詞之間的對齊關系,利用對齊詞,抽取對齊概率高、上下文內容豐富的詞語對,作為同義詞。除了挖掘同義詞外,統計機器翻譯還可以直接生成改寫句子,利用詞對齊信息,抽取短語翻譯概率表。

二、同義詞應用

    通過上述方法線下挖掘同義詞,生成同義詞詞典,並且根據同義詞相關程度,分成不同的級別,如按照完全等價(北京大學、北大)、語義等價(簡介、介紹)、語義相近(中國人、中國)、語義相關(須知、流程)分成4個級別,線上加載同義詞詞典,並將其應用於搜索引擎的召回、相關性計算中。但是同樣一個同義詞在不同的上下文表現完全不同,如“做 午飯” vs “燒 午飯”  ,“做”和“燒”是同義詞,如果上下文為“仰卧起坐 一天 做 多少 可以 減肥”  ,“做”和“燒”完全不能替換,不同的上下文同義詞並不通用,因此線上對同義詞的使用需要過濾或調整級別。

1、基於語言模型優化同義詞使用

  語言模型是用來計算一個句子的概率的模型,利用語言模型,可以確定哪個詞序列的可能性更大,或者給定若干個詞,可以預測下一個最可能出現的詞語。利用搜索日志,訓練語言模型(https://kheafield.com/code/kenlm/),基於訓練好的模型可以用來判斷一句話的概率。判斷一個詞在上下文中,是否其同義詞可用,首先利用語言模型算出原句子的概率,然后用同義詞替換掉原詞,生成新的句子,再利用語言模型判斷新句子的概率,如果新句子成一句話的概率高於或者約等於原句子的概率,則可以斷定同義詞在上下文中有效,甚至提高同義詞的級別,如果新句子概率遠小於原句子概率,則在上下文中不能構建為同義詞,應當對其進行降低同義詞級別甚至過濾掉。

2、基於機器學習優化同義詞使用

  利用機器學習優化同義詞,不僅提升系統的相應時間,還提高了搜索系統的召回的准確度和相關性特征的表征能力。機器學習解決同義詞使用需要有三個問題:一、訓練數據的構建,二、特征抽取,三、模型選取。訓練數據利用點擊日志構建相似的query集(點擊到同一title的不同query),如果原詞出現在query中,同義詞出現在多個以上的相似query中並且相似query不包含原詞,則構成正例數據,如果原詞出現在query中,同義詞在所有的相似的query中都沒有出現,則構成負例數據,同時為了提高訓練數據的質量,過濾掉原詞與同義詞差別僅為停用詞,還有一些原詞和同義詞的前綴相同的數據也過濾。特征提取包括:一、利用相似的query集,統計原詞和同義詞出現的概率、包含上下文片段的原詞和同義詞共現概率(包括四元、三元、二元),統計數據離線做成字典供線上使用,二、原詞與同義詞級別,查詢長度,原詞詞數、同義詞詞數以及原詞和同義詞等特征。同義詞使用可以看成分類問題,通常選取決策樹、GBDT、隨機森林等算法,如果看成回歸問題,可以利用LR模型進行預測。通過機器學習模型可以判斷在原詞的上下文中,候選同義詞是滿足以及判斷同義詞級別。

三、總結與展望

  總結一下,同義詞包括兩大方面,同義詞的挖掘和同義詞的使用。同義詞的挖掘,包括同義詞詞林,結構化數據(詞典、百科等)、anchor數據、點擊日志等,除此之外還可以利用點擊日志構建平行語料,懸鏈機器翻譯模型,生成同義詞。同義詞的使用,主要因為同義詞跟上下文有很強的關聯性,同一同義詞在不同的上下文表現完全不同,需要根據上下文調整同義詞使用級別甚至過濾同義詞。除了上述所描述的傳統方法外,同義詞還可以利用深度學習模型,生成新的同義詞和優化同義詞的使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM