搜索中詞權重計算及實踐


  隨着網絡和信息技術的飛速發展,網絡中的信息量也呈現爆炸式的增長,那么快速並且正確從這些海量的數據中獲取正確的信息成為了現在搜索引擎技術的核心問題。用戶的輸入通常呈現很大的差異性,這是因為不同的人接受不同的教育、不同的文化,導致在表述同一個問題上面差異很大,那么對用戶輸入的搜索詞進行詞條權重的打分是非常有必要的,這對於從用戶輸入的搜索詞中提取核心詞,或是對搜索詞返回的文檔排序等都是一個非常重要的課題。詞權重特征是衡量查詢中詞的重要度程度,主要應用於相關性排序。

一、TF-IDF

  詞頻-逆文檔頻率(term frequency-inverse document frequency,TF-IDF) 的概念被公認為信息檢索中最重要的發明。在搜索、文獻分類和其他相關領域有廣泛的應用。TF-IDF是一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨着它在文件中出現的次數成正比增加,但同時會隨着它在語料庫中出現的頻率成反比下降。TF-IDF加權的各種形式常被搜索引擎應用,作為文件與用戶查詢之間相關程度的度量或評級。TF-IDF的主要思想是:如果某個詞或短語在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。TFIDF實際上是:TF * IDF,TF詞頻(Term Frequency),IDF逆向文件頻率(Inverse Document Frequency)。TF表示詞條在文檔d中出現的頻率。IDF的主要思想是:如果包含詞條t的文檔越少,也就是n越小,IDF越大,則說明詞條t具有很好的類別區分能力。

  詞頻 (term frequency, TF) 的是某一個給定的詞語在該文件中出現的次數。這個數字通常會被歸一化(一般是詞頻除以文章總詞數), 以防止它偏向長的文件。公式:

\mathrm{tf_{i,j}} = \frac{n_{i,j}}{\sum_k n_{k,j}}

  以上式子中 n_{i,j} 是該詞t_{i} 在文件d_{j}中的出現次數,而分母則是在文件d_{j}中所有字詞的出現次數之和。

  逆向文件頻率 (inverse document frequency, IDF) IDF的主要思想是:如果包含詞條t的文檔越少, IDF越大,則說明詞條具有很好的類別區分能力。某一特定詞語的IDF,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到。

\mathrm{idf_{i}} =  \log \frac{|D|}{|\{j: t_{i} \in d_{j}\}|}

  其中

  • |D|:語料庫中的文件總數
  • |\{ j: t_{i} \in d_{j}\}|:包含詞語t_{i}的文件數目(即n_{i,j} \neq 0的文件數目)如果該詞語不在語料庫中,就會導致被除數為零,因此一般情況下使用1 + |\{j : t_{i} \in d_{j}\}|

  某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重的TF-IDF。因此,TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。 因此

\mathrm{tf{}idf_{i,j}} = \mathrm{tf_{i,j}} \times  \mathrm{idf_{i}}

  某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重的TF-IDF。因此,TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。TF-IDF是一種簡單有效詞權重統計方法。

二、基於多模型融合的詞權重計算

   TF-IDF計算詞權重方法簡單可靠,但真正應用到系統中其准確度還是遠遠達不到要求,基於搜索用戶的點擊數據,提出一種離線數據挖掘結合機器學習計算詞權重的方法,並在實際的應用中獲得不錯的效果,其實現框圖如下:

  詞權重的計算主要包括兩方面的特征:1、統計特征,2、語言特征。其中統計特征是利用用戶搜索日志和點擊日志,統計詞的基本特征,包括tf-idf,term在上下文中刪除概率等,利用點擊日志,根據共同點擊doc,構成相似的query集合,在相似的query集合中,基於詞共現某term出現的次數越多,相關的query相似度越高,則該term越重要。語言特征是詞本身的屬性,主要包括詞性和詞類信息,這些特征類別多而且針對詞來說是唯一的,並且跟上下文有很強的關聯性,對特征進行窮舉會非常稀疏,因此在使用語言特征之前,利用CRF模型粗估詞權重特征,對語言特征進行融合,並把CRF模型結果作為最終詞權重模型的輸入特征,預測詞權重。

三、利用深度學習模型生成詞權重

   近年來,深度學習在自然語言處理中應用越來越廣泛,並且在大多數任務中效果上遠遠要優於傳統方法,特別是以LSTM模型為代表的具有序列記憶功能的深度學習,推動了自然語言處理領域的發展。我們也一直在嘗試利用LSTM解決詞權重計算問題,深度學習不同傳統的模型,需要大規模訓練數據。首先遇到的難題是需要自動構建大規模訓練數據,利用點擊日志,構建相似query集,通過計算詞共現概率來表示查詢中每個term的重要程度,構建詞權重訓練數據,訓練LSTM模型。根據模型輸出和標准答案之間的差異調節LSTM模型參數,訓練結束后lstm模型可以對任意query逐詞生成詞權重,具體如下圖所示:

  傳統模型面對統計特征不充分的查詢,存在信息損失,而LSTM模型能在大規模訓練數據集中,融合更多、更長的上下文信息,提升泛化和理解能力,並在生成query詞權重中充分考慮上下文信息。目前利用深度學習模型在詞權重生成項目上僅嘗試過單層LSTM模型,之后可以考慮在embedding層加入更多的特征,如詞性、句法分析、實體等詞級別特征,另外可以考慮優化LSTM,如加入self-attention,雙向LSTM、甚至多層模型。對深度學習來說,最重要的優化還是訓練數據的質量提高,如何自動構建高質量的訓練數據一直是深度學習模型應用的重要課題。

 


免責聲明!

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



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