`
orange.lpai
  • 浏览: 92696 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

百度分词技术

阅读更多
    之前在点石茶话会上也有重点讨论过百度分词算法,那时很多SEOer都认为百度在测试分词技术中,有些关键词带公司字眼的关键词,在搜索结果内容时基本上跟关键词不乎核,下面是中科院软件所张俊林一篇百度分词算法的三步曲,希望能帮SEOer解答一些关于百算分词算法的问题,内容可能长点,各位慢慢消化!
查询处理以及分词技术
随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量,作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;
作为 普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为技术人员,会把有代表性的搜索引擎作为研究对象,搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机,网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿,
但是,如何设计一个高效的搜索引擎?我们可以以百度所采取的技术手段来探讨如何设计一个实用的搜索引擎,搜索引擎涉及到许多技术点,比如查询处理,排序算法,页面抓取算法,CACHE机制,ANTI-SPAM等等,这些技术细节,作为商业公司的搜索引擎服务提供商比如百度,GOOGLE等是不会公之于众的,我们可以将现有的搜索引擎看作一个黑盒,通过向黑盒提交输入,判断黑盒返回的输出大致判断黑盒里面不为人知的技术细节,
查询处理与分词是一个中文搜索引擎必不可少的工作,而百度作为一个典型的中文搜索引擎一直强调其“中文处理”方面具有其它搜索引擎所不具有的关键技术和优势,那么我们就来看看百度到底采用了哪些所谓的核心技术,
我们分两个部分来讲述:查询处理/中文分词,
一、查询处理
用户向搜索引擎提交查询,搜索引擎一般在接受到用户查询后要做一些处理,然后在索引数据库里面提取相关的信息,那么百度在接受到用户查询后做了些什么工作呢?
1、假设用户提交了不只一个查询串,比如“信息检索 理论 工具”,
那么搜索引擎首先做的是根据分隔符比如空格,标点符号,将查询串分割成若干子查询串,比如上面的查询就会被解析为:<信息检索,理论,工具>三个子字符串;这个道理简单,我们接着往下看,
2、假设提交的查询有重复的内容,搜索引擎怎么处理呢?比如查询“理论 工具理论”,百度是将重复的字符串当作只出现过一次,也就是处理成等价的“理论工具”,而GOOGLE显然是没有进行归并,而是将重复查询子串的权重增大进行处理,那么是如何得出这个结论的呢?我们可以将“理论工具”提交给百度,返回341,000篇文档,大致看看第一页的返回内容,
OK,继续,我们提交查询“理论 工具理论”,在看看返回结果,仍然是那么多返回文档,当然这个不能说明太多问题,那看看第一页返回结果的排序,看出来了吗?顺序完全没有变化,而GOOGLE 则排序有些变动,这说明百度是将重复的查询归并成一个处理的,而且字符串之间的先后出现顺序基本不予考虑(GOOGLE是考虑了这个顺序关系的),
3、假设提交的中文查询包含英文单词,搜索引擎是怎么处理的?比如查询”电影BT下载”,百度的方法是将中文字符串中的英文当作一个整体保留,并以此为断点将中文切分开,这样上述的查询就切为<电影,BT,下载>,不论中间的英文是否一个字典里能查到的单词也好,还是随机的字符也好,都会当作一个整体来对待,至于为什么,你用查询“电影dfdfdf下载”看看结果就知道了,当然如果查询中包含数字,也是如此办理,
到目前为止,一切很简单,也很清楚,百度怎么处理用户查询的呢?归纳如下:首先根据分割符号将查询分开,然后看看是否有重复的字符串,如果有,就抛弃多余的,只保留一个,接着判断是否有英文或者数字,如果有的话,把英文或者数字当作一个整体保留并把前后的中文切开,
接着该干什么呢?该考虑分词的问题了,
二、中文分词
首先,讲讲百度的分词时机或者条件问题,是否是个中文字符串百度就拿来切一下呢?非也,要想被百度的分词程序荣幸的切割一下也是要讲条件的,哪能是个字符串就切割啊?你当百度是卖锯条的么?
那么什么样的字符串才满足被切割的条件呢?简单说来,如果字符串只包含小于等于3个中文字符的话,那就保留不动,当字符串长度大于4个中文字符的时候,百度的分词程序才出马大干快上,把这个字符串肢解掉,
怎么证明呢?我们向百度提交“电影下载”,看看返回结果中标为红字的地方,不难看出来,查询已经被切割成<电影,下载>两个单词了,说明分词程序已经开工了,如果是比4个中文字符更长的字符串,那分词程序就更不客气了,一定大卸八块而后快,我们来看看三个字符的情况,提交查询“当然择”,看起来这个查询不伦不类,那是因为我希望看到这个字符串被切分为<当然,择>,返回结果365篇相关页面,翻到最后一页,发现标红的关键字都是” 当然择”连续出现的情况,好像没有切分,但是还不确定,那么再提交人工分好的查询“当然择”看看,返回结果1,090,000篇,基本上可以确定没有进行分词了,当然另外一种解释是:对于三个字符先切分,然后将切分后的结果当作一个短语查询,这样看到的效果和没有切分是相似的,
但是我倾向于判断百度对于少于3个字符的串没有切分,奥卡姆不是说了么“如无必要,勿增实体”,干吗做无用功呢,那么如果没有切分,会有一个随之而来的问题,怎么从索引库里面提取未切分的字符串呢?这牵扯到索引的问题,我觉得百度应该采取了两套索引机制,一种是按照单词索引,一种是按照N-GRAM索引,至于索引的具体问题,以后在详细论述,
下面我们看看百度是采取的何种分词算法,现在分词算法已经算是比较成熟了,有简单的有复杂的,比如正向最大匹配,反向最大匹配,双向最大匹配,语言模型方法,最短路径算法等等,有兴趣的可以用GOOGLE去搜索一下以增加理解,这里就不展开说了,但是要记住一点的是:判断一个分词系统好不好,关键看两点,一个是消除歧义能力;一个是词典未登录词的识别比如人名,地名,机构名等,
那么百度用的是什么方法?我的判断是用双向最大匹配算法,至于怎么推理得出的,让我们一步步来看,当然,这里首先有个假设,百度不会采取比较复杂的算法,因为考虑到速度问题,
我们提交一个查询“陈天华北京华烟云”,又一个不知所云的查询,尽管不知所云但是自有它的道理,我想看看百度的分词是如何消歧以及是否有词典未登录词的识别的功能,如果是正向最大匹配算法的话,
那么输出应该是:”陈天华/北京/华/烟云”,
如果是反向最大匹配算法的话,那么输出应该是:”陈/天/华北/京华烟云”,
我们看看百度的分词结果:”陈天华/北/京华烟云”,一个很奇怪的输出,跟我们的期望相差较多,
但是从中我们可以获得如下信息:百度分词可以识别人名,也可以识别”京华烟云”,这说明有词典未登录词的识别的功能,我们可以假设分词过程分为两个阶段:第一阶段,先查找一个特殊词典,这个词典包含一些人名,部分地名以及一些普通词典没有的新词,这样首先将”陈天华”解析出来,剩下了字符串”北京华烟云”,而”北/京华烟云”,可以看作是反向最大匹配的分词结果,这样基本说得通,为了证明这一点,我们提交查询”发陈天华北”,我们期望两种分词结果,一个是正向最大匹配<发陈,天,华北>,一个是上述假设的结果<发,陈天华,北>[/color],事实上百度输出是第二种情况,这样基本能确定百度分词采取了至少两个词典,一个是普通词典,一个是专用词典(人名等),而且是专用词典先切分,然后将剩余的片断交由普通词典来切分,
继续测验,提交查询“[color=blue]古巴比伦理
”,如果是正向最大匹配,那么结果应该是<古巴比伦,理>,如果是反向最大匹配,那么结果应该是 <古巴,比,伦理>,事实上百度的分词结果是<古巴比伦,理>,从这个例子看,好像用了正向最大匹配算法;
此外还有一些例子表明好像是使用正向最大匹配的;但是且慢,我们看这个查询“北京华烟云”,正向最大匹配期望的结果是<北京,华,烟云>,而反向最大匹配期望的结果是 <北,京华烟云>,事实上百度输出的是后者,这说明可能采用的反向最大匹配;
从这点我们可以猜测百度采用的是双向最大匹配分词算法,如果正向和反向匹配分词结果一致当然好办,直接输出即可;但是如果两者不一致,正向匹配一种结果,反向匹配一种结果,此时该如何是好呢?
从上面两个例子看,在这种情况下,百度采取最短路径方法,也就是切分的片断越少越好,比如<古巴,比,伦理><古巴比伦,理>相比选择后者,<北京,华,烟云><北,京华烟云>相比选择后者,还有类似的一些例子,这样基本可以解释这些输出结果,
但是仍然遗留的问题是:如果正向反向分词不一致,而且最短路径也相同,那怎么办?输出正向的还是反向的结果?
我们再来看一个例子,提交查询“遥远古古巴比伦”,这个查询被百度切分为<遥远,古古,巴比伦>,说明词典里面有”巴比伦”,但是是否有”古巴比伦”这个词汇不确定,此时看不出是正向切分还是反向切分得出的结果,换查询为“遥远古巴比伦”,此时被切分为“遥远/古巴比伦”,这说明词典里面有”古巴比伦”这个词汇,这说明了“遥远古古巴比伦”是正向最大匹配的结果,那为什么“遥远古古巴比伦”不会被反向切分为”遥/远古/古巴比伦”呢,百度的可能选择是这种情况下选择单字少的那组切分结果,
当然还可以继续追问:如果切分后单字也一样多,那怎么办?最后看一个例子,查询“王强大小:”,百度将其切分为“王/强大/小”,是正向切分的结果,如果是反向的会被切分为“王/强/大小”,这说明有歧义而且单字也相同则选择正向切分结果,
OK,看到这里可能头已经有些晕了,最后总结一下百度的分词算法,当然里面还是有猜测的成分,算法如下:
首先查询专用词典(人名,部分地名等),将专有名称切出,剩下的部分采取双向分词策略,如果两者切分结果相同,说明没有歧义,直接输出分词结果,如果不一 致,则输出最短路径的那个结果,如果长度相同,则选择单字词少的那一组切分结果,如果单字也相同,则选择正向分词结果,
百度一直宣传自己在中文处理方面的优势,从上面看,分词算法并无特殊之处,消歧效果并不理想,即使百度采取比上述分词算法复杂些的算法也难以说成是优势,如果说百度有优势的话,唯一的优势就是那个很大的专用词典,这个专用词典登录了人名(比如大长今),称谓(比如老太太),部分地名(比如阿联酋等),估计百度采用学术界公布的比较新的命名实体识别算法从语料库里面不断识别出词典未登录词,逐渐扩充这个专门词典,如果这就是优势的话,那么这个优势能够保持多久就是个很明显的问题
分享到:
评论

相关推荐

    百度分词技术详细解析

    **百度分词技术详解** 在中文信息处理领域,分词是一项至关重要的基础任务。百度作为中国最大的搜索引擎,其分词技术对于搜索结果的准确性和效率起着决定性作用。本文将深入探讨百度分词技术的核心原理、应用以及...

    百度分词词库

    从给定的文件信息来看,标题“百度分词词库”和描述“据说是百度分词词库~”以及标签“分词、百度、词库”都指向了关于百度分词技术的相关内容。分词是自然语言处理(NLP)中的一个基础且重要的环节,尤其是在中文...

    帝国CMS关键词用百度分词来生成关键字

    本篇将详细介绍如何利用百度分词技术来增强帝国CMS中的关键词生成,以提高网站的搜索引擎可见度。 首先,我们需要理解什么是关键词。关键词是搜索引擎识别网页内容的主要依据,它们是用户在搜索框中输入的词汇。...

    做网站要主要的百度分词技术

    百度分词技术是搜索引擎优化(SEO)领域中的一个重要研究课题,尤其对于中文搜索引擎来说,分词技术的好坏直接关系到搜索结果的相关性和准确性。百度作为中国最大的搜索引擎,它的分词技术自然也受到了业界的广泛...

    百度中文分词词库

    百度作为中国领先的搜索引擎公司,其在中文分词技术上有深厚的积累。百度中文分词词库便是这些技术的产物,它包含了大量常见词汇、专有名词、成语以及网络用语等,覆盖了日常生活中各种语境下的词汇。词库的构建通常...

    百度seo分词技术 seo seo优化 seo分词技术

    **SEO分词技术详解** SEO(Search Engine Optimization)是搜索引擎优化的缩写,它涉及到一系列策略,旨在提高网站在搜索引擎中的自然排名,从而增加流量。其中,分词技术是SEO中至关重要的一环,尤其对于中文搜索...

    百度分词处理技术方法

    【标题】:“百度分词处理技术方法” 【描述】:“根据百度搜索结果,猜测百度中文分词的处理方法。有些参考价值,值得推荐” 【标签】:“分词 百度” 【知识点详解】: 在互联网时代,搜索引擎已经成为信息...

    自然语言处理分词_中文分词词库整理百度分词词库.txt

    在本文件中提到的“百度分词词库.txt”,表明了该词库是百度公司为了实现其自然语言处理系统中的中文分词而整理的。百度作为中国的互联网公司巨头,其搜索引擎业务使得其在自然语言处理技术上积累了大量的资源和经验...

    jieba词库+百度词库 (2).zip

    百度分词技术是百度搜索引擎的重要组成部分,对网页内容的理解和索引有着关键作用。将百度词库与jieba结合,可以进一步提高分词的准确性和覆盖率,尤其对于处理新闻、社交媒体等实时、多变的语言环境,效果更佳。 ...

    seo中神秘的分词切词_如何获取优质长尾流量

    本文将基于一篇关于百度分词技术的文章,深入探讨分词技术的基本原理、特点以及如何利用这些特点来改善SEO策略,从而更好地获取优质长尾流量。 #### 二、分词技术概述 分词技术是中文信息处理的基础之一,它是指将...

    baidu.rar_baidu_中文 词库_中文信息处理_分词_词库

    总的来说,百度分词词库是中文信息处理领域的重要工具,它的存在极大地推动了中文文本分析技术的发展。通过合理利用这个词库,开发者能够构建出更高效、准确的中文处理系统,服务于各种应用场景,如搜索引擎优化、...

    中文搜索引擎的分词技术百度的分词技术分析

    主要讲解了中文分词技术原理 &lt;br&gt;和 百度的分词技术分析

    百度分词算法详解

    【百度分词算法详解】 百度分词算法是中文搜索引擎中至关重要的技术,它涉及查询处理和中文分词两大部分。对于SEO(搜索引擎优化)从业者来说,深入理解分词技术有助于科学地分析关键词并制定策略。分词的准确性...

    百度分词算法分析.rar

    《百度分词算法分析》 在信息技术领域,搜索引擎是至关重要的工具,而分词算法作为搜索引擎的核心技术之一,对于信息检索的效率与准确性起着决定性的作用。本资料主要聚焦于百度搜索引擎的分词算法,深入探讨其工作...

    基于百度云的自然语言处理-分词-示例

    在这个"基于百度云的自然语言处理-分词-示例"中,我们关注的是如何利用百度云提供的服务来实现对文本数据的高效处理。百度云的自然语言处理API是一个强大的工具,它能帮助开发者快速集成自然语言处理功能到自己的...

    baidu分词词库

    百度作为国内领先的搜索引擎公司,其分词技术在业界享有盛誉。本文将深入探讨“百度分词词库”的概念、工作原理以及实际应用。 一、百度分词词库概述 百度分词词库,是百度搜索引擎使用的内部词汇表,包含了大量...

    百度分词算法详解第1/2页

    百度分词算法详解 百度分词算法是搜索引擎中非常重要的一部分,其主要...百度分词算法是一个非常重要的技术,涉及到搜索引擎的核心技术。只有深入了解百度分词算法,我们才能更好地理解搜索引擎的工作原理和技术细节。

Global site tag (gtag.js) - Google Analytics