五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 百度的分詞算法

百度的分詞算法

文章來源:365jz.com     點擊數(shù):250    更新時間:2009-10-04 11:12   參與評論

這篇文章主要參考中科院軟件所張俊林先生在2005年11月寫作的《搜索引擎設(shè)計實用教程》的分詞部分,提供的查詢關(guān)鍵詞范例也源于該文。


搜索引擎本身并不提供信息,因此用戶需要在搜索引擎的搜索框鍵入關(guān)鍵詞進(jìn)行查詢以獲取信息,然而由于中文信息檢索存在的自身特點,比如中文語詞之間沒有空格,中文的語法分析和語義理解與英語相比更為困難。因此搜索引擎在信息索引前都要對用戶所查詢的語詞進(jìn)行切分。


并非任何一個查詢詞百度都會進(jìn)行切分,如果關(guān)鍵詞組僅僅包含小于等于3個中文字符就保留不進(jìn)行切分,大于4個中文字符的時候,百度的分詞程序便會開始運行,這時候才是百度分詞的真正時機(jī)。當(dāng)然,如果是完全匹配的話,不管幾個詞,一般情況看起來都似乎沒有進(jìn)行切分,這是因為百度擁有一個全世界最龐大的中文分詞詞庫,這個詞庫不斷增加用戶最新的查詢詞,比如“我是誰的誰”,這個原本要進(jìn)行分詞,但是因為詞庫中存在,百度就知道這是黃征的一首歌,于是就不予切分,但其實仍然是有進(jìn)行切分的,只是百度將切分后的結(jié)果當(dāng)做一個短語進(jìn)行查詢,看到的效果就跟沒有切分是一樣的。


分詞算法也有簡單難易之分,比如正向最大匹配、反向最大匹配、雙向最大匹配、語言模型方法、最短路徑算法等等。


張俊林先生假設(shè)百度因為考慮到速度問題,不會采取比較復(fù)雜的算法,因此判斷百度采用的是雙向最大匹配算法。他提交了一個查詢“毛澤東北京華煙云”以測試百度的分詞是如何消歧以及是否有詞典未登錄詞的識別功能。我們知道這個查詢?nèi)绻钦蜃畲笃ヅ渌惴ǖ脑挘敲磻?yīng)該輸出為“毛澤東/北京/華/煙云”,反向最大匹配算法的話,則會輸出“毛/澤/東北/京華煙云”,百度分詞結(jié)果卻是“毛澤東/北/京華煙云”,因此有可能是雙向最大匹配算法。


這個分詞結(jié)果還告訴我們百度分詞可以識別人名,也可以識別“京華煙云”這種詞典未登錄詞的功能。


我們一起來看下具體的百度分詞過程:


1,先查找內(nèi)部的特殊分詞詞典,專用詞典先切分,剩余關(guān)鍵詞再交由普通詞典來切分。


百度的這個詞典應(yīng)該包含了一些獨有的人名、部分地名以及一些普通詞典沒有的新詞。按照這樣的方法,“毛澤東”被首先解析出來,剩下“北京華煙云”,通過反向最大匹配的分詞結(jié)果,再次分為“北/京華煙云”。為了證明這時候百度分詞采用了反向最大匹配,作者再次提交查詢了“發(fā)毛澤東北”,百度沒有輸出正向最大匹配的“發(fā)毛,澤,東北”,而是輸出“發(fā),毛澤東,北”。而有時候比如查詢“古巴比倫理”,則輸出為正向最大匹配的結(jié)果“古巴比倫,理”,而非反向最大匹配的“古巴,比,倫理”,因此我們判斷百度可能采用雙向最大匹配分詞算法。


這里附加說下,根據(jù)張俊林先生后來寫的補充文章,結(jié)論應(yīng)該是百度采取了正向最大匹配算法。例子說明見下:


從例子“山東京城”百度切分為“山東,京城”說明“東京”是在普通詞典里,再次查詢“陳曉東京華煙云”,這兩個詞匯都在專有詞典里面,因此百度切分為“陳曉東,京華煙云”。


說明對于專有詞典詞匯,百度分詞算法采取正向最大匹配或者雙向最大匹配。
查詢“陳曉東方不敗”,關(guān)鍵詞“陳曉東”“東方不敗”都在專有詞典,正向切分應(yīng)為“陳曉東,方,不敗”,反向切分則應(yīng)為“陳,曉,東方不敗”,百度切分結(jié)果是第一種,說明還是采用正向最大匹配。


2,當(dāng)正向和反向匹配分詞結(jié)果一致時,百度直接輸出切詞結(jié)果,不一致的則采用最短路徑方法,即切分的片斷越少越好,比如“古巴,比,倫理”和“古巴比倫,理”相比選擇后者,“北京,華,煙云”和“北,京華煙云”相比選擇后者。


3,當(dāng)正向反向匹配分詞不一致,并且最短路徑也相同時,比如提交查詢“遙遠(yuǎn)古古巴比倫”,這個查詢被百度切分為“遙遠(yuǎn),古古,巴比倫”,說明詞典里面有“巴比倫”,但是否有“古巴比倫”這個詞匯不確定,此時看不出是正向切分還是反向切分得出的結(jié)果。換查詢“遙遠(yuǎn)古巴比倫”,此時被切分為“遙遠(yuǎn)/古巴比倫”,說明詞典里面有“古巴比倫”這個詞匯,這說明“遙遠(yuǎn)古古巴比倫”是正向最大匹配的結(jié)果。為什么“遙遠(yuǎn)古古巴比倫”不會被反向切分為“遙/遠(yuǎn)古/古巴比倫”呢?百度在這種情況下,可能選擇單字少的那組切分結(jié)果。


4,當(dāng)切分后單字也一樣多,比如查詢“王強大小”,百度的分詞結(jié)果是“王/強大/小”,是正向切分的結(jié)果,而非反向的“王/強/大小”,這說明有歧義而且單字也相同則選擇正向切分結(jié)果。


我們來看下張俊林先生對百度分詞算法的總結(jié):首先查詢專用詞典(人名、部分地名等),將專有名稱切出,剩下的部分采取雙向分詞策略。如果兩者切分結(jié)果相同,說明沒有歧義,直接輸出分詞結(jié)果;如果不一致,則輸出最短路徑的那個結(jié)果;如果長度相同,則選擇單字詞少的那一組切分結(jié)果;如果單字也相同,則選擇正向分詞結(jié)果。


如果百度是采用正向匹配的話,那么我們應(yīng)該重新歸納一下百度的分詞系統(tǒng):首先用專有詞典采用最大正向匹配分詞,切分出部分結(jié)果;剩余沒有切分交給普通詞典,同樣采取正向最大匹配分詞,最后輸出結(jié)果。這樣更為簡單,不過文章中的觀點距離現(xiàn)在已經(jīng)有4年多,目前百度的分詞算法我們應(yīng)該通過自己的SEO實踐重新得出。


判斷一個分詞系統(tǒng)好不好,關(guān)鍵看兩點:一個是消除歧義能力;一個是詞典未登錄詞的識別,比如人名、地名、機(jī)構(gòu)名等。百度的分詞算法仍然未能非常好地消除歧義,不過其龐大的分詞詞典在業(yè)內(nèi)確是沒有任何一家搜索引擎能夠領(lǐng)先,雖然從第一來看百度的分詞算法似乎并不像其在宣傳中的“你不知道我知道”的高深莫測,但由于其擁有的龐大分詞詞典,我們?nèi)匀豢梢哉f百度的分詞算法是目前所有搜索引擎最為成熟的。

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點擊進(jìn)入論壇

發(fā)表評論 (250人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號