欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

百度分詞算法詳解第2/2頁(yè)

 更新時(shí)間:2024年07月01日 11:46:53   投稿:mdxy-dxy  
搜索分詞算法分析,不建議大家惡意作弊

" 制才",百度提供的提示詞匯為: “:制裁質(zhì)材紙材",都是同 音字.所以百度必然維持著一個(gè)同音詞詞典,里面保留著同音詞信息,比如可能包含著下面這條詞條: “ zhi cai à制裁,質(zhì)材,紙材",另外還有一 個(gè)標(biāo)注拼音程序,現(xiàn)在能夠看到的基本流程是: 用戶(hù)輸入" 制才",查詞典,發(fā)現(xiàn)沒(méi)有這個(gè)詞匯,OK,啟動(dòng)標(biāo)注拼音程序,將" 制才"標(biāo)注為拼音"zhi cai",然后查找同音詞詞典,發(fā)現(xiàn)同音詞" 制裁,質(zhì)材,紙材",那么提示用戶(hù)可能的正確拼寫(xiě).
整體流程看起來(lái)很簡(jiǎn)單,但是還有一些遺留的小問(wèn)題,比如是否將詞表里面所有同音詞都作為用戶(hù)的提示信息呢?比如某個(gè)拼音有10個(gè)同音詞,是否都輸出呢?百度并沒(méi)有將所有同音詞都輸出而是選擇一定篩選標(biāo)準(zhǔn),選擇其中幾個(gè)輸出.怎么證明這一點(diǎn)?我們看看拼音"liu li"的同音詞,紫光輸入法提示同音詞匯有" 流麗 流離琉璃流利"4個(gè),我們看看百度返回幾個(gè),輸入"流厲"作為查詢(xún),這里是故意輸入一個(gè)詞典不包含的詞匯,這樣百度的拼寫(xiě)檢查才開(kāi)始工作,百度提示: " 琉璃劉麗 劉莉 ",這說(shuō)明什么?說(shuō)明不是所有同音詞都輸出,而是選擇輸出,那么選擇的標(biāo)準(zhǔn)是什么?
我能夠猜測(cè)到的方法是對(duì)于用戶(hù)查詢(xún)LOG進(jìn)行統(tǒng)計(jì),提取用戶(hù)查詢(xún)次數(shù)多的那些同音詞輸出,如果是這樣的話(huà),上面的例子說(shuō)明用戶(hù)搜索"琉璃"次數(shù)比其它的都要高些,次之是" 劉麗",再次是" 劉莉",看來(lái)大家都喜歡查詢(xún)自己或者認(rèn)識(shí)的人的名字.
另外一個(gè)小問(wèn)題:同音詞詞典包含2字詞,3字詞,那么是否包含4字詞以及更長(zhǎng)的詞條?是否包含一字詞? 這里一字詞好回答,不用測(cè)試也能知道肯定不包含,因?yàn)槟爿斎胍粋€(gè)字,誰(shuí)知道是否是錯(cuò)誤的呢?
反正只要是漢字就能在詞表里面找到,所以沒(méi)有判斷依據(jù).二字詞是包含的,上面有例子,三字詞也包含,比如查詢(xún) "中城藥"百度錯(cuò)誤提示:"中成藥",修改查詢(xún)?yōu)?quot;重城藥",還是提示"中成藥" ,再次修改查詢(xún) "重城要",百度依然提示"中成藥". 那么4字詞匯呢?
百度還是會(huì)給你提示的,下面是個(gè)例子:
輸入:靜華煙云 提示 京華煙云
輸入:靜話(huà)煙云 提示 京華煙云
輸入:靜話(huà)閻暈 提示 京華煙云
那么更長(zhǎng)的詞匯是否提 示呢?也提示,比如我輸入: "落花世界有風(fēng)軍",這個(gè)查詢(xún)是什么意思,估計(jì)讀過(guò)古詩(shī)的都知道,看看百度的提示"落花時(shí)節(jié)又逢君",這說(shuō)明什么?說(shuō)明同音詞詞典包含不同長(zhǎng)度的同音詞信息,另外也說(shuō)明了百度的核心中文處理技術(shù),也就是那個(gè)詞典,還真挺大的.
但是,如果用戶(hù)輸入的 查詢(xún)由兩個(gè)或者兩個(gè)以上子字符串構(gòu)成,那么百度的錯(cuò)誤提示功能就罷工了,比如輸入查詢(xún)"哀體",百度提示"艾提 挨踢",但是.輸入為 "我 哀體 ",則沒(méi)有任何錯(cuò)誤提示.
還有一個(gè)比較重要的問(wèn)題:如果漢字是多音字那么怎么處理?百度呢比較偷懶,它根本就沒(méi)有對(duì)多音字做處理.我們來(lái)看看百度的一個(gè)標(biāo)注拼音的錯(cuò)誤,在看這個(gè)錯(cuò)誤前先看看對(duì)于多音字百度是怎么提示錯(cuò)誤的,我們輸入查詢(xún)"俱長(zhǎng)",百度提示"劇場(chǎng) 局長(zhǎng)", “俱長(zhǎng)"的拼音有兩個(gè):"ju zhang /ju chang" ,可見(jiàn)如果是多音字則幾種情況都提示..現(xiàn)在我們來(lái)看看錯(cuò)誤的情況, 我們輸入查詢(xún)"劇常",百度提示":劇場(chǎng)局長(zhǎng)",提示為"劇場(chǎng)"當(dāng)然好解釋,因?yàn)槭峭糇?但是為什么 "局長(zhǎng)"也會(huì)被提示呢?這說(shuō)明百度的同音字詞典有錯(cuò)誤,說(shuō)明在"ju chang"這個(gè)詞條里面包含"局長(zhǎng)"這個(gè)錯(cuò)誤的同音詞.讓我們順藤摸瓜,這個(gè)錯(cuò)誤又說(shuō)明什么問(wèn)題呢?
說(shuō)明百度的同音詞典是自動(dòng)生成的,而且沒(méi)有人工校對(duì).還說(shuō)明在自動(dòng)生成同音詞典的過(guò)程中,百度不是根據(jù)對(duì)一篇文章標(biāo)注拼音然后在抽取詞匯和對(duì)應(yīng)的拼音信息獲得的,而是完全按照某個(gè)詞典的詞條來(lái)標(biāo)注音節(jié)的,
所以對(duì)于多音字造成的錯(cuò)誤無(wú)法識(shí)別出來(lái),如果是對(duì)篇章進(jìn)行拼音標(biāo)注,可能就不會(huì)出現(xiàn)這種很容易發(fā)現(xiàn)的錯(cuò)誤標(biāo)注. 當(dāng)然還有另外一種解釋,就是"局長(zhǎng)"是故意被百度提示出來(lái)可能的正確提示詞匯,因?yàn)榭紤]到南方人"zh"和 "ch"等前后鼻音分不清么,那么是這樣的么?我們繼續(xù)測(cè)試到底是何種情況.是百度有錯(cuò)誤還是這是百度的先進(jìn)的算法?
我們考慮詞匯"長(zhǎng)大 ",故意錯(cuò)誤輸入為"贓大",如果百度考慮到了前后鼻音的問(wèn)題,那么應(yīng)該會(huì)提示"長(zhǎng)大",但是百度提示是"藏大".這說(shuō)明什么?說(shuō)明百度并沒(méi)有考慮前后鼻音問(wèn)題,根本就是系統(tǒng)錯(cuò) 誤. 我們輸入查詢(xún)"懸賞",故意將之錯(cuò)誤輸入為"懸桑",沒(méi)有錯(cuò)誤提示,說(shuō)明確實(shí)沒(méi)有考慮這種情況.前鼻音沒(méi)有考慮,那么后鼻音考慮了么,我們輸入":經(jīng)常 ",故意改為后鼻音 "經(jīng)纏",百度提示為"經(jīng)產(chǎn) 經(jīng)懺",還是沒(méi)有考慮后鼻音.這基本可以確定是百度系統(tǒng)的錯(cuò)誤導(dǎo)致.
根據(jù)以上推導(dǎo), 我們可以得出如下結(jié)論:百度是將分詞詞典里面每個(gè)詞條利用拼音標(biāo)注程序標(biāo)注成拼音,然后形成同音詞詞典,所以?xún)蓚€(gè)詞典是同樣大的 ,而且這個(gè)詞典也隨著分詞詞典的增長(zhǎng)而在不斷增長(zhǎng). 至于標(biāo)注過(guò)程中多音字百度沒(méi)有考慮,如果是多音字就標(biāo)注成多個(gè)發(fā)音組合,通過(guò)這種方式形成同音詞詞典.這樣的同音詞詞典顯然包含著很多錯(cuò)誤.
最后一個(gè)問(wèn)題:百度對(duì)于英文進(jìn)行拼寫(xiě)檢查么?讓我們?cè)囋嚳?輸入查詢(xún)"china",不錯(cuò),搜到不少結(jié)果,專(zhuān)注中文搜索的百度還能搜索到英文,真是意外的驚喜.變換一下查詢(xún)"chine",會(huì)更加意外驚喜的給我們提示"china"嗎?
百度提示的是: 吃呢持呢,原來(lái)是不小心觸發(fā)了百度的拼音搜索功能了.那么拼音搜索和中文檢查錯(cuò)誤是否采用同一套同音詞詞典呢,讓我們來(lái)實(shí)驗(yàn)一下,搜索"rongji", 百度提示" 榕基 溶劑 容積",OK,換個(gè)中文查詢(xún)"容機(jī)",百度提示" 榕基溶劑容積",看來(lái)使用的是同一套同音詞詞典.也就是說(shuō)百度的中文糾錯(cuò)和拼音檢索使用的機(jī)制相同,中文糾錯(cuò)多了一道拼音注音的過(guò)程而已.難道這就是傳說(shuō)中那個(gè)百度的"事實(shí)上是一個(gè)無(wú)比強(qiáng)大的拼音輸入法"的拼音提示功能么?
最后讓我們總結(jié)歸納一下百度的拼寫(xiě)檢查系統(tǒng):
后臺(tái)作業(yè):
(1) 前面的文章我們說(shuō)過(guò),百度分詞使用的詞典至少包含兩個(gè)詞典一個(gè)是普通詞典,另外一個(gè)是專(zhuān)用詞典(專(zhuān)名等),百度利用拼音標(biāo)注程序依次掃描所有詞典中的每個(gè)詞條,然后標(biāo)注拼音,如果是多音字則把多個(gè)音都標(biāo)上,比如"長(zhǎng)大",會(huì)被標(biāo)注為"zhang da/chang da"兩個(gè)詞條.
(2)通過(guò)標(biāo)注完的 詞條,建立同音詞詞典,比如上面的"長(zhǎng)大",會(huì)有兩個(gè)詞條: zhang daà長(zhǎng)大" , chang daà長(zhǎng)大.
(3)利用用戶(hù)查詢(xún)LOG頻率信息給予每個(gè) 中文詞條一個(gè)權(quán)重;
(4)OK,同音詞詞典建立完成了,當(dāng)然隨著分詞詞典的逐步擴(kuò)大,同音詞詞典也跟著同步擴(kuò)大;
  
拼寫(xiě) 檢查:
(1)用戶(hù)輸入查詢(xún),如果是多個(gè)子字符串,不作拼寫(xiě)檢查;
(2)對(duì)于用戶(hù)查詢(xún),先查分詞詞典,如果發(fā)現(xiàn)有這個(gè)單詞詞條,OK, 不作拼寫(xiě)檢查;
(3)如果發(fā)現(xiàn)詞典里面不包含用戶(hù)查詢(xún),啟動(dòng)拼寫(xiě)檢查系統(tǒng);首先利用拼音標(biāo)注程序?qū)τ脩?hù)輸入進(jìn)行拼音標(biāo)注;
(4)對(duì)于標(biāo)注好的拼音在同音詞詞典里面掃描,如果沒(méi)有發(fā)現(xiàn)則不作任何提示;
(5)如果發(fā)現(xiàn)有詞條,則按照順序輸出權(quán)重比較大的幾個(gè)提 示結(jié)果;
  
拼音提示:
(1)對(duì)于用戶(hù)輸入的拼音在同音詞詞典里面掃描,如果沒(méi)有發(fā)現(xiàn)則不作任何提示;
(2)如果 發(fā)現(xiàn)有詞條,則按照順序輸出權(quán)重比較大的幾個(gè)提示結(jié)果;
上面說(shuō)過(guò),經(jīng)過(guò)分析得出百度的分詞系統(tǒng)采用雙向最大匹配分詞,但是后來(lái)發(fā)現(xiàn)推理過(guò)程中存在一個(gè)漏洞,而且推導(dǎo)出來(lái)的百度分詞算法步驟還是過(guò)于繁瑣,所以進(jìn)一步進(jìn)行分析,看看是否前面的推導(dǎo)有錯(cuò)誤.
那么以前的分析有什么漏洞呢?
我們推導(dǎo)百度分詞有反向最大匹配的依據(jù)是百度將"北京華煙云"分詞為,從這里看好像采用了反向最大匹配,因?yàn)檎蜃畲笃ヅ涞慕Y(jié)果應(yīng)該是,但是由此就推論說(shuō)百度采用了雙向最大匹配還是太倉(cāng)促了,前面文章我們也講過(guò),百度有兩個(gè)詞典,一個(gè)普通詞典,一個(gè)專(zhuān)有詞典,而且是專(zhuān)有詞典的詞匯先切分,然后將剩余片斷交給普通詞典去切分.所以上面的"北京華煙云"之所以被切分成,另外一個(gè)可能是:京華煙云這個(gè)詞匯是在專(zhuān)有詞典里面存儲(chǔ)的,所以先分析,這樣得出"京華煙云 ",剩下"北",沒(méi)什么好切分的,所以輸出.
這里只是假設(shè),那么是否確實(shí)"京華煙云"在專(zhuān)有詞典呢?我們?cè)倏匆粋€(gè)例子"山東北京華煙云",百度切分的結(jié)果是,如果"京華煙云"在普通詞典,如果是反向切分,那么結(jié)果應(yīng)該是,如果是正向切分應(yīng)該是,無(wú)論如何都分不出.這說(shuō)明什么?
說(shuō)明"京華煙云"是在那個(gè)專(zhuān)有詞典,所以先切分出"京華煙云",然后剩下的"山東北"交由普通詞典切分,明顯是正向最大匹配的結(jié)果輸出.當(dāng)然按照我們?cè)诘谝黄恼碌乃惴ㄍ茖?dǎo)"山東北"的切分也會(huì)得出的結(jié)論,但是明顯比正向最大匹配多幾個(gè)判斷步驟,既然效果一樣,另外一個(gè)更加簡(jiǎn)潔的方法也能說(shuō)得通,那當(dāng)然選擇簡(jiǎn)便的方法了.所以初步判斷百度采取的是正向最大匹配.
我們繼續(xù)測(cè)試采用何種分詞算法,為了減少專(zhuān)有詞典首先分詞造成的影響,那么查詢(xún)里面不能出現(xiàn)相對(duì)特殊的詞匯,構(gòu)筑查詢(xún)"天才能量級(jí)",這里應(yīng)該沒(méi)有專(zhuān)有詞典出現(xiàn)過(guò)的詞匯,百度切分為,看來(lái)是正向最大匹配的結(jié)果.另外,如果所有查詢(xún)?cè)~匯都出現(xiàn)在專(zhuān)有詞典,那么采取的是何種方法?這樣首先就得保證詞匯都出現(xiàn)在專(zhuān)有詞典,這么保證這一點(diǎn)呢?
我們構(gòu)造查詢(xún)"鋪陳曉東方",百度切分為,可以看出 "陳曉東"是在專(zhuān)有詞典的所以先切分出來(lái).另外一個(gè)例子 "山東京城",百度切分為,說(shuō)明"東京"是在普通詞典的.OK,構(gòu)造查詢(xún)"陳曉東京華煙云",通過(guò)前面分析可以看出兩個(gè)詞匯都在專(zhuān)有詞典里面,百度切分為,說(shuō)明對(duì)于專(zhuān)有詞典詞匯也是采取正向最大匹配或者雙向最大匹配.那么使用反向最大匹配了嗎? 構(gòu)造查詢(xún)例子"陳曉東方不敗",首先我們肯定"陳曉東"和"東方不敗"都是在專(zhuān)有詞典出現(xiàn)的,如果是正向切分,那么應(yīng)該是或者如果是反向切分則是,可以看出百度的切分是或者,說(shuō)明采用的是正向最大匹配.通過(guò)分析,百度的詞典不包含"不敗"這個(gè)單詞,所以實(shí)際上百度的切分結(jié)果是 ,很明顯這和我們以前推導(dǎo)的算法是有矛盾的,所以以前的分析算法確實(shí)有問(wèn)題,所以結(jié)論是百度采取的是正向最大匹配算法.
重新歸納一下百度的分詞算法系統(tǒng):首先用專(zhuān)有詞典采用最大正向匹配分詞,切分出部分結(jié)果,剩余沒(méi)有切分交給普通詞典,同樣采取正向最大匹配分詞,最后輸出結(jié)果.
另外,GOOGLE也是采用正向最大匹配分詞算法,不過(guò)好像沒(méi)有那個(gè)專(zhuān)用詞典,所以很多專(zhuān)名都被切碎了.
從這點(diǎn)講,GOOGLE在中文詞典構(gòu)建上比百度差些,還需要加把子力氣才行,不過(guò)這也不是什么多難的事.

相關(guān)文章

最新評(píng)論