百度分詞演算法分析

2021-07-02 17:36:44 字數 1768 閱讀 6401

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

查詢處理

假設使用者提交了不只乙個查詢串

比如「資訊檢索 理論工具」。那麼搜尋引擎首先做的是根據分隔符比如空格,標點符號,將查詢串分割成若干子查詢串,比如上面的查詢就會被解析為:《資訊檢索,理論,工具》三個子字串;這個道理簡單,我們接著往下看。

假設提交的查詢有重複的內容,搜尋引擎怎麼處理呢?

假設提交的中文查詢包含英文單詞,搜尋引擎是怎麼處理的?

歸納如下:首先根據分割符號將查詢分開,然後看看是否有重複的字串,如果有,就拋棄多餘的,只保留乙個,接著判斷是否有英文或者數字,如果有的話,把英文或者數字當作乙個整體保留並把前後的中文切開。

中文分詞

那麼什麼樣的字串才滿足被切割的條件呢?

怎麼證明呢?

現在分詞演算法已經算是比較成熟了,有簡單的有複雜的,比如正向最大匹配,反向最大匹配,雙向最大匹配,語言模型方法,最短路徑演算法等等,有興趣的可以用google去搜尋一下以增加理解。這裡就不展開說了。但是要記住一點的是:判斷乙個分詞系統好不好,關鍵看兩點, 乙個是消除歧義能力;乙個是詞典未登入詞的識別比如人名,地名,機構名等。

但是仍然遺留的問題是:如果正向反向分詞不一致,而且最短路徑也相同,那怎麼辦?輸出正向的還是反向的結果?

當然還可以繼續追問:如果切分後單字也一樣多,那怎麼辦?

首先查詢專用詞典(人名,部分地名等),將專有名稱切出,剩下的部分採取雙向分詞策略,如果兩者切分結果相同,說明沒有歧義,直接輸出分詞結果。如果不一致,則輸出最短路徑的那個結果,如果長度相同,則選擇單字詞少的那一組切分結果。如果單字也相同,則選擇正向分詞結果。

我們分析拼寫檢查系統關注以下幾個問題:

系統如何判斷使用者的輸入是有可能發生錯誤的查詢呢?

如果判斷是可能錯誤的查詢輸入,如何提示正確的詞彙呢?

整體流程看起來很簡單,但是還有一些遺留 的小問題,比如是否將詞表裡面所有同音詞都作為使用者的提示資訊呢?

另外乙個小問題:同音詞詞典包含2字詞,3字詞,那麼是否包含4字詞以及更長的詞 條?是否包含一字詞?

那麼更長的詞彙是否提示呢?

還有乙個比較重要的問題:如果漢字是多音字那麼怎麼處理?

根據以上推導, 我們可以得出如下結論:

後台作業:

通過標註完的 詞條,建立同音詞詞典,比如上面的」長大「,會有兩個詞條: zhang daà長大」 , chang daà長大。

利用使用者查詢log頻率資訊給予每個 中文詞條乙個權重;

ok,同音詞詞典建立完成了,當然隨著分詞詞典的逐步擴大,同音詞詞典也跟著同步擴大;

拼寫檢查:  

使用者輸入查詢,如果是多個子字串,不作拼寫檢查;

對於使用者查詢,先查分詞詞典,如果發現有這個單詞詞條,ok, 不作拼寫檢查;

如果發現詞典裡面不包含使用者查詢,啟動拼寫檢查系統;首先利用拼音標註程式對使用者輸入進行拼音標註;

對於標註好的拼音在同音詞詞典裡面掃瞄,如果沒有發現則不作任何提示;

如果發現有詞條,則按照順序輸出權重比較大的幾個提 示結果;

對於使用者輸入的拼音在同音詞詞典裡面掃瞄,如果沒有發現則不作任何提示;

如果 發現有詞條,則按照順序輸出權重比較大的幾個提示結果;

那麼以前的分析有什麼漏洞呢?

注意事項

百度中文分詞如何分詞

可能對於seo新手來說,不會中文分詞就會損失一部分的xhbphue流量。而中文分詞就是把詞按照一定的規格,將乙個長尾詞分割成幾個部分,從而概括一段話的主要內容。在中文分詞中,強調的是 一 字串匹配的分詞方法。我們需要有一定的字串做基礎,就是一段詞用字元分開,比如標點符號,空格等。才能夠進行分詞匹配,...

分析百度的中文分詞結果

本結果是基於 20000 本分析結果也是無意得到的。www.sj110.com 搜價110 是handsome man eunge 帶領下的乙個專案,因我是 pwqzc mm雞渴難耐,於是和那個送水的漢子發生了不該發生的事,呵呵,都是撞上的。下面是我的一些分析結果,凡是我可以肯定的,我都註明了。12...

猜測百度分詞基本步驟

最近和朋友在討論分詞,看了很多網上關於分詞的一些例項,我們來對的分詞步驟進行一些猜測,我們不可能真正的了解只能說是猜測 1.判斷使用者提交字串,如果為多個字串,則通過空格,標點符號,等進行切割。2.判斷提交字串中有無字母或者數字,如果有把字母與數字當作獨立整體,並把這個整體當作切割負,進行前後切割。...