搜索引擎是如何工作的

擊上方“朱小廝的博客”,選擇“設爲星標”

後臺回覆"",獲取近百本電子書入口

源:22j.co/bsmg

英文原文鏈接:http://www.infotoday.com/searcher/may01/liddy.htm

搜索引擎是信息檢索(IR)系統的通俗叫法。雖然研究和開發人員看待IR系統的眼光更寬一些,但用戶想到它們更多的是根據他們期望系統能做的功能 — 即搜索網絡,或者企業內部網,或者一個數據庫。事實上用戶會更喜歡一個發現引擎,而不僅僅是一個搜索引擎。

搜索引擎匹配查詢到它們創建的索引上。這個索引包含每個文檔的單詞,和能指向文兒當地址的指針。這被叫做倒排索引文件【 inverted file】。一個搜索引擎或者IR系統包括四個基本的模塊:

  1. 一個文檔處理器

  2. 一個查詢處理器

  3. 一個搜索和匹配功能

  4. 一個排名能力

雖然用戶關注的點是“搜索”,但是搜索和匹配功能僅僅是這四個模塊裏的其中之一。這四個模塊中的每一個都可能導致用戶在使用搜索引擎時獲得預期或意外的結果。

文檔處理器

文檔處理器準備,處理和輸入用戶搜索的文檔,頁面或站點。文檔處理器執行以下部分或全部步驟:

  1. 將文檔流規範化爲預定義格式。

  2. 將文檔流分解爲所需的可檢索單元。

  3. 隔離和元標記每個子文檔塊。

  4. 標識文檔中潛在的可索引元素。

  5. 刪除停用詞。

  6. 詞根化檢索詞。

  7. 提取索引條目。

  8. 計算權重。

  9. 創建並更新搜索引擎搜索的主要倒排索引文件,以便將查詢與文檔進行匹配。

第1-3步:預處理。 雖然是必不可少的步驟並且可能對影響搜索結果很重要,但前三個步驟只是簡單地標準化了各種來源或者處理各種網站時遇到的多種文件格式。這些步驟用於將所有數據合併爲一個一致的數據結構,所有下游進程都可以處理。對於格式良好,格式一致的需求與文檔處理的後續步驟的複雜性是成重要正比的。第二步很重要,因爲存儲在倒排索引文件中的指針將使系統能夠檢索各種大小的單元 - 站點,頁面,文檔,章節,段落或句子。

第4步:確定要索引的元素。 識別文檔中潛在的可索引元素會顯著的影響引擎將要搜索的文檔表示的性質和質量。在設計系統時,我們必須定義“檢索詞【term】”一詞。它是空格或標點符號之間的字母數字字符嗎?如果是這樣,那麼非成分短語怎麼辦(單詞中沒有表達短語含義的短語,如“skunk works”或“hot dog”)【譯者注:skunk works指特殊團隊,hot dog指熱狗(麪包夾薰紅腸)】,多字專有名稱,或連字符或撇號等詞間符號,可以表示 "small business men"與small-business men之間的區別。【譯者注:small business men的含義爲身材矮小的生意人,mall-business men的含義爲小生意人 】。每個搜索引擎都依賴於其文檔處理器必須執行的一組規則來確定“分詞器【tokenizer】”將採取的操作。分詞器【tokenizer】即用於定義適合索引的檢索詞的軟件。

第5步:刪除停用詞。 此步驟通過消除進一步處理以及潛在的匹配(那些對於查找有用文檔以及響應客戶查詢沒什麼價值的檢索詞),來幫助節省系統資源。當內存變得更加便宜且系統速度變得更快,這個比起現在可能沒多少價值了,但由於停用詞可能佔文檔中的文本詞高達40%,因此它仍具有一定的意義。停用詞列表通常由已知傳達一些實質意義的詞類組成,例如冠詞(a,the),連詞(and, but),感嘆詞(oh, but),介詞(in, over),代詞(he, it)和“將來”動詞的形式(is, are)。爲了刪除停用詞,算法將文檔中的索引詞候選詞與停用詞列表進行比較,並從搜索索引中刪除這些詞語。

第6步:檢索詞詞根化(詞幹提取)。 詞幹提取可以在一層又一層的處理中遞歸地刪除單詞後綴。這個過程有兩個目標。在效率方面,詞幹提取減少了索引中唯一單詞的數量,從而減少了索引所需的存儲空間並加快了搜索過程。在有效性方面,詞幹提取通過將所有形式的單詞縮減爲基礎詞或詞幹形式來改善檢索。

例如,如果用戶要查詢analyze,他們可能還需要包含analysis,analyzing,analyzer,analyzes和analyzed的文檔。因此,文檔處理器會根據文檔術語進行分析,以便包含各種形式的analy-的文檔會被同等概率的重新取回。如果引擎僅單獨索引變量形式並且要求用戶輸入全部檢索詞,則不會發生這種情況。當然,詞根化確實有缺點。它可能會對所有形式的詞幹匹配的精度產生負面影響,當現實中,用戶希望查詢結果僅僅來自匹配查詢中實際使用的單詞時。

系統可以實現強幹擾算法或弱干擾算法。強幹擾算法將去除構形後綴(-s,-es,-ed)和派生後綴(-able,-aciousness,-ability),弱干擾算法只會去除構形後綴(-s, -es,-ed)。第7步:提取索引條目。完成步驟1到6後,文檔處理器從原始文檔中提取剩餘的條目。例如,以下段落是要發送到搜索引擎進行處理的全文:

Milosevic's comments, carried by the official news agency Tanjug, cast doubt over the governments at the talks, which the international community has called to try to prevent an all-out war in the Serbian province. "President Milosevic said it was well known that Serbia and Yugoslavia were firmly committed to resolving problems in Kosovo, which is an integral part of Serbia, peacefully in Serbia with the participation of the representatives of all ethnic communities," Tanjug said. Milosevic was speaking during a meeting with British Foreign Secretary Robin Cook, who delivered an ultimatum to attend negotiations in a week's time on an autonomy proposal for Kosovo with ethnic Albanian leaders from the province. Cook earlier told a conference that Milosevic had agreed to study the proposal.

步驟1到6爲了搜索將此文本減少到以下內容:

Milosevic comm carri offic new agen Tanjug cast doubt govern talk interna commun call try prevent all-out war Serb province President Milosevic said well known Serbia Yugoslavia firm commit resolv problem Kosovo integr part Serbia peace Serbia particip representa ethnic commun Tanjug said Milosevic speak meeti British Foreign Secretary Robin Cook deliver ultimat attend negoti week time autonomy propos Kosovo ethnic Alban lead province Cook earl told conference Milosevic agree study propos.

然後插入步驟7,並將輸出存儲在倒排索引文件中,該文件列出了索引條目以及它們的位置和出現頻率。但是,索引條目的具體性質將根據步驟4中確定“要索引的元素”而有所不同。更復雜的文檔處理器將具有短語識別器,以及命名實體識別器和分類器,確保像Milosevic【米洛舍維奇(人名)】這樣的索引條目被標記爲人,並將諸如Yugoslavia【南斯拉夫】和Serbia【塞爾維亞】等條目標記爲國家。

第8步:檢索詞權重分配。 權重分配給索引文件中的檢索詞。最簡單的搜索引擎只分配二進制權重:1表示存在,0表示沒有。搜索引擎越複雜,加權方案就越複雜。測量文檔中檢索詞出現的頻率會產生更復雜的加權,頻率的長度歸一化更復雜。多年來在信息檢索研究方面的豐富經驗清楚地表明,最佳權重來自於使用“tf / idf”。該算法測量文檔中每個檢索詞的出現頻率。然後,它將該頻率與整個數據庫中出現的頻率進行比較。

並非所有檢索詞都是好的“鑑別器” — 也就是說,所有檢索詞都不會很好地從另一個文檔中挑出一個文檔。一個簡單的例子就是“the”這個詞。這個詞出現在太多的文件中,以幫助區分彼此。一個不太明顯的例子是“antibiotic【抗生素】”這個詞。在體育數據庫中,我們將每個文檔與整個數據庫進行較,“antibiotic【抗生素】”一詞可能是文件中的一個很好的鑑別者,因此會被賦予很高的權重。相反,在專門用於健康或醫學的數據庫中,“antibiotic【抗生素】”可能是一種差的鑑別因素,因爲它經常出現。TF / IDF加權方案爲那些真正區分一個文檔與其他文檔的檢索詞分配了更高的權重。

第9步:創建索引。 索引或反向索引文件是存儲索引信息的內部數據結構,將被每個查詢搜索到。反向索引文件的範圍從一組索引的文檔/頁面中的每個字母數字序列的簡單列表,以及序列發生的文檔的整體識別號,更復雜的條目列表,tf / idf權重,以及指向術語每個文檔內部位置的指針。索引中的信息越完整,搜索結果就越好。

查詢處理器

查詢處理有七個可能的步驟,儘管系統可以縮短這些步驟並在處理期間將查詢匹配到多個位置中的任何一處反向索引文件。文檔處理與查詢處理共享許多步驟。更多的步驟和更多的文檔使得該過程在計算資源和響應性方面的處理更加昂貴。但是,等待結果的時間越長,結果的質量就越高。因此,搜索系統設計者必須選擇對用戶最重要的東西 - 時間或質量。公開可用的搜索引擎通常更多選擇的時間而不是質量,因爲有太多要搜索的文檔了。

查詢處理中的步驟如下(使用選項停止處理並開始匹配,表示爲“Matcher【匹配程序】”):

  • 標記【Tokenize】查詢檢索詞。

  • 識別查詢檢索詞與特殊運算符。

————————> Matcher

  • 刪除停用詞。

  • 詞根化單詞。

  • 創建查詢表示

————————> Matcher

  • 展開查詢檢索詞

  • 計算權重。

————————> Matcher

第1步:標記【Tokenizing】。 用戶輸入查詢後立即搜索引擎 — 無論是基於關鍵字的系統還是完整的自然語言處理(NLP)系統 — 必須將查詢流標記化,即,將其分解爲可理解的部分。通常,token被定義爲在空格和/或標點符號之間出現的字母數字字符串。

第2步:解析。 由於用戶可以在其查詢中使用特殊運算符,包括布爾運算符,鄰接運算符或鄰近運算符,因此係統需要首先將查詢解析爲查詢項和運算符。這些運算符可以以保留標點符號(例如,引號)或專用格式的保留術語(例如,AND,OR)的形式出現。在NLP系統的情況下,無論如何表達運算符(例如,介詞,連詞,排序),查詢處理器將隱式地識別所使用的語言中的運算符。

此時,搜索引擎可以獲取查詢術語列表並針對倒排索引文件搜索它們。事實上,這是大多數公開搜索引擎執行搜索的點。

第3和4步:停止列表和詞幹提取【 Stop list and stemming】。 一些搜索引擎會更進一步,停止列表並阻止查詢,類似於上面文檔處理器部分中描述的過程。停止列表還可能包含常見查詢短語中的單詞,例如“我想了解有關的信息【I'd like information about】”。然而,由於大多數公開可用的搜索引擎鼓勵非常短的查詢,如所提供的查詢窗口的大小所示,引擎可能會放棄這兩個步驟。

第5步:創建查詢。 每個特定搜索引擎如何創建查詢表示取決於系統如何進行匹配。如果使用基於統計的匹配器,則查詢必須與系統中文檔的統計表示相匹配。好的統計查詢應該包含許多同義詞和其他查詢詞,以便創建完整的表示。如果使用布爾匹配器,則系統必須創建由AND,OR或NOT連接的術語的邏輯集。

NLP系統將識別單個術語,短語和命名實體。如果它使用任何布爾邏輯,它還將識別步驟2中的邏輯運算符,並創建包含AND'd,OR'd或NOT'd的術語邏輯集的表示。

此時,搜索引擎可以採用查詢表示並針對反向索引文件執行搜索。更高級的搜索引擎可能需要兩個步驟。

第6步:查詢擴展。 由於搜索引擎的用戶通常只在查詢中包含他們信息需求的單個陳述,因此很可能他們需要的信息可以使用同義詞來表達,而不是搜索引擎搜索的文檔中的確切查詢詞。因此,更復雜的系統可能會將查詢擴展爲所有可能的同義詞,甚至可能的更廣和更窄的術語。

這個過程接近搜索中介在早期商業搜索系統中爲最終用戶所做的事情。當時,中介可能使用了將主題描述符分配給文檔的索引器所使用的相同受控詞彙表或詞庫。今天,WordNet等資源通常是可用的,或專門的擴展設施可以採取初始查詢並通過添加相關詞彙來擴大它。

第7步:查詢檢索詞【term】加權(假設多個查詢檢索詞)。 查詢處理的最後一步涉及計算查詢中查詢詞的權重。有時,用戶通過指示每個查詢詞的權重或者簡單地查詢中哪個查詢詞來控制該步驟,或查詢中的概念最重要,並且必須出現在每個檢索到的文檔中以確保相關性。

將權重留給用戶並不常見,因爲研究表明用戶並不是特別擅長確定術語在查詢中的相對重要性。由於幾個原因,他們不能做出這個決定。首先,他們不知道數據庫中還有什麼,並且通過與整個數據庫進行比較來對文檔術語進行加權。其次,大多數用戶尋求有關不熟悉主題的信息,因此他們可能不知道正確的術語。很少有搜索引擎實現基於系統的查詢加權,但有些搜索引擎通過將查詢中的第一項視爲具有更高的重要性來進行隱式加權。引擎使用此信息向用戶提供文檔/頁面列表。

在最後一步之後,針對文檔的反向索引文件搜索擴展的加權查詢。

搜索和匹配功能

系統如何執行其搜索和匹配功能有所不同,信息檢索的理論模型是系統設計理念的基礎。由於這些模型之間的區別遠遠超出了本文的目標,因此我們將在以下搜索和匹配功能的描述中進行一些廣泛的概括。那些對進一步細節感興趣的人可以參考R. Baeza-Yates和B. Ribeiro-Neto關於IR的卓越的教科書(Modern Information Retrieval,Addison-Wesley,1999)。

在倒排索引文件中搜索滿足查詢要求的文檔,簡稱爲“匹配【matching】”,通常是標準二進制搜索,無論搜索是在查詢處理的前兩個,五個還是所有七個步驟之後結束。雖然簡單的,未加權的非布爾查詢匹配所需的計算處理比加權內的基於NLP的查詢模型簡單得多,布爾模型,它也遵循文檔表示更簡單,查詢表示和匹配算法,結果相關性較小,,除了非常簡單的查詢,例如尋求最普遍已知信息的單字,非模糊查詢。

在某種程度上確定了哪個文檔或頁面子集符合查詢要求,基於系統使用的評分算法,在查詢和每個文檔/頁面之間計算相似性得分。評分算法排名基於查詢詞的存在/不存在,檢索詞頻率,tf / idf,布爾邏輯實現或查詢詞權重。

一些搜索引擎使用的評分算法不是基於文檔內容的,而是基於文件之間的關係或過去的文件/頁面的檢索歷史。

在計算文檔子集中的每個文檔的相似性之後,系統向用戶呈現有序列表。文件排序的複雜程度又取決於系統使用的模型,以及文檔和查詢加權機制的豐富性。例如,搜索引擎,只需要查詢的字母數字在任何地方出現的地方,在任何順序中,在文檔中將產生與搜索引擎非常不同的排名,搜索引擎在語言上糾正文檔和查詢表示的措辭,並使用經過驗證的tf / idf加權方案。

但是搜索引擎決定排名,排名結果列表發送給用戶,然後用戶只需單擊並按照系統的內部指針指向所選文檔/頁面。

更復雜的系統將在此階段進一步發展,並允許用戶提供一些相關性反饋或根據他們看到的結果修改他們的查詢。如果其中任何一個可用,然後,系統將調整其查詢結果以反映此增值反饋,並使用改進的查詢重新運行搜索,使用改進的查詢來生成一組新文檔或從初始搜索中對文檔進行簡單的重新排序。

哪些文檔特徵與查詢匹配良好

我們已經討論了搜索引擎的工作原理,但是查詢的哪些功能可以實現良好的匹配?讓我們看一下關鍵特性,並考慮它們在幫助檢索文檔/頁面的良好表現方面的一些優點和缺點。

檢索詞頻率: 查詢檢索詞在文檔中出現的頻率是確定文檔與查詢相關性的最明顯方法之一。雖然大多數情況下是這樣的,有幾種情況可以破壞這個前提。首先,許多單詞具有多重含義 - 它們是多義的。例如這樣的詞"pool"或者”fire“。呈現給用戶的許多不相關文檔來自匹配正確的單詞,但具有錯誤的含義。

此外,在特定域中的文檔集合中,例如教育【education】,諸如“教育【education】”或“教學【teaching】”之類的常見查詢術語是如此常見並且如此頻繁地發生,引擎區分集合中相關與不相關的能力會急劇下降。不使用tf / idf加權算法的搜索引擎不會對過於頻繁的術語進行適當的減重,也沒有將更高的權重分配給適當的區分(和不常發生的)檢索詞,例如“早期童年【early-childhood】”。

檢索詞的位置: 許多搜索引擎優先考慮標題或引導段落或文檔元數據中的單詞。一些研究表明,一個術語出現在文檔或頁面上的位置 - 表明它對文件的重要性。因此,在與查詢檢索詞匹配的文檔或頁面的標題中出現的檢索詞的權重通常比在文檔正文中出現的檢索詞更重要。類似地,在章節標題或文檔的第一段中出現的檢索詞更有可能是相關的。

鏈接分析: 基於網絡的搜索引擎爲頁面加權和排名引入了一個截然不同的功能。鏈接分析有點像書目引用實踐,例如Science Citation Index使用的那些。鏈接分析基於每個頁面的良好連接,如Hubs和Authorities所定義的那樣,Hub文檔鏈接到大量其他頁面(out-links),Authority文檔是許多其他頁面引用的文檔,或者具有大量“in-links” (J. Kleinberg, "Authoritative Sources in a Hyperlinked Environment," Proceedings of the 9th ACM-SIAM Symposium on Discrete Algorithms. 1998,pp. 668-77).

流行度: 谷歌和其他幾個搜索引擎增加了鏈接分析的流行度,以幫助確定頁面的相關性或價值。受歡迎程度利用所有用戶選擇頁面的頻率數據作爲預測相關性的手段。雖然流行度有時是一個很好的指標,但它假設基礎信息需求保持不變。

公佈日期: 一些搜索引擎假設信息越新,它就越有可能對用戶有用或相關。因此,搜索引擎呈現的是離現在最近的結果。

長度: 雖然長度本身不一定預測相關性,它是用於計算類似頁面的相對價值的一個因素。因此,在兩個包含相同查詢檢索詞的文檔之間進行選擇,假定包含相對於文檔長度的檢索詞出現比例較高的文檔更可能是相關的。

查詢檢索詞的接近程度: 當查詢中的檢索詞在文檔中彼此接近時,文檔與查詢相關的可能性大於檢索詞距離比較遠的情況。雖然有些搜索引擎在查詢中無法識別短語本身,如果查詢檢索詞彼此相鄰或者距離很近,與檢索詞在文檔中距離很遠相比,某些搜索引擎會在結果中對文檔進行更高的排名。

專有名詞: 因爲對人,地點或事物進行了如此多的搜索,有時會有更高的權重。雖然這可能很有用,但如果搜索引擎假設您正在搜索名稱而不是與正常日常檢索詞相同的單詞,則搜索結果可能會偏差特別大。想象一下,當你在爲藝術史課尋找madonnas的照片時,會獲取搖滾明星“madonnas【麥當娜】”的信息。

總結

上面的解釋列出了搜索引擎中可能出現的處理範圍,以及哪些選項影響搜索引擎提供商做決定。選項範圍可能有助於改善用戶對查詢返回結果的頻繁驚訝。到目前爲止,搜索引擎提供商主要選擇較少的,而不是更復雜的文檔和查詢處理。因此,典型的搜索結果需要搜索者做很多工作,搜索者必須在搜索結果之前,點擊並瀏覽一些文檔,然後才能確切地找到他們所尋求的內容。產品和服務的典型演變表明,這種現狀不會繼續下去。進一步提高處理複雜性和質量的搜索引擎將得到搜索者的更大忠誠,另外搜索引擎會得到更多的經濟回報機會。搜索者應該持續關注最好的搜索結果並追求它。

想知道更多?描下面的二維碼關注我

後臺回覆"",獲取近百本電子書入口

【精彩推薦】

點個在看少個 bug ????

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章