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

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


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


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


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


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


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

 


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


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


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


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


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


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


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


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


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


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


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


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

最新文章
#人工智能#人工智能——语音识别开关灯(离线版)(AI摄像头2.0)
我们生活中常常会用到语音识别,比如手机上的语音助手,可以将人的声音转为文字;智能家居中有时也会用到语音识别,通过语音命令来控制家中的灯光、音箱、家居设备等。今天我们使用编程结合硬件制作一个语音识别开关灯的案例吧!【材料清单
AI与人类智能结合高效文案润色指南及在线工具推荐
在当今信息爆炸的时代,文案是企业与消费者沟通的桥梁,也是内容营销的重要组成部分。无论是专业的营销人员还是自由职业的内容创作者,掌握文案润色技巧都有助于提升信息传递的效果和品牌形象。本文将围绕【文案润色相关工作可兼】【ai文案
2018微信朋友圈经典说说大全内涵有哲理 先过好现在才会有未来
1.先过好现在,才会有未来。2.谁人背后不说人谁人背后无人说。3.莫非要你尝尽了苦悲才懂真情可贵。4.假如再也碰不到你,祝你早安,午安,晚安。5.人生没有彩排,每天都是直播,不仅收视率低,而且工资不高。6.有阳光的地方一定就会有黑暗,
Bankless: 十大浏览器钱包排名 WalletConnect得分最高
  我们中的很多人应该都还记得,当初那些加密钱包没有太多选择的日子。现在,我们有了很多选择!  以下是Bankless的职业作家和Metaversal的创建者——William M. Peaster对基于浏览器的10个加密钱包作出的分析和评价,以探讨Metamask
AC自动机讲解+[HDU2222]:Keywords Search(AC自动机)
首先,有这样一道题:给你一个单词W和一个文章T,问W在T中出现了几次(原题见POJ3461)。OK,so easy~HASH or KMP 轻松解决。那么还有一道例题:给定n 如果你能看到这里,说明你已经熟练
CP2102 USB to UART Bridge Controller v10.1.4 官方版
驱动精灵免安装版是一键检测系统驱动问题,快速帮您安装缺少的硬件驱动,本版本是绿色版无广告弹窗干扰,便于您随时使用,欢迎需要的来it猫扑网下载禁止安装好驱动后生成任务栏和桌面图标;禁止在安装有360卫士的电脑,弹窗强迫卸载360卫士
django+python图书馆用户借阅行为数据可视化大屏附源码
  数据可视化的实现:大屏由图书馆借阅现状分析模板,我们设计实现了用于个人用户行为分析的可视化系统,从借阅书籍类型、借阅时长、入馆流量分布及用户关系五个方面分析个人用户的行为特征,并进行案例分析。本部分使用的是本
ES学习日记(十一)-------Java操作ES之基本操作
前言 此篇博客还是一些基础操作,没什么可写的,需要的同学直接抄作业进行测试就可以 上一节写了连接和测试新增操作,这一节写java操作ES的基本操作,也就是增删改查,在这里补充一点知识,我们之前用了指定的索引进行指定添加有一
Android网络优化攻略,简单了解一下?(1)
throw unknownHostException } } } 这里可以稍微给大家展开下,LocalDns是不可以被信任的,经常会有运营商会搞一些奇奇怪怪的Dns拦截,导致大家收到的请求是运营商所缓存的(目的是为了省流量),所以阿里腾讯等都有
相关文章
推荐文章
发表评论
0评