中科院软件所张俊林:Baidu分词算法分析(4)
作者:张俊林 来源:中科院 发布时间:2008-10-06 17:44:00
最后让我们总结归纳一下百度的拼写检查系统:
后台作业:
(1)前面的文 章我们说过,百度分词使用的词典至少包含两个词典一个是普通词典,另外一个是专用词典(专名等),百度利用拼音标注程序依次扫描所有词典中 的每个词条,然后标注拼音,如果是多音字则把多个音都标上,比如”长大“,会被标注为”zhang da/chang da“两个词条。
(2)通过标注完的 词条,建立同音词词典,比如上面的”长大“,会有两个词条: zhang daà长大” , chang daà长大。
(3)利用用户查询LOG频率信息给予每个 中文词条一个权重;
(4)OK,同音词词典建立完成了,当然随着分词词典的逐步扩大,同音词词典也跟着同步扩大;
拼写 检查:
(1)用户输入查询,如果是多个子字符串,不作拼写检查;
(2)对于用户查询,先查分词词典,如果发现有这个单词词条,OK, 不作拼写检查;
(3)如果发现词典里面不包含用户查询,启动拼写检查系统;首先利用拼音标注程序对用户输入进行拼音标注;
(4)对于标注好的拼音在同音词词典里面扫描,如果没有发现则不作任何提示;
(5)如果发现有词条,则按照顺序输出权重比较大的几个提 示结果;
拼音提示:
(1)对于用户输入的拼音在同音词词典里面扫描,如果没有发现则不作任何提示;
(2)如果 发现有词条,则按照顺序输出权重比较大的几个提示结果;
上面说过,经过分析得出百度的分词系统采用双向最大匹配分词,但是后来发现推理过程中存在一个漏洞,而且推导出来的百度分词算法步骤还是过于繁琐,所以进一步进行分析,看看是否前面的推导有错误。
那么以前的分析有什么漏洞呢?我们推导百度分词有反向最大匹配的依据是百度将“北京华烟云”分词为《北,京华烟云》,从这里看好像采用了反向最大匹配,因为正向最大匹配的结果应该是《北京,华,烟云》,但是由此就推论说百度采用了双向最大匹配还是太仓促了,前面文章我们也讲过,百度有两个词典,一个普通词典,一个专有词典,而且是专有词典的词汇先切分,然后将剩余片断交给普通词典去切分。所以上面的“北京华烟云”之所以被切分成《北,京华烟云》,另外一个可能是:京华烟云这个词汇是在专有词典里面存储的,所以先分析,这样得出“京华烟云”,剩下“北”,没什么好切分的,所以输出《北,京华烟云》。
这里只是假设,那么是否确实“京华烟云”在专有词典呢?我们再看一个例子“山东北京华烟云”,百度切分的结果是《山东,北,京华烟云》,如果“京华烟云”在普通词典,如果是反向切分,那么结果应该是《山,东北,京华烟云》,如果是正向切分应该是《山东,北京,华,烟云》,无论如何都分不出《山东,北,京华烟云》。这说明什么?说明“京华烟云”是在那个专有词典,所以先切分出“京华烟云”,然后剩下的“山东北”交由普通词典切分,明显是正向最大匹配的结果输出《山东,北》。当然按照我们在第一篇文章的算法推导“山东北”的切分也会得出《山东,北》的结论,但是明显比正向最大匹配多几个判断步骤,既然效果一样,另外一个更加简洁的方法也能说得通,那当然选择简便的方法了。所以初步判断百度采取的是正向最大匹配。
我们继续测试采用何种分词算法,为了减少专有词典首先分词造成的影响,那么查询里面不能出现相对特殊的词汇,构筑查询“天才能量级”,这里应该没有专有词典出现过的词汇,百度切分为《天才,能量,级》,看来是正向最大匹配的结果。另外,如果所有查询词汇都出现在专有词典,那么采取的是何种方法?这样首先就得保证词汇都出现在专有词典,这么保证这一点呢?我们构造查询“铺陈晓东方”,百度切分为《铺,陈晓东,方》,可以看出“陈晓东”是在专有词典的所以先切分出来。另外一个例子 “山东京城”,百度切分为《山东,京城》,说明“东京”是在普通词典的.OK,构造查询“陈晓东京华烟云”,通过前面分析可以看出两个词汇都在专有词典里面,百度切分为《陈晓东,京华烟云》,说明对于专有词典词汇也是采取正向最大匹配或者双向最大匹配。那么使用反向最大匹配了吗?构造查询例子“陈晓东方不败”,首先我们肯定“陈晓东”和“东方不败”都是在专有词典出现的,如果是正向切分,那么应该是《陈晓东,方,不败》或者《陈晓东,方,不,败》如果是反向切分则是《陈,晓,东方不败》,可以看出百度的切分是《陈晓东,方,不败》或者《陈晓东,方,不,败》,说明采用的是正向最大匹配。通过分析,百度的词典不包含“不败”这个单词,所以实际上百度的切分结果是《陈晓东,方,不,败》,很明显这和我们以前推导的算法是有矛盾的,所以以前的分析算法确实有问题,所以结论是百度采取的是正向最大匹配算法。
重新归纳一下百度的分词系统:首先用专有词典采用最大正向匹配分词,切分出部分结果,剩余没有切分交给普通词典,同样采取正向最大匹配分词,最后输出结果。
另外,GOOGLE也是采用正向最大匹配分词算法,不过好像没有那个专用词典,所以很多专名都被切碎了。
从这点讲,GOOGLE在中文词典构建上比百度差些,还需要加把子力气才行,不过这也不是什么多难的


猜你喜欢
- 作为Comsenz旗下的社区产品SupeSite 7.0 全面支持对 Discuz!、UCenter Home 的聚合功能。对于那些已经安装
- 酷影小何是我在网上用得最多的名字,我从2003年开始接触计算机网络,以前都是做免费的个人主页,2006年接触kingcms后,在大S的影响下
- 默认情况下容器可以使用的主机 CPU 资源是不受限制的。和内存资源的使用一样,如果不对容器可以使用的 CPU 资源进行限制,一旦发生容器内程
- 因为之前搭建的MongoDB分片没有采用副本集,最近现网压力较大,所以准备研究一下,于是在自己电脑的虚拟机中搭建环境,但是发现之前VMwar
- 番茄花园事件发生后,一份其作者洪磊和“好友”的对话录音引起了关注。该录音中,洪磊详细解析了番茄花园的盈利模式以及和其他网站、软件合作的情况,
- 在浏览有些网站时,真的不知道网页上面哪些是广告,哪些是网站提供的内容了。新浪新闻频道首页上就有和ChinaHR合作,点击后跑出了新浪网,这些
- Linux动态库函数的详解加载动态库void *dlopen(const char *filename, int flag);flag的可能
- 很多Exchange管理员都碰到一个头痛的问题:日志文件霸占磁盘空间。磁盘空间是有限的;但是Exchange只要在运行,日志文件的产生就是无
- IIS日志分析工具可以考虑使用开源的awstats来分析 下面是我写的安装手记,希望对你能有参考 AWStats在IIS6.0下的安装手记
- 电信和网通两大基础网络,人为地割裂了整个中国的网络。无论是选择把网站托管在电信、还是网通,都等于是在拒绝处于另外一个网络中的客户,因为实在太
- 以前自己弄的东西,现在帖出来,希望对大家有点用:)1.1 什么是FTP:文件传输协议原理1.1.1 命令选择1.1.2 命令格式1.2 wu
- 通常地,大多数Web站点的设计目标都是:以最易接受的方式,为访问者提供即时的信息访问。在过去的几年中,越来越多的黑客、病毒和蠕虫带来的安全问
- 有些会员之前就问过我这个问题,Dedecms和PHPWind的整合版退出系统后进入的是空间聚焦频道,有人希望跳转到网站的首页,在这里天涯给出
- 今天我们来研究一下网站广告如何选择,,或者直接说就是那些网站适合做google的广告站长建站选择好的题材,好的内容也是相当重要的如果你已经选
- 随着浏览器的更迭越频繁功能越强大,很多以前只在特定客户端实现的功能也纷纷依托浏览器在网络上重生,网页办公套件、网页游戏、网页IM……一时之间
- 改革开放以后,创业热潮风起云涌,一批民营企业拔地而起,08年以来就业形势的每况愈下,更是让很多高校毕业生选择自主创业。然而创业容易,受业难,
- 10月14日消息,据国外媒体报道,一场在2006年由几家“点击付费”搜索广告的签约客户对雅虎公司进行
- 昨天呢,gnomeontherun.com上面冒出了一篇文章,Comparing Wordpress, Drupal, and Joomla
- 原来qmail系统的邮箱一天起码要收十几份垃圾、病毒邮件,实在是比较烦,不是很喜欢qmail,特别是日志,让人不知所云,所以干脆考虑更换邮件
- 添加硬盘到虚拟机 并实现自动挂载 (https://www.jb51.net/article/135432.htm)完成挂载硬盘后,开始以下