baidu分词算法分析之三

之三:对百度分词算法的进一步分析

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

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

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

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

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

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

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

时间: 2024-08-02 17:09:49

baidu分词算法分析之三的相关文章

baidu分词算法分析之二

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 Spelling Checker拼写检查错误提示(以及拼音提示功能) 拼写检查错误提示是搜索引擎都 具备的一个功能,也就是说用户提交查询 给搜索引擎,搜索引擎检查看是否用户输入的拼写有错误,对于中文用户来说一般造成的错误是输入法造成的错误.那么我们就来分析看看百度是 怎么实现这一功能的. 我们分析拼写检查系统关注以下几个问题: (1)系统如何

baidu分词算法分析之一

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 查询处理以及分词技术 随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能.技术和日流量.作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等:作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎 查找资料:作为技术人员,会把有代表性的搜索引擎作为研究对象. 搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机

高手总结分析如果利用baidu分词算法分析之二(转)_网站应用

Checker拼写检查错误提示(以及拼音提示功能) 拼写检查错误提示是搜索引擎都具备的一个功能,也就是说用户提交查询给搜索引擎,搜索引擎检查看是否用户输入的拼写有错误,对于中文用户来说一般造成的错误是输入法造成的错误.那么我们就来分析看看百度是怎么实现这一功能的. 我们分析拼写检查系统关注以下几个问题: (1)系统如何判断用户的输入是有可能发生错误的查询呢? (2)如果判断是可能错误的查询输入,如何提示正确的词汇呢? 那么百度是如何做的呢?百度判断用户输入是否错误的标准,我觉得应该是查字典,如果

商品搜索引擎---分词(插件介绍与入门实例)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 最近刚好在学习搜索引擎分词,有了解一些分词插件,在这里给各位猿友分享一下. 本文主要介绍四个分词插件(ICTCLAS.IKAnalyzer.Ansj.Jcseg)和一种自己写算法实现的方式,以及一些词库的推荐. 一.ICTCLAS 1.1.介绍 中文词法分析是中文信息处理的基础与关键.中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS

蒋鑫鹏:百度搜索算法总结—关键词分词算法

此文接上文百度算法总结详细请点击:蒋鑫鹏:百度算法总结 一.关于中文分词: 1.中文分词难度分析 首先要说明下的是:普通用户的搜索与做SEO或者更大说熟悉网络搜索用户的搜索习惯是非常不一样的,而恰巧普通搜索用户是百度搜索的基础力量.在开头赘述 这一点是蒋鑫鹏为了表达其对于百度搜索算法中的中文分词的重视.因为,对于百度google这样的第二代搜索引擎来说,采用的检索技术主要是依靠关键字来 匹配的,而用户对于关键词的理解与机器程序对于关键词的理解是有很大距离的. 在中文分词方面百度胜过了Google

NLPIR 分词准确率接近98.23%

http://www.nlpir.org/ 几个例子: 为人民办公益 为/p 人民/n 办/v 公益/n 独立自主和平等互利的原则 独立自主/vl 和/cc 平等互利/vl 的/ude1 原则/n 结婚的和尚未结婚的 结婚/vi 的/ude1 和/cc 尚未/d 结婚/vi 的/ude1 北京大学生前来应聘 北京/ns 大学生/n 前来/vi 应聘/vi 然并卵 然/rz 并/cc 卵/n 他说的确实在理 他/rr 说/v 的/ude1 确实/ad 在理/a scws的测试结果: postgre

[python] 使用Jieba工具中文分词及文本聚类概念

        前面讲述了很多关于Python爬取本体Ontology.消息盒InfoBox.虎扑图片等例子,同时讲述了VSM向量空间模型的应用.但是由于InfoBox没有前后文和语义概念,所以效果不是很好,这篇文章主要是爬取百度5A景区摘要信息,再利用Jieba分词工具进行中文分词,最后提出文本聚类算法的一些概念知识.         相关文章:         [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒         [python爬虫] Seleni

Lucene5学习之使用IKAnalyzer分词器

   之前的示例中,使用的是默认的StandardAnalyzer分词器,不能有效的进行中文分词,下面演示下如何在Lucene5.0中使用IKAnalyzer分词器.     首先下载IKAnalyzer分词器源码,IKAnalyzer分词器源码托管在OSChina的git上.下载地址: http://git.oschina.net/wltea/IK-Analyzer-2012FF 请如图下载IK的源代码:    然后打开Eclipse新建一个Java Project:      然后解压下载下

iOS网络编程之三——NSURLConnection的简单使用

iOS网络编程之三--NSURLConnection的简单使用 一.引言     在iOS7后,NSURLSession基本代替了NSURLConnection进行网络开发,在iOS9后,NSURLConnection相关方法被完全的弃用,iOS系统有向下兼容的特性,尽管NSURLConnection已经被弃用,但在开发中,其方法依然可以被使用,并且如果需要兼容到很低版本的iOS系统,有时就必须使用NSURLConnection类了. 二.使用NSURLConnection进行同步请求