前記:本人是一個初學者,新手其實都算不上。沒做過資訊檢索,所以別人怎麼做的也不知道。很想知道Google,百度這樣的大公司怎麼做搜尋引擎的,但是沒機會也不會知道。憑著自己的理解就寫了這麼幾篇隨筆,這樣能督促自己思考,也希望得到大神們的指點。這個系列叫做“新手學資訊檢索”。這個系列說白了,就是把自己看過的東西總結了一下,加入了自己對資訊檢索一些概念的理解,沒什麼理論,也不注重於實現,更沒有創新。但是當時讓我費勁心思才能想明白的東西我會按照自己的意思把它講出來。不知道自己將會寫多少篇,可能總結完一些就會寫一些,自己水平有限,概念如果理解有誤的話,還請大家拍磚不要拍太狠,在此先謝過了。
我想,大家對資訊檢索都不陌生,我們學習生活中使用的搜尋引擎就是其一個具體實現。那麼我們為什麼需要資訊檢索呢?很明顯,我們需要得到一些資訊,但是這些資訊卻不是很容易找到的,它埋藏在數以億計的網頁、文檔之中,憑我們自己手工一個一個去找是根本找不到的,所以這種技術才顯的尤為重要。
現在的檢索技術大都都依靠詞頻-逆文檔頻之類的東西進行檢索。說白了,使用者輸入一個查詢語句,搜尋引擎只是根據一篇文檔中包不包含查詢詞,包含多少個之類的資訊來判斷一篇文檔是不是使用者想要的。這也是現在的技術能達到最好效果的檢索方法,為什麼呢?
個人認為,如果一個檢索系統要達到完美的檢索效果,那麼無疑語義檢索是最好的方式。比如使用者查詢“星期日的溫度是多少?”,那麼檢索系統必須返回包含“星期日的溫度是XX度”的文檔,而不是包含“星期日的溫度是多少?”的文檔。但是語義檢索對現在的技術而言還是一件不可能的事情,這涉及到複雜的人工智慧領域的問題,只有人工智慧領域有突破,那麼才能有實質意義的語義檢索。另外一點是即使用現在在語義分析方面的技術也無法另使用者滿意,這包括高昂的演算法已耗用時間開銷。系統是在數以億計的文檔中檢索,如果利用語義檢索,使用者查詢可能得等個十天半個月搜尋引擎才能有反應,我想任何使用者都不想使用這樣的系統。
很多人都認為根據文檔包含查詢詞的資訊來進行檢索效果是有缺陷的,事實也就是如此。但是又有什麼方法能夠十全十美呢。包含查詢詞的文檔並不一定是使用者想要的,這確實是一個問題。例如一個使用者輸入查詢詞“蘋果”,那麼檢索系統返回的是水果,但是其實使用者想要的是蘋果手機。出現這種問題的原因之一是由於詞的歧義性,這是一個固有問題,需要上下文資訊來確定一個詞的意思;二是在於使用者無法精確描述自己的需求。如果使用者輸入“蘋果手機”,那麼檢索系統就會返回給使用者正確的文檔了。所以對於現在的資訊檢索來說,使用者的描述也是至關重要的。現在也有相關的技術來對使用者的查詢做處理,比如查詢擴充,相關性反饋之類的技術。這種技術的主要目的就是給搜尋引擎提供更多的資訊,使得其犯錯誤的幾率降低。
現在的檢索方式是建立在各個詞的出現是相互獨立的假設上,這就意味著這種檢索方式其實忽略了一些重要訊息,比如說詞的先後位置資訊。隨著對這種方法的發展與改進,出現了各種檢索模型,其中包括向量空間模型,機率模型,推理網路模型等等。現代的搜尋引擎的效果也是讓人們十分滿意的,即使不使用語義檢索。這貌似和我們的直覺是相違背的,但是實際效果確實讓我們無話可說。