转百度(baidu)中文分词算法分析(二)

调用百度分词api总结 在触电实习了将近一个月,体验了一把作为程序员的生活,其中印象最深的就是每天早上对昨天的工作进行总结,这是一个不错的督促自己不断学习进步的方法,也便于大家了解你的工作进度,以便于安排接下来的工作,大家还可以交流工作中遇到的各种问题,集思广益去解决它。以后的学习或者工作生活中也可以继续保持这一良好习惯,对自己的学习或者工作生涯也会有很大的帮助。 刚来的几天一直是由涛哥带着我写代码,调用百度的词法分析a... 阅读详情

百度(baidu)中文分词算法分析(二)

 下文是百度对用户查询关键词分词做了一个实践分析,百度这个搜索引擎对关键词如何切分呢?下面是中科院软件所张俊林一篇百度分词算法,转载一个SEOer的整理部分,希望更多seoer有帮助。

二、中文分词

首先,讲讲百度的分词时机或者条件问题,是否是个中文字符串百度就拿来切一下呢?非也,要想被百度的分词程序荣幸的切割一下也是要讲条件的,哪能是个字符串就切割啊?你当百度是卖锯条的么?

那么什么样的字符串才满足被切割的条件呢?简单说来,如果字符串只包含小于等于3个中文字符的话,那就保留不动,当字符串长度大于4个中文字符的时候,百度的分词程序才出马大干快上,把这个字符串肢解掉。

怎 么证明呢?我们向百度提交“电影下载”,看看返回结果中标为红字的地方,不难看出来,查询已经被切割成<电影,下载>两个单词了,说明分词 程序已经开工了,如果是比4个中文字符更长的字符串,那分词程序就更不客气了,一定大卸八块而后快。我们来看看三个字符的情况,提交查询“当然择”,看起 来这个查询不伦不类,那是因为我希望看到这个字符串被切分为<当然,择>,返回结果365篇相关页面,翻到最后一页,发现标红的关键字都是” 当然择”连续出现的情况,好像没有切分,但是还不确定,那么再提交人工分好的查询“当然择”看看,返回结果1,090,000篇,基本上可以确定没有进行 分词了,当然另外一种解释是:对于三个字符先切分,然后将切分后的结果当作一个短语查询,这样看到的效果和没有切分是相似的。

但是我倾向于 判断百度对于少于3个字符的串没有切分,奥卡姆不是说了么“如无必要,勿增实体”,干吗做无用功呢。那么如果没有切分,会有一个随之而来的问 题,怎么从索引库里面提取未切分的字符串呢?这牵扯到索引的问题,我觉得百度应该采取了两套索引机制,一种是按照单词索引,一种是按照N-GRAM索引, 至于索引的具体问题,以后在详细论述。

下面我们看看百度是采取的何种分词算法,现在分词算法已经算是比较成熟了,有简单的有复杂的,比如正 向最大匹配,反向最大匹配,双向最大匹配,语言模型方 法,最短路径算法等等,有兴趣的可以用GOOGLE去搜索一下以增加理解。这里就不展开说了。但是要记住一点的是:判断一个分词系统好不好,关键看两点, 一个是消除歧义能力;一个是词典未登录词的识别比如人名,地名,机构名等。

那么百度用的是什么方法?我的判断是用双向最大匹配算法。至于怎么推理得出的,让我们一步步来看。当然,这里首先有个假设,百度不会采取比较复杂的算法,因为考虑到速度问题。

我们提交一个查询“毛泽东北京华烟云”,又一个不知所云的查询,尽管不知所云但是自有它的道理,我想看看百度的分词是如何消歧以及是否有词典未登录词的识别的功能,如果是正向最大匹配算法的话,
那么输出应该是:”毛泽东/北京/华/烟云”,
如果是反向最大匹配算法的话,那么输出应该是:”毛/泽/东北/京华烟云”,
我们看看百度的分词结果:”毛泽东/北/京华烟云”,一个很奇怪的输出,跟我们的期望相差较多,
但 是从中我们可以获得如下信息:百度分词可以识别人名,也可以识别”京华烟云”,这说明有词典未登录词的识别的功能,我们可以假设分词过程分为两个阶段: 第一阶段,先查找一个特殊词典,这个词典包含一些人名,部分地名以及一些普通词典没有的新词,这样首先将”毛泽东”解析出来,剩下了字符串”北京华烟 云”,而”北/京华烟云”,可以看作是反向最大匹配的分词结果。这样基本说得通。为了证明这一点,我们提交查询”发毛泽东北”,我们期望两种分词结果,一 个是正向最大匹配<发毛,泽,东北>,一个是上述假设的结果<发,毛泽东,北>,事实上百度输出是第二种情况,这样基本能确定百 度分词采取了至少两个词典,一个是普通词典,一个是专用词典(人名等)。而且是专用词典先切分,然后将剩余的片断交由普通词典来切分。

继续 测验,提交查询“古巴比伦理”,如果是正向最大匹配,那么结果应该是<古巴比伦,理>,如果是反向最大匹配,那么结果应该是 <古巴,比,伦理>,事实上百度的分词结果是<古巴比伦,理>,从这个例子看,好像用了正向最大匹配算法;
此外还有一些例子表明好像是使用正向最大匹配的;但是且慢,我们看这个查询“北京华烟云”,正向最大匹配期望的结果是<北京,华,烟云>,而反向最大匹配期望的结果是 <北,京华烟云>,事实上百度输出的是后者,这说明可能采用的反向最大匹配;
从这点我们可以猜测百度采用的是双向最大匹配分词算法,如果正向和反向匹配分词结果一致当然好办,直接输出即可;但是如果两者不一致,正向匹配一种结果,反向匹配一种结果,此时该如何是好呢?
从 上面两个例子看,在这种情况下,百度采取最短路径方法,也就是切分的片断越少越好,比如<古巴,比,伦理>和<古巴比伦,理> 相比选择后者,<北京,华,烟云>和<北,京华烟云>相比选择后者。还有类似的一些例子,这样基本可以解释这些输出结果。

但是仍然遗留的问题是:如果正向反向分词不一致,而且最短路径也相同,那怎么办?输出正向的还是反向的结果?
我 们再来看一个例子。提交查询“遥远古古巴比伦”,这个查询被百度切分为<遥远,古古,巴比伦>,说明词典里面有”巴比伦”,但是是否有”古 巴比伦”这个词汇不确定,此时看不出是正向切分还是反向切分得出的结果,换查询为“遥远古巴比伦”,此时被切分为“遥远/古巴比伦”,这说明词典里面有” 古巴比伦”这个词汇,这说明了“遥远古古巴比伦”是正向最大匹配的结果。那为什么“遥远古古巴比伦”不会被反向切分为”遥/远古/古巴比伦”呢,百度的可 能选择是这种情况下选择单字少的那组切分结果。

当然还可以继续追问:如果切分后单字也一样多,那怎么办?最后看一个例子,查询“王强大小:”,百度将其切分为“王/强大/小”,是正向切分的结果,如果是反向的会被切分为“王/强/大小”,这说明有歧义而且单字也相同则选择正向切分结果。

OK,看到这里可能头已经有些晕了,最后总结一下百度的分词算法,当然里面还是有猜测的成分,算法如下:

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

百度一直宣传自己在 中文处理方面的优势,从上面看,分词算法并无特殊之处,消歧效果并不理想,即使百度采取比上述分词算法复杂些的算法也难以说成是优势, 如果说百度有优势的话,唯一的优势就是那个很大的专用词典,这个专用词典登录了人名(比如大长今),称谓(比如老太太),部分地名(比如阿联酋等),估计 百度采用学术界公布的比较新的命名实体识别算法从语料库里面不断识别出词典未登录词,逐渐扩充这个专门词典。如果这就是优势的话,那么这个优势能够保持多 久就是个很明显的问题。

第2讲:python-3.8安装baidu/lac 2.1,开启中文分词之旅。 中文分词、词性标注、专名识别等功能,经过分析比较最终选择了百度LAC(Lexical Analysis of Chinese)。 由于baidu/lac 2.1依赖paddlepaddle最高1.8.5(使用2.1会报错lac 2.1.2 depends on paddlepaddle>=1.6)。飞桨PaddlePaddle-源于产业实践的开源深度学习平台飞桨致力于让深度学习技术的创新与应用更简单。具有以下特点:同时支持动态图和静态图,兼顾灵活性和效率;精选应用效果最佳算法模型并提供官方支持;真正 阅读详情

相关推荐

Java调用百度AI开放平台API

百度AI开放平台 百度AI开放平台是全球领先的人工智能服务平台,面向开发者及企业开放120多项全球领先的AI能力和软硬一体组件,并提供 EasyDL定制化训练平台、对话系统开发平台UNIT、自定义模板OCR等AI定制化平台,为上下游合作伙伴搭建了展示与交易平台-AI市场。百度AI开放平台全力帮助各行业快速、高效地实现AI升级。 本次案例主要测试将百度AI开放平台Java SDK整合到自己的...

zhang_jiayuan的博客 5740

关于百度中文分词

了解搜索引擎分词技术对于我们的SEO工作有着重大的意义,不管是我们的关键词布局还是链接架构,都跟分词有莫大的关联。这里萧涵给大家谈下一百度中文分词(当然也不局限于百度,其他搜索引擎也是差不多的)。本文分两个部分,首先是摘取已有的关于分词的解释,另外再加入我自己对分词的扩展思路。 什么是中文分词? 我们都知道,英文句子都是由一个一个单词按空格分开组成,所以在分词方面就方便多了,但我们中文是一个

zhoubl668的专栏:远帆,梦之帆! 1673

利用Python爬取百度百科词条并生成词云图

利用Python爬取百度百科词条并生成词云图

LucianaiB的博客 4278

百度的分词算法

这篇文章主要参考中科院软件所张俊林先生在2005年11月写作的《搜索引擎设计实用教程》的分词部分,提供的查询关键词范例也源于该文。搜索引擎本身并不提供信息,因此用户需要在搜索引擎的搜索框键入关键词进行查询以获取信息,然而由于中文信息检索存在的自身特点,比如中文语词之间没有空格,中文的语法分析和语义理解与英语相比更为困难。因此搜索引擎在信息索引前都要对用户所查询的语词进行切分。并非任何一个查

yiihsia的学习阵地 1385

百度分词算法详解

本文通过搜索结果归纳分析+切词通用算法分析的方式对百度预处理阶段的查询处理和中文分词两项技术进行了阐述、总结,如果你对数据结构、算法有一定了解的话,理解起来会相对容易些;个人感觉,得出正向最大匹配算法不够准确,无论是专用词典还是普通词典里的词,都是有不同权重的,这根搜索频率应该有一定关系,基于这点,在出现多个专用词典里的词时,是需要采用双向最大匹配算法来检测到底哪一个专有词汇应该先被切出来

hexiankun的专栏 1069

百度(baidu)分词算法分析()

中文分词首先,讲讲百度的分词时机或者条件问题,是否是个中文字符串百度就拿来切一下呢?非也,要想被百度的分词程序荣幸的切割一下也是要讲条件的,哪能是个字符串就切割啊?你当百度是卖锯条的么?那么什么样的字符串才满足被切割的条件呢?简单说来,如果字符串只包含小于等于3个中文字符的话,那就保留不动,当字符串长度大于4个中文字符的时候,百度的分词程序才出马大干快上,把这个字符串肢解掉。怎么证

seajean Code 567

百度(baidu)分词算法分析()

   百度(baidu)分词算法分析() 发布:xueshitianqian | 分类:SEO技术 | 评论:1 | 引用:0 | 浏览:107<!-- strBatchCount+="spn229=229,"// -->

中转站 761

百度(baidu)分词算法分析

一篇老文,好多内容均已变化,不过思路可以参考,内容自http://blog.sina.com.cn/s/blog_5c4e87070100au2c.html 之前在广州点石茶话会上也有重点讨论过百度分词算法,那时很多SEOer都认为百度在测试分词技术中,有些关键词带公司字眼的关键词,在搜索结果内容时基本上跟关键词不乎核。下面是中科院软件所张俊林一篇百度分词算法的三步曲,希望能帮SEOer解...

空山新雨后 666

百度中文分词词库:构建与应用

本文还有配套的精品资源,点击获取 简介:自然语言处理中,中文分词是文本分析等任务的基础。百度中文分词词库提供了大量经过挑选和标注的中文词汇,旨在提升分词算法的准确性和效率。该词库支持规则和统计两种分词方法,包含常规词汇和特殊规则,适用于新词识别和歧义消除。词库的不断更新适应了语言的动态变化。用户可通过特定网站下载词库文件,经处理后可应用于各类中文文本处理系统中。 ...

weixin_42611177的博客 1492

baidu分词算法研究一

 中科院软件所 张俊林 查询处理以及分词技术随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告 等;作为 普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为技术人员,会把有代表性的搜索引擎作为研究对象。 搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。网络离开了搜索

我是IT人士 639

百度搜索引擎中文分词的三点原理

百度中文分词算法:指搜索引擎为了更好的辨别用户的需求,并且为了快速提供给用户需求性信息而使用的算法。   搜索引擎要在单位时间内处理千万亿级的页面数据量,因此搜索引擎拥有一个中文词库。比如百度现在大约有9万个中文词,那么搜索引擎就可以对千亿级的页面进行分析,按照中文词库进行了分类。   百度分词基本有三种分法   1、基于理解:傻瓜式匹配,小于等于3个中文字符百度是不进行切词的,比如搜索“大

sxty0220 博客之家 2068

[]分析百度中文分词结果

本结果是基于20000次以上的搜索分析百度而的来的,如有不当请指正,希望我们能够一起来揭开百度分词的面纱。 在大家的心目中可能百度的分词是极其复杂的,他代表了中国分词领域的最高水平,其实不然,简单最好,裸体最美,当我们拨下百度的衣服,既然会发现百度的分词是如此的简单,可能正应了一个名人的某一句话:当用户输入查询关键字的时候我们要准确的知道用户在想什么!这正是百度所追求的,他把所...

deform0032的博客 116

【亲测免费】 LAC: 百度的深度学习中文分词工具

LAC(Linguistic Analytics Chain)是由百度开发的一款基于深度学习的中文分词和词性标注工具。它利用双向GRU-CRF网络模型,提供高精度的分词和命名实体识别功能。此项目旨在简化中文文本处理流程,适合自然语言处理(NLP)领域内的多种应用场景,如搜索引擎优化、信息提取、情感分析等。 ## 项目快速启动 ### 安装LAC 首先,确保你的环境中已经安装了Python 2...

gitblog_00753的博客 1329

baidu分词技术分析

随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;作为 普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为技术人员,会把有代表性的搜索引擎作为研究对象。 搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿。

hello小工的专栏 593

baidu分词算法分析之一

查询处理以及分词技术随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为技术人员,会把有代表性的搜索引擎作为研究对象. 搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖

kingwkb的专栏 5343

如何快速掌握百度LAC:中文分词与NLP处理的终极工具指南

LAC(Lexical Analysis of Chinese)是百度自然语言处理部研发的**中文分词工具**,集成分词、词性标注、命名实体识别和词重要性分析功能。作为高效的NLP基础工具,它能帮助开发者快速处理中文文本,适用于搜索引擎优化、情感分析、智能客服等多种场景。 ## ???? 为什么选择LAC?3大核心优势解析 LAC凭借深度学习技术和工程优化,在同类工具中脱颖而出: ### ✅ 一...

gitblog_00343的博客 772
上一篇: 百度(baidu)分词算法分析(一)
下一篇: Google主页导航动画效果演示、下载及源代码解析
luanmad
博客等级 码龄19年 16粉丝 11原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值