汉语自动分词算法综述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汉语自动分词算法综述
2006年第4期福建电脑
汉语自动分词算法综述
瞿锋,陈纪元
r冀士=母计车机牛与矬长学江苏苏州21f^)
【摘要】:本文对目前已有的各种中文自动分词的算法,采用的模型,数据结构等方面进行了分析,比较,探讨了它们的
优缺点,并指出了今后的研究方向.
【关键词】:自动分词,算法模型.查全率,壶准率
1.引言
汉语与英语不同,英文文本是小字符集上的词串,而汉语是
大字符集上的字串.汉语的句子不同于英文句子.英文单词之间
有间隔.汉语文本中词与词之间没有明确的分隔标记.而是连续
的汉字串.词是构成句子的基本单位.若要计算机智能地理解汉
语中的每一句话.则必须让计算机明白该句子的各个词的含义.
也就是说需要计算机智能地把每一句话.都把词正确地切分出
来.才不会造成理解上的偏差.因而可以说汉语自动分词技术.
是所有的中文信息处理应用系统中共同的,基础性的工作.对象
语音识别,语音合成,文本校对,信息检索和机器翻译等等后续
的高级应用.都有根本性的指导意义.
显而易见.自动识别词边界.将汉字串切分为正确的词串的
汉语分词问题无疑是实现中文信息处理的各项任务的首要问
题.
基于以上的一些情况.本文主要探讨了计算机智能地对汉
语文本自动切分词的种种算法,模型.分析了其中的优缺点.并
对今后的工作提出指导
2.问题描述
2.1系统任务
汉语的语素和单字词.合成词和短语之问没有清晰的界限.
汉语分词是由计算机自动识别文本中的词边界的过程从计算机处理过程上看,分词系统的输入是连续的字符串(C.C:C….
C).输出是汉语的词串(w.Ww,……w),这里.w;可以是单
字词也可以是多字词.在这个过程中.我们所要解决的一个主要问题就是.建立一个标准的分词系统词表.有一个权威的分词词表作为分词依据.很可惜,到目前为止,我们还没有.另外一个主要问题就是切分规范和消歧.这方面.虽然还没有出现一个百分之百完美的切分消歧算法.但是已经出现了很多比较好的,具有实际使用价值的算法
汉语中歧义切分字段最主要有下面两中类型:
交集型歧义字段:在字段AJB中,AJEW,且JB∈W,则
称AJB为交集型歧义字段.其中A.J.B为字串,W为词表.
组合型歧义字段:在字段AB中.ABEW.AEW,BEW,
则称为组合型歧义字段.其中A.B为字串,W为词表.组合
型歧义字段又称为多义型歧义字段或覆盖型歧义字段
2.2评估方法
因为汉语是一种粘结性的语言.因此要一致性地确定词的
切分界限是困难的.为了定量地分析和表达系统的切分性能.一般将英语语法分析的有关评价标准应用于汉语的词法分析.主要的分词性能指标有两个:查全率R(RecaU)和查准率P(Preci. sion)[1].假设语料库中待切分的词总数为Scop,系统切分的词总数为Ssum,系统切分的匹配词数为M,则查全率和查准率分别定义如下:
R=M,S
P=M/s删
查全率和查准率反映了分类质量的两个不同方面.两者必
须综合考虑,不可偏废.
3.分词技术
3.1算法模型
目前.中文分词算法可分为两类.基于规则的分词算法(大
多数中文分词算法都属于此类)和基于语料库的分词算法.对于基于规则的分词算法的计算模型.均是采用概率论中的N一1阶马尔可夫过程(有N—gram.Bi—gram,Tri—gram.etc..).隐马尔可夫模型(HMM)和通信中的信道噪声模型.当然.这些模型最后
都归结为计算词频的统计信息.也就是基于概率论的算法.对于基于语料库的分词算法.目前还没有看到一个很好的模型.
3.2分词算法
现有的中文分词算法主要有:正向最大匹配,逆向最大匹
配.逐词遍历.设立切分标志,最佳匹配.有穷多层次列举,词频
统计.邻接约束.专家系统.最少分词.神经元网络,Viterbi算法,
演化算法.等等.上述算法中,除了演化算法和部分神经元网络
属于基于语料库的分词算法外.其它都应算是基于规则的算法. 下面.就对一些最主要的分词算法做一些比较分析:
f11最大正向匹配法r21
该算法通常称为MM法.其基本思想为:设D为切分参考
字典.Max表示为D中的最大词长.Str为待切分的句子或字串, MM法是每次从S中取出长度为Max的一个子串(假设Str长
度大于Max.当小于Max时.则取出整个字串).把该子串与与D 中的词进行匹配.若成功,则该子串为词.指针后移Max个汉字
后继续匹配.若不成功,则把该字串最后一个字去掉.再与D中
的词匹配.如此匹配下去.直至匹配成功或至该串只剩一个字为止(表示该字可当做词.可在该字后面开始切分).该切分算法优
点是执行起来简单.不需要任何的词法,句法,语义知识.没有很
复杂的数据结构.唯一的要求就是必须有一个很强大的匹配字
典D.缺点是不能很好地解决歧义问题.不能认识新词.根据分析.匹配的错误率为1/169.
f21逆向最大匹配法r'-i
该算法通常称为RMM算法(ReverseMaximumMatching Method).该算法的基本原理与MM算法一样,不同的是分词的扫描方向.它从右至左取子串进行匹配.对于一个字串/句子Str, 从右边往左取Max个汉字(若字串小于Max,则取整个字串).与D中进行匹配.若匹配.指针往前移.再取Max个字串.直至第一个字为止.若不匹配.则去除最左边的字.再进行匹配,直至最右边的词(n个字,n>=1)被匹配出.然后,指针往前移n个字.再取Max个字串,如此往复,直至该Str串全部被切分出.该切分算法与MM算法一样.优点很明显,实现简单,不需很多的词法,句法,语义的知识.但同样必须要有一个功能强大的匹配字典D. 缺点也是不能很好地解决歧义问题.不能切分新词.根据统计分析.RMM切分算法比MM算法有更高的切分正确率.切分错误率减小到1/245.上述两种切分法应可算是分词中最基本的两种切分算法了.很多的后续改进的切分法都是以这两种为基础,再加一些其他的消歧算法而形成的.
f3113主词算法+Viterbi搜索算法(N—gram模型)
与上述两种算法不同,该算法不需要预先配备一个功能强
大的切分字典.而是自己本身采用自组词算法一一种基于字符(对汉字来说就是单字)统计频度自组词算法.该方法只需统计
24福建电脑2006年第4期
单字同现频度.系统可根据单字同现频度.从语料库中自动,动态地生成分词词典这样的分词词典能较好地反映分词对象领域的特有词汇.它具有占用系统存储空间小,处理效率高,实现比较容易.同时通过利用频度库中词的信息所隐含的汉语语言知识(如语法,句法等)进一步提高查准率.
在生成分词词典后.就可以采用Viterbi算法来进行分词.
在N—gram模型中,考虑某个汉字串C.C2C,C…C时.第n个字
符C的出现只与其前面的n一1(n>=1)个字符有关.
与每个字符位置相关连的状态有两种,记为S和NO—S.S
表示某个切分的开始位置,而NO—S则相反.一种前向计算给出
在字符串中每个位置的可能性(其中K>=2):
Pm-~(CLCa…ck)=I玎laI(PN=(cl…c卜I)'p(CdCi4CiO'(c1."c1)'p(Cd<d> C¨))
P5(CIc2...)=m"(P^0Cl...C~-L)p(<d>lCk~Ck.L)p(CklCk-L<d>)'Ps(cJ (1)
'p((d>I(d>c¨)'p(CklC~.I(d>))
其中
P如O=p(ctI))
P如.)=口0
由上述可以看出.利用Viterbi算法进行最优路径搜索来分
词.可以在一定程度上消除分词歧义.
(4)覆盖歧义检测法+N—gram模型pl
覆盖歧义检测法采用"长词优先"的原则.能够检测所有的
交叉歧义,同时忽略所有的覆盖歧义.它输出的切分路径集称为
最大无覆盖歧义切分路径集.此集合满足如下条件:在给定词典
的条件下.一个句子的所有切分路径构成一个集合P.它必然存
在一个不包含覆盖歧义的切分路径的子集合O属于P.而对于
任给句子的一种切分路径XEP,都能找到一种切分路径yEQ.
使得Y与x之间只存在覆盖歧义而不存在交叉歧义.其中.摄大
无覆盖歧义切分路径集的意思就是如果向该集合当中加入一种
不属于该集合的切分路径.则此切分路径必然和集合中的一种
切分路径存在覆盖歧义;而如果从此集合中删除一种切分路径.
必然会导致句子的一些切分路径无法在该集合中找到与之只存
在覆盖歧义而不存在交叉歧义的切分路径
由此可见,对于不存在交叉歧义的句子,其最大无覆盖歧
义切分路径集中只存在一种切分路径.而对于存在交叉歧义的
句子,其最大无覆盖歧义切分路径集中存在多种切分路径.此时就存在消歧的问题,就需要利用其它的算法来进行选择.达到消歧的目的.典型的是选择统计语言模型(N—gram).
这里,在消歧时也采用了N—gram模型.但与算法3不同的
是,这里我们可以进一步把N—gram模型再进行细化.分别细化成U—gram,Bi-gram,Tri-gram等三中不同的模型.并用模型的复杂度这一可量化值做阈值.对这三种不同的子模型进行消歧比较.另外,在采用N—gram模型时.需要有已切分成词序列的汉语语料,覆盖歧义检测法不能输出唯一的结果.故还需要利用其它的切分方法得到初始已切分语料.比如RMM法.
演化算法14]
上述的几种算法都是基于规则的分词算法.是基于概率论
的N—gram模型或其变异.这些算法的一个缺点就是会丢失小概率事件.这里提到的演化算法是源于对人们分词过程的模拟.特点是不依赖任何显式的语言规则和接续对信息.而只依据已标
注语料库中的隐式语言规则和接续对信息.
谈算法基本框架为:
建立系统评价知识
U
初始化种群(Initi0p(P0p)):
U
While((notHnished(Pop)
Ine(IAY~nemtionGount);
种群进化(Evolving(P0p)):
种群评估(Ev且lunting(P0p));
end;
U
on-Count))dobegin
WriteResult;
对于建立系统评价知识库.实际上就是一个词到句子的倒
排索引.把已标识的语料库中的所有语句装入语句链条,顺序扫
描语句链表.从中抽取单词,建立倒排索引.
初始化种群就是对欲处理的语料按照算法要求做初始化.
并在初始种群中加入一些特殊的初始个体:全零,全一,仅有一
位为一,等等.
种群进化:采用类似"队列演化"的进化策略来进行变异.每
次进化时.前几名不变,对前一半的除前几名之外的个体,让其
自身变异.由第一名自身变异产生的后代来取代后一半的个体. 种群评估:尽量找到最少的句子.且这些句子的词语结构与
该候选分词方案最一致.同时又遵循长词优先原则(即分词方案
中的词语数要尽可能的少).
该演化算法不是基于概率论的模型.故不会忽略一些小概
率事件.也不会出现接续对数据稀疏问题.而且.不会出现由于
新词的的加入而使"知识库"非线性膨胀问题.同时.该算法也能
很好地处理组合歧义问题.但该算法最大的问题是"知识库"如
果不是足够大.造成词库不全,就会大大增加切分的错误率.而
且在初始化种群中.还需要有很多人为的干扰因素在里面.需要
经过大量的实验测试.才能得到一个较好的切分结果.
f6)MM+RMM+统计法消歧分词法
前面已经说过.MM法和RMM法对于消歧没有很好的处理
办法.这里就采用一种统计法进行消歧.从而达到高效分词的目的.该算法主要采用MM法和RMM法进行分词,若两者分词的结果不一样,则认为该句有歧义,再采用统计法进行消歧.该统
计法主要采用互信息及t一测试差这两个统计量解决交集型歧义字段的切分
互信息:对有序汉字串xy,汉字x.Y之间的互信息为:
l(x;y)=log2(Nr(x,y)/(r(x)r(y)))
其中,N为语料库的总字数,,y)为x,Y邻接同现的次数,r
(x1,r(y1分别为x,Y独立出现的次数.
t一测试:对有续汉字串xyz,汉字Y相对于x及z的t一测试为:
t):(r(y,z)/~y)-r(x,yx))×y,z)y)+r(x.,y),))
t一测试差:对有续汉字串vxyxw,汉字x.v之间的t一测试差为:
△t(x:y)=t)一t曲)
算法流程:
11利用词典进行正向及反向最大匹配分词
21如果对字段JS,正,反给出两种切分方案SEG1.SEG2.
则:
a1如果两种方案切分段数不同.则选择切分段数少的方
案作为切分结果.
b)如果两种方案切分段数相同,则计算可能断点Pl.,
处的l值及△t值
先利用l值判断:
如果l(PI1)一l(P=,则肯定SEG2;
如果l(P一l(P【I)>=.L,则肯定SEG1;
ll(P【.)一l(P<a,则利用△t值来判断:
如果△t..)一△t(P>=B,则肯定SEG2;
如果△t(P一At1))=B,则肯定SEGI;
II(P.—I(P~I<a且I△t(Pl一△t(P<13.则退回利用l
值做最后判断
如果l(P..)>l(P,则肯定SEG2,否则肯定SEG1
常数a,B由实验测定.
该算法中一个重要的资源是r该算该算法中一个重要的资
源是r(x.y1,即相邻两个汉字的同现概率,它从生语料库中得到. 其统计量较大.可以有不同的算法来实现,比如Hash表,等等. 还有关于a,B值的实验测定,也有一定难度.这些值的确定对
切分结果会有很大的影响.总体上看.虽然说该算法仅仅对交集型歧义进行处理.但我们知道交集型歧义占全部歧义的9O%以上.如果能预定好相关的一些参数.该算法也不失为一种好的消
2006年第4期福建电脑25
歧算法.
4.结果分析
对于MM和RMM算法,这两种算法的基本原理一样.不同
的仅是分词时扫描方向不一样这两种分词法都是目前广泛应
用的机械切分法.是很多其它切分法的基础.该切分依据一个分词词典.并采用"长词优先"原则.这种切分原则虽然在大多情况下是合适的.但也会引发一些切分错误,按照统计分析,MM的
切分错误率为1/169.RMM的切分错误率为l/245.但这仅是理
论数据.原理上需要一个足够强大的参考字典.能够把所有的汉语词语都包括进来.实际上这还没法做到,尤其对于地名和人名的切分.由上述的RMM测试结果可以看出.RMM的句子切分正确率可达到94.18%o1.MM切分结果则还要低些.也在9O%以上.当然.这里包含的交叉歧义的句子所占比率应较不高.否则,
将大大减低切分正确率(如上表的RMM结果65.76%),因为
MM和RMM算法对交叉歧义无能为力.尽管MM和RMM算法有这严重的缺陷.但由于其算法简单,执行速度快,所需资源较少,而且还不需要任何的词法,句法,语义等方面的知识,因此,
在很多要求不是很高的情况下.这两种算法被广泛的应用着.
对于"自主词算法+Viterbi搜索算法".该算法不需要预先准
备一个强大的词典.而是采用统计频度自组词算法,自己生成一个分词词典.再利用Viterbi算法来切分词.如上所示的测试结
果可以看出,本算法具有较高的查全率和查准率.原因在于采用N—gram模型.由机器对生语料库训练自动生成分词词典.能大幅度减少词互扰和高频锐化现象所造成的干扰.同时实验发现,
大部分的切分错误来源于大词库所带来的切分歧义.通过改进Viterbi算法可以进一步减少切分错误当然.该算法是基于N—gram的统计语言模型.必然存在有一个切分概率问题.存在有切分歧义和小概率切分错误的问题但通过对Viterbi算法的改进.可以改善这一问题.另外.由于本算法采用两步走的形式,故在资源公要求会高一点,处理的效率上会相对低一些,速度也会有些影响,对于需要有好的切分效果,而对资源不看紧的的应用方面.该算法应是一不错的选择.
覆盖歧义检测法则是另外一种基于统计的"长词优先"的算法.其最大的特点是忽略覆盖歧义的同时保留了所有的交叉歧义.从而提供了一种能够对覆盖歧义和交叉歧义分开处理的方法.因此可以说本算法是仅对交叉歧义处理的分词算法.在消歧过程中.分别采用U-gram.Bi-gram和Tri-gram三种统计语言模型算法.来进行处理.由上述测试结果显见.随着算法模型阶数的增加,模型精度逐渐提高.切分正确率也有所提高.但在初始语料库中.如果包含有一定的切分错误的语料,那么,在模型精度提高到一定程度后.由于原始切分错误的再现,切分正确率反会有所下降.Tri-gram就是所示,如果在初始语料库中的切分错误很少的话,~gram将会有最高的精度.纵观本算法的测试结果.可见.本算法对交叉歧义的消歧具有很高的正确率.如果在初始的语料库里对词的切分.再通过一些辅助手段得到一个很高的正确率的话.消歧结粜将会更好.另外,如果在本算法中再加入对覆盖歧义的消歧处理.那就会得到一个很满意的结果.将会有广泛的应用.当然,本算法中由于算法的复杂性,因此在资源的利用方面将会要求较高.因此,可以根据实际的需求.选择Bi—gram或Td—gram的算法来达到目的
演化分词算法是一种基于语料库的切分法.其能有效地处
理语法结构上的特例,能够较方便地提高分词精度,特别是对组合歧义有较好的处理效果.从上面的测试结果来看,演化算法具
有不错的切分结果.具有一定的实用性.在实验中发现,对算法精度的影响.主要来自于初始"知识库"的不够大,对算法收敛性的影响主要来自于"初始化种群".如果对"知识库"再行加大,使词库更完整些.对分正确率的提高会有有很大的帮助.通过多次实验对"初始化种群"进行人为干预,达到初始化要求,将会有满意的收敛性.另外,还可发现本算法的一个优点,该算法所依赖的隐式信息的规模与语料库中的语句数基本成线性关系,故语料库的扩大不会引起隐式信息以非线性的速率膨胀.由于本算法会对语料库做多次处理.因此在处理速度和资源的利用率上会有所减低但对本算法一些缺点做了改进后,将会有很高的实用性.
对于"MM+RMM+统计消歧分词法".主要是针对交叉歧义
进行消歧,由于使用了MM和RMM法,故在资源上就需要一个功能强大的分词词典.又由于采用丁二次切分后,再通过统计进行消歧.因此.在时问和空问上所需的资源相对较多.另外,在切分精度上.由于统计算法的先天不足,并采用了"长词优先"原则,使得本算法在精度上较难有很明显的提高,特别是q,B两
参数的实验确定.较难设定得恰如其分.设定的好坏将对结果产生较大的影响.尽管有这些困难和问题,从测试的结果来看,本算法还是得到一个很好的分词精度,在对交叉歧义的处理上,还是具有一定的实用性.对比上述几种对交叉歧义的处理结果,发现该算法的正确率相对低一点.一个很大的原因就是分词词典不够大.
综上所述,我们可以看出.对于消除交叉歧义.已经达到一
个很高的正确率了.而且大部分的算法都是基于规则的统计算法.后续的研究将是如何更~步提高切分正确率.可以看出,如果把消除交叉歧义和消除组合歧义的算法结合起来,分词效率将会有一个更大的提高.另外,如何建立一个功能强大的词典, 也是一个需要研究的问题,尤其是对于人名和地名的切分问题,
词典显得尤为重要
5.结束语
汉语分词是中文信息处理的基础,有着极其广泛的实际应
用从基本的汉字输入到文字处理,以及文本检索,分类,人工智
能等等,无处不渗透着分词系统的应用.由于分词系统的重要
性.因此就出现了各种各样的分词算法.本文就常用的几种的基
于规则或非基于规则的算法进行了一些总结,分析了各自的一
些优缺点.对以后的一些研究提供一些借鉴作用.我们认为,通
过对分词技术的深入研究,开发出高质量的分词系统,必将促进
中文信息处理系统的广泛应用.
参考文献
1.吴应良等.一种基于N—gram模型和机器学习的进语分词算法.电子与信息.2001,23-11.
2.吴栋等.中文信息检索引肇中的若干技术.[ntemet.
3.王显芳等.利用覆盖歧爻检测法和统计语言模型进行汉语自动分词, 电子与信息,2003,25-9.
4.何炙详等.演化算法在中文自动分词中的应用.计算机工程,2002.28-
5.
5.谭琼等.分词中的歧艾处理.计算机工程与应用.2002.11.。