现代汉语文本的词语切分技术(1)

(整期优先)网络出版时间:2019-07-24
/ 8

一、引言

1、汉语自动分词的必要性

汉语自动分词是对汉语文本进行自动分析的第一个步骤。可以这样设想汉语自动分词过程的困难:如果把某个英语文本中的所有空格符都去掉,然后让计算机自动恢复文本中原有的空格符,这就是词的识别过程,此过程的主要问题是对大量歧义现象的处理。

切词体现了汉语与英语的显著的不同。英语文本是小字符集上的已充分分隔开的词串,而汉语文本是大字符集上的连续字串。把字串分隔成词串,就是自动分词系统需要做的工作。

词是最小的、能独立活动的、有意义的语言成分。计算机的所有语言知识都来自机器词典(给出词的各项信息)、句法规则(以词类的各种组合方式来描述词的聚合现象)以及有关词和句子的语义、语境、语用知识库。汉语信息处理系统只要涉及句法、语义(如检索、翻译、文摘、校对等应用),就需要以词为基本单位。例如汉字的拼音-字转换、简体-繁体转换、汉字的印刷体或手写体的识别、汉语文章的自动朗读(即语音合成)等等,都需要使用词的信息。切词以后在词的层面上做转换或识别,处理的确定性就大大提高了。再如信息检索,如果不切词(按字检索),当检索德国货币单位"马克"时,就会把"马克思"检索出来,而检索"华人"时会把"中华人民共和国"检索出来。如果进行切词,就会大大提高检索的准确率。在更高一级的文本处理中,例如句法分析、语句理解、自动文摘、自动分类和机器翻译等,更是少不了词的详细信息。

2、汉语自动分词中的困难

在过去的十几年里, 汉语自动分词工作虽然也取得了很大成绩,但无论按照人的智力标准,还是同实用的需要相比较,差距还很大。我们首先需要对这一工作的困难有充分的认识。

1).分词规范的问题

(1)汉语词的概念

汉语自动分词的首要困难是词的概念不清楚。书面汉语是字的序列,词之间没有间隔标记,使得词的界定缺乏自然标准,而分词结果是否正确需要有一个通用、权威的分词标准来衡量。分词标准的问题实际上是汉语词与语素、词与词组的界定问题,这是汉语语法的一个基本、长期的问题。它涉及到许多方面:

·核心词表问题:分词需要有一个核心(通用、与领域无关的)词表,凡在该词表中的词,分词时就应该切分出来。对于哪些词应当收进核心词表,已提出各种收词条件,但这些条件本身难以操作,目前尚无合理的可操作的理论和标准。

· 词的变形结构问题:汉语中的动词和形容词有些可以产生变形结构,如“打牌”、“开心”、“看见”、“相信”可能变形成“打打牌”、“开开心”、“看没看见”、“相不相信”等。可以切分出“打打/牌”,但“开开/心”就不合理。“看/没/看见”说得过去,“相/不/相信”就说不过去了。又如大量的离合词“打架”、“睡觉”等可以合理地变形为“打了一场架”、“睡了一个觉”。对这些变形结构的切分缺少可操作而又合理的规范。

·词缀的问题:语素"者"在现代汉语中单用是没有意义的,因此"作者"、“成功者”、"开发者"内部不能切开。依据这个标准, “作出了巨大个人财产和精神牺牲者”、"克服许多困难而最终获得成功者"、"开发中国第一个操作系统软件者"也不能切开,但这样复杂的结构与词的定义相矛盾。又如职务名称"教育局长",语义上理解为"教育局之长",切成"教育/局长"、"教育局/长"、"教育/局/长"或不予切分,都会有人提出异议。

· 非词语素问题:一些汉字在古代汉语中是词,演变到现代汉语时成了非词语素,例如“民”。现代的书面汉语并非纯粹的"现代汉语",其中夹杂着不少文言成分,如“为民除害”、"以逸待劳"、"帮困济穷"等等。探寻白话文中夹杂文言成分的规律,是中文信息处理需要解决的一大问题。

(2)不同应用对词的切分规范要求不同

汉语自动分词规范必须支持各种不同目标的应用,但不同目标的应用对词的要求是不同的,甚至是有矛盾的。

· 以词为单位的键盘输入系统:为了提高输入速度,一些互现频率高的相互邻接的几个字也常作为输入的单位,如:“这是”、“每一”、“再不”、“不多”、“不在”、“这就是”、“ 也就”等。

· 校对系统:校对系统将含有易错字的词和词组作为词单位,如许多人“作”、“做”分不清。计算机自动判别时,若把它们当作单字词也不好区分,但在同前后文构成的词或词组中往往可以有确定的选择,故应把有关的词和词组都收进词库,如“敢做”、“敢作敢为”、"叫做"、“做出”、"看作"、"做为"等。校对系统要求分词单位较大。如把"勇斗"、"力擒"、"智取"等分别作为一个分词单位并划归及物动词参与上下文检查。"张老师"、"五分之三"、"北京中医学院"也应分别作为分词单位,并分别归类作为人、数字、机构名,再参与上下文检查。

· 简繁转换系统:"干"的繁体形式有“乾”和“幹”,它的简繁转换是非确定的。但在词和词组的层面上,它的转换常常是确定的。比如“幹部”、“幹事”、“乾净”、“乾燥”等。为了提高简繁转换的正确率,简繁转换系统把这类词或词组收进词表。

· 语音合成系统:语音合成系统收集多音字所组成的词和词组作为分词单位,如“补给”、"给水",因为在这些词或词组中,多音字"给"的音是确定的。

·检索系统:检索系统的词库注重术语和专名,并且一些检索系统倾向于分词单位较小化。比如,把"并行计算机"切成“并行/计算机”, "计算语言学"应切成“计算/语言学”,使得无论用"并行计算机"还是用"计算机"、“计算语言学”或是“语言学”检索,都能查到。分词单位的粒度大小需要考虑到查全率和查准率的矛盾。

2).分词算法的困难

要将汉语文本的字序列切分成词的序列,即使确定了一个合适的分词标准,要实现这个标准也还存在算法方面的困难。

(1)切分歧义

汉语文本中含有许多歧义切分字段,典型的歧义有交集型歧义(约占全部歧义的85%以上)和组合型歧义。只有向分词系统提供进一步的语法、语义知识才有可能作出正确的决策。排除歧义常常用词频、词长、词间关系等信息,比如“真正在”中,“真”作为单字词的频率大大低于"在"作为单字词的频率,即"在"常常单独使用而“真”作为单字词使用的可能性较小,所以应切成"真正/在"。有时切分歧义发生在一小段文字中,但为了排除歧义,需要看较长的一段文字。如"学生会"既可能是一个名词,指一种学生组织,也可能是"学生/会",其中"会"为"可能"或"能够"的意思。在“学生会主席”中只能是前者,在"学生会去"中只能是后者,在“学生会组织义演活动”中歧义仍然排除不了,则需要看更多的语境信息。

(2)未登录词识别

未登录词即未包括在分词词表中但必须切分出来的词,包括各类专名(人名、地名、企业字号、商标号等)和某些术语、缩略词、新词等等。"于大海发明爱尔肤护肤液"需要切分成"于大海/发明/爱尔肤/护肤液",并需要识别出"于大海"是人名,“爱尔肤”是商标名,"护肤液"是术语名词。专名中还包括外族、外国名的汉译名,如"斯普林菲尔德是伊里诺州首府","丹增嘉措70多岁了",其中的美国地名、藏族人名都需识别。未登录词的识别对于各种汉语处理系统不仅有直接的实用意义,而且起到基础性的作用。因为各种汉语处理系统都需要使用词频等信息, 如果自动分词中对未登录词识别不对,统计到的信息就会有很大误差。比如,一个分词系统若不做中外人名识别,分词后进行词频统计,可能会发现"张"、"王"、"李"、"刘"、“尔”、“斯”的频率比"却"、"如"、"你"的频率还要高,用这样的统计结果做汉语处理,其效果肯定有问题。又比如校对系统,如果系统不具备生词识别能力,就无法判断句子中大部分词的使用是否合理,也就不能检查真正的错误所在。

(3) 分词与理解的先后

计算机无法像人在阅读汉语文章时那样边理解边分词,而只能是先分词后理解,因为计算机理解文本的前提是识别出词、获得词的各项信息。这就是逻辑上的两难:分词要以理解为前提,而理解又是以分词为前提。由于计算机只能在对输入文本尚无理解的条件下进行分词,则任何分词系统都不可能企求百分之百的切分正确率。

3、分词系统的目标

汉语自动分词系统达到怎样的水平才能适应信息处理的要求?我们认为可以从以下几个方面来衡量,即准确、高效、通用及适用。

1).准确性

准确率是分词系统性能的核心指标。现在有些分词系统的准确率达到98%,似乎已经很高了,其实不然。若这种分词系统被用来支持句法分析、汉-外机器翻译系统,假定平均每句话有10个汉语词,那么10句话中会错切2个词,含有切分错误的2句就不可能被正确处理。因此仅仅由于分词阶段的准确度不够,语言理解的准确率就会减少20%。可见,分词系统的准确率应达到99.9%以上才能基本满足上层使用的要求。

2).运行效率

分词是各种汉语处理应用系统中共同的、基础性的工作,这步工作消耗的时间应尽量少,应只占上层处理所需时间的一小部分,并应使用户没有等待的感觉,在普遍使用的平台上大约每秒钟处理1万字或5千词以上为宜。

3).通用性

随着Internet的普遍应用,中文平台的处理能力不能仅限于我国,仅限于字处理,仅限于日常应用领域。作为各种高层次中文处理的共同基础,自动分词系统必须具有很好的通用性。自动分词系统应支持不同地区(包括我国的香港、台湾、澳门,以及新加坡和美洲、欧洲、澳洲的华语社区)的汉语处理;应能适应不同地区的不同用字、用词,不同的语言风格,不同的专名构成方式(如港澳台地区一些妇女名前冠夫姓,外国人名地名的汉译方式与我国人名地名很不一样)等;支持不同的应用目标,包括各种输入方式、简繁转换、语音合成、校对、翻译、检索、文摘等等;支持不同领域的应用,包括社会科学、自然科学和技术,以及日常交际、新闻、办公等等;应当同现在的键盘输入系统一样成为中文平台的组成部分。为了做到足够通用又不过分庞大,必须做到在词表和处理功能、处理方式上能灵活组合装卸,有充分可靠和方便的维护能力,有标准的开发接口。同时,系统还应该具有良好的可移植性,能够方便地从一个系统平台移植到另一个系统平台上而无需很多的修改。当然,完全的通用性很难达到。

4).适用性

汉语自动分词是手段而不是目的,任何分词系统产生的结果都是为某个具体的应用服务的。好的分词系统具有良好的适用性,可以方便地集成在各种各样的汉语信息处理系统中。

二、自动分词算法的分类

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

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

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

1) 、正向最大匹配

2) 、逆向最大匹配

3) 、最少切分(使每一句中切出的词数最小)

还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。由于分词是一个智能决策过程,机械分词方法无法解决分词阶段的两大基本问题:歧义切分问题和未登录词识别问题。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。

一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。

另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。

对于机械分词方法,可以建立一个一般的模型,形式地表示为ASM(d,a,m),即Automatic Segmentation Model。其中,

d:匹配方向,+1表示正向,-1表示逆向;

a:每次匹配失败后增加/减少字串长度(字符数),+1为增字,-1为减字;

m:最大/最小匹配标志,+1为最大匹配,-1为最小匹配。

例如,ASM(+, -, +)就是正向减字最大匹配法(即MM方法),ASM(-, -, +)就是逆向减字最大匹配法(即RMM方法),等等。对于现代汉语来说,只有m=+1是实用的方法。用这种模型可以对各种方法的复杂度进行比较,假设在词典的匹配过程都使用顺序查找和相同的计首字索引查找方法,则在不记首字索引查找次数(最小为log<汉字总数> » 12~14)和词典读入内存时间的情况下,对于典型的词频分布,减字匹配ASM(d,-,m)的复杂度约为12.3次,增字匹配ASM(d,+,m)的复杂度约为10.6。

另外,还可以证明,早期曾流行一时的“切分标志字串”预处理方法是一个毫无必要的技术,它增加了一遍扫描“切分标志词典”的时空复杂性,却并没有提高分词精度,因为所谓的切分标志其实都已经隐含在词典之中,是对词典功能的重复。实际上“切分标志”也没有标记歧义字段的任何信息。因此,在近来的分词系统中,已经基本上废弃了这种“切分标志”预处理方法。

2、基于理解的分词方法

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

3、基于统计的分词方法

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

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

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

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/100=99.1%。那么是否还有更一般、精度更高的机械分词系统呢?根据统计,汉语的局部(词法一级)歧义字段占了全部歧义的84%,句法歧义占10%,如果提高系统处理这两类歧义的准确率,则可以大幅度提高切分精度。这方面的改进导致了改进的MM分词算法。将其阐述如下。

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

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

但是仍然还有例外,例如“当结合成分子时”—>“当 结合 成分 子时”;为此引入“跳跃匹配”,在词典中定义“非连续词”(实际上为串模式—作者注)“当*时”,然后在切分时首先分出“当 结合成分子 时”,然后再用“归右+左结合”切分中间的歧义字段。以上3项技术将机械分词的理论切分精度提高到了99.73%。综合以上思想,就建立了如下改进的MM分词算法:

正向扫描

+ 增字最大匹配(包括“跳跃匹配非连续词”)

+ 词尾歧义检查(逐次去掉首字做MM匹配以发现交叉歧义字段)

+ “归右原则”( 对于“连续型交叉歧义”还需要“左结合原则”)。

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

8、Microsoft Research 汉语句法分析器中的自动分词

微软研究院的自然语言研究所在从90年代初开始开发了一个通用型的多国语言处理平台NLPWin,最初阶段的研究都是对英语进行的。大约从1997年开始,增加了中文处理的研究,从而使NLPWin成为能够进行7国语言处理的系统(其中日语和韩语部分的研究已较早地开展起来)。中文部分的研究在开始时缺少必要的基础资源,于是经过细致的研究分析之后,购买了北大计算语言所的《现代汉语语法信息词典》,从此进展顺利,在短短的一年半的时间里达到了其它东方语种的处理水平。据报道,NLPWin的语法分析部分使用的是一种双向的Chart Parsing,使用了语法规则并以概率模型作导向,并且将语法和分析器独立开。

其中文部分的一个特点是将词的切分同句法分析融合起来,即是一种前面提到过的“切词—句法分析一体化”方法:在其匹配切词阶段保留所有可能的切分结果(包括歧义切分),然后在句法分析阶段使用汉语的句法规则判断切分的合理性,如果对句子的某种切分能够成功地建立起完全的句法树,则表示该切分结果是正确的。对于有上下文及语用歧义的歧义切分字段,系统将生成两棵以上的分析树(可以使用某种标准进行排序)。

当然,为了提高系统效率,有必要在分词阶段排除尽可能多的局部一级的切分歧义。其中使用的技术有:消除所有导致词典中没有对应词条的单字的切分,为词典中的每一个词条增加一项“Atomic”属性(为1表示不需要分析其内部字串,为0表示需要保留其内部的切分,即是一种组合歧义标志——作者注),以及为每个词增加 LeftCond1、RightCond1、LeftCond2、RightCond2 四类字符集合(前两项表示歧义绝对生效,后两项表示歧义有比较高的可能性生效,即歧义的直接前后文—作者注),还包括一些排歧规则(例如对于连续型歧义字段ABCD,如果AB和CD不与前后词交叉、A或D是名词、ABC和BCD都不是词,则切分出AB/CD:“昨天下午”—>“昨天/下午”)。

实验结果表明,系统可以正确处理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全国智能接口评测会上,该系统有良好的表现。由于系统对待词的兼类问题的理论观点与评测标准有一些差别,所测得的标注准确率没有达到自测试的水平。该系统的词语分类体系一方面承认汉语词存在兼类现象,一方面又不主张扩大兼类现象,尽量把相同语法功能的词类当作是一个词类,而把词的具体语法属性留到后续过程处理。这些观点与评测标准有所不同。国内还有很多单位开发了分词系统,但大部分都没有参加这一具有极强可比性的评测。

10、北大计算语言汉语文本分析系统

在北大计算语言所开发的汉语切词和词类标注系统的基础上,考虑到更大规模真实文本处理的需求以及更深入分析的必要性,作者设计了一个通用性强的汉语文本处理系统。这个系统对汉语句子进行切分、词类标注、专名辨别和标记、短语浅层分析和捆绑、重要成分的过滤与提取等操作。它需要综合运用汉语词汇的词、词类、构词规则、与相邻字段的各个级别上的搭配关系、词类及其相邻者的共现概率等知识,还需要短语的结构、词语浅层合并(捆绑)等规则,因此系统具有比较复杂的知识库结构(其机器词典的讨论请参考“报告2”)。在这里,我们仅对其切词部分所使用的技术特点作一讨论。

在对汉语切分歧义现象的认真研究之中,我们提出了一种非常高效、高准确率的综合性歧义切分处理方法,其要点有:1、把汉语基本词典中所有的歧义词标记出来;2、把所有的歧义字段分为两类:简单歧义字段和复杂歧义字段;3、在切分时,如果匹配出来的词不是歧义词,则可以安全地切分出来;4、当匹配出歧义词时,根据词条的歧义信息(歧义偏移值)判断当前歧义字段的类别:如果是简单歧义,则使用一条非常简单的规则即可全部得解,即优先切出非歧义词;5、如果是复杂歧义字段,则调用一个“侦歧”过程(AmbiDetect),进一步判断歧义字段的类型是“歧义词+歧义词”还是“连续型歧义字段”;考察词条的“歧义触发信息”和“歧义消隐信息”,即可解决所有局部(直接上下文)的歧义;6、通过浅层句法分析及其同步的语义检查(义类代码及配价项的检查),消解句子级歧义。以上前5步可以解决绝大部分局部歧义(根据北京师范大学何克抗等的统计,局部歧义约占所有歧义的94.9%),其中前4步解决了所有简单型歧义(约占歧义的70-80%)。据考察,这是目前国内最好的句子级以内消歧技术之一。

汉语中还有一些歧义是句子-句子之间(非局部上下文)和语用(应用环境)一级的歧义,根据统计,总数约为1.7%。对于这些非局部性歧义,我们保留所有可能的切分结果,留给更高级的后续处理来解决。

四、适用于信息检索与信息提取的分词技术

信息检索是找出包含了指定的一类特征(关键字、检索表达式)的文档、段落或句群供用户阅读的过程。而信息提取则是从一段文本中抽取指定的一类信息(事件、事实)并将其填入一个数据库中供用户查询使用的过程,即信息提取不仅找出文档、段落或句群,而且进一步给出用户感兴趣的事件、事实、消息、数据,或者说它在信息检索之后进行文本的分析和理解。因而用户就不必再阅读所找到的文档、段落或句群以获得所需的信息。

针对于信息检索和提取系统而言,分词技术的主要问题是确定词的颗粒度大小、对专用术语的识别、判别词与词之间的语义关联。下面我们对这几个问题给出我们的意见和建议。

为了适应用户的各种查询,检索系统的词库的分词单位应该较小化。也就是词典中的词条应是汉语中最基本、最稳定的词。

检索系统用户的查询语句具有高度的领域化、专有性和高度的不确定性,即其词语的语法、语义往往是较特殊、不常见和非标准、非通用性的。因此检索系统的词库需要注重术语和专有名词的收录,尽可能把各领域的专用术语收集进来。然而,系统仍然会遇到大量的未登录词,这就要求系统必须具备生词的识别能力。结合了串匹配、构词处理和统计方法取词的分词技术能够较好地适应要求。

解决词间语义关联问题的主要办法是建造一个集成了词的多种信息的机器词典,这些信息详细地描述了词的语法、语义、语用方面的属性和类别,以指导分词、概念(义项)标注、句法和语义分析的正确进行。

综合这些问题,我们认为北京大学计算语言研究所开发的分词系统有可能成为一个较好的适用于信息检索与提取的分词系统。该系统使用的词典是基于“现代汉语语法信息词典”这一具有公认的通用性和可靠性的计算机用词典,具有高效的串匹配和良好的构词法分析,并且已获得了较广泛的应用。系统一直处在完善、发展之中,还将扩充统计词汇获取和义类标注功能,更好地适应于信息检索与提取技术的需要。

附:第二稿补充或改动的内容

1、汉语自动分词的一般模型;

2、北京师范大学自动分词专家系统;

3、清华大学分词标注系统CSegTag;

4、哈工大统计分词系统;

5、杭州大学改进的MM分词系统;

6、自动分词的“生成—测试”方法与语委文字所基于句法分析技术的

汉语自动分词系统;

7、Microsoft Research 汉语句法分析器中的自动分词;

8、北大计算语言所的汉语文本分析系统;

9、参考文献。