`

搜索引擎设计实用教程(3)-以百度为例 之三:对百度分词算法的进一步分析

阅读更多
中科院软件所
2005年11月

上面说过,经过分析得出百度的分词系统采用双向最大匹配分词,但是后来发现推理过程中存在一个漏洞,而且推导出来的百度分词算法步骤还是过于繁琐,所以进一步进行分析,看看是否前面的推导有错误.

那么以前的分析有什么漏洞呢?我们推导百度分词有反向最大匹配的依据是百度将"北京华烟云"分词为<北,京华烟云>,从这里看好像采用了反向最大匹配,因为正向最大匹配的结果应该是<北京,华,烟云>,但是由此就推论说百度采用了双向最大匹配还是太仓促了,前面文章我们也讲过,百度有两个词典,一个普通词典,一个专有词典,而且是专有词典的词汇先切分,然后将剩余片断交给普通词典去切分.所以上面的"北京华烟云"之所以被切分成<北,京华烟云>,另外一个可能是:京华烟云这个词汇是在专有词典里面存储的,所以先分析,这样得出"京华烟云",剩下"北",没什么好切分的,所以输出<北,京华烟云>.

这里只是假设,那么是否确实"京华烟云"在专有词典呢?我们再看一个例子"山东北京华烟云",百度切分的结果是<山东,北,京华烟云>,如果"京华烟云"在普通词典,如果是反向切分,那么结果应该是<山,东北,京华烟云>,如果是正向切分应该是<山东,北京,华,烟云>,无论如何都分不出<山东,北,京华烟云>.这说明什么?说明"京华烟云"是在那个专有词典,所以先切分出"京华烟云",然后剩下的"山东北"交由普通词典切分,明显是正向最大匹配的结果输出<山东,北>.当然按照我们在第一篇文章的算法推导"山东北"的切分也会得出<山东,北>的结论,但是明显比正向最大匹配多几个判断步骤,既然效果一样,另外一个更加简洁的方法也能说得通,那当然选择简便的方法了.所以初步判断百度采取的是正向最大匹配.

我们继续测试采用何种分词算法,为了减少专有词典首先分词造成的影响,那么查询里面不能出现相对特殊的词汇,构筑查询"天才能量级",这里应该没有专有词典出现过的词汇,百度切分为<天才,能量,级>,看来是正向最大匹配的结果.另外,如果所有查询词汇都出现在专有词典,那么采取的是何种方法?这样首先就得保证词汇都出现在专有词典,这么保证这一点呢?我们构造查询"铺陈晓东方",百度切分为<铺,陈晓东,方>,可以看出"陈晓东"是在专有词典的所以先切分出来.另外一个例子 "山东京城",百度切分为<山东,京城>,说明"东京"是在普通词典的.OK,构造查询"陈晓东京华烟云",通过前面分析可以看出两个词汇都在专有词典里面,百度切分为<陈晓东,京华烟云>,说明对于专有词典词汇也是采取正向最大匹配或者双向最大匹配.那么使用反向最大匹配了吗?构造查询例子"陈晓东方不败",首先我们肯定"陈晓东"和"东方不败"都是在专有词典出现的,如果是正向切分,那么应该是<陈晓东,方,不败>或者<陈晓东,方,不,败>如果是反向切分则是<陈,晓,东方不败>,可以看出百度的切分是<陈晓东,方,不败>或者<陈晓东,方,不,败>,说明采用的是正向最大匹配.通过分析,百度的词典不包含"不败"这个单词,所以实际上百度的切分结果是<陈晓东,方,不,败>,很明显这和我们以前推导的算法是有矛盾的,所以以前的分析算法确实有问题,所以结论是百度采取的是正向最大匹配算法.

重新归纳一下百度的分词系统:首先用专有词典采用最大正向匹配分词,切分出部分结果,剩余没有切分交给普通词典,同样采取正向最大匹配分词,最后输出结果.

另外,GOOGLE也是采用正向最大匹配分词算法,不过好像没有那个专用词典,所以很多专名都被切碎了.

从这点讲,GOOGLE在中文词典构建上比百度差些,还需要加把子力气才行,不过这也不是什么多难的事.

引用:http://www.cnblogs.com/wormday/archive/2005/11/28/286454.html
分享到:
评论

相关推荐

    php搜索引擎之分词算法

    总的来说,PHP搜索引擎之分词算法是通过正向最大匹配方法对中文文本进行拆分,为构建高效的搜索系统打下基础。结合数据库管理和模板引擎,能够构建出一套完整的搜索解决方案。不过,实际应用中还需要考虑更多的优化...

    搜索引擎关键技术---分词

    在中文信息处理领域,分词作为基础且关键的技术之一,对于搜索引擎等自然语言处理应用至关重要。本文将围绕一篇研究文章《由字构词——中文分词新方法》展开讨论,深入解析其背后的理论与实践意义。 #### 二、“由...

    百度分词算法分析.rar

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

    百度(baidu)分词算法分析

    百度的分词算法是通过对查询字符串的分析和处理来实现的,包括对中文字符串的分割、对英文单词的处理等步骤。通过这些步骤,百度可以更好地理解用户的查询意图,并提供更加accurate的搜索结果。

    爬虫脚本项目源码-模拟百度搜索引擎

    在这个名为“爬虫脚本项目源码-模拟百度搜索引擎”的项目中,我们主要探讨的是如何使用Python编程语言来实现一个简单的搜索引擎模拟器。这个项目旨在帮助开发者了解搜索引擎工作原理,并提供了一个实践平台来学习...

    做自己的搜索引擎——搜索引擎精解案例教程--代码

    在本教程中,我们将深入探讨如何构建一个简单的搜索引擎,这是基于“做自己的搜索引擎——搜索引擎精解案例教程--代码”这个主题。搜索引擎是信息技术领域中的重要组成部分,它通过爬取、索引、处理和检索网络上的...

    分词算法baidu分词算法分析之

    总之,通过对百度分词算法的深入分析,不仅可以帮助我们更好地理解搜索引擎的工作原理,还能为SEO优化提供有力的支持。在未来的互联网发展中,分词技术将持续进化,为用户提供更加精准、高效的搜索体验。

    百度分词算法详解

    总之,分词算法是百度搜索引擎的核心技术之一,它对于提升搜索引擎的效率、准确性和用户体验起到了至关重要的作用。而对SEO从业者而言,理解分词算法原理,不仅有助于提升网站的搜索引擎排名,还能在信息的海洋中为...

    分词算法设计思想

    分词算法是自然语言处理中的基础技术,主要目的是将连续的文本序列划分为有意义的词语单元,以便于后续的分析和处理。在中文文本处理中,由于汉字的组合多样性,分词显得尤为重要。本文将围绕"分词算法设计思想"这一...

    搜索引擎技术教程 网络搜索引擎原理-第1章 简介 共21页.pptx

    ### 搜索引擎技术教程知识点概览 #### 一、搜索引擎技术概述 - **起源与目的**:搜索引擎技术起源于文本检索领域,旨在解决互联网上海量非结构化数据的有效检索问题。 - **核心挑战**:平衡数据全面性与可用性、...

    C# 搜索引擎 分词

    总之,C#中的搜索引擎分词是一个综合了语言学、统计学和计算机科学的领域,涉及到词典构建、算法实现、优化策略等多个方面。通过不断学习和实践,开发者可以构建出高效、精准的分词系统,从而提升搜索引擎的检索质量...

    中文词库-分词算法必备

    加权训练是指在算法设计中对不同的特征或样本赋予不同的权重,以优化模型性能。在中文分词算法中,加权训练尤为重要,因为它可以根据词频、上下文语义等因素调整分词策略,使算法更适应特定的语料库或应用场景。 BP...

    百度google综合搜索引擎源码

    【标题】:“百度google综合搜索引擎源码”涉及的是搜索引擎技术的整合与开发,尤其是将百度和Google这两大主流搜索引擎的功能进行结合。搜索引擎源码通常包括爬虫、索引构建、查询处理、排序算法以及用户界面等多个...

    国内首例开源搜索引擎分词

    《国内首例开源搜索引擎分词:云寻觅的探索与实践》 在信息化时代,搜索引擎作为获取信息的重要工具,其核心之一就是分词技术。分词是自然语言处理中的基础步骤,它将连续的文本流分割成具有独立意义的词语,从而为...

    ik分词器7.17.10

    ik分词器是为Elasticsearch(ES)设计的一款高效、可扩展的中文分词工具,它能有效地将中文文本拆分成一个个独立的词语,便于后续的索引和查询操作。ik分词器7.17.10是该工具的一个版本,适用于Elasticsearch 7.x...

    NLP作业:最大匹配中文分词+源代码+文档说明

    3、适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 4、作者介绍:某大厂资深算法工程师,从事Matlab、Python、C/C++、Java、YOLO算法仿真工作10年;擅长计算机视觉、 目标...

Global site tag (gtag.js) - Google Analytics