中科院软件所张俊林:Baidu分词算法分析(2)
作者:张俊林 来源:中科院 发布时间:2008-10-06 17:44:00
二、中文分词
首先,讲讲百度的分词时机或者条件问题,是否是个中文字符串百度就拿来切一下呢?非也,要想被百度的分词程序荣幸的切割一下也是要讲条件的,哪能是个字符串就切割啊?你当百度是卖锯条的么?
那么什么样的字符串才满足被切割的条件呢?简单说来,如果字符串只包含小于等于3个中文字符的话,那就保留不动,当字符串长度大于4个中文字符的时候,百度的分词程序才出马大干快上,把这个字符串肢解掉。
怎么证明呢?我们向百度提交“电影下载”,看看返回结果中标为红字的地方,不难看出来,查询已经被切割成《电影,下载》两个单词了,说明分词程序已经开工了,如果是比4个中文字符更长的字符串,那分词程序就更不客气了,一定大卸八块而后快。我们来看看三个字符的情况,提交查询“当然择”,看起来这个查询不伦不类,那是因为我希望看到这个字符串被切分为《当然,择》,返回结果365篇相关页面,翻到最后一页,发现标红的关键字都是” 当然择”连续出现的情况,好像没有切分,但是还不确定,那么再提交人工分好的查询“当然 择”看看,返回结果1,090,000篇,基本上可以确定没有进行分词了,当然另外一种解释是:对于三个字符先切分,然后将切分后的结果当作一个短语查 询,这样看到的效果和没有切分是相似的。但是我倾向于判断百度对于少于3个字符的串没有切分,奥卡姆不是说了么“如无必要,勿增实体”,干吗做无用功呢。 那么如果没有切分,会有一个随之而来的问题,怎么从索引库里面提取未切分的字符串呢?这牵扯到索引的问题,我觉得百度应该采取了两套索引机制,一种是按照 单词索引,一种是按照N-GRAM索引,至于索引的具体问题,以后在详细论述。
下面我们看看百度是采取的何种分词算法,现在分词算法已经算是比较成熟了,有简单的有复杂的,比如正向最大匹配,反向最大匹配,双向最大匹配,语言模型方 法,最短路径算法等等,有兴趣的可以用GOOGLE去搜索一下以增加理解。这里就不展开说了。但是要记住一点的是:判断一个分词系统好不好,关键看两点, 一个是消除歧义能力;一个是词典未登录词的识别比如人名,地名,机构名等。
那么百度用的是什么方法?我的判断是用双向最大匹配算法。至于怎么推理得出的,让我们一步步来看。当然,这里首先有个假设,百度不会采取比较复杂的算法,因为考虑到速度问题。
我们提交一个查询“ * 北京华烟云”,又一个不知所云的查询,尽管不知所云但是自有它的道理,我想看看百度的分词是如何消歧以及是否有词典未登录词的识 别的功能,如果是正向最大匹配算法的话,那么输出应该是:” * /北京/华/烟云”,如果是反向最大匹配算法的话,那么输出应该是:”毛/泽/东北/京 华烟云”,我们看看百度的分词结果:” * /北/京华烟云”,一个很奇怪的输出,跟我们的期望相差较多,但是从中我们可以获得如下信息:百度分词可以识 别人名,也可以识别”京华烟云”,这说明有词典未登录词的识别的功能,我们可以假设分词过程分为两个阶段:第一阶段,先查找一个特殊词典,这个词典包含一 些人名,部分地名以及一些普通词典没有的新词,这样首先将” * ”解析出来,剩下了字符串”北京华烟云”,而”北/京华烟云”,可以看作是反向最大匹配 的分词结果。这样基本说得通。为了证明这一点,我们提交查询”发 * 北”,我们期望两种分词结果,一个是正向最大匹配《发毛,泽,东北》, 一个是上述假设的结果《发, * ,北》,事实上百度输出是第二种情况,这样基本能确定百度分词采取了至少两个词典,一个是普通词典,一个是 专用词典(人名等)。而且是专用词典先切分,然后将剩余的片断交由普通词典来切分。
继续测验,提交查询“古巴比 * ”,如果是正向最大匹配,那么结果应该是《古巴比伦,理》,如果是反向最大匹配,那么结果应该是《古 巴,比, * 》,事实上百度的分词结果是《古巴比伦,理》,从这个例子看,好像用了正向最大匹配算法;此外还有一些例子表明好像是使用 正向最大匹配的;但是且慢,我们看这个查询“北京华烟云”,正向最大匹配期望的结果是《北京,华,烟云》,而反向最大匹配期望的结果是 《北,京华烟云》,事实上百度输出的是后者,这说明可能采用的反向最大匹配;从这点我们可以猜测百度采用的是双向最大匹配分词算法,如果正向 和反向匹配分词结果一致当然好办,直接输出即可;但是如果两者不一致,正向匹配一种结果,反向匹配一种结果,此时该如何是好呢?从上面两个例子看,在这种 情况下,百度采取最短路径方法,也就是切分的片断越少越好,比如《古巴,比, * 》和《古巴比伦,理》相比选择后者,《北 京,华,烟云》和《北,京华烟云》相比选择后者。还有类似的一些例子,这样基本可以解释这些输出结果。
但是仍然遗留的问题是:如果正向反向分词不一致,而且最短路径也相同,那怎么办?输出正向的还是反向的结果?我们再来看一个例子。提交查询“遥远古古巴比 伦”,这个查询被百度切分为《遥远,古古,巴比伦》,说明词典里面有”巴比伦”,但是是否有”古巴比伦”这个词汇不确定,此时看不出是正向切 分还是反向切分得出的结果,换查询为“遥远古巴比伦”,此时被切分为“遥远/古巴比伦”,这说明词典里面有”古巴比伦”这个词汇,这说明了“遥远古古巴比 伦”是正向最大匹配的结果。那为什么“遥远古古巴比伦”不会被反向切分为”遥/远古/古巴比伦”呢,百度的可能选择是这种情况下选择单字少的那组切分结 果。
当然还可以继续追问:如果切分后单字也一样多,那怎么办?最后看一个例子,查询“王强大小:”,百度将其切分为“王/强大/小”,是正向切分的结果,如果是反向的会被切分为“王/强/大小”,这说明有歧义而且单字也相同则选择正向切分结果。
OK,看到这里可能头已经有些晕了,最后总结一下百度的分词算法,当然里面还是有猜测的成分,算法如下:
首先查询专用词典(人名,部分地名等),将专有名称切出,剩下的部分采取双向分词策略,如果两者切分结果相同,说明没有歧义,直接输出分词结果。如果不一 致,则输出最短路径的那个结果,如果长度相同,则选择单字词少的那一组切分结果。如果单字也相同,则选择正向分词结果。
百度一直宣传自己在中文处理方面的优势,从上面看,分词算法并无特殊之处,消歧效果并不理想,即使百度采取比上述分词算法复杂些的算法也难以说成是优势, 如果说百度有优势的话,唯一的优势就是那个很大的专用词典,这个专用词典登录了人名(比如大长今),称谓(比如老太太),部分地名(比如阿联酋等),估计 百度采用学术界公布的比较新的命名实体识别算法从语料库里面不断识别出词典未登录词,逐渐扩充这个专门词典。如果这就是优势的话,那么这个优势能够保持多久就是个很明显的问题。


猜你喜欢
- 网站的基础架构是单纯地建立以内容提供为主的网站,还是附加交流互动的论坛模式?内容提供还分为图片、文字、多媒体影音等类型。在网站的内容之后,是
- 随着浏览器的更迭越频繁功能越强大,很多以前只在特定客户端实现的功能也纷纷依托浏览器在网络上重生,网页办公套件、网页游戏、网页IM……一时之间
- 这里之所以是查看下IP ,是我们后面要建一个Centos远程工具Xshell 连接Centos的时候,需要IP地址,所以我们这里先学会查看虚
- 1.command not found 命令没有找到2.No such file or directory 没有这个文件或目录3.Permi
- 不太懂的SEO新手,往往看见用群发就怀疑,认为是作弊?是黑猫?会被K?会被惩罚?会被降权?会被删除站?其实新手也很可怜,他们连被K具体是什么
- Text Link Ads是什么?Text Link Ads是一家专门提供文字链接交易的平台,用户可以通过它出售和购买文字链接。这里要和大家
- 如何修改你域名的DNS服务器呢?下面我们就来讨论一下,假设你的域名是在Godaddy上注册的,你可以修改、添加、删除这个域名的DNS服务器,
- 每年的10月31日,有个Halloween,辞典解释为“The eve of All Saints’
- 正常情况下,我们在启动Windows Server 2008系统的时候,该操作系统会自动将安装在对应主机中的所有硬件全部加载成功,这个加载过
- 同Web站点一样,用户也可以使用多种方法来管理FTP站点服务器。例如:设置FTP站点服务器的虚拟目录的访问权限、设置匿名访问、创建用户账户等
- 10月16日消息,据消息人士透露,网页游戏运营商51wan近日调开通新域名kaixin(http://kaixin.51wan.com/),
- 本文来自2008年第一期电脑报(1.7日)a8-a10版介绍我们草根的站长故事。从互联网在中国出现的第一天起,它在社会大众心目中的印象,就和
- 由于需要在mac环境下做些开发,手头没有苹果机器,所以决定先整个虚拟机环境来试试。自己整理了一下过程.当中有参考其它资料。友情提示:可能比较
- 做网站,想必每一位站长的心愿都是一致的——更多的流量以便带来更多的收益!因此,不断宣传和推广自己的网站,让更多的人知道、了解并信赖你的网站,
- 有时候为了服务器的安全,我们需要经常登录远程的朋友,可以考虑将administrator改名字,这样一般不知道我们的用户名的人也会增加密码破
- 核心提示:19楼无疑给了许多站长的启示,或者说是伤痛。原来,把网站做得出名不是很难啊?论坛变成综合门户,也很简单。用discuz好几年了,发
- 首先自我介绍吧,我是兼职从事网赚GG与百度代注册代收PIN业务的,正规工作单位是邮政局。下面就GG发PIN与网站主长时间收不到平邮PIN给大
- 网络上有这样一种说法,说混血儿更聪明,后来又听说根据优生学的原理,血缘关系越远的个体进行基因配对,越能取得杂交优势。所以混血儿就会比较聪明。
- 确保关键任务应用程序始终可用是 IT 部门提供的一项关键服务,而且“高可用性”是 Windows S
- (4)"虚拟系统"中的"/dev"与"/devices"目录作"/de