一个改进的中文分词算法及其在Lucene中的应用

更新时间:2023-05-21 08:42:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

华中科技大学

硕士学位论文

一个改进的中文分词算法及其在Lucene中的应用

姓名:付敏

申请学位级别:硕士

专业:软件工程

指导教师:陈传波

2010-01-14

华 中 科 技 大 学 硕 士 学 位 论 文

摘 要

中文分词是中文信息处理的核心问题之一。采用基于字符串匹配与统计相结合

的算法能够较好的实现中文分词。该算法首先将中文文本以标点符号为切分断点,

把待切分的文本切分成含有完整意义的短句,以提高字符串匹配算法的正确率。然

后将每个短句分别按照正向最大匹配和逆向最小匹配进行扫描、切分,同时在每次

扫描时,根据语义和语言规则对结果进行优化,将汉字、英文字母、数字分别进行

划分,增强算法对不同类型文本的处理能力。最后,根据最小切分原则和统计的方

法进行歧义消解处理。

通常中文分词的算法分为三种,基于字符串匹配、基于统计方法和基于理解的。

三者各有优缺点,改进的分词算法集成了基于字符串匹配算法在实现方式简单,效

率高的优点,并辅以基于语言的基本规则提高了初切分阶段的正确率。在具体实现

上,两次扫描分别采用了正向最大匹配与逆向最小匹配的算法。算法的选用分别利

用了正向最大匹配切分片段数较少的优点和逆向最小匹配对多义型歧义解决较好的

优点。利用语言规则优化则是在扫描的同时将汉字、字母和数字分开划分,并且对

于汉字中的数词、量词,英文字母中的罗马数字再分别处理,较好的解决了多种类

型文本的分词问题。改进的分词算法的歧义消解处理过程是根据两次扫描的结果进

行比较,如果结果完全相同则直接输出。如果两次扫描结果不同,判断为有歧义字

段产生,需要做相应消歧处理:如果切分的片段数不同,根据最小切分的原则选择

片段数较小的作为结果输出;如果切分片段数相同,则采用统计的方法,利用词典

中的词频来判断采用哪个结果作为正确输出。该算法的另一个改进是在词典的存储

结构上,采用两字哈希、尾字链表处理的方式,对尾字链表按照词频排序,在一定

程度上也提高了分词的效率。整个算法可应用于Lucene做为中文信息检索系统的组

件,从实验结果来看,准确率比Lucene自带分词器有了较大的提高。

关键词:中文分词 两次扫描 歧义消解 哈希表 Lucene

华 中 科 技 大 学 硕 士 学 位 论 文

Abstract

Chinese Segmentation is one of the most important elements of the Chinese

Information Processing. The algorithm which combined by the character matching method

with the statistic method can better realize the Chinese Segmentation. This algorithm

firstly segments the Chinese text by identifying the punctuation which makes the text to be

short sentences with completely meaning that can promote the accuracy of character

matching. Then every short sentence would be scanned and segmented by the method of

Maximum Match Method and Reverse Minimum Matching Method, meanwhile, the

results would be optimized based on the rules of language by optimization program which

could identify the characters, letter and numbers that can strengthen the process ability of

algorithm on dealing with different type of text. Finally, the ambiguousness would be

eliminated by Minimal Segmentation Principle and statistic method.

Chinese Segmentation algorithm has been generally defined in three ways, based on

character matching, based on statistic method and based on understanding. Every of them

have merits respectively. Improved segmentation algorithm which combined the merits of

easy to accomplish with high efficiency that accompanied by rules of language has

promoted the accuracy of basic segmentation. In practice, two times scan adopted the

Maximum Match Method and Reverse Minimum Matching Method which used the strong

points of less fragments of maximum matching and special ability of dealing with

polysemous ambiguousness of reverse minimum matching. Characters, letter, numbers can

be deal with based on rules of language at the same time of scanning. Then the numeral

and classifier in Chinese, Roman numerals in English would be processed by optimization

program with better solved the problem of segmentation on multi-type text. The

ambiguousness eliminate processing of improved segmentation algorithm is to compare

the results of scanning and output the one of them directly when they are equal.

Ambiguousness would be judged as happening and should be processed by program if

华 中 科 技 大 学 硕 士 学 位 论 文

results of times scanning are different: To select the less fragments result as the output

based on Minimal Segmentation Principle if the number of fragments are not equal, or to

select the higher frequency word to output as the method of statistic when the number of

fragments are equal. Another improvement of this algorithm is on constructing the

structure of dictionary by adopting the method of previous two characters stored by

hashtable and the rest word stored by linked list by the order of frequency. This

improvement promotes the efficiency of segmentation in some way. The whole algorithm

can be applied to Lucene as the composition of Chinese information searching system.

From the result of experiment, this algorithm has a great improvement on accuracy

compared to the segmentation system provided by Lucene.

Key words: Chinese Segmentation Two times scan Elimination of ambiguousness

Hashtable Lucene

独创性声明

本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研

究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或

集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在

文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。

学位论文作者签名:

日期: 年 月 日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权

保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检

索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

保密□, 在 年解密后适用本授权书。

本论文属于 不保密□。

(请在以上方框内打“√”)

学位论文作者签名:

指导教师签名: 日期: 年 月 日 日期: 年 月 日

1 绪论

中文信息处理技术的发展在我国已经有了50多年的历史,是我国软件产业发展

的重点之一。随着上世纪80年代初计算机技术的高速普及和发展,中文信息处理技

术领域也有了一系列基础研究和应用研究的成果[1]。中文分词作为中文信息处理的基

本问题,在这一时期也受到了高度关注并陆续有各种分词模型和软件提出。当前,

特别是在应用研究方面,随着国际互联网信息量的急速增长,基于各种分词模型的

中文语言处理技术如:中文搜索引擎,信息提取,文本分类等已经成为了新的研究

热点。

1.1 课题背景

中文信息处理中遇到的首个问题就是词的切分问题。随着因特网的普及以及中

文信息在网络中的高速膨胀,迫切要求提高中文信息处理的效率和精度,实现中文

信息的共享和复用[2]。因此,中文分词技术所受到的关注也越来越高。本课题基于几

种常用分词技术的分析和比较基础上,研究和实现了词典匹配与词频统计、语言规

则相结合的分词算法,并且通过集成于Lucene中的实现也证明了该算法可以进一步

扩展应用到小型中文检索系统中。

1.2 课题的研究目的及意义

中文信息处理技术包括字处理,词处理,语句和篇章处理等技术。其中字处理

和词处理的研究是中文信息处理的基础。字处理的研究和应用主要是汉字的存储、

输入、识别和文字处理等。经过我国语言学家和计算机专家20多年的奋斗,字处理

技术已经比较成熟,并且在中国推广计算机应用方面奠定了重要的基础。现在,汉

字处理的主要战场已从字处理转移到了词处理领域[2]。

词在自然语言处理领域,被定义为最小的有意义的构成单位,是最基本的研究

对象。由于汉语不同于印欧语,词间没有空隙,因而中文词处理的首要问题就是词

的切分问题。为解决分词的标准,国家制定了分词规范即《信息处理用现代汉语分

词规范即自动分词方法》,但是在实际应用中,由于环境、文化、心理等多种因素的

存在,中文词的正确划分仍然存在着极大的技术难度,从而其也成为了中文信息处

理领域的前沿课题。

几乎所有的中文信息处理系统都要经过中文分词这一步骤。中文分词算法在各

种应用上都占据着重要的作用。其中最受关注的当属在互联网搜索引擎上的应用。

在许多技术领域,特别是当某种技术在国外研究多年而国内才开始的情况下,如操

作系统、字处理软件、浏览器等都是国外的产品和技术一统天下。但搜索引擎却是

个例外。搜索引擎技术方面的研究,国外比中国早了近十年,从最早的Archie,到

后来的Excite、google等,其发展至今,已有十几年的历史,而国内研究搜索引擎开

始于上世纪末本世纪初[3]。虽然国外的搜索引擎产品在全球占据了绝大部分市场份

额,但在国内还是陆续涌现出了许多优秀的搜索引擎,像百度、中搜、搜狗等。目

前在中文搜索引擎领域,国内搜索引擎已经和国外搜索引擎的搜索性能相差不远。

之所以能形成这样的局面,一个重要的原因就在于国内对中文分词的研究处于领先

水平。搜索引擎的一般由四部分工作组成,网页抓取、建立索引库、索引库搜索和

通过分词算法进行结果排序[4]。其中索引库的建立必须首先提取网页中的文本信息,

词的识别,为每个词标上ID和权值信息等。如果不使用中文分词,例如使用单字索

引,假设搜索“软件”,则要分别搜索包含“软”和“件”的文档,找出其中的交集并连续

出现“软件”两字的文档。这种算法在一些小的搜索引擎中可以使用,但是如果面对

超大数据量(超过10亿的网页),每天上亿次的查询,那则是对硬件的极大挑战。

也有使用2元或者3元分组的,如2元分组即把“中华人民”分为“中华”,“华人”,“人

民”,然后采取单字索引相似的计算,这种算法虽然大大降低了计算量,但是却不能

解决汉字的歧义问题,如上面的例子,与“华人”相关的信息也被搜索了出来,降低

了结果的准确性[5]。所以好的中文分词算法在搜索引擎中是非常关键的一个部分。

同时,中文分词在其他方面的应用也有着重要作用,比如当前研究的另一个热

点,汉语语句处理技术。这项技术可以应用到音字转换、机器翻译、句法分析等方

面,目前的应用成果有微软、搜狗等语句级的拼音输入法,还有中文自动校正系统,

如Word中的中文自动矫正等[6]。这些语句处理技术都是建立在汉字词语切分和语法

分析的基础上。

1.3 国内外发展状况分析

中文分词是自然语言处理(Natural Language Processing,简称NLP)领域的一个

基本问题。尽管中文分词难度比英文更大,研究的侧重点有所不同,但是其使计算

机在某种意义上具有人类语言的处理能力的研究意义上却是相同的[7]。国外在NLP

领域的技术对我国中文信息处理研究也有重要的借鉴意义。

最早在20世纪60年代开发的NLP系统主要采用关键词匹配技术来识别输入句

子的含义。1972年美国BBN公司研制的LUNAR系统是第一个能够通过数据库解决

独立问题的NLP系统。该系统的核心是通过扩充状态转移网络(Augmented Transition

Network)对输入句子进行句法分析,获得反映该句子句法的句法树,从而翻译成数

据库查询语言检索数据库获取答案[8]。句法-语法分析的技术成为了其后NLP发展的

主流,这种基于规则的方法,许多思想来自于人工智能。但是限于当今的计算技术

及现实中语言规则也在不停地发展,要把所有自然语言都规则化是不可能的。近期

又崛起了基于语料库统计模型的方法,以80年代英国兰开斯特大学UCREL研究小

组色设计的CLAWS为代表[9]。

从我国的发展来看,上世纪80年代开始提出研制中文自动分词技术以来,许多

大学及科研机构已经研制出了许多不同的分词系统,这些系统使用了多种分词方法,

如北京航空航天大学开发的CDWS采用了正向最大匹配法,清华大学开发的SEG分

词系统采用全切分-评价算法,山西大学开发的ABWS系统采用了联想-回溯法等。

还有穷多层次列举、邻接约束、词频统计、专家系统、神经网络等方法[10]。

几个早期的分词系统及特点:

CDWS分词系统。我国第一个能够实际应用的自动分词系统,于1983年由北京

航空航天大学设计完成,特点是:采用了最大匹配法,并以词尾字构词纠错为辅助

技术。其分词的速度为5-10字/秒,切分的精度约为1/625,满足了一些应用的基本

需要[11]。这是中文分词算法的首次实践,在系统的设计中比较科学地阐明了中文分

词中的歧义字段类别、特征以及基本的消除方法,对后来的分词系统具有很大的启

发作用和理论意义。其后北京航空航天大学于1988年再次开发出了CASS分词系统,

使用正向增字的最大匹配法,对于歧义字段的处理采用知识库处理的方式,其机械

分词速度可以达到200字/秒以上[12]。

ABWS分词系统。由山西大学计算机系研制,使用的分词方法为“两次扫描联想

-回溯”法。其特点是:对于两次扫描的分词结果,用联想-回溯法来消除组合歧义,

并且在词库中添加了较多的词法和句法知识。切分正确率为98.6%(不包括非常用、

未登录的专用名词),运行速度为48词/分钟[13]。

书面汉语自动分词专家系统。该系统于1991年前后,由北京师范大学研发。其

特点是:首次将专家系统方法完整地引入到分词技术中,对后来各种后继的自动分

词系统有重要的影响。该分词系统对开放语料的切分精度达99.8%,切分速度达到

200字/秒左右。该系统的重要理论意义在于:⑴把歧义字段详细的研究和划分为词

法级、句法级、语义级和语用级,对各级歧义的分布进行了统计结果为84.1%、10.8%、

3.4%和1.7%,并给出了消除各级歧义的方案,较为透彻的分析了歧义消除技术。给

后来系统歧义消除策略的选择上提供了借鉴;⑵系统设计中计算出了基于语法和语

义的切分精度上限为1/6250,并证明了只有综合运用各种推理机制和知识、信息等,

才可能趋近理想的切分精度[14]。

微软研究院自然语言研究所于90年代初开始开发通用型的多国语言处理平台

NLPWin。该平台最初针对英语进行研究。90年代末增加了中文处理内容。NLPWin

中文处理的特点是:采用语法规则,以概率模型作导向,并且语法和分析器是独立

的。实验表明,该系统可以正确处理85%的歧义切分字段,速度约600-900字/秒。

由于该系统对多种切分结果进行了完全句法分析、对词典每个属性进行了完全查找,

所以这是相当可观的效率[15]。

综合国内二十多年的研究看,目前中文分词采用的算法主要可以分为三类:基

于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

(1)基于字符串匹配的分词算法:又叫机械分词法。将待切分的汉字串与一个

机器词典中的词条进行匹配,如果在词典中能够找到该字符串,则匹配成功,即识

别出一个词。按照扫描方向及不同的长度优先,分为正向最大、最小匹配和逆向最

大、最小匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词

与标注相结合的一体化方法。常用的机械分词方法包括最少切分法(句中切出词的

个数最少)等,可以相互组合,提高精度。例如,可以将正向最大匹配和逆向最大

匹配结合构成双向匹配。一般情况下,逆向匹配的切分精度略高于正向匹配,遇到

的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯

使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际

使用的分词系统,大都把机械分词作为一种初分手段,还需通过利用各种其它的语

言信息来进一步提高切分的准确率[16]。

(2)基于理解的分词方法:通过让计算机模拟人对句子的理解,达到识别词的

效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信

息来处理歧义现象。这种分词方法由于需要大量的语言信息,并且汉语言具有笼统

和复杂的特性,其信息难以组织成能被计算机直接读取的形式,该方法应用面还不

太广泛。目前的分词系统中,使用基于理解方法的主要是设定一些语言规则进行判

断。但是由于汉语规则较多,并且存在很多例外,一般采用的规则都不能覆盖所有

情况,所以这个方法要结合其他分词方法同时使用[17]。

(3)基于统计的分词方法:计算机借助统计语言模型,估计出自然语言中每个

句子出现的概率。例如对于一个二元模型的概率,并采用最大似然估计法。切分的

步骤是:先将句子划分为所有可能的词的组合,然后采用上述的统计模型,计算出

概率最大的组合作为切分结果。但是这种方法可能在进行统计的过程中出现“数据稀

疏”的问题,也就是某些低频词,无论训练数据规模如何扩大,出现的频率始终很低

甚至不出现,这就必须采用数据平滑技术进行改进。另外统计过后也可能出现其实

不能构成词语的词,如在搜狗的网络词语统计中,“或不”被作为一个词统计出来,

词频达1703780,“这些都是”词频更高达4825660。但是如果结合字串匹配和语言规

则,则不仅能提高分词精度,还能有效识别新词[18]。

综上所诉,不同的分词方法模拟了人类分词的不同侧面,取得了不同的成效。

但是对这些方法进行总结和分类研究,可以发现尽管它们在分词效果上有所不同,

但几乎都面临同样的难题:歧义消除和新词识别[10]。首先,歧义在中文文本中普遍

存在,对歧义的处理能力严重影响分词系统的分词精度。比如“中华人民”就存在“中

华”和“华人”的歧义。采用基于字串的匹配算法时判断歧义划分,就很难确定划分标

准。通常结合采用语言规则以及统计的方法来判断。尽管如此,仍然有很多歧义存

在,包括一些固有的歧义如“大学生活像白纸”,包含“大学生/活像/白纸”和“大学/生

活/像/白纸”的歧义难以界定。其次是未登录词的识别。典型的未登录词就是未登录

的地名和人名。中国地名和人名的情况非常复杂,不适于采用穷举的方法进行识别。

据中国地名委员会统计,《中华人民共和国地名录》中收取的地名有10万条,还不

包括城市街道名、巷弄名和未收录的村庄名等。人名又有全称、别名、乳名、笔名、

外国人名等。所以识别、人名和地名一直是一个复杂和困难的课题[19]。

1.4 本文的主要研究内容

本文主要做的研究工作主要有以下四点:

(1)首先介绍当前主要分词算法以及相关的歧义消除方法,并讨论各算法的优

缺点。

(2)在分析基于字符串匹配的算法基础上,研究提高算法精度和速度的方法。

包括优化词典结构,使用改进的匹配算法。

(3)对整个分词结果进行歧义消除。

(4)将改进的分词算法应用于Lucene并观察实现效果。

2 中文分词算法的理论基础

中文信息处理中,中文文本是以句为单位连接的。对中文信息的处理,也就是

对由中文汉字序列的处理。自然语言处理过程即使计算机理解人类语言的过程,必

须对句中含有完整意义的最小单位——词进行正确划分。比如英文句子“All roads

lead to Rome”,通过空格就可以把roads这个词划分出来,但是同样意思的中文句子

“条条大路通罗马”,就没有明确的标志可以把“大”和“路”合成一个词。为此,中文分

词算法即是通过算法的设计,设定一定的规则,使计算机能够对中文文本以词为单

位进行正确的划分,从而成为中文信息检索,自动翻译等应用的基础。

2.1 中文分词的主要算法

中文分词技术经过二十多年的发展,产生了许多的分词算法,比如正向最大匹

配法,二次扫描法,全切分-评价法,神经网络法等。将这些方法归纳起来,主要可

以分为三类:

(1)基于字符串匹配的算法也叫机械匹配法;

(2)基于统计的算法,该算法使用语料库的统计模型,是近期随着基于语料库

的自然语言处理方法发展起来的;

(3)基于理解的算法,也叫基于人工智能的算法,分词的同时应用了句法、语

义分析[21],该算法还处于试验阶段,所以本文主要研究比较成熟的前两种算法。

2.1.1 基于字符串匹配的分词算法

基于字符串匹配的分词算法以相对完备的词典为基础,按特定算法进行匹配和

切分,主要有正向最大匹配,逆向最大(最小)匹配。为了方便发现歧义,一般都

采用二者结合的双向匹配方法[22]。

正向最大匹配算法。

假设设定的最大词条长度为i,当前切分位置为j:

(1)取被处理文本当前字符串序列中的前i个字作为匹配字段,查找词典进行

匹配;

(2)若词典中存在这样的一个i字词,则匹配成功。匹配字段被作为一个词切

分出来,转向处理(5);

(3)若在词典中找不到这样一个i字词,则匹配失败。匹配字段去掉最后一个

字,对剩下的长度为i=i-1的字串重新进行匹配,转向处理(2);

(4)如果i=1,则作为单字词划分出来。转向处理(5);

(5)j=j+i,转向处理(1)。直到文本处理完毕。

逆向最大匹配算法。

基本原理和正向最大匹配算法相同,不同的是分词切分方向。它从被处理文本

的末端开始匹配,每次取最末端的i个字作为匹配字段,匹配失败则去掉最前面的一

个字,直到最末尾两个字不能匹配,则把末尾字作为单字词划分。

逆向最小匹配算法

与逆向最大匹配算法相同,也是从被处理文本的末端开始匹配,但是采用的是

加字法,即首次匹配取最末两个字,匹配成功则划分出来,若匹配失败则在前面加

上一个字。若直到达到长度i,仍不能匹配,则最末一个字作为单字词划分出来。

基于字符串匹配的分词算法因为通过与词典比较进行匹配分词,所以对词典的

依赖性高,词典中的词的划分方式直接影响分词效果。并且受词典的局限,对未登

录词进行的识别能力比较弱。但是此种分词算法的优点同样明显,因为已经有词典

的存在,所以不需要语料库和规则库,效率较高。算法上,仅仅是字符串比较,易

于实现,分词速度快,在目前已经是最早出现也是最成熟的算法[23]。所以基于字符

串匹配的分词算法可以用在句子的初分阶段,在此基础上再采用其他算法进行完善。

2.1.2 基于统计的分词算法

中文分词中常用的统计语言模型以贝叶斯的概率理论为基础,现在已经发展

为N元文法模型(N-gram model)、隐马尔可夫模型(hidden markov model,HMM)、

最大熵模型(maximum entropy model)等[24]。本节重点从基础的统计模型进行介

绍。

P(A|B)P(B)。此公式的提出是解决逆概问题,即根据P(A)贝叶斯公式:P(B|A)=

当前观察的状态B,计算它的发生条件是A的概率[25]。将此公式运用到自然语言处

理上,B代表的是一种分词结果,A代表被处理的句子。由于P(A)即句子A出现的

概率,与该句子如何划分无关,可看做常数,公式可变形为:P(B|A)∝P(A|B)P(B)。

在中文分词中,P(A|B)P(B)可以看作是分词词组组成句子的可能性乘以这种分词方

式的可能性。其中因为不论何种分词方式,最终都能组成句子,所以把P(A|B)=1看

作始终成立,P(B|A)∝P(B)。寻求最佳分词即找出P(B|A)为最大的分词组合。问

题转化成寻找组成句子概率最大的词串[26]。假设用Wi代表词串B中的一个词,那么

由全概率公式:P(B)=P(W1)P(W2|W1)...P(Wi|W2W3...Wi 1),即每个词的出现取决于之

前的1,2,3…个词。问题再次转化为了计算一系列条件概率的乘积。在实际语境中,

同时i个词按特定顺序出现的概率,是随着i增大而降低的,所以随着P(W1|W2W3...Wi)

中i的数目的增加,概率必然越来越低,甚至为0,即出现数据稀疏问题,使某些潜

在的组合因为在语料库中出现频率低甚至没有出现,而被完全否定[27]。对此,采用

马尔可夫假设可以解决此问题,即假设Wi的出现只与Wi 1相关,也可以是与前K个

词相关,在实践中一般K不大于3就能取得良好的效果。K=2时称为2-gram即2元

模型,同样有3-gram,4-gram等。通过马尔可夫假设,问题被简化为计算:

P(B)=P(W1)P(W2|W1)...P(Wi|Wi 1)即马尔可夫模型[28]。其中P(Wi|Wi 1)=

在大规模语料库基础上,该式可以近似的表示为:P(Wi|Wi 1)=P(Wi 1,Wi),P(Wi 1)count(Wi 1,Wi),即count(Wi 1Wi)

Wi

以词出现的次数来近似的表示其概率[29]。词以中文句子“武汉市长江隧道”为例,通

过正向最大匹配的结果为“武汉市长\江隧道”,逆向最大匹配结果为“武汉市\长江隧

道”。但是在语料库中count(武汉市长,江隧道) =0,即二者同时出现次数为0,这个

华 中 科 技 大 学 硕 士 学 位 论 文

划分方式不会被采用,逆向匹配的结果胜出。

2.2 中文分词的主要困难

无论使用何种分词算法,中文分词的难点都主要集中于歧义处理和未登录词识

别。歧义字段在自动分词中是普遍存在的,严重影响了分词的精度,是中文分词设

计中的一个核心问题。未登录词则包含人名、地名、专业词汇等,目前主要是通过

统计模型,建立和维护特有词典等方法来解决[30]。此外还存在分词规范的问题。

2.2.1 歧义字段问题和解决方法

歧义字段从构成形式上可以分为交集型歧义和多义型歧义两类。

交集型歧义:在字序列AJB中,AJ∈W并且BJ∈W,则称AJB为交集型歧义。

其中A、J、B为字串,W为词表。交集型歧义的链长定义为:交集型歧义字段当中

含有的交集字个数。例如:“他站在学校门口”中,因为“学校门”可以是“学校\门”也

可以是“学\校门”,所以“学校门”是链长为1的交集型歧义字段,同样的“校门口”可

以划分为“校门\口”和“校\门口”,也是链长为1的交集型歧义字段。因此“学校门口”

包含两个链长1的交集型歧义字段,链长为2。

多义型歧义:在字序列AB中AB∈W,A∈W,B∈W,则称AB为多义型歧义,

其中W为词表。例a.“演员在舞台上展现自己的才能”和例b.“只有共产主义才能救中

国”中,“才能”一词,在例a中作为一个词单独划分,而在例b中应该作为两个词划

分为“才\能”。

此外从分词的结果上,歧义还分为真歧义和伪歧义。真歧义是指根据语义、语

法,都无法识别的歧义。伪歧义是指根据语义、语法只有唯一切分方式的歧义。例a“学

生会组织活动”,可以切分为“学生\会\组织\活动”,也可以切分为“学生会\组织\活动”。

例b“从中学习到了宝贵经验”中,“从中学习”只能切分为“从中\学习”,而不能划分为

“从\中学\习”。所以例a是真歧义,即汉语言固有的歧义,必须根据上下文的信息来

判断划分。例b是伪歧义,属于计算机分词中产生的歧义,大多可以在语句初分阶

段改进算法来解决。

华 中 科 技 大 学 硕 士 学 位 论 文

对于交集型和多义型的歧义可以采用双向匹配算法来识别和抽取。消除的方法

则可以采用最小切分,基于全切分和统计以及建立歧义词表的方式进行消除。

最小切分是应用的比较多的消除法。具体方法是将两次匹配算法进行比较,对

于歧义字段选择片段的最少的切分方式予以保留。比如“从中学习”,优先选择逆向

扫描匹配的“从中\学习”(片段数为2)而不是正向扫描匹配的“从\中学\习”(片段数

为3)。试验证实这种消除方法对交集型歧义效果很好。但是应用在多义型歧义上,

如“公司中国有股份”逆向扫描得到“公司\中\国有\股份”,正向扫描得到“公司\中国\

有\股份”,二者片段数一样,就必须进一步采用其他的消除法如基于统计的方法[31]。

基于全切分和统计的方法,是把歧义字段分为所有可能的组合,然后利用统计

模型中的N元语法模型计算出每种组合的概率,取最大者。以2元语法模型为例,

先从未经加工的生语料库出发,通过字的统计,计算汉字之间的互信息,作为分词

过程中歧义消除的依据。相关的计算方法如下: 互信息:I(x:y)=log2N×r(x,y)。其中r(x,y)为汉字x,y相邻同时出现的次数,r(x)×r(y)

r(x)和r(y)分别为x,y独立出现的次数。互信息的定义来自于信息论,其作用是度量

两个随机事件的相关性。应用于自然语言处理中可以解决语言的二义性问题。

t-测试:tx,z(y)=(r(y,z)r(x,y)r(y,z)r(x,y)1/2)÷(2,作用是度量汉字串xyz +2r(y)r(x)r(y)r(x)

之间的联系紧密程度,互信息无法区别时用此度量判断;

t-测试差:Δt(x:y)=tv,y(x) tx,w(y),用于测试汉字串vxyw中,x,y分别应该如

何与前后的词结合。一共是四种情况:

(1)v(x y)w: tv,y(x)>0,tx,w(y)<0,Δt(x:y)>0,x,y倾向于相连。

(2)(v x)(y w): tv,y(x)<0,tx,w(y)>0,Δt(x:y)<0,x,y相互排斥。

(3)(v x)(y w):tv,y(x)>0,tx,w(y)>0,此时y吸引x,w吸引y,产生竞争,

若Δt(x:y)<0则x,y倾向于分开,反之倾向于结合。

华 中 科 技 大 学 硕 士 学 位 论 文

(4)(v x)(y w):tv,y(x)<0,tx,w(y)<0,此时与(3)近似处理。

利用此方法消除歧义的基本流程为:(1)利用双向匹配分词;(2)利用最小

切分法消除歧义;(3)如果两次匹配片段数相同,则由互信息和t-测试差判断:若

两种分词的互信息之差大于某个设定值α,则由互信息值判断;否则若两种分词t-

测试差大于某个设定值β,由t-测试差判断;否则仍由互信息值判断。

这种方法的缺陷是对于字段较长的歧义容易产生较大的候选解空间,而且N元

模型固有精度问题,使得可能经过复杂的计算后歧义仍然没有完全消除。

基于歧义词表的方式是通过收集的相关词,对现有词的组合进行判断。例如文

献[32]统计的“全国-人大”,“人大”对“全国”所具有的强右搭配倾向性,促使构成搭

配[32]。

2.2.2 未登录词问题和解决方法

未登录词包括人名、地名、机构名、事件名、专业名词等,种类繁多,规模宏

大。解决这些分词问题是十分困难的,以如下几个常见问题为例:

(1)中国人名的自动判别。首先中国人名不似英文,由大小写的区分。其次结

构复杂,形式多样,比如有人名、笔名、绰号等,还有冠以职位、头衔、年龄的,

“李工”等,都为分词带来了很大的难度。在这类问题的处理上,比如“老张”、“王总”、

有两种途径,一个是建立一个足够大的人名库进行匹配判别,但是随着信息量的剧

增,数据库的内容是很难适应需求的。第二种是将常用姓和名单独建库,匹配时首

先以姓为触发,找出最长四个字的各个潜在姓名。然后计算潜在姓名的概率估值,

由特定的评价函数进行筛选。最后对姓名边界确定和校正。此方法能够较好的适应

信息量的不断增加,但是仍然难免在某些即是普通常用字,又是姓名常用字上发生

错误。

(2)中国地名情况类似于人名。地名包括居民聚集地名和自然地理名,前者有

市、路、巷、街、村等,后者则有山、川、湖、海等。其次还有不少容易和常用词

混淆的地名,如“八一路”、“新屋熊”等,就容易被切分成“八一/路”、“新屋/熊”。此

问题的解决类似人名识别,需要建立地名资源库,如地名常用的末尾字是“街”、“路”

华 中 科 技 大 学 硕 士 学 位 论 文

等,然后用概率估值的方法,判断潜在的地名进行筛选。

由上述例子可知,解决此类问题靠穷举所有人名、地名等的方式是不行的,必

须建立适当的概率模型和筛选模型,辅以人工规则进行判定,才能较大程度上解决

此类问题[33]。

2.2.3 中文分词的规范

对于词的定义和界定上难以确定一个统一的标准。主要原因有两点:

(1)人们对汉字词的认识上存在差异,人与人之间以及人们的语感和语言学的

标准上都存在差异。

例如“刮风下雨”是作为一个词单独切分还是作为“刮风”和“下雨”两个词来切分,

不同语感的人会有不同的答案。

(2)根据分词系统使用目的的不同,对汉字词的划分单位也不同。

一般研制的分词系统由于需求不同,服务的目的不同,很难采用统一的分词标

准。例如文本校对系统,分词的单位就比较大,以便于上下文参照检索。比如“销售

团队”,在上下文中“销售”和“团队”结合紧密,几乎都是同时出现的,所以作为一个

词来划分。但是如果是应用于自动翻译系统,就必须分开为两个词。

可见词的划分是因人而异甚至因时而异的。尽管如此,仍然从通过工程的角度

来划出词的主要特征。可以采用大规模语料库,通过计算词频,字长以及互信息等

因素作为参考数据,分析出结合紧密、使用频繁的字的单位,来作为对词的划分的

量化标准[34]。

2.3 本章小结

本章主要描述了中文分词的主要算法,比较了三种主要算法的优缺点。讨论了

中文分词面临的主要困难,解释了歧义字段的类型以及现在多数分词系统采用的识

别和消除歧义的手段。

华 中 科 技 大 学 硕 士 学 位 论 文

3 改进的基于字符串的分词算法

3.1 问题的提出

根据基于字符串匹配的分词算法尽管精确度不高但是具有易实现,速度快的特

点,而基于统计方法的分词算法则能有效地消除歧义和识别新词,故本文提出的分

词算法是将二者的优点进行结合,通过双向匹配的算法对文本进行初级分词并识别

歧义字段。再结合词频,通过上下文无关的统计模型(1元模型)较好的解决歧义问

题。

3.2 分词算法设计

本文分词算法流程如图3-1表示。

图3-1 分词算法总体设计

华 中 科 技 大 学 硕 士 学 位 论 文

在预处理阶段,将待切分的文本进行预处理,减少分词的负担。在本阶段通过

判断文本中“,”、“。”、“!”、“?”等标点,识别表达意思完整的句子并划分作为中

文分词的输入。例如读取文本中的一行:“人与人之间的交流最重要的手段就是语言,

除此之外还有非语言性的交流,例如:面部表情、身体动作、手势以及脸色等。”就

被划分为句组:“人与人之间的交流最重要的手段就是语言”,“ 除此之外还有非语言

性的交流”,“例如”,“ 面部表情”,“ 身体动作”,“ 手势以及脸色等”。接下来的初

分阶段就是对这些句组进行分词。

3.2.1 基于字符串匹配算法的改进

本文采用正向最大匹配和逆向最小匹配的双向匹配算法。双向扫描能够识别大

部分的歧义,而且逆向最小匹配能够有效地识别AB/C型和AB/CD型歧义[35],如“学

校门口”,正向最大匹配结果为“学校门/口”,逆向最大匹配结果为“学/校门口”,逆向

最小匹配结果为“学校/门口”。但是双向匹配算法在多义型歧义的消除上几乎没有太

好的办法,所以只可以用于句子的初分阶段。

同时由于在初分阶段,通常句子中的元素不仅仅只有汉字,有时还会包含英

文、数字等,情况多样且复杂。在扫描的同时识别非汉字词并进行划分,需要设

计适当的规则。例如:“Michael收到了多达100多个来自163的email”。分析这

个句子中的元素,英文有:“Michael”,“email”;数字有:“100”,“163”;余下的

才是需要用词典匹配的中文词。此外在中文分词之前,还有其他必须按照语言规

则进行处理的内容,比如“100多个”是数字+量词的结构,应该作为一个词进行划

分。正确的分词结果应该是:“Michael\收到\了\多达\100多个\来自\163\的\email”。

这就需要再对汉字进行分类,首先可以定义噪声词,后缀词,量词。噪声词从统

计学方法的角度定义是指与其他汉字结合能力非常弱的单字词,这类词可以通过

训练语料库,计算汉字构词能力的方式获得。常见的噪声词有:“据”、“的”、“有”、

“是”等,这些词通常作为单字词划分。后缀词指通常用于人名、地名、机构名或

商品名等后面的词,如“厅”、“局”、“路”、“牌”等,可以用于未登录人名、地名等

的判别。量词就是如“个”、“公顷”、“年级”等汉语种的度量单位用词,可以与前文

华 中 科 技 大 学 硕 士 学 位 论 文

的数字结合划分为一个词。

在中文文本的初分阶段,采用正向最大和逆向最小的匹配算法,并辅助以噪声

词典、后缀词典、量词词典,能够有效地减少分词的片段数,提高分词效率和准确

率。

除了使用噪声词典、后缀词典、量词词典以外,还需要对句子语法规则进一步

分析,如上句中的“100多个”,量词词典中只有“个”,而要识别此类词,则必须根据

汉字出现场合判断其主要作用。如“多”字,在句子“多达100多个”中,第一个“多”

是与“达”结合的副词,是程度的表示。第二个多则是与前面的数字100结合,是数

量的表示。所以汉字与数字是有交集的,还有常见的汉字数词如:“十”、“百”、“千”

等。同样的,数字和英文也有交集,如罗马数字:“I”、“II”、“III”。所以必须在初分

阶段辅以汉字数字字典、非阿拉伯数字字典,设定特别的规则,实现划分结果的优

化。汉字,数字,英文的关系如图3-2所示:

数字

英文 汉字

图3-2 不同字符的关系

设定规则的方式为,每次输入都判断当前字输入为哪种类型,仍然以前面的

“Michael收到了多达100多个来自163的email”为例。首先根据输入的字符串,判

断出英文单词“Michael”的边界并进行切分,其他非汉字字符判断方法类似,从而实

现字母与字母的结合,数字与数字的结合,汉字串单独依靠词典匹配划分。优化流

程如图3-3所示:

本文来源:https://www.bwwdw.com/article/mb14.html

Top