页面载入中...
首页 » 作者

[查询处理以及分词]百度分词技术

一. 查询处理
用户向搜索引擎提交查询,搜索引擎一般在接受到用户查询后要做一些处理,然后在索引数据库里面提取相关的信息.那么百度在接受到用户查询后做了些什么工作呢?

1. 假设用户提交了不只一个查询串,比如”信息检索 理论 工具”.那么搜索引擎首先做的是根据分隔符比如空格,标点符号,将查询串分割成若干子查询串,比如上面的查询就会被解析为:<信息检索,理论,工具>三个子字符串;这个道理简单,我们接着往下看.

2. 假设提交的查询有重复的内容,搜索引擎怎么处理呢?比如查询”理论 工具 理论”,百度是将重复的字符串当作只出现过一次,也就是处理成等价的”理论 工具”,而GOOGLE显然是没有进行归并,而是将重复查询子串的权重增大进行处理.那么是如何得出这个结论的呢?我们可以将”理论 工具”提交给百度,返回341,000篇文档,大致看看第一页的返回内容.OK.继续,我们提交查询”理论 工具 理论”,在看看返回结果,仍然是那么多返回文档,当然这个不能说明太多问题,那看看第一页返回结果的排序,看出来了吗?顺序完全没有变化,而GOOGLE则排序有些变动,这说明百度是将重复的查询归并成一个处理的,而且字符串之间的先后出现顺序基本不予考虑(GOOGLE是考虑了这个顺序关系的).

3. 假设提交的中文查询包含英文单词,搜索引擎是怎么处理的?比如查询”电影BT下载”,百度的方法是将中文字符串中的英文当作一个整体保留,并以此为断点将中文切分开,这样上述的查询就切为<电影,BT,下载>,不论中间的英文是否一个字典里能查到的单词也好,还是随机的字符也好,都会当作一个整体来对待.至于为什么,你用查询” 电影dfdfdf下载”看看结果就知道了.当然如果查询中包含数字,也是如此办理.
注:到目前为止,一切很简单,也很清楚,百度怎么处理用户查询的呢?归纳如下:首先根据分割符号将查询分开,然后看看是否有重复的字符串,如果有,就抛弃多余的,只保留一个,接着判断是否有英文或者数字,如果有的话,把英文或者数字当作一个整体保留并把前后的中文切开.

二. 中文分词

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

怎么证明呢?我们向百度提交”电影下载”,看看返回结果中标为红字的地方,不难看出来,查询已经被切割成<电影,下载>两个单词了,说明分词程序已经开工了,如果是比4个中文字符更长的字符串,那分词程序就更不客气了,一定大卸八块而后快.我们来看看三个字符的情况,提交查询”当然择”,看起来这个查询不伦不类,那是因为我希望看到这个字符串被切分为<当然,择>,返回结果365篇相关页面,翻到最后一页,发现标红的关键字都是”当然择”连续出现的情况,好像没有切分,但是还不确定,那么再提交人工分好的查询”当然 择”看看,返回结果1,090,000篇,基本上可以确定没有进行分词了,当然另外一种解释是:对于三个字符先切分,然后将切分后的结果当作一个短语查询,这样看到的效果和没有切分是相似的.但是我倾向于判断百度对于少于3个字符的串没有切分,奥卡姆不是说了么”如无必要,勿增实体”,干吗做无用功呢.那么如果没有切分,会有一个随之而来的问题,怎么从索引库里面提取未切分的字符串呢?这牵扯到索引的问题,我觉得百度应该采取了两套索引机制,一种是按照单词索引,一种是按照N-GRAM索引,至于索引的具体问题,以后在详细论述.

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

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

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

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

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

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

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

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

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

原载: http://www.sh-seo.org/  上海SEO
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任

标签:

企业和个人想做网站优化必读

随着互联网的发展,网站优化(SEO)也显得越来越重要了,当然也有很多人尝到了SEO的甜头,所以越来越多的公司和个人也开始做seo了,进到这篇文章的人(当然我希望是进网站的人都能看到)我希望你看一下这个文章,然后再去咨询SEO的相关信息。

想做网站优化的个人和公司目前现状:
1、不明白什么是网站优化(SEO),只是在上网的时候听说有多重要,然后就想了解下。
2、知道了什么是网站优化(SEO),但是不知道如何收费。
3、知道网站优化,但是目前没有网站,想把网站建设和优化一起做。
4、网站建设完毕后不知道如何选取关键词。
5、不知道如何选择关键词对网站有利。

一、不明白什么是网站优化(SEO),只是在上网的时候听说有多重要,然后就想了解下
  说白了网站优化就是一个标准,就是通过对网站结构、代码、标签、关键词,链接等修改达到搜索引擎所要求的标准相符或者类似,然后达到网站排名的效果。
网站优化重要么? 只说重要的方面,关键词排名达到预定的效果,一天有可能有上几十万的订单,这也就是很多人花巨额去做seo的目的(孰轻孰重一眼就可以看出)。

2、知道了什么是网站优化(SEO),但是不知道如何收费。
   估计很多网站优化的人处于这个层次,他们知道自己的关键词,但是对收费的概念不是很清楚,我也遇到过很多类似的想要报价的人。
第一句话往往就是:你们这里网站优化多少钱? 一个很笼统的概念,专职做网站优化的人都知道,我们的价格不是定死的,要根据关键词的难易(冷热-关键词受关注度)程度,关键词受关注度越高,当然需要优化的价格就越高。
比如:“手机” 这个关键词肯定要比“水货手机”要受关注度高,
所以优化关键词“手机”的价格要比“水货手机”的价格要高。
所以需要做网站优化的人员尽量先告诉我们你优化的关键词,如果是外贸的公司尽量你写出来或者拼出来,让我们知道你优化的是那个关键词,这样子不会浪费一些不必要的时间。

3、知道网站优化,但是目前没有网站,想把网站建设和优化一起做。
  这样子的心情我也是比较了解的,他们是想一下子都做出来,然后出效果,在这里我要奉劝几句:千万不要心急,要一步步的来,往往做的越快失败的就越快。
1、想让网站优化人员给报一个确切的价格
2、非常想知道网站建设的报价和网站优化的报价
希望:你们让网站优化人员给你们讲清楚,然后再来报价,要不容易引入误区。

4、网站建设完毕后不知道如何选取关键词。
5、不知道如何选择关键词对网站有利。
这两个可以和在一起讲。首先第四个标题的意思就不对,原因是因为,做网站建设的人首要目的就是选好关键词,然后再网站优化,这样子才是好的建站步骤,不过由于目前很多条件的制约,很多人做好站再优化也是可以的。
如何选取关键词呢?
1、要分清主次
2、要知道针对的客户是那些群体
3、群体中主要搜索什么关键词找到他们想要的网页
4、什么样子的关键词对你的产品转化率最高
5、到各大搜索引擎查找相似的关键词然后看看对手做了那些关键词。

选取关键词需要注意:
1、主次要分清楚,比如“手机”这个关键词太宽泛,给关键词定个位,比如:“水货手机”,这样子既减少了关键词的关注度,又在关键词上节省了财力,为公司节省了开支。 选对关键词和选关键词的意义是不一样的。
2、要知道公司产品针对的是那些群体、那些人、受教育程度、通过什么方式找到该产品,很多产品并不能从网站上找,那你做这类产品的关键词也就没有意义了。
3、知道供求商是通过什么关键词进入网站的,经过大量时间的总结,然后修改目前的关键词进行排名。
4、看看对手做那些关键词,然后自己可以着手去做,仿照他并且超过他。

在这里给需要做网站优化的人员几条建议:
1、网站优化的人员越来越多,要慎重考虑。
2、价格只是前期的一个投入,后期会得到相应的回报。
3、要有耐心:不要着急,很多人找人做优化,一个月就没有耐心了,然后就不做了,所以做网站优化的一定要有耐心,根据关键词的不同一般需要1~5个月不等(一般在3个月之内)。
4、要定期的去检查下自己的网站或者发些信息,让seo有更多的时间去给你的网站做优化。
5、体谅一下seo,很多人都是一天16个小时待在电脑旁边。

最后:祝公司或者个人利润越来越高,SEOER在健康的同时赚更多的钱,实现企业和个人、SEOER共赢~

原载: http://www.hz-seo.com
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任

标签: