Posted on 2008-10-16 15:28
歲月流逝 閱讀(86)
評(píng)論(0) 編輯 收藏 引用
本結(jié)果是基于20000次以上的搜索分析百度而的來(lái)的,如有不當(dāng)請(qǐng)指正,希望我們能夠一起來(lái)揭開(kāi)百度分詞的面紗。
在大家的心目中可能百度的分詞是極其復(fù)雜的,他代表了中國(guó)分詞領(lǐng)域的最高水平,其實(shí)不然,簡(jiǎn)單最好,裸體最美,當(dāng)我們撥下百度的衣服,既然會(huì)發(fā)現(xiàn)百度的分詞是如此的簡(jiǎn)單,可能正應(yīng)了一個(gè)名人的某一句話(huà):當(dāng)用戶(hù)輸入查詢(xún)關(guān)鍵字的時(shí)候我們要準(zhǔn)確的知道用戶(hù)在想什么!這正是百度所追求的,他把所有的工作都放在了處理用戶(hù)查詢(xún)關(guān)鍵字的時(shí)候。
本分析結(jié)果也是無(wú)意得到的。www.sj110.com搜價(jià)110是Handsome man Eunge帶領(lǐng)下的一個(gè)項(xiàng)目,因我是pwqzc老鼠,老鼠嗎,就是打點(diǎn)小洞,所以我負(fù)責(zé)詞庫(kù)這一塊,為了詞庫(kù)的精確,在處理詞庫(kù)的時(shí)候經(jīng)常查詢(xún)百度,查多了,想多了,問(wèn)題就出來(lái)了,竟然發(fā)現(xiàn)對(duì)百度的分詞稍微有了點(diǎn)了解,這個(gè)是我無(wú)意撞上的,就如一個(gè)送水的漢子,碰上了一個(gè)要水的少婦,而這個(gè)少婦的男人三年前出門(mén)至今未歸,此MM雞渴難耐,于是和那個(gè)送水的漢子發(fā)生了不該發(fā)生的事,呵呵,都是撞上的。
下面是我的一些分析結(jié)果,凡是我可以肯定的,我都注明了。
1.百度的蜘蛛爬到的文檔索引入庫(kù)的時(shí)候是只進(jìn)行了簡(jiǎn)單的分詞處理(我可以肯定),也就是只是簡(jiǎn)單的把中文單個(gè)字單個(gè)字的分開(kāi),要證明這點(diǎn)很簡(jiǎn)單,你只需要搜索“地”或者“書(shū)”或者“腦”。。。。。。等單個(gè)詞就可以了,當(dāng)然,你也可以找一些莫名其妙的兩個(gè)字或者三個(gè)字組合在一起搜索百度看,你就會(huì)明白他入庫(kù)的時(shí)候只進(jìn)行了簡(jiǎn)單的把單個(gè)中文分開(kāi)的處理。他把復(fù)雜的分詞邏輯放到了處理用戶(hù)輸入查詢(xún)關(guān)鍵字的時(shí)候。仔細(xì)一想,其實(shí)這樣做能夠最大限度的消除歧義!!!
2.當(dāng)用戶(hù)輸入兩個(gè)字和三個(gè)字的詞進(jìn)行搜索的時(shí)候百度也沒(méi)有進(jìn)行任何處理的(我可以肯定),也只是把他們簡(jiǎn)單的按照單個(gè)字分開(kāi),然后查詢(xún)的時(shí)候條件是這兩個(gè)字或者這三個(gè)字必須連接在一起,中間沒(méi)有任何其他的字。要證明這點(diǎn)也很簡(jiǎn)單,大家只要輸入任意兩個(gè)字的詞或者三個(gè)字的詞進(jìn)行搜索就可以了,甚至你可以搜索“甘新哦”,“春天氣”,“哦人無(wú)”等毫無(wú)意義的詞進(jìn)行查詢(xún),看是不是出來(lái)的搜索結(jié)果要么是沒(méi)有找到任何內(nèi)容,要么是包括你輸入了的任何字,而且這些字都是連接在一起的,雖然這些字他們之間的組合是毫無(wú)意義,這也同時(shí)證明了百度在索引入庫(kù)的時(shí)候是只進(jìn)行了簡(jiǎn)單的按照單個(gè)中文分開(kāi)。
3.百度如何處理四個(gè)字?我們輸入“李宇春天”搜索,結(jié)果是被分成了“李宇”和“春天”,這給我們帶來(lái)了兩個(gè)疑問(wèn):第一,如果李宇春已經(jīng)收錄到了詞典里面,那么肯定肯定百度是正向分詞。第二,如果李宇春沒(méi)有被收錄到詞典里面,那么可能是正向分詞也可能是逆向分詞。那么到底是那種呢?我們先判斷百度處理查詢(xún)關(guān)鍵子的時(shí)候是逆向分詞還是正向分詞。我們?cè)佥斎搿肮P暢通行”來(lái)搜索他被分成了“暢通”,我想筆暢應(yīng)該不會(huì)被收進(jìn)詞典,按此分析應(yīng)該是正向分詞;我們?cè)佥斎搿肮P暢通知”,很明顯被分成了“筆暢”和“通知”,這看起來(lái)是逆向分詞的結(jié)果,如果是正向的話(huà)那也會(huì)被分成“暢通”的;我們?cè)佥斎搿疤依钣畲骸彼阉鳎Y(jié)果被分成了“桃李”和“宇春”,這看起來(lái)象正向分詞,當(dāng)然這也不能夠證明就是逆向,因?yàn)槿绻钣畲簺](méi)有收進(jìn)詞典,這逆向分詞也會(huì)得到同樣的結(jié)果。那么百度到底是正向還是逆向呢?我們拋開(kāi)名字吧,因?yàn)槲覀冞€不感肯定象李宇宙春之類(lèi)的詞是不是在百度的詞典里面,現(xiàn)在我們輸入“神彩票啊”,很明顯被分成了“彩票”,再輸入“光彩票啊”,很明顯也被風(fēng)成了“彩票”,再輸入“啊中國(guó)家”,結(jié)果被分成了“國(guó)家”,再搜索“啊國(guó)家庭”,被風(fēng)成了“家庭”,我們?cè)佥斎搿帮L(fēng)歲月亮”搜索,被分成了風(fēng)歲和月亮,再輸入“風(fēng)歲月球”,被分成了“分”,“歲月”和“球”,再輸入“風(fēng)歲月份”,被分成了“分色”和“月份”,這樣的結(jié)果看起來(lái)真的很讓我們郁悶!!!極度郁悶!!更郁悶的是還在后頭啊,我輸入“筆暢通過(guò)”搜索,第一次的所有結(jié)果是全部把這四個(gè)字搜索出來(lái),而且他們都是連接在一起的,而且這四個(gè)字之間沒(méi)有任何其他的字!!但是我們過(guò)幾分鐘再次搜索,結(jié)果竟然截然不同!!!“筆暢通過(guò)”被分成了“暢通”!!!!這里我不敢亂下結(jié)論,如果是我,那我應(yīng)該怎么樣去處理四個(gè)字的關(guān)鍵字呢?
一,首先取這四個(gè)字去匹配詞典,如果匹配成功,則查詢(xún)條件如ABCD,返回的結(jié)果必須包含ABCD,且ABCD必須連接在一起,中間沒(méi)有任何其他字,在這里我首先假設(shè)索引入庫(kù)的時(shí)候是只進(jìn)行了簡(jiǎn)單的按照單個(gè)字切分,且搜索的時(shí)候能夠判斷索引文件里的A/B/C/D等文字中間有沒(méi)有其他的文字。
二,如果一匹配不成功,則截取前面兩個(gè)字匹配詞典,如果匹配成功,則如ABCD分成AB/CD,查詢(xún)結(jié)果必須包含AB和CD,AB之間不能夠有其他文字,CD之間也不能夠有其他文字,AB和CD之間可以出現(xiàn)其他文字;查詢(xún)結(jié)果可以包含ABCD全部連接在一起四個(gè)字之間沒(méi)有其他文字的結(jié)果,且其排序優(yōu)先于AB/CD。
三,如果二匹配不成功,則截取最后面兩個(gè)字匹配字典,如果匹配成功,采取和上面二一樣的做法。
四,如果三匹配不成功,則截取中間兩個(gè)字匹配詞典,如果匹配成功,則如ABCD查詢(xún)的結(jié)果里面必須BC,且BC之間沒(méi)有其他文字,結(jié)果也可以包含BCD,結(jié)果也可以包含ABC,結(jié)果也可以包含ABCD,結(jié)果排序優(yōu)先規(guī)則(從最優(yōu)開(kāi)始):ABCD全部連接在一起的結(jié)果------BCD全部連接在一起的結(jié)果或ABC全部連接在一起的結(jié)果------BC全部連接在一起的結(jié)果。
五,如果四匹配不成功,則可以肯定他是地名人名或者其他專(zhuān)有名詞或者這四個(gè)字連起來(lái)沒(méi)有任何意義,則采用一的方法。
暫時(shí)寫(xiě)到這吧,其他的慢慢來(lái) b6a03e3e