《資訊檢索導論》第二章總結

來源:互聯網
上載者:User
文章目錄
  • 3.biword inverted index
  • 折中策略:
建立倒排記錄表之前一、檔案的編碼

一般一個檔案都是以位元組的方式儲存的,如果想要讓其可讀,就必須要通過正確的編碼方式轉換成字元;就像Java IO一樣,如果沒有通過正確的編碼方式開啟一個檔案,會出現亂碼。因此在一系列處理步驟之前,知道文檔的編碼是重要的。一般在文檔的meta data部分都會儲存編碼方式。


二、索引粒度

索引粒度的選取也是很重要的。因為如果把索引粒度選的太大,比如你想找Information Retrieval,如果索引粒度為整本書,則只要出現Information和Retrieval的書都會被選中,這非常不精確。


三、Tokenization

詞條化:這個方法就像Java中StringTokenizer的用法,將一個文檔(長的字串)切分成一個個小單詞。

Token:詞條化後的一個個單詞;

Type:將詞條化的單詞放入集合後的結果。

Term:將Type進行歸一化後的結果,即dictionary中能找到的詞。

比如 a apple and a banana  ;有5個token,4個type(a合并),2個Term(去除停用詞);


四、Stop words

停用詞就是一些很常用的詞,比如the , a 等;這些詞因為出現的次數很多,每篇文檔都會出現,所以如果要讓他也在倒排索引中,則會引起posting過大的情況。

注意:

(1)有時去除停用詞的方法也會有問題,比如:to be or not to be,to be 都是停用詞,那麼查詢變成了 or not,則意義完全不一致。

(2)去除停用詞是應用於文檔和查詢的,在文檔中,不對停用詞構建倒排索引,而在查詢中,也去除停用詞,只將其他詞做索引。

去除停用詞缺點:會使表達的語義不一致,比如from Shanghai to BeiJing;變成Shanghai Beijing 則語義會不一致;


五、等價類別

如果有一個等價類別:{A,B,C,D};如果需要查詢A,則等同於查詢A,B,C,D;

而Normalization就是利用等價類別,常用的方法是:大小寫轉換(case folding);

注意:

(1)大小寫轉換也會有缺點:比如C.A.T,會轉換成cat ,偏離了原本意義。

(2)等價類別也是同時應用於查詢和文檔的。


六、stemming和lemmatization

Stemming:簡單的通過截取的方式去除首碼和尾碼。比如solution,變成 solu;

詞幹還原能夠提高查全率,降低查准率;因為比如respective和respectability都轉換成respect,但是意義卻不一樣,因此在查詢respectability時,會通過stemming轉換成respect,並且查詢到respective。

stemming能夠降低dictionary的大小;

Porter演算法:一種針對英文,有效詞幹分析的演算法。

Porter預先會給出一些mapping:

tion--->空

IES---->I

等等;

規則1:去除尾碼後長度大於1;

規則2:當多條匹配時,則取最長的。

Lemmatization:通過詞典的分析來進行合理地去除詞綴,比如men,變成man;

lemma:詞形分析後得到的單詞;

 

注意:詞幹還原和詞形分析是對文檔和查詢詞使用的,因此在建立索引是就會把respective和respectability解析成一個respect,即dictionary中是respect,posting是這兩個詞的docID的並集。而在查詢時如果查詢的詞是respective,則會進行詞幹還原,並變成respect後在倒排索引中尋找。

 

倒排記錄表的結構1.含有Skip pointer的inverted index 

原本的倒排記錄表合并演算法需要O(m+n),但是如果使用了跳錶,則可以達到次線性時間。

在posting中包含skip pointer,可以跳過那些肯定不在結果中的docID,並且只適用於AND操作

通常:每(根號p)處放一個倒排指標,p為倒排記錄表的長度;

比如:有16個docID,如下:

 

則每四個放置一個跳錶,即1-->5,5-->9,9-->13,13-->17;

注意:這種方法適用於倒排索引穩定的前提;

2.positional inverted index

在posting的每個docID後面跟上單詞出現的位置,比如:apple  ----->     1(2,3,4) ;2(4,5,6);    

注意:positional index可以進行鄰近搜尋,而二元詞不能。

缺點:倒排記錄表的posting太大。

應用:處理鄰近查詢。

採用positional index進行合并需要的複雜度是O(T);   T是文檔集中詞條數目;


3.biword inverted index

將兩個詞看成一個item,即在dictionary中都是兩個詞為一組。

比如invert and revert,則會變成invert and和and revert;但是這種做法使得倒排記錄表迅速變大。

這種方法的缺點很多:

(1)不適用於單詞查詢。

(2)倒排記錄表太大。

(3)查詢有時還不正確。需要進行後過濾(即在查詢片語中過濾一遍)

折中策略:

(1)對於單個單詞出現次數非常多,而組成一個片語後出現次數大大減少的片語,用biword index;

(2)對於那些經常被使用者查詢的片語,使用biword index;

(3)其餘使用positional index;

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.