[转载]中文搜索引擎技术揭密:中文分词

前言

信息的飞速增长,使搜索引擎成为人们查找信息的首选工具,Google、百度、yisou、中搜等大型搜索引擎一直人们讨论的话题。随着搜索市场价值的不断增加,越来越多的公司开发出自己的搜索引擎,阿里巴巴的商机搜索、8848的购物搜索等也陆续面世,自然,搜索引擎技术也成为技术人员关注的热点。

搜索引擎技术的研究,国外比中国要早近十年,从最早的Archie,到后来的Excite,以及altvista、overture、google等搜索引擎面世,搜索引擎发展至今,已经有十几年的历史,而国内开始研究搜索引擎是在上个世纪末本世纪初。在许多领域,都是国外的产品和技术一统天下,特别是当某种技术在国外研究多年而国内才开始的情况下。例如操作系统、字处理软件、浏览器等等,但搜索引擎却是个例外。虽然在国外搜索引擎技术早就开始研究,但在国内还是陆续涌现出优秀的搜索引擎,像百度、中搜等。目前在中文搜索引擎领域,国内的搜索引擎已经和国外的搜索引擎效果上相差不远。之所以能形成这样的局面,有一个重要的原因就在于中文和英文两种语言自身的书写方式不同,这其中对于计算机涉及的技术就是中文分词。

什么是中文分词

众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白「学」、「生」两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我 是 一个 学生。

中文分词和搜索引擎

中文分词到底对搜索引擎有多大影响?对于搜索引擎来说,最重要的并不是找到所有结果,因为在上百亿的网页中找到所有结果没有太多的意义,没有人能看得完,最重要的是把最相关的结果排在最前面,这也称为相关度排序。中文分词的准确与否,常常直接影响到对搜索结果的相关度排序。笔者最近替朋友找一些关于日本和服的资料,在搜索引擎上输入「和服」,得到的结果就发现了很多问题。下面就以这个例子来说明分词对搜索结果的影响,在目前最有三个中文搜索引擎上做测试。测试方法是直接在 Google 百度 中搜 上以「和服」为关键词进行搜索:

在Google上输入「和服」搜索所有中文简体网页,总共结果507,000条,前20条结果中有14条与和服一点关系都没有。在第一页就有以下错误:

“通信信息报:瑞星以技术和服务开拓网络安全市场”

“使用纯HTML的通用数据管理和服务- 开发者- ZDNet ...”

“陈慧琳《心口不一》 化妆和服装自己包办”

“::外交部:中国境外领事保护和服务指南(2003年版) ...”

“产品和服务”

等等。第一页只有三篇是真正在讲「和服」的结果。

在百度上输入「和服」搜索网页,总共结果为287,000条,前20条结果中有6条与和服一点关系都没有。在第一页有以下错误:

“福建省晋江市恒和服装有限公司系独资企业”

“关于商品和服务实行明码标价的规定”

“青岛东和服装设备”

在中搜山输入「和服」搜索网页,总共结果为26,917条,前20条结果都是与和服相关的网页。

这次搜索引擎结果中的错误,就是由于分词的不准确所造成的。通过笔者的了解,Google的中文分词技术采用的是美国一家名叫Basis Technology(http://www.basistech.com)的公司提供的中文分词技术,百度使用的是自己公司开发的分词技术,中搜使用的是国内海量科技(http://www.hylanda.com)提供的分词技术。业界评论海量科技的分词技术目前被认为是国内最好的中文分词技术,其分词准确度超过99%,由此也使得中搜在搜索结果中搜索结果的错误率很低。由此可见,中文分词的准确度,对搜索引擎结果相关性和准确性有相当大的关系。

中文分词技术

中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法。

现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

基于字符串匹配的分词方法

这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个「充分大的」机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:

  1. 正向最大匹配法(由左到右的方向);
  2. 逆向最大匹配法(由右到左的方向);
  3. 最少切分(使每一句中切出的词数最小)。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。

一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。

对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。

基于理解的分词方法

这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

基于统计的分词方法

从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。 M(X,Y)=logP(X,Y)/P(X).P(Y),其中 P(X,Y)是汉字X、Y的相邻共现概率,P(X) 、P(Y)分别是X、Y在语料中出现的概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如「这一」、「之一」、「有的」、「我的」、「许多的」等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。

到底哪种分词算法的准确度更高,目前并无定论。对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法来实现,都需要综合不同的算法。笔者了解,海量科技的分词算法就采用「复方分词法」,所谓复方,相当于用中药中的复方概念,即用不同的药才综合起来去医治疾病,同样,对于中文词的识别,需要多种算法来处理不同的问题。

 

分词中的难题。

有了成熟的分词算法,是否就能容易的解决中文分词的问题呢?事实远非如此。中文是一种十分复杂的语言,让计算机理解中文语言更是困难。在中文分词过程中,有两大难题一直没有完全突破。
  • 歧义识别。
歧义是指同样的一句话,可能有两种或者更多的切分方法。例如:表面的,因为「表面」和「面的」都是词,那么这个短语就可以分成「表面 的」和「表 面的」。这种称为交叉歧义。像这种交叉歧义十分常见,前面举的「和服」的例子,其实就是因为交叉歧义引起的错误。「化妆和服装」可以分成「化妆 和 服装」或者「化妆 和服 装」。由于没有人的知识去理解,计算机很难知道到底哪个方案正确。

交叉歧义相对组合歧义来说是还算比较容易处理,组合歧义就必需根据整个句子来判断了。例如,在句子「这个门把手坏了」中,「把手」是个词,但在句子「请把手拿开」中,「把手」就不是一个词;在句子「将军任命了一名中将」中,「中将」是个词,但在句子「产量三年中将增长两倍」中,「中将」就不再是词。这些词计算机又如何去识别?

如果交叉歧义和组合歧义计算机都能解决的话,在歧义中还有一个难题,是真歧义。真歧义意思是给出一句话,由人去判断也不知道哪个应该是词,哪个应该不是词。例如:「乒乓球拍卖完了」,可以切分成「乒乓 球拍 卖 完 了」、也可切分成「乒乓球 拍卖 完 了」,如果没有上下文其他的句子,恐怕谁也不知道「拍卖」在这里算不算一个词。

  • 新词识别。
新词,专业术语称为未登录词。也就是那些在字典中都没有收录过,但又确实能称为词的那些词。最典型的是人名,人可以很容易理解句子「王军虎去广州了」中,「王军虎」是个词,因为是一个人的名字,但要是让计算机去识别就困难了。如果把「王军虎」做为一个词收录到字典中去,全世界有那么多名字,而且每时每刻都有新增的人名,收录这些人名本身就是一项巨大的工程。即使这项工作可以完成,还是会存在问题,例如:在句子「王军虎头虎脑的」中,「王军虎」还能不能算词?

新词中除了人名以外,还有机构名、地名、产品名、商标名、简称、省略语等都是很难处理的问题,而且这些又正好是人们经常使用的词,因此对于搜索引擎来说,分词系统中的新词识别十分重要。目前新词识别准确率已经成为评价一个分词系统好坏的重要标志之一。

中文分词的应用

目前在自然语言处理技术中,中文处理技术比西文处理技术要落后很大一段距离,许多西文的处理方法中文不能直接采用,就是因为中文必需有分词这道工序。中文分词是其他中文信息处理的基础,搜索引擎只是中文分词的一个应用。其他的比如机器翻译(MT)、语音合成、自动分类、自动摘要、自动校对等等,都需要用到分词。因为中文需要分词,可能会影响一些研究,但同时也为一些企业带来机会,因为国外的计算机处理技术要想进入中国市场,首先也是要解决中文分词问题。在中文研究方面,相比外国人来说,中国人有十分明显的优势。

分词准确性对搜索引擎来说十分重要,但如果分词速度太慢,即使准确性再高,对于搜索引擎来说也是不可用的,因为搜索引擎需要处理数以亿计的网页,如果分词耗用的时间过长,会严重影响搜索引擎内容更新的速度。因此对于搜索引擎来说,分词的准确性和速度,二者都需要达到很高的要求。目前研究中文分词的大多是科研院校,清华、北大、中科院、北京语言学院、东北大学、IBM研究院、微软中国研究院等都有自己的研究队伍,而真正专业研究中文分词的商业公司除了海量科技以外,几乎没有了。科研院校研究的技术,大部分不能很快产品化,而一个专业公司的力量毕竟有限,看来中文分词技术要想更好的服务于更多的产品,还有很长一段路。


几种典型的自动分词系统评介

衡量自动分词系统的主要指标是切分精度和速度。由于切分速度与所运行的软、硬件平台密切相关,在没有注明运行平台时,切分速度只是一个参考指标,没有可比性。


另外,所注明的切分精度都是开发者自测试的结果。

1、几个早期的自动分词系统
自80年代初中文信息处理领域提出了自动分词以来,一些实用性的分词系统逐步得以开发,其中几个比较有代表性的自动分词系统在当时产生了较大的影响。

CDWS分词系统是我国第一个实用的自动分词系统,由北京航空航天大学计算机系于1983年设计实现,它采用的自动分词方法为最大匹配法,辅助以词尾字构词纠错技术。其分词速度为5-10字/秒,切分精度约为1/625,基本满足了词频统计和其他一些应用的需要。这是汉语自动分词实践的首次尝试,具有很大的启发作用和理论意义。例如,它比较科学地阐明了汉语中的歧义切分字段的类别、特征以及基本的对策(--切分歧义"标准分类"!)。

ABWS是山西大学计算机系研制的自动分词系统,系统使用的分词方法称为"两次扫描联想-回溯"方法,用联想-回溯来解决引起组合切分歧义。系统词库运用了较多的词法、句法等知识。其切分正确率为98.6%(不包括非常用、未登录的专用名词),运行速度为
48词/分钟。

CASS是北京航空航天大学于1988年实现的分词系统。它使用的是一种变形的最大匹配方法,即正向增字最大匹配。它运用知识库来处理歧义字段。其机械分词速度为200字/秒以上,知识库分词速度150字/秒(没有完全实现)。

书面汉语自动分词专家系统是由北京师范大学现代教育研究所于1991前后研制实现的,它首次将专家系统方法完整地引入到分词技术中。系统使知识库与推理机保持相对独立,知识库包括常识性知识库(词条的词类24种、歧义词加标志及其消除规则编号、消歧的部分语义知识,使用关联网络存储)和启发性知识库(消歧产生式规则集合,用线性表结构存储),词典使用首字索引数据结构。通过引入专家系统的形式,系统把分词过程表示成为知识的推理过程,即句子"分词树"的生长过程。据报道,系统对封闭原料的切分精度为99.94%,对开放语料的切分精度达到99.8%,在386机器上切分速度达到200字/秒左右。这些性能代表了当时的一流成就。现在看来,这个系统的一个重要理论意义是进一步研究清楚了歧义切分字段,即把歧义字段分为词法级、句法级、语义级和语用级(--"四级分类"),并且统计出它们的分布分别为84.1%、10.8%、3.4%和1.7%,还给出了每一种歧义的处理策略,从而比较彻底地剖析了汉语歧义切分字段的性质。它的另外一个理论意义是给出了当前基于句法和语义处理技术的歧义分析精度的上限("语义级理想切分精度"1/6250),并且说明只有综合运用各种知识、信息和推理机制的分析方法才又可能趋近理想切分精度。尽管本系统由于结构复杂、知识库建造困难且并不像预想的那么易于维护、效率不易提高等原因而未能广泛流行,但是其理论分析和指导思想已获得了普遍关注,影响了众多后继系统的开发。
 

2、清华大学早期SEG分词系统

此系统提供了带回溯的正向、反向、双向最大匹配法和全切分-评价切分算法,由用户来选择合适的切分算法。其特点则是带修剪的全切分-评价算法。系统考虑到了切分盲点的问题(某些字串永远不会被某种分词方法匹配出来),由此提出了全切分的概念,即找出输入字串的所有可能的子串,然后利用某种评价方法从所有这些可能的子串中选出最佳子串序列作为分词结果。为了解决全切分所带来的组合爆炸问题,又引进了对全切分过程进行修剪的方法,强制性地截止某些全切分的进行。用户在使用时,对于歧义较少的语料,可采用正向或反向最大匹配法;对于有较多交叉歧义的语料,可使用双向最大匹配法;对于其它歧义较大的语料,则采用全切分-评价算法,并需要采用一个合适的评价函数。由于对具体语料的统计参数设置了不确切初值,全切分-评价算法在第一、二遍切分过程中的正确率较低,随着切分的多遍进行,评价函数逐渐得以矫正,系统的切分精度逐步得以提高。经过封闭试验,在多遍切分之后,全切分-评价算法的精度可以达到99%左右。

3、清华大学SEGTAG系统

此系统着眼于将各种各类的信息进行综合,以便最大限度地利用这些信息提高切分精度。系统使用有向图来集成各种各样的信息,这些信息包括切分标志、预切分模式、其他切分单位。为了实现有限的全切分,系统对词典中的每一个重要的词都加上了切分标志,即标志"ck"或"qk"。"qk"标志表示该词可进行绝对切分,不必理会它是否产生切分歧义;"ck"标志表示该词有组合歧义,系统将对其进行全切分,即保留其所有可能的切分方式。
系统通过这两种标志并使用几条规则以实现有限的全切分,限制过多的切分和没有必要的搜索。规则包括:

1、无条件切出qk类词;
2、完全切分ck类词(保留所有可能子串);
3、对没有标记(qk或ck)的词,若它与别的词之间存在交叉歧义,则作全切分;
否则将其切出。

为了获得切分结果,系统采用在有向图DAG上搜索最佳路径的方法,使用一个评价函数EVALUATE Path),求此评价函数的极大值而获得最佳路径Pmax。所运用的搜索算法有两种,"动态规划"和"全切分搜索+叶子评价",使用了词频、词类频度、词类共现频度等统计信息。通过实验,该系统的切分精度基本上可达到99%左右,能够处理未登录词比较密集的文本,切分速度约为30字/秒。


4、国家语委文字所应用句法分析技术的汉语自动分词

此分词模型考虑了句法分析在自动分词系统中的作用,以更好地解决切分歧义。切词过程考虑到了所有的切分可能,并运用汉语句法等信息从各种切分可能中选择出合理的切分结果。其过程由两步构成:一、对输入字串进行处理,得到一个所有可能的切分字串的集合,即进行(不受限的)全切分;二、利用句法分析从全切分集合中将某些词选出来,由它们构成合理的词序列,还原为原输入字串。系统使用一个自由传播式句法分析网络,用短语文法描述句法规则,并将其表示为层次化网络图,通过此网络的信息传递过程来进行选词。网络的节点分为词类节点(终结符节点)和规则类节点(非终结符节点)。词类节点保存词的信息;规则类节点对信息进行合并和句法、语义分析,生成新的信息,并将本节点的信息传递出去(也就是用文法产生式进行归约,并进行属性计算-作者注)。网络运行的初态是所有节点状态为NO,各种可能切分的字串进入响应相应的词类节点(终结符节点),然后开始运用文法进行计算。
当网络的最高层节点S(文法起始符号)达到稳定状态OK时,计算结束,在最高节点处输出最后的切分结果。

从一般的角度来看,应用句法分析技术进行切词的方法是一种"生成-测试"方法,它是一种常用的AI问题求解方法,包括两个步骤:生成步-找出所有可能的解(假设);测试步-对各个假设进行检验,找出合格者。在应用句法分析进行切词时,其测试步是使用汉语的句法规则检验某种切分结果是否构成合法的汉语句子。这样可以将句法分析理论的各种成果用于切词之中,有多种句法分析技术可以应用,常见的是ATN分析、CYK分析(Chart Parsing)、G-LR分析等。可以将这种方法称做"切词-句法分析一体化"方法。随着软硬件水平的不断提高,直接运用时空消耗比较大的句法分析来检查分词结果的方法正在日益显现其优越性。

5、复旦分词系统

此系统由四个模块构成。

一、预处理模块,利用特殊的标记将输入的文本分割成较短的汉字串,这些标记包括标点符号、数字、字母等非汉字符,还包括文本中常见的一些字体、字号等排版信息。一些特殊的数词短语、时间短语、货币表示等,由于其结构相对简单,即由数词和特征
字构成构成,也在本阶段进行处理。为此系统特别增加一次独立的扫描过程来识别这些短语,系统维护一张特征词表,在扫描到特征字以后,即调用这些短语的识别模块,确定这些短语的左、右边界,然后将其完整地切分开;

二、歧义识别模块,使用正向最小匹配和逆向最大匹配对文本进行双向扫描,如果两种扫描结果相同,则认为切分正确,否则就判别其为歧义字段,需要进行歧义处理;

三、歧义字段处理模块,此模块使用构词规则和词频统计信息来进行排歧。构词规则包括前缀、后缀、重叠词等构词情况,以及成语、量词、单字动词切分优先等规则。在使用规则无效的情况下,使用了词频信息,系统取词频的乘积最大的词串作为最后切分结
果;

最后,此系统还包括一个未登录词识别模块,以解决未登录词造成的分词错误。未登录词和歧义字段构成了降低分词准确率的两大因素,而未登录词造成的切分错误比歧义字段更为严重,实际上绝大多数分词错误都是由未登录词造成的。系统对中文姓氏进行了自动识别,它利用了中文姓名的用字规律、频率,以及姓名的上下文等信息。通过对十万以上的中文姓名进行抽样综合统计,建立了姓氏频率表和名字用字频率表,由此可获得任意相邻的二、三个单字构成姓氏的概率大小和某些规律,再利用这些字串周围的一些称谓、指界动词和特定模式等具有指示意义的上下文信息,对字串是否构成姓名进行辨别。实验过程中,对中文姓氏的自动辨别达到了70%的准确率。系统对文本中的地名和领域专有词汇也进行了一定的识别。

6、哈工大统计分词系统

该系统是一种典型的运用统计方法的纯切词系统,它试图将串频统计和词匹配结合起来。

系统由三个部分构成:

一、预处理模块,利用显式和隐式的切分标记(标点符号、数字、ASCII字符以及出现频率高、构词能力差的单字词、数词+单字常用量词模式)将待分析的文本切分成短的汉字串,这大大地减少了需要统计的(无效)字串的数量和高频单字或量词边界串;

二、串频统计模块,此模块计算各个已分开的短汉字串中所有长度大于1的子串在局部上下文中出现的次数,并根据串频和串长对每个这样的子串进行加权,加权函数为 (F为串频,L为串长,即串中汉字个数)。根据经验,局部上下文中取为200字左右。局部上下文的串频计算使用一个滑动窗口(为一个队列式缓冲区,保存当前待切分汉字串及其前后20个短串),当当前待切分汉字串处理完之后,窗口下移一个短串(中心变为相邻下一个短串)。系统采用一个外散列表来记录窗口中的短串,以加快窗口中串频计数。散列函数取为汉字的GB-80位码(二级汉字共用入口95),每个桶中保存窗口中每一行(短串)上的汉字位置:(短串的行号,汉字列号),并且对于在窗口中出现多次的汉字位置用一个链指针连接起来,则计算某个字串在窗口中出现的频度时,不必将该字串与窗口中的短串逐个匹配,而只需统计在该字串中的各个汉字所对应的位置链表中能够相邻的位置的序列的个数即可。此外,还需要根据词缀集(前、后缀集合)对字串的权值进行提升,例如"处理器"中"处理"的权值很高,但由于对"处理器"的权值作了
提升(达到或超过了"处理"),就不会切成"处理/器"。如果某个汉字串的权值超过某一阈值D(取为40),则将此汉字串作为一个新识别的词,将其存入一临时词库中;

三、切分模块,首先用临时词库对每个短的汉字串进行切分,使用的是逐词遍历算法,再利用一个小型的常用词词典对汉字短串中未切分的子串进行正向最大匹配分词。对于短汉字串中那些仍未切分的子串,则将所有相邻单字作为一个权值很低的生词(例如"玛"、"莉")。其中每个模块都对待分析的文本进行了一次扫描,因而是三遍扫描方法。此系统能够利用上下文识别大部分生词,解决一部分切分歧义,但是统计分词方法对常用词识别精度差的固有缺点仍然存在(例如切出"由/来"、"语/用"、"对/联"等)。
经测试,此系统的分词错误率为1.5%,速度为236字/秒。
 

7、杭州大学改进的MM分词系统
考虑到汉语的歧义切分字段出现的平均最大概率为1/110,因而纯机械分词的精度在理论上能够达到1-1/110=99.1%。那么是否还有更一般、精度更高的机械分词系统呢?
根据统计,汉语的局部(词法一级)歧义字段占了全部歧义的84%,句法歧义占10%,如果提高系统处理这两类歧义的准确率,则可以大幅度提高切分精度。这方面的改进导致了改进的MM分词算法。将其阐述如下。

通过对交叉歧义字段的考察,发现其中80%以上可以通过运用一条无需任何语言知识的"归右原则"(交叉歧义字段优先与其右边的字段成词)就可以获得正确切分,--这是因为在多数情况下汉语的修饰语在前、中心词在后,因而"归右"好于"归左"。 "归右原则"可以使机械分词的精度上升到99.70%。这种考察给出了鼓舞人心的结果,有可能使机械分词系统达到这样的理论精度。

不过"归右原则"还有需要修正的地方,既对于"连续型交叉歧义"会发生错误,需要补充一条"左部结合"原则:若ABCDE为连续型交叉歧义字段,"归右原则"产生切分A B C D E 再由"左结合原则"(合并最左边的A、B)而得到AB C DE。

例如"结合成分子"->"结 合 成 分子"->"结合 成 分子"。
但是仍然还有例外,例如"当结合成分子时"->"当 结合 成分 子时";

为此引入"跳跃匹配",在词典中定义"非连续词"(实际上为串模式-作者注)"当*时",然后在切分时首先分出"当 结合成分子 时",然后再用"归右+左结合"切分中间的歧义字段。以上3项技术将机械分词的理论切分精度提高到了99.73%。

综合以上思想,就建立了如下改进的MM分词算法:

正向扫描
+ 增字最大匹配(包括"跳跃匹配非连续词")
+ 词尾歧义检查(逐次去掉首字做MM匹配以发现交叉歧义字段)
+ "归右原则"( 对于"连续型交叉歧义"还需要"左结合原则")。

系统的词典采用一级首字索引结构,词条中包括了"非连续词"(形如C1…* Cn)。系统精度的实验结果为95%,低于理论值99.73%,但高于通常的MM、RMM、DMM方法。

///bs: 有机会见面 就出了问题;

8、Microsoft Research 汉语句法分析器中的自动分词
微软研究院的自然语言研究所在从90年代初开始开发了一个通用型的多国语言处理平台NLPWin,最初阶段的研究都是对英语进行的。大约从1997年开始,增加了中文处理的研究,从而使NLPWin成为能够进行7国语言处理的系统(其中日语和韩语部分的研究已较早地开展起来)。中文部分的研究在开始时缺少必要的基础资源,于是经过细致的研究分析之后,购买了北大计算语言所的《现代汉语语法信息词典》,从此进展顺利,在短短的一年半的时间里达到了其它东方语种的处理水平。据报道,NLPWin的语法分析部
分使用的是一种双向的Chart Parsing,使用了语法规则并以概率模型作导向,并且将语法和分析器独立开。
NLPWin中文部分的一个特点是将词的切分同句法分析融合起来,即是一种前面提到过的"切词-句法分析一体化"方法:在其匹配切词阶段保留所有可能的切分结果(包括歧义切分),然后在句法分析阶段使用汉语的句法规则判断切分的合理性,如果对句子的某种切分能够成功地建立起完全的句法树,则表示该切分结果是正确的。对于有上下文及语用歧义的歧义切分字段,系统将生成两棵以上的分析树(可以使用某种标准进行排序)。
当然,为了提高系统效率,有必要在分词阶段排除尽可能多的局部一级的切分歧义。其中使用的技术有:消除所有导致词典中没有对应词条的单字的切分;为词典中的每一个词条增加一项"Atomic"属性(为1表示不需要分析其内部字串,为0表示需要保留其内部
的切分,即是一种组合歧义标志--作者注);以及为每个词增加 LeftCond1、RightCond1、LeftCond2、RightCond2 四类字符集合(前两项表示歧义绝对生效,后两项表示歧义有比较高的可能性生效,即歧义的直接前后文--作者注);还包括一些排歧规则(例如对于连续型歧义字段ABCD,如果AB和CD不与前后词交叉、A或D是名词、ABC和BCD都不是词,则切分出AB/CD:"昨天下午"->"昨天/下午")。

Bits and Atrributes in Chinese NLPwin (7-9-97)
Bits ……
Attributes ……
For overlapping ambiguity:
LeftClue (a record will not be added to tposrecs if the character on its 
left appears in this list.) 
RiteClue (a record will not be added to tposrecs if the character on its 
right appears in this list.)
LeftHint (a record will be assigned low probability if the character on its 
left appears in this list.)
RiteHint (a record will be assigned low probability if the character on its 
right appears in this list.)

实验结果表明,系统可以正确处理85%的歧义切分字段,在Pentium 200 PC上的速度约600-900字/秒。考虑到系统对多种切分结果进行了完全的句法分析、对词典每个属性进行了完全的查找,这是相当可观的效率。

我们的评论是: 这是汉语处理的一种有效的综合性途径,值得发扬推广;但这种使用"Atomic"属性的方法实际上只是表示了组合型歧义(占不到1/5)的特征,对更普遍的交叉型歧义(超过总歧义的4/5)的处理还存在效率和效果更好的方法。
 

9、北大计算语言所分词系统
本系统由北京大学计算语言学研究所研制开发,属于分词和词类标注相结合的分词系统。由于将分词和词类标注结合起来,系统可利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,同时将基于规则的标注排
歧与基于语料库统计模型的排歧结合起来,使规则的普遍性与灵活性得到统一,而且对未登入词的估算到达了相当高的准确率。系统的处理过程包括了自动切分和初始词性标记、切分歧义字段识别、组词和标注预处理、词性标记排歧、切分和词性标注后处理等
过程,系统的算法综合了多种数据组织和搜索技术,以很低的时空开销实现了高速匹配和查找,同时采用了当代计算语言学的统计方法,运用隐Markov过程进行词类标注和排歧,对算法的效率和稳固性都作了尽可能的优化。此系统的一大特色是对通用性的强
调,将最稳定、最常用的4万6千余条现代汉语基本词汇(即将扩充到7万多条)及其有关属性组织成为基本词典,这些词的基本地位都是由汉语语言学家逐一检验认可的,这是本系统通用性的保证;在此词典的基础上充分利用汉语构词法的研究成果,可以识别出大部分的常用词。同时本系统对用户词典机制作了最大限度的扩展,允许用户加入3部到30部以上的自定义词典,并允许用户对这些词典的优先顺序自由排列,这样就可以用较小规模的多个特殊词典更有针对性地解决具体领域的文本处理。因此本系统的语言模型实现了通用性与多样性的有效结合,并到达了极高的效率。经过最近在搜索算法上的改进,系统的分词连同标注的速度在Pentium 133Hz/16MB内存机器上的达到了每秒3千词以上,而在Pentium II/64MB内存机器上速度高达每秒5千词。自本系统开发以来,已先后向国内和国外十多家单位进行了转让,获得了普遍的好评。
在1998年4月进行的863全国智能接口评测会上,该系统有良好的表现。由于系统对待词的兼类问题的理论观点与评测标准有一些差别,所测得的标注准确率没有达到自测试的水平。该系统的词语分类体系一方面承认汉语词存在兼类现象,一方面又不主张扩大兼类现象,尽量把相同语法功能的词类当作是一个词类,而把词的具体语法属性留到后续过程处理。这些观点与评测标准有所不同。国内还有很多单位开发了分词系统,但大部分都没有参加这一具有极强可比性的评测。


你可能感兴趣的:(算法,搜索引擎,自然语言处理,语言,character,Parsing)