电脑技术学习

Google简体中文搜索失灵的权威解释

dn001

搜索引擎 9238 2002.2

---1月25日,google开始28天一次的索引库例行更新。此后,网友很快发现google的简体中文搜索不灵了,某些常见词汇如“中国历史”、“生日快乐歌”、“华盛顿邮报”等,都搜不到结果或只能搜索到很少的相关性很差的结果。同时,也有网友发现,少数简单关键词如“李白”、“历史”的搜索仍然正常,而英文搜索也正常。网易、雅虎、www2等库更新比google晚,开始还能正常搜索,但一天之后,也变得和google一样失灵了。

---此后,网上开始出现各种猜测,猜测google封了中国用户ip的有之,猜测google为了不与合作门户竞争而关闭主站的有之,猜测google将要对用户收费的有之,猜测google因政治原因被封杀的有之,猜测有人捣鬼的有之,猜测google因为例行更新而这样的有之。

---以上猜测,统统都是错的。

---作为中国最痴迷最狂热的搜索爱好者,作为以普及中文搜索为己任的人,作为屈指可数的可解释此现象的人,作为目前最了解此事,能做出最清楚解释的人,眼见网友开始被误导,搜索引擎 9238决定,给出简单但正确的解释。

---google的问题,出在中文分词上。目前,google对用户输入的简体中文关键词,不做分词就进行检索,所以导致各种奇怪现象。 ---要理解这个问题所在,要从中文搜索引擎 的特色说起。

---中文搜索引擎 ,跟英文搜索引擎 最大的区别是分词。因为中文的字与字之间是没有间隔的,人阅读的时候能自动辨别组合一个句子中的各个单字,看到的是有意义的词组。而计算机不是人,中文的单个字缺乏意义,所以要先由程序把中文词句切分成合理的字词单元。

---举例来说,这句话“第一门反后坐火炮”,人阅读时能自动分出其中的有意义单元,把它看做“第一门 反后坐 火炮”,对于计算机,这就是一个自动分词的步骤。中文搜索引擎 ,就是把所有网页上的文字,用分词程序预先切分好了,对于搜索引擎 来说,它并不认识网页上的一句话“第一门反后坐火炮”,它只知道,哪个网页中有“第一门”、“反后坐”、“火炮”这3个字词单元,你搜索其中任何一个字词单元(如“反后坐”)时,搜索引擎 就把这个网页取出来,并把所有含有“反后坐”这个字词单元的网页取出来,再按照某种算法排序,最终把搜索结果生成页面返回给用户。

---如果你把这句话 [第一门反后坐火炮] 输入搜索框检索,那么中文搜索引擎 也需要先把你这句话切成“第一门”、“反后坐”、“火炮”3个字词单元,然后去索引库里寻找含有这三个字词单元,而且这3个字词单元连在一起的网页,再按相关算法排序。

---而如果你输入 [第一门 反后坐 火炮] 三个字词单元,用组合关键词检索,那么中文搜索引擎 就去找出含有这三个字词单元的网页排序,但不再要求这三个字词单元必须相连。

---而如果搜索引擎 不对中文关键词作切词,只当做一个完整的字词单元去搜索,那么当你输入 [第一门反后坐火炮] 时,是搜不到任何结果的,因为搜索引擎 认为没有任何网页中含有“第一门反后坐火炮”这个字词单元,搜索引擎 只知道有的网页中含有连在一起的三个字词单元“第一门”、“反后坐”、“火炮”,或者只知道有连在一起的五个字词单元“第”、“一门”、“反”、“后坐”、“火炮”。
(分词的效果是一个渐渐进步的过程,目前并不完美,各家搜索引擎 也不同,有的搜索引擎 也可能把这句话分成“第”、“一门”、“反”、“后坐”、“火炮”五个字词单元)

---现在你明白google的怪现象了。因为google把所有输入的中文关键词只作为一个字词单元来搜索,但是在预先对网页做索引的时候已经对网页上含有的跟你输入关键词相同的文字作分词的,所以google认为,没有任何网页含有你输入的字词单元。除非,有些特殊网页上的文字本身就是当做一个字词单元切分的,跟你输入的搜索关键词能对上,那就能搜出来。或者,你输入的本来就是最简单的字词单元如[李白]、[历史]、[搜索],那么搜索结果仍然是正常的。

---举例来说,关键词 [华盛顿邮报] ,google在做索引库时一般把它切分成3个字词单元“华盛顿”“邮”“报”,但也会把少数网页中的“华盛顿邮报”当做一个字词单元来切分。这样,当你搜索 [华盛顿邮报] 时,如果google没有切分,那么只能搜索出少数含有“华盛顿邮报”这个字词单元的网页。如果自动切分成“华盛顿”“邮”“报”再搜索,那么会搜索出所有连续含有“华盛顿”“邮”“报”这3个字词单元的网页,因为这原来是这么索引的,所以这会得到最正确的结果。

---但是现在google不分词,如果你自己先分好词再搜索,如搜索 [华盛顿 邮 报],那么搜索结果基本还是有的,只是会杂一点,多一点,多了一些“华盛顿”“邮”“报”这3个字词单元没连在一起的网页。

---你自己先分词再搜索,因为不再限制各字词单元相连,所以搜索出来的结果相关性视你用的关键词而定,可能很差,也可能很好(如果含有特殊字词单元就会较好)。这种情况下,我琢磨出一个针对性的搜索技巧,就是使用英文双引号,把几个字词单元强行定义为词组来进行搜索。比如搜索 [舒迅],只得到两个无用结果,但搜索 [舒 迅],就得到几万条无关结果,这时你可以加英文双引号搜索如 ["舒 迅"]。搜索效果还是勉强可看的。
另外,再教你一个偷懒的方法,就是英文双引号可以只输前一半,效果也是一样的,如关键词["舒 迅"]和["舒 迅]的搜索效果是相同的。当然,如果你本来就想用组合关键词搜索如 [生日快乐 歌],那么现在自己要先分词成["生日 快乐" 歌],这时就不能省后半个双引号了,否则就成了要求“歌”这个字紧跟在“生日快乐”之后,搜索效果理论上就不如不强求它紧跟了。

---好,google简体中文搜索突然失灵的直接原因和原理,大家都已清楚了,是没有对你输入的关键词分词。但是引发分词失灵的间接原因,就只有google公司自己知道了,可能是这次索引库更新中的误操作引起的,可能是某方面的疏忽引起的,也可能是某种新的代码或设置引起的,或者其它我们无法想像的原因导致。

---从技术上来说,这只是一个小case,我想google现在可能还不知道此事,如果它知道这个问题,一般来说很快就能恢复过来。有人已给过它email提醒此事了,但它收到email多,处理不及时,不知道什么时候能注意到此事,这是国外大公司的缺陷,国内用户沟通渠道不畅。

---从搜索引擎 的经营上来说,这是一个严重过失,其严重性几乎仅次于服务器当机了。因为它也导致合作伙伴雅虎和网易的网页搜索无法正常运行,很难想像雅虎这种把稳定性和品牌看得那么重的公司会原谅这种过失。

---对于google简体中文搜索的失灵,我既解释了原因和原理,我也介绍了勉强的解决方案――自己先分词再搜。当然,你自己分词是很累的,你要不断猜测搜索引擎 的分词方法,只要有一点分得不对,你就搜不到满意的内容,即使完全分对了,也不能保证得到满意的搜索结果。比如上边提到的“华盛顿邮报”,如果你认为“邮报”很常见,自己用[华盛顿 邮报]来搜索,那还是没结果的,如果想把所有关键词都拆分成单字来搜索比如[搜 索 引 擎],那么搜索效果也和[搜索 引擎]、[搜索引擎 ]截然不同。值得一提的是,百度的中文搜索引擎 在过去一段时间默默进步,近来还上了网页快照,一般的中文搜索,效果是不错的,如果你现在不愿意自己先分词再用google搜,那么可以尝试另一个解决方案――用百度搜索(www.baidu.com)。