搜索引擎中同义词的挖掘及使用
用戶在使用搜索引擎過程中,由于表述不清晰或者查詢詞與索引庫描述不一致,為了能召回更多更優(yōu)質(zhì)的結(jié)果展示給用戶。這時就需要對用戶查詢進(jìn)行分析,包括詞權(quán)、同義詞、糾錯等技術(shù),對原查詢進(jìn)行處理。通常搜索引擎中對同義詞的處理,線下挖掘同義詞詞典,線上加載詞典,但由于檢索系統(tǒng)應(yīng)用同義詞時詞典存在部分質(zhì)量不好、或者本來質(zhì)量好但是應(yīng)用同義詞更上下文有很強的關(guān)聯(lián)性,并不一定適用,因此同義詞主要包括兩大方面,同義詞的挖掘和同義詞的使用。
一、同義詞挖掘方法
1、結(jié)構(gòu)化數(shù)據(jù)
獲取同義詞詞林直接生成字典,抓取百度詞典、金山詞霸等的詞條中的數(shù)據(jù),提取原詞和同義詞。從百度百科、搜狗百科等網(wǎng)站抓取詞條,在詞條中,有“又稱”、“別名”等特征詞,利用這些特征詞,構(gòu)成模版提取詞的其他描述,一般從百科中挖掘出的詞條通常質(zhì)量比較高。
2、anchor數(shù)據(jù)、session日志
anchor數(shù)據(jù)是錨文本,利用指向同一鏈接的不同anchor數(shù)據(jù)抽取同義詞,如“http://www.apple.com.cn/”的anchor有“蘋果中國”、“Apple 中國”,可以抽出“蘋果”與“Apple”是同義詞。session日志是同一用戶在一段較短時間內(nèi)搜索的查詢?nèi)罩?,利用session信息可以抽取用戶改寫的同義詞,如用戶在搜索中第一次提交查詢“VMware漢化版下載”,沒有找到想要的結(jié)果,然后對查詢進(jìn)行修改“VMware中文版下載”,并得到滿意結(jié)果,通過分析日志,可以抽取“漢化”與“中文”為同義詞。
3、點擊日志
在搜索引擎中,用戶點擊反饋是提升搜索效果最有效的方法,點擊日志是用戶在使用搜索引擎時產(chǎn)生帶有標(biāo)注的數(shù)據(jù)。點擊日志包括query、title、點擊次數(shù),通過統(tǒng)計query中某個詞在點擊的title沒有出現(xiàn),但有其他替換詞出現(xiàn),并且這個替換詞在query點擊其他的title中也有出現(xiàn),并統(tǒng)計包含替換詞的點擊率等特征,可以判斷原詞與替換詞是否是同義詞。利用點擊日志判斷某兩個詞是否是同義詞:一、在多個點擊的title中出現(xiàn),二、在多個上下文片段下出現(xiàn),三、點擊含有同義詞的title點擊率比較高。如用戶搜索“一歲半寶寶感冒吃什么藥”,點擊title“1歲半小孩感冒發(fā)燒吃什么藥”中“寶寶”與“小孩”是同義詞。
4、統(tǒng)計機器翻譯對齊
利用點擊日志,構(gòu)建平行語料,如相似的query集、query-title等,相似query集是指點擊到同一title的不同query,同時過濾掉一些明顯不相關(guān)的query,在相似的query集中取query1與query2相差只有一兩個詞不一樣(防止平行語料差異過大,影響翻譯對齊的效果),構(gòu)建成平行語料,通過統(tǒng)計機器翻譯的對齊算法,學(xué)習(xí)詞與詞之間的對齊關(guān)系,利用對齊詞,抽取對齊概率高、上下文內(nèi)容豐富的詞語對,作為同義詞。除了挖掘同義詞外,統(tǒng)計機器翻譯還可以直接生成改寫句子,利用詞對齊信息,抽取短語翻譯概率表。
二、同義詞應(yīng)用
通過上述方法線下挖掘同義詞,生成同義詞詞典,并且根據(jù)同義詞相關(guān)程度,分成不同的級別,如按照完全等價(北京大學(xué)、北大)、語義等價(簡介、介紹)、語義相近(中國人、中國)、語義相關(guān)(須知、流程)分成4個級別,線上加載同義詞詞典,并將其應(yīng)用于搜索引擎的召回、相關(guān)性計算中。但是同樣一個同義詞在不同的上下文表現(xiàn)完全不同,如“做 午飯” vs “燒 午飯” ,“做”和“燒”是同義詞,如果上下文為“仰臥起坐 一天 做 多少 可以 減肥” ,“做”和“燒”完全不能替換,不同的上下文同義詞并不通用,因此線上對同義詞的使用需要過濾或調(diào)整級別。
1、基于語言模型優(yōu)化同義詞使用
語言模型是用來計算一個句子的概率的模型,利用語言模型,可以確定哪個詞序列的可能性更大,或者給定若干個詞,可以預(yù)測下一個最可能出現(xiàn)的詞語。利用搜索日志,訓(xùn)練語言模型(https://kheafield.com/code/kenlm/),基于訓(xùn)練好的模型可以用來判斷一句話的概率。判斷一個詞在上下文中,是否其同義詞可用,首先利用語言模型算出原句子的概率,然后用同義詞替換掉原詞,生成新的句子,再利用語言模型判斷新句子的概率,如果新句子成一句話的概率高于或者約等于原句子的概率,則可以斷定同義詞在上下文中有效,甚至提高同義詞的級別,如果新句子概率遠(yuǎn)小于原句子概率,則在上下文中不能構(gòu)建為同義詞,應(yīng)當(dāng)對其進(jìn)行降低同義詞級別甚至過濾掉。
2、基于機器學(xué)習(xí)優(yōu)化同義詞使用
利用機器學(xué)習(xí)優(yōu)化同義詞,不僅提升系統(tǒng)的相應(yīng)時間,還提高了搜索系統(tǒng)的召回的準(zhǔn)確度和相關(guān)性特征的表征能力。機器學(xué)習(xí)解決同義詞使用需要有三個問題:一、訓(xùn)練數(shù)據(jù)的構(gòu)建,二、特征抽取,三、模型選取。訓(xùn)練數(shù)據(jù)利用點擊日志構(gòu)建相似的query集(點擊到同一title的不同query),如果原詞出現(xiàn)在query中,同義詞出現(xiàn)在多個以上的相似query中并且相似query不包含原詞,則構(gòu)成正例數(shù)據(jù),如果原詞出現(xiàn)在query中,同義詞在所有的相似的query中都沒有出現(xiàn),則構(gòu)成負(fù)例數(shù)據(jù),同時為了提高訓(xùn)練數(shù)據(jù)的質(zhì)量,過濾掉原詞與同義詞差別僅為停用詞,還有一些原詞和同義詞的前綴相同的數(shù)據(jù)也過濾。特征提取包括:一、利用相似的query集,統(tǒng)計原詞和同義詞出現(xiàn)的概率、包含上下文片段的原詞和同義詞共現(xiàn)概率(包括四元、三元、二元),統(tǒng)計數(shù)據(jù)離線做成字典供線上使用,二、原詞與同義詞級別,查詢長度,原詞詞數(shù)、同義詞詞數(shù)以及原詞和同義詞等特征。同義詞使用可以看成分類問題,通常選取決策樹、GBDT、隨機森林等算法,如果看成回歸問題,可以利用LR模型進(jìn)行預(yù)測。通過機器學(xué)習(xí)模型可以判斷在原詞的上下文中,候選同義詞是滿足以及判斷同義詞級別。
三、總結(jié)與展望
總結(jié)一下,同義詞包括兩大方面,同義詞的挖掘和同義詞的使用。同義詞的挖掘,包括同義詞詞林,結(jié)構(gòu)化數(shù)據(jù)(詞典、百科等)、anchor數(shù)據(jù)、點擊日志等,除此之外還可以利用點擊日志構(gòu)建平行語料,懸鏈機器翻譯模型,生成同義詞。同義詞的使用,主要因為同義詞跟上下文有很強的關(guān)聯(lián)性,同一同義詞在不同的上下文表現(xiàn)完全不同,需要根據(jù)上下文調(diào)整同義詞使用級別甚至過濾同義詞。除了上述所描述的傳統(tǒng)方法外,同義詞還可以利用深度學(xué)習(xí)模型,生成新的同義詞和優(yōu)化同義詞的使用。
總結(jié)
以上是生活随笔為你收集整理的搜索引擎中同义词的挖掘及使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [译]JavaScript中的两个0
- 下一篇: stata检验查看重复值