文字挖掘學習筆記(一) 布林檢索

2021-08-06 07:13:20 字數 2262 閱讀 4360

最近在學習文字挖掘,故而把書中關鍵的內容做個筆記,方便以後查閱。

資訊檢索是從大規模非結構化資料(通常是文字)的集合(通常儲存在計算機上)中找出滿足使用者需求的資料的(通常是文件)的過程。按照所處理的資料的規模,資訊檢索可以分為三個級別:

第乙個級別是以web搜尋為代表的大規模級別;

第二個級別是小規模,可以看成是與第一種規模相對的另一極端情況;

第三個級別是中等規模的資料,包括面向企業、機構和特定領域的搜尋(比如公司內部文件、專利庫或生物醫學文獻的搜尋)。

下面是乙個資訊檢索的例子,以此來介紹布林檢索模型的基礎知識

很多人都有《莎士比亞全集》這本書。假定你想知道其中的哪些劇本包含 brutus 和 caesar 但不包含 calpurnia。一種辦法就是從頭到尾閱讀這本全集,對每部劇本都留心它是否包含 brutus 和 caesar 且同時不包含 calpurnia。這種線性掃瞄就是一種最簡單的計算機文件檢索方式,這個過程通常叫做grepping。

但是,很多情況下只採用上述掃瞄方式是遠遠不夠的,我們需要做更多的處理,例如。

(1)大規模文件集條件下的快速查詢。我們可能需要在幾十億到上萬億單詞的資料規模下進行查詢。

(2)有事我們需要更靈活的匹配方式。比如,在grep命令下不能支援諸如romans near countrymen之類的查詢,這裡的near操作符定義可能為「5歌詞之內」或者「同乙個句子」中。

(3)需要對結果進行排序。很多情況下,使用者希望在多個滿足自己需求的文件中得到最佳答案。

此時,我們就不能採用線性掃瞄的方式了。一種非線性掃瞄的方式是事先給文件建立索引。

例如《莎士比亞全集》,假定我們對每篇文件(劇本)都事先記錄他是否包含詞表中的某個詞,結果都會得到乙個由布林值構成的詞項-文件關聯矩陣。如下圖

詞項是索引的單位,它通常可以用詞來表示,目前可以把詞項當成詞,以後會具體討論。

此時,之前我們討論的包含 brutus 和 caesar 但不包含 calpurnia 的劇本,就可以轉換為這種形式

brutus and caesar and not calpurnia

分別取出brutus、caesar、calpurnia對應的行向量,並對 calpurnia 對應的向量求反,然後進行基於位的與操作,得到:

110100 and 110111 and 101111 = 100100

結果向量中的第1個和第4個元素為1,這表明該查詢對應的劇本是 antony and cleopatra 和 hamlet 。

但這樣的方法也有乙個很明顯的缺陷。我們假定這樣一種情況,詞項的個數是50萬,文件篇數為100萬,所以其對應的詞項-文件矩陣大概有5000億(50萬×100萬)......呵呵,這已經遠遠大於一台計算機的記憶體容量了。另外,我們不難發現,這個龐大的矩陣實際上具有高度的稀疏性,即大部分元素都是0,只有極少數元素為1。(實際上這個矩陣中的99.8%的元素都是0)。很顯然,只記錄原始矩陣中的1的位置表示方法比詞項-文件矩陣更加合理。於是,這裡我們接觸到了資訊檢索的第乙個核心概念—倒排索引。倒排索引的基本思想如下圖。

那麼,如何構建倒排索引呢?下面列出構建索引的主要步驟:

(1)收集需要建立索引的文件,如:

(2)將每篇文件轉換成乙個個詞條的列表,即詞條化:

(3)進行語言學預處理,產生歸一化的詞條來做詞項,如:

(4)對所有文件按照其中出現的詞項來建立倒排索引,索引中包括一部詞典和乙個全體倒排記錄表。

下圖是乙個完整的例子:

在最終得到的倒排索引中,詞典和倒排記錄表都有儲存開銷。前者往往放在記憶體中,而後者由於規模大得多,通常放在磁碟上。那麼,對於單個倒排記錄表應該採用怎樣的資料結構呢?可以採用兩種比較好的儲存方法:一是鍊錶,二是變長陣列

今天記錄的內容到此為止,明天繼續~~~(以上內容都是書中內容,我只是總結了一下關鍵點)

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

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

布林檢索和向量空間模型 nlp基礎學習筆記

首先說布林檢索,顧名思義 用0,1 代表真假值來進行檢索。比如兩句話 我愛吃鴨,他愛吃雞 可以構造出乙個二維矩陣 橫座標是每一句話包含的資訊,縱座標是所有文字 句子1 句子2句子n。你0 0。我1 0。他0 1。吃1 1。等等。當使用者想要檢索某些文字的時候 直接查詢對應的文章就好了。但是這樣表述太...

資料探勘學習筆記(一)

資料分析與資料探勘 1.資料分析 採用適當的統計分析方法對收集到的資料進行分析 概括和總結,對資料進行恰當的描述,提取有用的資訊的過程。2.資料探勘 data mining,dm 從海量的資料中通過相關的演算法來發現隱藏在資料中的規律和知識的過程。為什麼要進行資料探勘呢?通常將資料探勘視為資料中 知...