分享好友 最新动态首页 最新动态分类 切换频道
百度的分词算法
2024-12-25 11:12

这篇文章主要参考中科院软件所张俊林先生在2005年11月写作的《搜索引擎设计实用教程》的分词部分,提供的查询关键词范例也源于该文。


搜索引擎本身并不提供信息,因此用户需要在搜索引擎的搜索框键入关键词进行查询以获取信息,然而由于中文信息检索存在的自身特点,比如中文语词之间没有空格,中文的语法分析和语义理解与英语相比更为困难。因此搜索引擎在信息索引前都要对用户所查询的语词进行切分。


并非任何一个查询词百度都会进行切分,如果关键词组仅仅包含小于等于3个中文字符就保留不进行切分,大于4个中文字符的时候,百度的分词程序便会开始运行,这时候才是百度分词的真正时机。当然,如果是完全匹配的话,不管几个词,一般情况看起来都似乎没有进行切分,这是因为百度拥有一个全世界最庞大的中文分词词库,这个词库不断增加用户最新的查询词,比如“我是谁的谁”,这个原本要进行分词,但是因为词库中存在,百度就知道这是黄征的一首歌,于是就不予切分,但其实仍然是有进行切分的,只是百度将切分后的结果当做一个短语进行查询,看到的效果就跟没有切分是一样的。


分词算法也有简单难易之分,比如正向最大匹配、反向最大匹配、双向最大匹配、语言模型方法、最短路径算法等等。


张俊林先生假设百度因为考虑到速度问题,不会采取比较复杂的算法,因此判断百度采用的是双向最大匹配算法。他提交了一个查询“毛泽东北京华烟云”以测试百度的分词是如何消歧以及是否有词典未登录词的识别功能。我们知道这个查询如果是正向最大匹配算法的话,那么应该输出为“毛泽东/北京/华/烟云”,反向最大匹配算法的话,则会输出“毛/泽/东北/京华烟云”,百度分词结果却是“毛泽东/北/京华烟云”,因此有可能是双向最大匹配算法。


这个分词结果还告诉我们百度分词可以识别人名,也可以识别“京华烟云”这种词典未登录词的功能。

 


我们一起来看下具体的百度分词过程


1,先查找内部的特殊分词词典,专用词典先切分,剩余关键词再交由普通词典来切分。


百度的这个词典应该包含了一些独有的人名、部分地名以及一些普通词典没有的新词。按照这样的方法,“毛泽东”被首先解析出来,剩下“北京华烟云”,通过反向最大匹配的分词结果,再次分为“北/京华烟云”。为了证明这时候百度分词采用了反向最大匹配,作者再次提交查询了“发毛泽东北”,百度没有输出正向最大匹配的“发毛,泽,东北”,而是输出“发,毛泽东,北”。而有时候比如查询“古巴比伦理”,则输出为正向最大匹配的结果“古巴比伦,理”,而非反向最大匹配的“古巴,比,伦理”,因此我们判断百度可能采用双向最大匹配分词算法。


这里附加说下,根据张俊林先生后来写的补充文章,结论应该是百度采取了正向最大匹配算法。例子说明见下


从例子“山东京城”百度切分为“山东,京城”说明“东京”是在普通词典里,再次查询“陈晓东京华烟云”,这两个词汇都在专有词典里面,因此百度切分为“陈晓东,京华烟云”。


说明对于专有词典词汇,百度分词算法采取正向最大匹配或者双向最大匹配。
查询“陈晓东方不败”,关键词“陈晓东”“东方不败”都在专有词典,正向切分应为“陈晓东,方,不败”,反向切分则应为“陈,晓,东方不败”,百度切分结果是第一种,说明还是采用正向最大匹配。


2,当正向和反向匹配分词结果一致时,百度直接输出切词结果,不一致的则采用最短路径方法,即切分的片断越少越好,比如“古巴,比,伦理”和“古巴比伦,理”相比选择后者,“北京,华,烟云”和“北,京华烟云”相比选择后者。


3,当正向反向匹配分词不一致,并且最短路径也相同时,比如提交查询“遥远古古巴比伦”,这个查询被百度切分为“遥远,古古,巴比伦”,说明词典里面有“巴比伦”,但是否有“古巴比伦”这个词汇不确定,此时看不出是正向切分还是反向切分得出的结果。换查询“遥远古巴比伦”,此时被切分为“遥远/古巴比伦”,说明词典里面有“古巴比伦”这个词汇,这说明“遥远古古巴比伦”是正向最大匹配的结果。为什么“遥远古古巴比伦”不会被反向切分为“遥/远古/古巴比伦”呢?百度在这种情况下,可能选择单字少的那组切分结果。


4,当切分后单字也一样多,比如查询“王强大小”,百度的分词结果是“王/强大/小”,是正向切分的结果,而非反向的“王/强/大小”,这说明有歧义而且单字也相同则选择正向切分结果。


我们来看下张俊林先生对百度分词算法的总结:首先查询专用词典(人名、部分地名等),将专有名称切出,剩下的部分采取双向分词策略。如果两者切分结果相同,说明没有歧义,直接输出分词结果;如果不一致,则输出最短路径的那个结果;如果长度相同,则选择单字词少的那一组切分结果;如果单字也相同,则选择正向分词结果。


如果百度是采用正向匹配的话,那么我们应该重新归纳一下百度的分词系统:首先用专有词典采用最大正向匹配分词,切分出部分结果;剩余没有切分交给普通词典,同样采取正向最大匹配分词,最后输出结果。这样更为简单,不过文章中的观点距离现在已经有4年多,目前百度的分词算法我们应该通过自己的SEO实践重新得出。


判断一个分词系统好不好,关键看两点:一个是消除歧义能力;一个是词典未登录词的识别,比如人名、地名、机构名等。百度的分词算法仍然未能非常好地消除歧义,不过其庞大的分词词典在业内确是没有任何一家搜索引擎能够领先,虽然从第一来看百度的分词算法似乎并不像其在宣传中的“你不知道我知道”的高深莫测,但由于其拥有的庞大分词词典,我们仍然可以说百度的分词算法是目前所有搜索引擎最为成熟的。

最新文章
2024年AI十大展望:GPT-4领衔大模型变革,谷歌拉响警报,训练数据告急_人工智能未来十大趋势(1)
据说,GPT-4有可能是多模态的,除文本生成之外,它还可以生成图片、视频以及其他数据类型的输入。这意味着GPT-4能够像DALL-E一样根据输入的文本提示词(prompt)生成图像,或者是可以输入视频然后通过
Win10分区表用MBR还是GPT好 Win10分区表用MBR还是GPT详细介绍
Win10分区表用MBR还是GPT好?我们在给Win10系统分区的时候,一般都是MBR和GPT这两种模式,那么这两种模式谁好一点呢?下面就详细介绍了他们的区别,一起来详细的熟悉一下吧。Win10分区表用MBR还是GPT好?我们在给Win10系统分区的时候,一般
CloudCompare插件开发之点云如何创建、保存并显示?
  CloudCompaer是一款优秀的开源软件,在点云处理时可以根据实际要求开发合适的插件,在实际使用中,创建点云、保存点云、显示点云的操作较为基础,为了使这些操作得到总结,本文实现创建点云、保存并显示
企业市场拓展新动力,SEO精准营销策略解析
SEO精准营销通过优化搜索引擎排名,帮助企业精确触达目标客户群体,提高网站流量和率,从而高效拓展市场,实现业务增长。随着互联网的快速发展,企业纷纷涌入线上市场,竞争日益激烈,为了在众多企业中脱颖而出,(搜索引擎优化)精准营销
WeLM简介及微信公众号开发
我的公众号后台设置了关键词自动回复,但是经常收到很多读者打错别字,导致无法触发,正巧,前段时间刚申请到WeLM的使用权限,于是就想着给公众号升级一下。WeLM是腾讯开发的一个擅长理解和生成文本的通用语言模型。 官方文档:​​​https
增加网站收录量的最佳策略是什么?
增加网站收录量的最佳策略一、了解搜索引擎优化(SEO)要增加网站收录量,首先需要了解搜索引擎优化(SEO)的基本概念和方法。搜索引擎会根据一套复杂的算法,从网站的元数据、内容质量、页面结构等方面评估网站的价值。通过正确的SEO策略
Win10 Word能语音输入吗|Win10文档如何用语音输入
手动打字跟语音识别输入文字,到底哪个更快呢?一直以来,网上都有不少的争议,可也没有个结果。不管两者之间那个更好,只要能帮助到我们就行。win10系统中,有些用户一直都没有用过语音识别功能。这篇文章就是UU诊所给大家带来的win10文档
Maven自动化构建依赖管理工具
以之前学习的技术来说,我们开发的都是单一架构的项目。 单一架构;整个项目只有一个工程。 但是,以后我们要开发分布式架构。 分布式架构:一个项目是由很多个工程组成的,而各个工程之间存在下面四种关系&
业绩及指引再超预期,“AI总龙头”英伟达靠的是什么?分析师高呼“AI革命才刚刚开始”,但加速度背后也有隐忧
  美东时间2月21日(周三)盘后,万众瞩目的英伟达公布截至2024年1月28日的2024财年第四季度财报。当期营收、利润均同比大幅增长,超出分析师预期,营收和利润已连续三个季度创纪录新高。此外,英伟达对2025财年第一季度的营收指引为240
SEO 是什么意思及湖南岚鸿在其中的角色
在当今数字化的时代,SEO(Search Engine Optimization)这个词汇已经成为了互联网领域中至关重要的概念,就是指通过一系列的技术和策略,来优化网站在搜索引擎结果页面(【开原建站公司】Search Engine Results Pages,简称 SERP)中的排
相关文章
推荐文章
发表评论
0评