用戶在使用搜索引擎過程當中,因爲表述不清晰或者查詢詞與索引庫描述不一致,爲了能召回更多更優質的結果展現給用戶。這時就須要對用戶查詢進行分析,包括詞權、同義詞、糾錯等技術,對原查詢進行處理。一般搜索引擎中對同義詞的處理,線下挖掘同義詞詞典,線上加載詞典,但因爲檢索系統應用同義詞時詞典存在部分質量很差、或者原本質量好可是應用同義詞更上下文有很強的關聯性,並不必定適用,所以同義詞主要包括兩大方面,同義詞的挖掘和同義詞的使用。算法
獲取同義詞詞林直接生成字典,抓取百度詞典、金山詞霸等的詞條中的數據,提取原詞和同義詞。從百度百科、搜狗百科等網站抓取詞條,在詞條中,有「又稱」、「別名」等特徵詞,利用這些特徵詞,構成模版提取詞的其餘描述,通常從百科中挖掘出的詞條一般質量比較高。session
anchor數據是錨文本,利用指向同一連接的不一樣anchor數據抽取同義詞,如「http://www.apple.com.cn/」的anchor有「蘋果中國」、「Apple 中國」,能夠抽出「蘋果」與「Apple」是同義詞。session日誌是同一用戶在一段較短期內搜索的查詢日誌,利用session信息能夠抽取用戶改寫的同義詞,如用戶在搜索中第一次提交查詢「VMware漢化版下載」,沒有找到想要的結果,而後對查詢進行修改「VMware中文版下載」,並獲得滿意結果,經過分析日誌,能夠抽取「漢化」與「中文」爲同義詞。app
在搜索引擎中,用戶點擊反饋是提高搜索效果最有效的方法,點擊日誌是用戶在使用搜索引擎時產生帶有標註的數據。點擊日誌包括query、title、點擊次數,經過統計query中某個詞在點擊的title沒有出現,但有其餘替換詞出現,而且這個替換詞在query點擊其餘的title中也有出現,並統計包含替換詞的點擊率等特徵,能夠判斷原詞與替換詞是不是同義詞。利用點擊日誌判斷某兩個詞是不是同義詞:1、在多個點擊的title中出現,2、在多個上下文片斷下出現,3、點擊含有同義詞的title點擊率比較高。如用戶搜索「一歲半寶寶感冒吃什麼藥」,點擊title「1歲半小孩感冒發燒吃什麼藥」中「寶寶」與「小孩」是同義詞。機器學習
利用點擊日誌,構建平行語料,如類似的query集、query-title等,類似query集是指點擊到同一title的不一樣query,同時過濾掉一些明顯不相關的query,在類似的query集中取query1與query2相差只有一兩個詞不同(防止平行語料差別過大,影響翻譯對齊的效果),構建成平行語料,經過統計機器翻譯的對齊算法,學習詞與詞之間的對齊關係,利用對齊詞,抽取對齊機率高、上下文內容豐富的詞語對,做爲同義詞。除了挖掘同義詞外,統計機器翻譯還能夠直接生成改寫句子,利用詞對齊信息,抽取短語翻譯機率表。學習
經過上述方法線下挖掘同義詞,生成同義詞詞典,而且根據同義詞相關程度,分紅不一樣的級別,如按照徹底等價(北京大學、北大)、語義等價(簡介、介紹)、語義相近(中國人、中國)、語義相關(須知、流程)分紅4個級別,線上加載同義詞詞典,並將其應用於搜索引擎的召回、相關性計算中。可是一樣一個同義詞在不一樣的上下文表現徹底不一樣,如「作 午餐」 vs 「燒 午餐」 ,「作」和「燒」是同義詞,若是上下文爲「仰臥起坐 一天 作 多少 能夠 減肥」 ,「作」和「燒」徹底不能替換,不一樣的上下文同義詞並不通用,所以線上對同義詞的使用須要過濾或調整級別。優化
語言模型是用來計算一個句子的機率的模型,利用語言模型,能夠肯定哪一個詞序列的可能性更大,或者給定若干個詞,能夠預測下一個最可能出現的詞語。利用搜索日誌,訓練語言模型(https://kheafield.com/code/kenlm/),基於訓練好的模型能夠用來判斷一句話的機率。判斷一個詞在上下文中,是否其同義詞可用,首先利用語言模型算出原句子的機率,而後用同義詞替換掉原詞,生成新的句子,再利用語言模型判斷新句子的機率,若是新句子成一句話的機率高於或者約等於原句子的機率,則能夠判定同義詞在上下文中有效,甚至提升同義詞的級別,若是新句子機率遠小於原句子機率,則在上下文中不能構建爲同義詞,應當對其進行下降同義詞級別甚至過濾掉。網站
利用機器學習優化同義詞,不只提高系統的相應時間,還提升了搜索系統的召回的準確度和相關性特徵的表徵能力。機器學習解決同義詞使用須要有三個問題:1、訓練數據的構建,2、特徵抽取,3、模型選取。訓練數據利用點擊日誌構建類似的query集(點擊到同一title的不一樣query),若是原詞出如今query中,同義詞出如今多個以上的類似query中而且類似query不包含原詞,則構成正例數據,若是原詞出如今query中,同義詞在全部的類似的query中都沒有出現,則構成負例數據,同時爲了提升訓練數據的質量,過濾掉原詞與同義詞差異僅爲停用詞,還有一些原詞和同義詞的前綴相同的數據也過濾。特徵提取包括:1、利用類似的query集,統計原詞和同義詞出現的機率、包含上下文片斷的原詞和同義詞共現機率(包括四元、三元、二元),統計數據離線作成字典供線上使用,2、原詞與同義詞級別,查詢長度,原詞詞數、同義詞詞數以及原詞和同義詞等特徵。同義詞使用能夠當作分類問題,一般選取決策樹、GBDT、隨機森林等算法,若是當作迴歸問題,能夠利用LR模型進行預測。經過機器學習模型能夠判斷在原詞的上下文中,候選同義詞是知足以及判斷同義詞級別。搜索引擎
總結一下,同義詞包括兩大方面,同義詞的挖掘和同義詞的使用。同義詞的挖掘,包括同義詞詞林,結構化數據(詞典、百科等)、anchor數據、點擊日誌等,除此以外還能夠利用點擊日誌構建平行語料,懸鏈機器翻譯模型,生成同義詞。同義詞的使用,主要由於同義詞跟上下文有很強的關聯性,同一同義詞在不一樣的上下文表現徹底不一樣,須要根據上下文調整同義詞使用級別甚至過濾同義詞。除了上述所描述的傳統方法外,同義詞還能夠利用深度學習模型,生成新的同義詞和優化同義詞的使用。spa