天天看點

百度分詞算法詳解【一】

本文通過搜尋結果歸納分析+切詞通用算法分析的方式對百度預處理階段的查詢處理和中文分詞兩項技術進行了闡述、總結,如果你對資料結構、算法有一定了解的話,了解起來會相對容易些;個人感覺,得出正向最大比對算法不夠準确,無論是專用詞典還是普通詞典裡的詞,都是有不同權重的,這根搜尋頻率應該有一定關系,基于這點,在出現多個專用詞典裡的詞時,是需要采用雙向最大比對算法來檢測到底哪一個專有詞彙應該先被切出來,當然,這是個人猜想,有待考究。

  了解分詞技術對 SEO工作具有極大意義,可以從科學的角度來分析關鍵詞,并構想關鍵詞部署政策;如果正向最大比對算法的結論是正确的,那基本上可以斷定,切詞後的分詞的權重是按照正向排序的

  我還想搞明白的是專用詞典和普通詞典,哪一個權重會更高?

  以下為轉載的原文:

  查詢處理以及分詞技術

  随着搜尋經濟的崛起,人們開始越加關注全球各大搜尋引擎的性能、技術和日流量。作為企業,會根據搜尋引擎的知名度以及日流量來選擇是否要投放廣告等;作為普通網民,會根據搜尋引擎的性能和技術來選擇自己喜歡的引擎查找資料;作為技術人員,會把有代表性的搜尋引擎作為研究對象。搜尋引擎經濟的崛起,又一次向人們證明了網絡所蘊藏的巨大商機。網絡離開了搜尋将隻剩下空洞雜亂的資料,以及大量等待去費力挖掘的金礦。

  但是,如何設計一個高效的搜尋引擎?我們可以以百度所采取的技術手段來探讨如何設計一個實用的搜尋引擎。搜尋引擎涉及到許多技術點,比如查詢處理,排序算法,頁面抓取算法,CACHE機制,ANTI-SPAM等等。這些技術細節,作為商業公司的搜尋引擎服務提供商比如百度,GOOGLE等是不會公之于衆的。我們可以将現有的搜尋引擎看作一個黑盒,通過向黑盒送出輸入,判斷黑盒傳回的輸出大緻判斷黑盒裡面不為人知的技術細節。

  查詢處理與分詞是一個中文搜尋引擎必不可少的工作,而百度作為一個典型的中文搜尋引擎一直強調其“中文處理”方面具有其它搜尋引擎所不具有的關鍵技術和優勢。那麼我們就來看看百度到底采用了哪些所謂的核心技術。

  我們分兩個部分來講述:查詢處理/中文分詞。

  一、查詢處理

  使用者向搜尋引擎送出查詢,搜尋引擎一般在接受到使用者查詢後要做一些處理,然後在索引資料庫裡面提取相關的資訊。那麼百度在接受到使用者查詢後做了些什麼工作呢?

  1、假設使用者送出了不隻一個查詢串,比如“資訊檢索 理論 工具”。那麼搜尋引擎首先做的是根據分隔符比如空格,标點符号,将查詢串分割成若幹子查詢串,比如上面的查詢就會被解析為:三個子字元串;這個道理簡單,我們接着往下看。

  2、假設送出的查詢有重複的内容,搜尋引擎怎麼處理呢?比如查詢“理論工具理論”,百度是将重複的字元串當作隻出現過一次,也就是處理成等價的“理論工具”,而GOOGLE顯然是沒有進行歸并,而是将重複查詢子串的權重增大進行處理。那麼是如何得出這個結論的呢?我們可以将“理論工具”送出給百度,傳回341,000篇文檔,大緻看看第一頁的傳回内容。

  OK。繼續,我們送出查詢“理論工具理論”,在看看傳回結果,仍然是那麼多傳回文檔,當然這個不能說明太多問題,那看看第一頁傳回結果的排序,看出來了嗎?順序完全沒有變化,而 GOOGLE 則排序有些變動,這說明百度是将重複的查詢歸并成一個處理的,而且字元串之間的先後出現順序基本不予考慮(GOOGLE是考慮了這個順序關系的)。

  3、假設送出的中文查詢包含英文單詞,搜尋引擎是怎麼處理的?比如查詢”電影BT下載下傳”,百度的方法是将中文字元串中的英文當作一個整體保留,并以此為斷點将中文切分開,這樣上述的查詢就切為,不論中間的英文是否一個字典裡能查到的單詞也好,還是随機的字元也好,都會當作一個整體來對待。至于為什麼,你用查詢 “電影dfdfdf下載下傳”看看結果就知道了。當然如果查詢中包含數字,也是如此辦理。

<script type="text/javascript"></script> <script src="cache/hottags_forum_cache_jsonp.txt" type="text/javascript"></script>

繼續閱讀