设为首页 收藏本站
| 数控仿真 | 技术文章 | 公路造价 | 文档管理软件 |
| 幸运之门彩票网 | 彩票新闻 | 免费招聘 | 百科问吧 | 百姓族谱 | 小游戏网 |
“猴年马月”的“马月”最初是指农历的?
文档管理 | 数据库技术 | 全文检索 | 中文分词 | 文件格式 | Lucene | FireBird | IIS | 免费小游戏 | 彩票论坛
Google
北京紫气东来网络公司 > 技术文章 > 中文分词 > 中文分词算法精髓上
分词技术 | 中文分词 |
中文分词算法精髓上

发表:北京紫气东来网络公司www.chianwiss.com,本文被阅读:1
查询处理与分词是一个中文搜索引擎必不可少的工作,而百度作为一个典型的中文搜索引擎一直强调其"中文处理"方面具有其它搜索引擎所不具有的关键技术和优势.那么我们就来看看百度到底采用了哪些所谓的核心技术.

我们分两个部分来讲述:查询处理/中文分词.

一. 查询处理

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

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

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

3. 假设提交的中文查询包含英文单词,搜索引擎是怎么处理的?比如查询"电影BT下载",百度的方法是将中文字符串中的英文当作一个整体保留,并以此为断点将中文切分开,这样上述的查询就切为<电影,BT,下载>,不论中间的英文是否一个字典里能查到的单词也好,还是随机的字符也好,都会当作一个整体来对待.至于为什么,你用查询" 电影dfdfdf下载"看看结果就知道了.当然如果查询中包含数字,也是如此办理.

到目前为止,一切很简单,也很清楚,百度怎么处理用户查询的呢?归纳如下:首先根据分割符号将查询分开,然后看看是否有重复的字符串,如果有,就抛弃多余的,只保留一个,接着判断是否有英文或者数字,如果有的话,把英文或者数字当作一个整体保留并把前后的中文切开.

接着该干什么呢?该考虑分词的问题了.

二. 中文分词

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

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

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

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

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

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

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

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

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

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

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

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

wiss文档协同系统三分钟解决一切文档管理的烦恼,帮您完成公司文档到资产的转变!!!
更多功能欢迎访问 http://www.chinawiss.com

 北京紫气东来网络公司 > 技术文章 > 中文分词
·中文分词的应用 (4)
·分词中的难题 (4)
·中文分词技术 (3)
·中文分词和搜索引擎 (4)
·什么是中文分词 (4)
·什么叫关键字密度? (3)
·搜索引擎的索引和搜索 (4)
·BAIDU分词算法分析之一 (3)
·中文分词和搜索引擎 (3)
·中文分词和搜索引擎 (3)
·中文分词的应用 (4)
·中文分词技术 (3)
·中文分词和搜索引擎 (4)
·中文分词和搜索引擎 (3)
·中文分词的应用 (4)
·中文分词技术 (3)
·中文分词和搜索引擎 (4)
·什么是中文分词 (4)
·中文搜索引擎技术揭密:中文分词 (5)
·ANNOTATED LUCENE(中文版) (3)
·中文搜索引擎技术揭密:网络蜘蛛 (14)
·对PDF文件的文本抽取(PDFBOX处理中文PDF) (37)
 最新文章
·什么叫关键字密度?
·搜索引擎的索引和搜索
·BAIDU分词算法分析之一
·中文分词和搜索引擎
·中文分词算法精髓上
·中文分词的应用
·分词中的难题
·中文分词技术
·中文分词和搜索引擎
·什么是中文分词
·一个例子学懂搜索引擎(LUCENE)
·用LUCENE为数据库搜索建立增量索引
·LUCENE 索引数据库
·一个关于FIREBIRD数据库的SQL查询方法
·MSSQL数据库转到FIREBIRD数据库的问题
·FIREBIRD的备份工具(NBACKUP)介绍
·FIREBIRD常用SQL
·FIREBIRD/INTERBASE内置函数使用说明
·用了下FIREBIRD,发现真的不错哦
·FIREBIRD数据库的修复
·数据库中LOW CACHE RBA和ON DISK RBA的区
·使用DB2DART降低管理表空间的高水位标记
·快速了解数据仓库及数据建模的常用新术语
·国外数据中心流行“液冷门”
·IT业成为压力最大行业之一
·软件测试工程师笔试题中数据库试题集锦
·数据库开发程序员在开发过程中的注意事项
·带你深入了解高效的内存数据库系统FASTD
·使用链接服务器在异构数据库中查询数据
·数据库审计系统核心指标浅析
·设计应用程序时避免阻塞的八个准则
·ORACLE新手经常碰到的六个错误及解决方案
·嵌入式数据库的现状和未来
·分区表、分区索引和全局索引
·开源数据库SHARDING技术
·甲骨文数据库涨价18% IBM降价抢客户
·数据库的三重境界
·浅谈数据库管理系统在近些年内的发展趋势
·数据库技术的发展趋势
·WISS“三不”原则 引发内容管理新变革
·WISS:企业文档管理的百元级解决方案
·中文搜索引擎技术揭密:中文分词
·ANNOTATED LUCENE(中文版)
·FIREBIRD数据库介绍
·网络查找文档比自己电脑上还方便?
·刑侦角度看搜索
·论数据库技术的发展史
·老板的权利 员工的负担?
·论数据库技术的发展史
·"金沙"文档,掀起企业淘金热
 热门文章
·PDF转成WORD TXT EXCEL RTF软件
·JAVA抽取WORD和PDF格式文件的四种武器
·对PDF文件的文本抽取(PDFBOX处理中文PDF
·PDF与WORD之间提取和转换经验浅谈
·用C#制作PDF文件全攻略
·希望PDFLIB TET― 理想的文本提取软件包
·LUCENE索引文件格式分析
·从HTML文件中抽取正文的简单方案
·天灾还是人祸,让你知道最爱是谁?
·全文检索概念
·LUCENE系统结构分析
·LUCENE的应用、特点及优势
·中文搜索引擎技术揭密:网络蜘蛛
·DELPHI自动化控制EXCEL
·DELPHI与WORD之间的融合技术
·C#抽取WORD文档内容
·VC实现类似EXCEL文件夹式样的标签控制
·用DELPHI编制WINDOWS95下的钩子函数
·网页搜索引擎竞争分析
·刑侦角度看搜索
·信息检索的核心支撑技术
·真正搜索高手
·搜索引擎优化
·JDBC HIBERNATE 连接数据库连接字符串大
·搜索引擎ANTISPAM系统设计指南
·用DELPHI编制WINDOWS95下的钩子函数
·全文检索概念
·垂直搜索引擎的选型
·论数据库技术的发展史
·"金沙"文档,掀起企业淘金热
免费小游戏
宠物连连看

真人美女换装

美女脱衣服

美女胴体猜猜看

调戏床上美女

黄金矿工
“开元盛世”是由唐朝哪个皇帝开创的?A:唐太宗 B:唐高宗 C:唐玄宗
| 2008-09-01 | 首页 | 功能介绍 | 免费下载 | 产品购买 | 在线服务 | 典型应用 | 技术文章 | 联系我们 |