1. 程式人生 > >ElasticSearch學習總結(一):資訊檢索基礎理論

ElasticSearch學習總結(一):資訊檢索基礎理論

本系列文章為Elasticsearch 的學習筆記,主要是為了便於日後對於相關知識點的回顧,在內容的範圍以及正確性上可能存在一定出入。另外由於Elasticsearch的發展速度很快,很多特性會隨著版本的演變而發生變化,具體的特性說明,如有疑問請參考對應版本的官方文件。本系列部落格主要基於5.2版本

作為本系列部落格的開篇,先對資訊檢索的相關基礎知識做個簡單的總結

1.基本定義

資訊檢索的定義有很多,知乎的答案跟人覺得比較直接明瞭,定義如下

資訊檢索( Information Retrieval ):指資訊按一定的方式組織起來,並根據資訊使用者的需要找出有關的資訊的過程和技術。

資訊檢索的目標:準確、及時、全面的獲取所需資訊。

2.資訊檢索系統設計

資訊檢索系統的設計主要包括如下三個部分的內容
1. 資訊採集:可以通過爬蟲,眾包等多種方式完成資訊的採集
2. 資訊處理:系統處理採集來資料的過程稱為索引構建,如何對資料進行高效的索引構建與儲存是系統的核心問題。本文主要介分詞與倒排索引兩個環節
3. 資訊查詢:該部分主要關注的是如何在最短的時間內返回使用者最想得到的資訊。本文主要關注有哪些相關性檢測模型可以讓使用者得到最想要的結果。

3.常用術語

資訊檢索作為一門獨立的學科,有很多學術方面的術語,為了便於後面的學習與總結,對常用的術語做個簡單的總結

  • 文件(document):文件是搜尋的目標,載體可以是文字,圖片,視訊語音等各種型別
  • 文件集(crops):若干文件組成的集合稱為文件集
  • 詞條化(tokenization):指將給定的字元序列拆分成一系列子序列的過程,每個子序列稱為一個詞條
  • 詞項(term):詞項是經過語言學預處理之後歸一化的詞條。詞條是索引的最小單位
  • 詞項文件關聯矩陣:用來標識文件與詞項包含關係的矩陣。
  • 詞項頻率(term frequency):某個詞項在某個文件中出現的頻率稱為詞項頻率,例如”Apple”這個單詞在文件A中出現了3次,則詞項頻率為3.
  • 文件頻率(document frequency):出現某個詞項的文件數量稱為文件頻率,例如有3個文件出現過”Apple”這個單詞,則文件頻率為3
  • 倒排記錄表(postings list):倒排記錄表用於記錄出現過某個詞項的所有文件的文件列表以及詞項在文件中出現的位置資訊,每條記錄稱為一個倒排項。 通過倒排記錄表可以知道哪些文件包含了哪些文件。

4.分詞演算法

4.1 概述

分詞對於搜尋引擎的幫助很大,可以幫助搜尋引擎識別檢索詞語的含義,從而使搜尋的準確度提高,因此分詞的質量也影響了搜尋結果的準確度。中英文的分詞原理大致如下

4.2 英文分詞

英文單詞之間是以空格作為自然分界符的,因此英文的分詞相對簡單,大致為一下流程:

輸入文字-》詞彙分割-》詞彙過濾(去除stop word)-》詞幹提取-》大小寫轉換-》輸出結果

細節部分此處不做過多介紹

4.3 中文分詞

漢語是以字為基本的書寫單位,詞語之間沒有明顯的區分標記,因此,中文詞語分詞對比英文分詞要複雜許多。常用的分詞方法主要包括1:詞典匹配分詞法
2:語義理解分詞法 3:詞頻統計分詞法.

4.3.1 詞典匹配分詞法

這種方法按照一定策略將待分析的漢字串與一個“充分大的”機器詞典中的詞條進行匹配,若在詞典中找到某個字串,則匹配成功。識別出一個詞,根據掃描方向的不同分為正向匹配和逆向匹配。根據不同長度優先匹配的情況,分為最大(最長)匹配和最小(最短)匹配,該方法簡單、分詞效率較高,但漢語語言現象複雜豐富,詞典的完備性、規則的一致性等問題使其難以適應開放的大規模文字的分詞處理

4.3.2 語義理解分詞法

該方法主要基於句法、語法分析,並結合語義分析,通過對上下文內容所提供資訊的分析對詞進行定界,它通常包括三個部分:分詞子系統、句法語義子系統、總控部分。在總控部分的協調下,分詞子系統可以獲得有關詞、句子等的句法和語義資訊來對分詞歧義進行判斷。這類方法試圖讓機器具有人類的理解能力,需要使用大量的語言知識和資訊。由於漢語語言知識的籠統、複雜性,難以將各種語言資訊組織成機器可直接讀取的形式。因此目前基於知識的分詞系統還處在試驗階段。

4.3.3 詞頻統計分詞法

主要思想:上下文中,相鄰的字同時出現的次數越多,就越可能構成一個詞。因此字與字相鄰出現的概率或頻率能較好的反映詞的可信度。

主要統計模型為:N元文法模型(N-gram)、隱馬爾科夫模型(Hidden Markov Model, HMM)。

5.倒排索引

倒排索引也常被稱為反向索引,是一種索引的方法,被用來儲存在全文搜尋下某個單詞在一個或是一組文件中的儲存位置的對映,是文件檢索系統中最常用的資料結構。

下面通過一個例子來對倒排索引做一個簡單的說明:
原始文件集合的截圖如下:
這裡寫圖片描述

通常建立倒排索引的步驟如下:
1. 用分詞系統將文件自動切分成單詞序列,每個文件就轉換為由單詞序列構成的資料流;

  1. 對每個不同單詞賦予唯一的單詞編號(ID),並記錄每個單詞對應的文件頻率(文件集合中,包含某個單詞的文件數量,佔文件總數量的比率)、包含該單詞的對應文件編號(DocID)、該單詞在各對應文件中的詞頻(TF)(在某個文件中出現的次數)、該單詞出現在某個文件中的位置(POS)等;

最後索引後得到的結果如下:
這裡寫圖片描述

含義解讀:以單詞“跳槽”為例,其單詞編號為4,文件頻率為2,代表整個文件集合中有兩個文件包含這個單詞,對應的倒排列表為{(1;1;<4>),(4;1;<4>)},其含義為在文件1和文件4中出現過這個單詞,單詞頻率都為1,單詞“跳槽”出現在兩個文件中的位置都是4,即文件中第四個單詞是“跳槽”。

6.檢測模型

檢測模型是判斷文件與使用者查詢相關性的核心技術。本章節將簡單介紹幾個常見的檢測模型

6.1 布林檢測模型

6.1.1 原理

布林檢索模型主要是把AND,OR,NOT三種邏輯運算子把檢索詞連線起來,構成一個邏輯檢索式。

6.1.2 優點

  1. 簡單,容易理解
  2. 可以處理結構化查詢
  3. 速度快

6.1.3 缺點

  1. 檢索策略只是基於0或是1的完全匹配
  2. 不存在語義特性
  3. 沒有加權的概念

6.2 tf-idf檢測模型

6.2.1 原理

TF-IDF是一種統計方法,用以評估一字詞對於一個檔案集或一個語料庫中的其中一份檔案的重要程度。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。

TFIDF的主要思想是:如果某個詞或短語在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。TF-IDF實際上是:TF * IDF,TF詞頻(Term Frequency),IDF逆向檔案頻率(Inverse Document Frequency)。TF表示詞條在文件d中出現的頻率。IDF的主要思想是:如果包含詞條t的文件越少,也就是n越小,IDF越大,則說明詞條t具有很好的類別區分能力。如果某一類文件C中包含詞條t的文件數為m,而其它類包含t的文件總數為k,顯然所有包含t的文件數n=m+k,當m大的時候,n也大,按照IDF公式得到的IDF的值會小,就說明該詞條t類別區分能力不強。但是實際上,如果一個詞條在一個類的文件中頻繁出現,則說明該詞條能夠很好代表這個類的文字的特徵,這樣的詞條應該給它們賦予較高的權重,並選來作為該類文字的特徵詞以區別與其它類文件。

[來源於百度百科]

6.3 向量空間模型

6.3.1 原理

該方法主要是把文字內容轉換為向量空間的向量運算,以空間上的相似度表達語義的相似度。該模型的數學基礎是餘弦相似性理論。

6.4 概率檢索模型

6.4.1 原理

是目前效果最好的模型之一,okapi BM25這一經典概率模型計算公式已經在搜尋引擎的網頁排序中廣泛使用。概率檢索模型是從概率排序原理推匯出來的。

基本思想是:

是通過概率的方法將查詢和文件聯絡起來,給定一個使用者查詢,如果搜尋系統能夠在搜尋結果排序時按照文件和使用者需求的相關性由高到底排序,那麼這個搜尋系統的準確性是最優的。在文件集合的基礎上儘可能準確地對這種相關性進行估計就是其核心。

6.4.2 優點

  1. 採用嚴格的數學理論為依據,為人們提供了一種數學理論基礎來進行檢索決策;PubMed的related articles 。
  2. 採用相關反饋原理
  3. 在其中沒有使用使用者難以運用的布林邏輯方法;
  4. 在操作過程中使用了詞的依賴性和相互關係。

6.4.3 缺點

  1. 計算複雜度大,不適合大型網路
  2. 引數估計難度較大
  3. 條件概率值難估計
  4. 系統的檢索效能提高不明顯,需與其他檢索模型結合