網路城邦
上一篇 回創作列表 下一篇  字體:
開源的搜尋引擎ElasticSearch
2022/12/17 20:00:00瀏覽263|回應0|推薦2
Apache ElasticSearch 是近年來在網站上備受關注的搜尋引擎,而它其實是建置在另外一個開源軟體庫Apache Lucene之上。Elastic 系列 Elastic Stack (ELK),是由三個套件組成,包括了LogStash和Kibana,前者收集整理網站日誌,而後者則做數據分析。這三者合在一起,讓網站建置者有一套完整的開源流量分析系統,不必完全依靠Google Search,所以在開源的世界頗受歡迎。
 
搜尋引擎是一個資訊截取(Information Retrieval)系統,它希望除了找到與關鍵字完全吻合的文件之外,還希望拿到相關(relevant)的文件們,依相關度排序。要定義哪些文件相關,同時還要找出他們彼此的距離,或者說是決定位階(rank),其實有許多現成演算法。目前最常用的方法,就是先將文字轉換成向量,然後利用在幾何空間中向量的距離來排序,ElasticSearch就是用這樣的方式, Google的Search也差不多,他們主要的差距祇在於文字轉向量(Word to Vector)的方法。一旦有了向量,計算距離(或角度差)是標準數學公式。
 
我們知道Elastic呼叫Lucene,那麼Lucene的文字轉向量的方式是什麼呢?它祇用了一個非常簡單快速的自然語言分析(NLP)演算法,叫做TF-IDF,Term Frequency -  Inverse Document Frequency。簡單的說,你的詢問(query)所要找出的關鍵字詞(term),如果在這個文件(Document)或網頁具備許多個,而這個字詞又是非常獨特的,那麼這文件的排序就會非常高。專有名詞或者人的姓名,應該都屬於這種獨特字詞。
 
當你下了詢問之後, Elastic就會將所有可能相關的文件,利用你的詢問中的關鍵字詞,將這些文件通通變成向量,與你這個字詞產生的向量相比較,在多維度的幾何空間中計算距離,然後由近而遠排序,就得到了相關網頁的順序。
 
當然真實的情況會比這複雜許多,比方說同義字、標點符號、單數多數以及拼字錯誤等等,在自然語言處理當中,都有相當標準的做法。雖然TF-IDF是很有效率,效果也不差,但是谷歌後來所發展的Word2Vec和BERT這些深度學習的演算法,則更能抓住語義也更為精准。我相信ElasticSearch/Lucene,也可套用這些新的文字轉向量的演算法,來加強資訊攫取的精准度。
 
以上個人淺見,懇請指教。

( 知識學習科學百科 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=Shaw2309&aid=177362047