《introduction to information retrieval》信息检索学习笔记2 词项词汇和倒排记录表
第2章 詞項詞匯和倒排記錄表
回顧建立倒排索引的主要步驟:
1.收集要索引的文檔。
2.詞條化文本。
3.對詞條進行語言預處理,生成標準化詞條。
4.建立倒排索引,索引每個詞項出現(xiàn)的文檔。
2.1文檔描述和字符序列解碼
1.在文檔中獲取字符序列
文檔處理第一步:將文檔中的字節(jié)序列轉換成字符的線性序列
(1)確定編碼方案(可看作機器學習分類的問題,但通常通過啟發(fā)式方法、用戶選擇或使用提供的文檔元數(shù)據(jù)處理)
(2)確定文檔格式(通常通過授權一個處理解碼文檔格式和字符編碼的軟件庫解決)
*文本本質上是線性結構,字符的概念上的線性順序并不一定是在頁面上看到的順序,使用現(xiàn)代的Unicode表示概念,文件中的字符順序與概念順序相匹配,而顯示字符的反轉是由呈現(xiàn)系統(tǒng)處理。
2.選擇文檔單位
索引粒度:假設文檔是用于索引的固定單位,有時可能想要將文件所包含的每個文件作為單獨的文檔進行處理(Unix中),有時可能想要將多個文件合并到單個文檔中(Web中),由此引出索引粒度問題。
精度/返回的權衡:如果單位太小,很可能會錯過重要的段落,因為詞項是在幾個小文檔上分布的;如果單位太大,傾向于得到虛假的匹配,相關信息很難被發(fā)現(xiàn)
*大型文檔單位的問題可以通過使用顯式或隱式近距離搜索來緩解。
2.2決定詞項的詞匯
1.詞條化
·詞條化:給定一個字符序列和一個已定義的文檔單位,詞條化是將其分割成子序列的過程,這些子序列稱為詞條,可能同時會丟棄某些字符,比如標點符號。
·詞條:是某些特定文檔中一系列字符的一個實例,這些字符被分組以作為一個有用的語義單元進行處理。
·類型:是包含相同字符序列的所有詞條詞項的類。
·詞項:是一個(可能是規(guī)范化的)類型,它包含在IR系統(tǒng)的字典中。
簡單的策略是在所有非字母數(shù)字字符上進行分割,而實際的詞條化處理時復雜的:
(1)詞條化的問題是特定于語言的,大多數(shù)語言都有獨特的標記模式,如編程語言c++和c#等。
(2)連字符(hyphenation),如co-education和hold-him-back-and-drag-him-away,自動處理連字符可能是復雜的,既可以作為分類問題處理,也可以通過一些啟發(fā)式規(guī)則處理。
(3)空白區(qū)域上的分割,如York University 的搜索會返回包含New York Universty的文檔,即在空格上分割詞條化導致糟糕的檢索結果。
(4)不同種語言問題,如法語中撇號的不同用法、德語在沒有空格的情況下寫復合名詞等。
*對于布爾或自由文本查詢,希望對文檔和查詢詞進行完全相同的詞條化,通常通過使用相同的記號賦予器處理查詢,保證文本中的字符序列總是與在查詢中輸入的相同序列匹配。
*東亞語言,如漢語、日語、韓語和泰語中文字沒有任何空格。一個方法是將單詞分割作為先前的語言處理。另一種方法是放棄基于文字的索引,并通過字符的短子序列完成所有的索引。
2.刪除常用詞項:停用詞
·停止詞:一些非常常見的在幫助選擇匹配用戶需求的文檔時顯得毫無價值,完全被排除在詞匯表之外的詞。
√ 決定停用詞表的普遍策略:通過“收集頻率”(每個詞項出現(xiàn)在文檔集合中的總次數(shù))排序詞匯,取最常見的詞項,經常手動過濾域與被索引文檔相關的語義內容。
√ 優(yōu)點:使用停用詞表可顯著減少系統(tǒng)必須存儲的倒排記錄表數(shù)量
√ 缺點:短語搜索中可能不正確,如“President of the United States”包含兩個停止詞,比President AND “United States”更精確
√ 在路透社-rcv1中常見的25個語義非選擇性詞的停用詞表:
√ 現(xiàn)代IR系統(tǒng)總體趨向于不去掉停用詞原因:
良好的壓縮技術大大降低了存儲普通單詞倒排記錄表的成本。
標準的詞項權重如何導致非常普通的詞對文檔排名影響不大。
一個帶有影響排序的索引的IR系統(tǒng)可以在權重變小的時候終止對倒排記錄表的掃描,即使停止詞列表很長,普通的單詞也不會引起平均查詢中產生大量額外的處理成本。
3.詞條歸一化(詞項的等價分類)
·詞條歸一化:將不完全一致的詞條規(guī)范為一個等價類的過程,即使在詞條的字符序列中存在表面差異,也會發(fā)生匹配。
(1)最規(guī)范化的標準方法:隱式地創(chuàng)建等價類,使用映射規(guī)則來刪除句點、連字符(“anti-discriminatory"和"antidiscriminatory"映射到詞項"antidiscriminatory”)
(2)創(chuàng)建等價類的另一種方法:維持非歸一化詞條之間的關聯(lián)關系,這個方法可以擴展到手工構建的同義詞列表,比如car和automoble。
√兩種方式實現(xiàn):
①通常的方法:索引非歸一化的詞條,并維護多個詞匯表條目的查詢擴展列表,以考慮特定的查詢詞項。查詢car時,合并car和automobile的倒排索引。
②另一種方法:在索引結構中執(zhí)行擴展。當文檔包含automobile時,也將它在car下進行索引。
√優(yōu)缺點:這些方法中的任何一種都比等價類的效率低得多,更多的倒排記錄表需要存儲和合并。第一種方法添加了查詢擴展字典,在查詢時需要更多的處理,而第二個方法則需要更多的空間來存儲帖子;由于現(xiàn)代存儲成本,不同的倒排記錄表使靈活性增加。
(3)常用的歸一化形式及實現(xiàn):
口音和變音符號:通過規(guī)范化詞條消除變音符,最好將所有的單詞與一種沒有變音符的形式等同起來。
樣例折疊:通過將所有字母減少到小寫字母來進行樣例折疊
*被索引的文檔集合可以包括來自許多不同語言的文檔:最常見的情況是,語言被檢測到,語言特定的詞條化和規(guī)范化規(guī)則應用于預先確定的粒度。當文檔集合包含多種語言時,單個索引可能必須包含幾種語言的詞項。一種選擇是在文檔上運行語言識別分類器,然后在詞匯表中為其語言詞條化詞項。
*處理外來詞或復雜詞匯時,拼寫可能不清楚,可能有不同的音譯標準,一種解決方法是使用啟發(fā)式到等價類,或者用語音對等物擴展詞項。傳統(tǒng)和最著名的算法是Soundex算法。
4.詞干還原(stemming)和 詞形歸并(lemmatization)
詞干還原和詞形歸并的目標:減少屈折形式,有時將一個詞的相關派生形式轉變?yōu)榛拘问健@?#xff1a;am,are,is ->be ; car,cars,car’s,cars’ -> car
·詞干還原(stemming):通常指的是一種粗糙的啟發(fā)式過程,它可以將單詞的末端切掉,希望大多數(shù)時候都正確地實現(xiàn)這個目標,并且常常包括取消派生的詞綴。如果遇到詞條saw,可能會返回s。
·詞形歸并(lemmatization):通常指的是用詞匯和詞匯的形態(tài)分析處理,通常目的是去除曲折的結尾,并返回一個詞的基本或字典形式。遇到詞條saw,詞形歸并會嘗試返回see或saw(取決于詞條的使用是作為一個動詞還是一個名詞)
(1)不同點:詞干還原在一般情況下會將多個派生相關詞合并在一起,而詞形歸并通常只將同一詞元的不同屈折形式進行合并。Stemmers使用特定于語言的規(guī)則,但它們需要的知識比一個lemmatizer需要更少的知識,它需要一個完整的詞匯表和形態(tài)分析來精確地使單詞化。
(2)對詞干還原和詞形歸并的語言處理通常是由一個附加的插件組件到索引過程來完成的,有許多這樣的組件存在,包括商業(yè)和開放源碼。
(3)常見的詞干還原算法:Porter stemmer、Lovins stemmer、Paice stemmer
2.3 快速倒排記錄表合并,通過跳表指針
回顧基本倒排記錄表的交集操作:同時遍歷兩個倒排記錄表,如果列表長度是m和n,那么交集時間線性,O(m+n)。
·跳躍表:倒排記錄表合并算法的優(yōu)化,通過使用跳躍指針(在索引時)增加倒排記錄表
(1)高效合并:以圖2.1為例。假設在每個列表上匹配了【8】,并將其移動到結果列表中,推進指針,上面的列表給出【16】,下一個列表有【41】。最小的項是頂部列表中的元素【16】。首先應檢查跳躍表指針,并注意到【28】也小于【41】,而不是簡單地推進上面的指針。因此,我們可以遵循跳躍表指針,然后將上指針推進到【28】。避免了上一列表的【19】和【23】。
(2)放置跳躍:是一個權衡。跳表指針越多意味著跳躍時間越短。但它也意味著大量的比較和大量的空間存儲跳過指針。跳表指針越少意味著很少的指針比較,但是跳躍時間變長,這意味著跳越的機會將會減少。
√ 簡單的放置跳躍的啟發(fā)式方法:對于一個長度為P的倒排記錄表,使用間隔的跳躍指針。這種啟發(fā)式可以改進;它忽略了查詢詞項分布細節(jié)。
√ 如果索引是相對靜態(tài)的,那么構建有效的跳躍指針是很容易的;如果一個倒排記錄表因為更新而不斷變化,構建會較難。惡意刪除策略可能使跳躍表無效。
圖2.1 有跳躍指針的倒排記錄表
圖2.2 帶跳躍指針的倒排記錄表的合并算法
2.4 位置信息和短語查詢
大多數(shù)搜索引擎支持雙引號語法用于短語查詢,多達10%的web查詢是短語查詢,更多的是隱式短語查詢(如人名),不使用雙引號。為了能夠支持這樣的查詢,對于倒排記錄表來說,僅僅是包含單個詞項的文檔列表是不足夠的。
1.雙詞索引(Biword indexes)
(1)雙詞索引(Biword indexes)
√ 處理短語的一種方法:將文檔中的每一對連續(xù)的詞項看作一個短語。
例如, Friends,Romans,Countrymen會產生二元接續(xù)詞對:
friends romans,romans countrymen
√ 將每個詞對看成一個詞項,更長的短語可以通過分解來處理。
例如,查詢 stanford university palo alto分成如下的布爾查詢:
“stanford university” AND “university palo” AND “palo alto”
(2)擴展的雙詞(Extended Biword)
√ 首先對文本進行詞條化,并執(zhí)行詞性標注。然后將詞項分組到名詞中,包括專有名詞(N)和函數(shù)詞,包括文章和介詞(X),以及其他類。現(xiàn)在,我們認為任何形式的NX*N的形式都是一個擴展的雙詞。每一個這樣的擴展雙詞都在詞匯表中被定義為一個詞項。
√ 要使用一個擴展的雙詞索引來處理查詢,我們還需要將其解析為Ns和Xs,然后將查詢分割成擴展的雙詞,在索引中查找。
√ 存在的問題:
在不檢查文檔的情況下,我們不能驗證與布爾查詢匹配的文檔是否真正包含了最初的單詞短語。
在將較長的查詢解析成布爾查詢時,這種算法并不總是以直觀的方式工作。
·短語索引(phrase index):雙詞索引的概念可以擴展到更長的單詞序列,如果索引包含可變長度的單詞序列,那么它通常被稱為短語索引。
2.位置索引(Positional indexes)
·位置索引:對于索引詞匯表中的每一項,都儲存文檔的位置(position1,position2,…),每個位置都是文檔中的詞條索引。如:
圖 2.3 to 和be的位置索引
√要處理短語查詢,仍需要為每個單獨的詞項訪問倒排索引。在合并操作中,使用與以前相同的通用技術,但不是簡單地檢查兩個詞項是否都在一個文檔中,還需要檢查它們在文檔中的位置是否與查詢短語一致。這需要計算單詞之間的偏移距離。
√同樣的通用方法也適用于k字近距離搜索:
在這里,/k表示在k個單詞(在任何一邊)。顯然位置索引可以處理鄰近式查詢,而雙詞索引不能。
圖2.4一種用于k個詞近距離搜索的算法,該算法找到兩個詞項在k個單詞中出現(xiàn)的位置,并返回一個三元組列表,給出p1和p2的詞項位置。
√ 位置索引的大小。采用位置索引可以顯著地擴展所需的倒排記錄表存儲,事實上,移動到位置索引也會改變一個倒排記錄表交集操作的漸近復雜度,因為要檢查的項目的數(shù)量不是由文檔數(shù)量限制的,而是由文檔集合t中的詞條總數(shù)限制的。也就是說,布爾查詢的復雜性是O(T)而不是O(N)。然而,大多數(shù)應用程序都別無選擇,只能接受這一點,因為大多數(shù)用戶現(xiàn)在期望擁有短語和近距離搜索的功能。
3.組合方案(Combination schemes)
√ 如果用戶經常查詢特定的短語,如Michael Jackson,那么合并位置索引的倒排記錄表是低效的。
√ 組合策略:用于某些查詢使用短語索引或者僅使用雙詞索引,其他短語查詢使用位置索引。√ 在短語索引中包含的好的查詢可以基于最近的查詢行為統(tǒng)計。但這并不是唯一的標準:成本高的短語查詢是那些常見的單個單詞,但組合起來卻相對少見的短語。
添加Britney Spears作為短語索引條目,可能只會給查詢加速3倍,因為大多數(shù)提到這兩個單詞的文檔都是有效的文檔,而添加The Who作為短語索引可能會使查詢速度提高1 000倍。因此后者更可取,即使它是相對不那么常見的。
√ Williams等人(2004)評估了一種更復雜的方案,它使用這兩種方法的索引,以及部分下一個詞索引。對于每一項,下一個單詞索引記錄了在文檔中下一個詞項。他們的結論是,這樣的策略允許在使用位置索引的1/4的時間內完成web短語組合查詢,而單獨使用位置索引的空間則要多出26%。
總結
以上是生活随笔為你收集整理的《introduction to information retrieval》信息检索学习笔记2 词项词汇和倒排记录表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《introduction to inf
- 下一篇: nacos使用mysql8作为存储媒介时