資訊檢索技術 布林檢索

2021-09-08 16:05:42 字數 1580 閱讀 2694

今天先介紹最簡單的資訊檢索技術,布林檢索。

資訊檢索(ir),通俗的講,就是要在乙個很大的文字(有時可能是其他資料,如影象等)集合中,找到與使用者需求相關的可以滿足使用者需求的非結構化資訊。聽起來有點拗口,其實就是一種查詢,只不過查詢的物件是非結構化資訊,和查詢資料庫中的表並不相同。希望這麼說能好理解一些。

既然要從文件中找到符合使用者需求的資訊,那麼首先就要解決乙個問題,就是如何來表示文件呢?在資訊檢索中,我們通常使用1代表乙個word出現在文件中,0代表沒有出現在文件中,很簡單。

比如 文件1: i often go to school by bus. 文件2: i am wating for the bus for 20 minutes.

我們如何來用1和0來表示上面的文件呢?很容易想到的方法是將所有的文件和word組成乙個矩陣,x方向為文件,y方向為所有的單詞。

文件1  文件2  文件3  文件4  ...

i     1    1    0    0

often  1    0    0

go    1    0    0

to     1      0     0

school     1     0    0

by          1    0    0

bus         1    1    0

am          0    1    0

這樣很容易的就表示了所有的word和文件的對應關係,當使用者要查詢檢索bus時,只需要找到bus對應的行,將是1的文件都取出來,展現給使用者不就行了?

確實,這樣做可以完成檢索的需求,但是仔細想想不難發現,我們假設一篇文件有1000個word,乙個文件集有1億篇文件(這對於搜尋引擎來說還遠遠不夠),那麼我們需要用1*1011的矩陣來儲存這種關係,這對計算機來說顯然是無法承受的。

那我們有什麼辦法來進行優化呢?仔細想想可以看出,雖然資料量很大,但是這個矩陣是極其稀疏的,也就是說1的個數是很少的,絕大多數字置都是0.那麼我們為什麼要儲存那麼多的0來占用空間呢?這完全沒有必要。於是,著名大倒排索引誕生了。

在介紹倒排索引前,先說正排索引,正排索引就是給定乙個文件,可以知道文件**現的所有word。對比著看,倒排索引就是反過來,給定乙個word,看看這個word出現在哪些文件中。下面的圖形象的描述了倒排索引的資料結構

i -> 1 2 3 4 5 7 9 22

school -> 1 3

bus -> 1 2 8 9

其中前面的是word,後面的是文件的標號,並且這些標號是按順序存放的,這更利於後面檢索環節的處理。當然上面提到的是最基本的原型,實際的系統中,倒排索引還儲存了詞頻,網頁的元資料等各種資訊。

有了倒排索引,我們就可以省去大量的空間,大大提高了查詢檢索的效率。下面我們看看如何進行檢索。比如我們有了如下的倒排索引

a -> 2 4 8 16 32 64

b -> 1 2 4 9 16 33

先在使用者查詢a,那麼則返回2 4 8 16 32 64

如果查詢a and b 則需要把a和b的倒排索引拿出來,進行一次求交集的運算。其實很簡單,只需要o(x+y)的時間操作,就可以得到2 4 16了。

如果使用者查詢a or b呢?不用我多說了吧,相信大家已經很明白該如何處理了。

資訊檢索之布林檢索

1 倒排索引的兩部分 圖 1 3 2 構建倒排索引的過程 收集需要建立索引的文件 將每篇文件轉換成乙個個詞條的列表,這個過程成為詞條化 第二章 進行語言學處理,產生歸一化的詞條來作為詞項 第三章 對所有文件按照其中出現的詞項來建立倒排索引,索引中包括一部詞典 存於記憶體 和乙個全體倒排索引表 存於磁...

《Introduce to IR》布林檢索模型

該系列文章是 an introduce to information retrieval chapter 1 的讀書筆記。ir的概念很廣泛,即使從錢包中拿出一張信用卡並輸入卡號也是一種形式的資訊檢索。在學術領域,我們這樣定義ir 資訊檢索 ir 就是一種從大量資料集合中 通常指儲存在計算機中文件 尋...

資訊檢索導論 第一章 布林檢索 學習筆記

名稱上看,倒排 二字顯然有些多餘,因為一般提到的索引都是從詞項 item 反向對映到文件的。但是倒排索引已成為資訊檢索中的乙個標準術語。1 收集需要建立索引的文件 2 將每篇文件換成乙個個詞條列表,此過程稱為詞條化 3 進行語言學預處理,產生歸一化的詞條來作為詞項 4 對所有文件按照其中出現的詞項來...