1.1 中文分词概念
中文分词技术是中文自然语言处理技术的基础,与以英语为代表的拉丁语系语言相比,中文由于基本文法和书写习惯上的特殊性,在中文信息处理中第一步要做的就是分词。具体来说,分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。中文分词(Chinese Word Segmentation) 指的就是将一个汉字序列切分成一个一个有意义的词序列。
虽然英文中也存在切分短语的情况,但是中文在词语这一层上比英文复杂很多,切分起来也更加困难。
词是最小的、能独立活动的、有意义的语言成分。[3]机器并不能真正理解语法规则,计算机中的语言知识其实是由机器字典、描述词的聚合现象的句法规则和其他一些语用知识库组成的。因而中文信息处理需要以词为基本单位。
1.2 中文分词的主要任务和难点
1.2.1 中文分词的主要任务
简单来讲,中文分词研究的主要任务是开发出准确、高效、通用性强、适用性高的系统。[1]
1、准确
准确分词是中文分词的根本任务,分词准确度很低的系统很难被运用到现实应用中,因为分词作为自然语言处理的第一步,如果分词的结果有很多偏差,那么后面的处理只会偏差更大。这就要求我们一定要尽可能研发出准确性高的分词系统,才能够满足上层应用使用的要求。
2、高效
分词系统应该尽可能高效,因为分词是十分基础性的工作,在具体应用中这一步占用的时间应该很少,才能够让用户没有等待的感觉。分词速度要达到每秒钟处理1万字为宜。
3、通用性
中文分词技术应用广泛,经常会有跨平台使用的情况,好的分词系统应该实现跨平台的移植性。而且分词技术中涉及到的字符串处理、统计方法和其他自然语言处理处理规则,应具有良好的通用性,以满足不同高层应用的使用需求。
4、适用性
中文分词是为具体应用服务的,它是一种手段而非一个目的。这要求分词系统应该可以集成到具体的中文信息处理系统中,拥有良好的适用性。
1.2.2 中文分词的主要难点
1、汉语词概念的界定和切分规范
中文分词如此具有挑战性,其中一部分是因为很难去定义汉语中什么组成了一个词语。汉语的随意性较强,即便是同样的词语也常会有不同的表述。理论语言学家已经尝试用各种语言标准来定义中文词汇。词的定义太过抽象,从计算机理解的角度讲,我们不能用模棱两可的定义进行计算,这样操作性很低。迄今为止的分词系统中都没有一个具有权威性的分词词表作为依据。虽然国家标准的《信息处理用现代汉语分词规范》仍有不尽人意的地方,但是这已经是许多专家学者辛苦讨论的成果,由于汉语的复杂性和灵活性,很难会有一个完备的分词词表。从词表引申出来的就是切分规范的问题,汉语词汇存在各种变形结构、词缀问题,这些问题仍然是中文信息处理中需要解决的问题。
2、歧义的切分
歧义是指表达形式相同含义却不相同的语句或词汇。汉语以连续的字符串形式进行书写,因而常有歧义的情况出现,对相同的一条语句,经常会有数个合法词序列与之对应。由于歧义的普遍存在性,消除歧义是中文分词中不可避免的棘手问题。[4]
中文的歧义包括组合型歧义和交叉型歧义。组合型歧义指某个词语中的一部分也是一个有意义的词,而交叉型歧义指两个相邻词语间的重叠部分是完整有意义的词语,有时这两种歧义还会组合为混合型歧义。为了解释这两类歧义,我们先定义A、B、C表示字符串,D表示词表。如果字串AB∈D,A∈D,B∈D,那么称字串AB为组合型歧义,又称为多义型歧义。如字符串“机器学习”,可以切分为“机器学习”或“机器/学习”。对于字串ABC,如果AB∈D,BC∈D,那么字串ABC成为交叉型歧义字段。如字符串“信息和服务”可以切分为“信息/和/服务”或“信息/和服/务”,在这个字符串中,“和服务”称为交叉型歧义,“和服”和“服务”都在字典中,单纯的机械分词无法区分两者之间的差别。
除此之外,还存在极少数情况的真实歧义,在这些情况下,如果脱离上下文的语境,哪怕是人也很难正确判断出切分。例如“网球拍卖完了”这句话,如果没有上下文的话,我们无法确定应该切分为“网球拍/卖/完/了”还是“网球/拍卖/完/了”。这样的真实的人为理解困难的歧义的情况很难消除。
有研究表明,交叉型歧义占到了所有分词歧义中85%以上,因此如果能有效处理交叉型歧义,就能够在很大程度上提高分词精度。
对于歧义字段的识别,目前的主要方法是双向扫描法。双向扫描法是指对同一个字段,分贝使用正向匹配和逆向匹配法进行切分,在得出的分词结果中,如果切分结果相同则是非歧义字段,如果切分结果不同就是歧义字段,实验表明,双向扫描法可以发现99%的交叉型歧义字段。除双向扫描法外,还有逐词扫描最大匹配法和最长词次长词算法等。组合型歧义相对容易识别。但是识别出歧义以后的主要难点在于如何消除歧义。
目前消除歧义的算法主要分为规则型歧义消解算法、词概率法歧义消解算法和t-信息法歧义消解算法。规则型消解歧义方法相对于其他两种算法,比较容易实现,但是准确率较低,因而一般与其他方法结合使用。词概率法属于概率型歧义消解算法,基于统计概率,取概率较大者为切分结果,但是由于没有结合语法知识,切分正确率不理想。T-信息算法不需要给定词典,但依赖于大量计算,虽然精度提高很多,但是算法实现较难。目前的歧义消解算法各有设计缺陷,具体来讲,长词优先的逆向最大匹配算法会漏掉一些交叉型歧义字段;基于词频的歧义处理方法仍需进一步处理词频相同的词语;互信息法在分词中的歧义消除作用并不大。
3、未登录词的识别
未登录词,又称新词,指在语言发展过程中由于不断变化出现的已有词典以外的新词,加之词的衍生现象,层出不穷的新词使我们很难制定出一个完备的词典。目前未登录词的分类并没有统一的标准。
未登录词中较为典型的一类词被成为命名实体,指人名、机构名、简称、商标名、产品名等,人们在日常生活中遇到这些词时一般都能正常使用,但是计算机在处理这些情况时则变的较为复杂。上层应用对新词识别的要求较高,如信息检索等,当遇到未登录词时,能否有效检测出新词决定了能否为用户返回有效信息,所以未登录词识别率是评价一个分词系统的重要指标。
对未登录词的识别主要分为基于规则的方法和基于统计的方法,实际运用中一般将两者结合使用。基于规则的方法由专家总结出新词的识别规则,这种方法计算速度较快,而且规则适合大多数新词,但是随着规则的不断增加,规则库也越来越庞大,制定规则的人为性也很难保证规则的一致,过多地依赖人工操作。基于统计的方法利用统计方法得到用字频率,由此识别新词,但是系统开销过大,而且识别效率低,统计信息依赖于大规模语料库。二者相结合的方法能够有效降低复杂度,并且不必大规模语料库。
1.3 中文分词算法概述
1.3.1 基于词典的分词算法
基于词典的分词算法,又称为基于字符串匹配的分词算法,或机械匹配算法。基于词典的分词算法主要通过字符串匹配的方法进行机械分词,即按照一定的规则将汉字字符串与词典中的词条进行匹配,如果在词典中能找到相应的字符串,则匹配成功,识别出一个词。
基于词典的分词有三个基本的要素:词典、扫描方向(正向/逆向/双向)和匹配原则(最大匹配/最小匹配/逐词匹配等)。根据不同的扫描方向和匹配原则可以将其细分为正向最大匹配、逆向最大匹配、双向最大匹配、最少切分、全切分等。[5]
在基于词典的方法中,给出一个输入的字符串,只有储存在词典中的词可以被识别出来。最大匹配(MM)是最流行的方法之一,通常加强以启发探索法来解决分词中的歧义问题。因此这些方法的表现很大程度上依赖于词典的覆盖范围,很不幸,新词在不断地出现,永远不会有一个完备的词典。因此,作为词典的补充,许多系统也包含了用于检测未知词的特殊组件。特别的,统计方法已经被广泛使用,因为它们使用了一个概率的或者说基于代价的评分机制而不是词典来切分文本。然而这些方法有三方面的缺陷。第一,一些这样的方法识别未登录词时没有辨认他们的类型。比如,它可以把一个字符串识别为一个单元,但是不能识别它是不是一个人名。这远远不够。第二,许多现在的统计方法面临着将语言学知识吸收包含入分词中的困难。例如,他们没有用到任何的语言学知识。因此,被识别的未登录词可能在语言学上是不合情理的,结果就是,在之后的任务中在语法解析时需要有额外的人工审查。第三,在许多现在的分词器中,未登录词的识别被当作分词以外的独立进程。比如,陈假定了未登录词一般是两个或更多的字长,经常被切分为单个汉字。然后在基本分词完成后,他使用串联的方法用不同的组件来检测不同类型的未登录词。
第三章中会详细介绍四种基于词典的分词方法。
1.3.2 基于统计的分词算法
基于统计的分词方法不需要事先准备切分词典,又称为无词典分词法。这种方法依赖于大规模语料库,通过机器学习方法进行分词处理。从概率的角度上考虑,相邻的字出现的频率越高,则其可以组成有意义的词组的概率越高,也即成词的可信度可以通过不同字符共同相邻出现的频率反映出来。因此可以计算出两个字的互信息公式:
I(A,B)=log2P(A,B)P(A)P(B) (式2-1)
其中P(X)、P(Y)分别是X、Y在语料库中出现的频率,P(X,Y)是X、Y一同出现的概率。这个值超过我们设定的一个阈值时,就认为XY可能是一个词组。
除互信息原理外,现在也常用到N元统计模型原理和t-测试原理等。
1.3.3 基于理解的分词算法
基于理解的分词方法很早就被提出了,这种方法的核心思想是让计算机模拟人对语句的理解,但是由于汉语的复杂性和随意性,这种方法一度被认为可操作性很低,目前这方面的工作主要是结合人工智能的发展进行研究。现阶段机器仍无法直接理解语言信息,该方法仍处于试验阶段。
基于理解的分词方法的主要策略结合了句法分析和语义分析进行分词,通过语法知识来处理分词中遇到的歧义。
1.3.4 三种主流分词方法的比较
表2.1 三种主流分词方法的比较
分词方法 | 基于词典的方法 | 基于理解的方法 | 基于统计的方法 |
---|---|---|---|
歧义识别 | 差 | 强 | 强 |
新词发现 | 差 | 强 | 强 |
是否需要词典 | 需要 | 不需要 | 不需要 |
是否需要语料库 | 不需要 | 不需要 | 需要 |
是否需要规则库 | 不需要 | 需要 | 不需要 |
算法复杂性 | 容易 | 难 | 一般 |
技术成熟度 | 成熟 | 不成熟 | 成熟 |
实施难度 | 容易 | 很难 | 一般 |
分词准确性 | 一般 | 准确 | 较为准确 |
分词速度 | 快 | 慢 | 一般 |
应用广泛性 | 广泛 | 一般 | 广泛 |
从表中我们可以得出如下的主要信息:
1、基于词典的方法最容易实现,而且分词速度较快。担机械分词的方法局限性也十分明显,切分准确率主要依赖于词典的覆盖范围,切分速度依赖于存储词典所用的数据结构,而且不能有效处理切分过程中遇到的歧义和新词。虽然目前的技术已经改善了机械分词的性能,但是单纯采用字典分词并不能满足中文自然语言处理的要求。
2、基于统计的分词算法能够有效处理新词识别问题,歧义处理的方案依赖于数理统计基础,语料越多,覆盖范围越多,其反应的汉语规律越完备,系统健壮性越好。但是这种方法需要大规模的带有标注的语料库,而且系统的时间、空间消耗比较大,最重要的是,由于没有词典的参与,这种方法对常用词的识别能力交叉,分词精度不高。
3、基于理解的分词方法需要大量的词法、句法、和语义知识,需要依赖于神经网络方法进行大量的学习训练,目前该方法仍不成熟。
目前的主流做法是结合机械分词和基于概率的分词方法,使用词典进行粗分以后,再利用统计方法对歧义和新词进行处理,以达到较好的分词结果。