索引擎设计实用教程(3)-以百度为例

原创 2018年04月17日 14:29:16

上面说过,经过分析得出百度的分词系统采用双向最大匹配分词,但是后来发现推理过程中存在一个漏洞,而且推导出来的百度分词算法步骤还是过于繁琐,所以进一步进行分析,看看是否前面的推导有错误.

那么以前的分析有什么漏洞呢?我们推导百度分词有反向最大匹配的依据是百度将"北京华烟云"分词为<,京华烟云>,从这里看好像采用了反向最大匹配,因为正向最大匹配的结果应该是<北京,,烟云>,但是由此就推论说百度采用了双向最大匹配还是太仓促了,前面文章我们也讲过,百度有两个词典,一个普通词典,一个专有词典,而且是专有词典的词汇先切分,然后将剩余片断交给普通词典去切分.所以上面的"北京华烟云"之所以被切分成<,京华烟云>,另外一个可能是:京华烟云这个词汇是在专有词典里面存储的,所以先分析,这样得出"京华烟云",剩下"",没什么好切分的,所以输出<,京华烟云>.

这里只是假设,那么是否确实"京华烟云"在专有词典呢?我们再看一个例子"山东北京华烟云",百度切分的结果是<山东,,京华烟云>,如果"京华烟云"在普通词典,如果是反向切分,那么结果应该是<,东北,京华烟云>,如果是正向切分应该是<山东,北京,,烟云>,无论如何都分不出<山东,,京华烟云>.这说明什么?说明"京华烟云"是在那个专有词典,所以先切分出"京华烟云",然后剩下的"山东北"交由普通词典切分,明显是正向最大匹配的结果输出<山东,>.当然按照我们在第一篇文章的算法推导"山东北"的切分也会得出<山东,>的结论,但是明显比正向最大匹配多几个判断步骤,既然效果一样,另外一个更加简洁的方法也能说得通,那当然选择简便的方法了.所以初步判断百度采取的是正向最大匹配.

我们继续测试采用何种分词算法,为了减少专有词典首先分词造成的影响,那么查询里面不能出现相对特殊的词汇,构筑查询"天才能量级",这里应该没有专有词典出现过的词汇,百度切分为<天才,能量,>,看来是正向最大匹配的结果.另外,如果所有查询词汇都出现在专有词典,那么采取的是何种方法?这样首先就得保证词汇都出现在专有词典,这么保证这一点呢?我们构造查询"铺陈晓东方",百度切分为<,陈晓东,>,可以看出"陈晓东"是在专有词典的所以先切分出来.另外一个例子 "山东京城",百度切分为<山东,京城>,说明"东京"是在普通词典的.OK,构造查询"陈晓东京华烟云",通过前面分析可以看出两个词汇都在专有词典里面,百度切分为<陈晓东,京华烟云>,说明对于专有词典词汇也是采取正向最大匹配或者双向最大匹配.那么使用反向最大匹配了吗?构造查询例子"陈晓东方不败",首先我们肯定"陈晓东""东方不败"都是在专有词典出现的,如果是正向切分,那么应该是<陈晓东,,不败>或者<陈晓东,,,>如果是反向切分则是<,,东方不败>,可以看出百度的切分是<陈晓东,,不败>或者<陈晓东,,,>,说明采用的是正向最大匹配.通过分析,百度的词典不包含"不败"这个单词,所以实际上百度的切分结果是<陈晓东,,,>,很明显这和我们以前推导的算法是有矛盾的,所以以前的分析算法确实有问题,所以结论是百度采取的是正向最大匹配算法.

重新归纳一下百度的分词系统:首先用专有词典采用最大正向匹配分词,切分出部分结果,剩余没有切分交给普通词典,同样采取正向最大匹配分词,最后输出结果.

另外,GOOGLE也是采用正向最大匹配分词算法,不过好像没有那个专用词典,所以很多专名都被切碎了.

从这点讲,GOOGLE在中文词典构建上比百度差些,还需要加把子力气才行,不过这也不是什么多难的事.

 
/*版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/

索引擎设计实用教程(3)-以百度为例之三:对百度分词算法的进一步分析

中科院软件所 malefactor

200511

搜索引擎设计实用教程(1)-以百度为例

搜索引擎设计实用教程-以百度为例                           之一:查询处理以及分词技术                                   中科院软件所 张俊...
  • malefactor
  • malefactor
  • 2005-11-22 16:26:00
  • 16866

搜索引擎设计实用教程-以百度为例

随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎...
  • pm1784
  • pm1784
  • 2008-02-06 16:15:00
  • 268

!!!!搜索引擎设计实用教程-以百度为例

 搜索引擎设计实用教程-以百度为例                           之一:查询处理以及分词技术                                  中科院软件所 张俊...
  • sws9999
  • sws9999
  • 2008-11-05 21:36:00
  • 644

搜索引擎设计实用教程-以百度为例

搜索引擎设计实用教程-以百度为例 作者:中科院软件所 张俊林一、查询处理以及分词技术 随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流...
  • weimeiai
  • weimeiai
  • 2006-12-04 11:54:00
  • 591

算法分析与设计——以大学生程序设计竞赛为例

  • 2013年03月05日 15:02
  • 8.71MB
  • 下载

搜索引擎设计实用教程(3)-以百度为例

                        /*版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/                 搜索引擎设计实用教程(3)-以百度为例   ...
  • malefactor
  • malefactor
  • 2005-11-27 17:50:00
  • 6659

搜索引擎的设计与实现(一)从零开始?

毕业狗一枚,即将步入职场。仅以此系列,记录毕业设计中遇到的问题和解决的具体思路,重点不是完整的代码,而是得到完整代码的思考过程。所以只会贴出部分代码,勿怪。专业是电子商务,除了万恶的经管大类课程,技术...
  • u010386006
  • u010386006
  • 2015-06-19 16:26:21
  • 1808

题目:输入某年某月某日,判断这一天是这一年的第几天? 1.程序分析:以3月5日为例,应该先把前两个月的加起来, 然后再加上5天即本月的第几天,特殊情况, 闰年且输入月份大于3时需考虑多加一天

public class min { public static void main(String[] args) { int year, month, day, sum = 0; Scanne...
  • wu1317581750
  • wu1317581750
  • 2017-11-29 20:37:37
  • 417

搜索引擎设计一(百度为例)

随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎...
  • qq_35606497
  • qq_35606497
  • 2016-08-30 15:15:50
  • 1584

传感器原理设计与应用(第三版).pdf )

  • 2012年03月02日 22:13
  • 16.38MB
  • 下载
收藏助手
不良信息举报
您举报文章:索引擎设计实用教程(3)-以百度为例
举报原因:
原因补充:

(最多只允许输入30个字)