您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于角色标注的中国人名自动识别研究
1基于角色标注的中国人名自动识别研究张华平zhanghp@software.ict.ac.cn刘群(LiuQun)Liuqun@ict.ac.cn中国科学院计算技术研究所软件实验室北京100080摘要:中国人名的识别是中文未登录词识别的重点和难点,目前的解决方案自身存在一些本质的缺陷,实际效果还难以满足实际需求。本文提出了一种基于角色标注的中国人名自动识别方法。即:利用从语料库中自动抽取的角色信息,采取Viterbi算法对切词结果进行角色标注,在角色序列的基础上,进行模式最大匹配,最终实现中国人名的识别。通过对16M字节真实语料库的封闭与开放测试,该方法取得了接近98%的召回率,准确率也得到了实际提高。实验数据证明:该方法是行之有效、能够成功解决中国人名的自动识别问题。关键词:未登录词识别;中国人名;角色标注1.引言词语分析是中文自然语言处理的前提和基础,中文词语分析的研究已经取得较大的进展,但在处理含有未登录词的文本时,其结果一般难以满足实际的需求。未登录词的错误识别,不仅仅使自身无法正确识别召回,而且往往与前后的其他字词交叉组合,严重地影响其他词的正确识别,从而直接的降低了词语分析乃至整个句子分析的正确率。未登录词的自动识别已经成为了中文词语分析质量的实际瓶颈。中国人名在未登录词占有较大比重,也是未登录词识别的主要难点。根据我们对人民日报1998年1月的语料库(共计2,305,896字)进行的统计,每100字中含未登录词1.192个(不计数词、时间词),其中48.6%的是中国人名。而中国人名的召回率仅为68.77%[1],其切分错误高达50%以上,对所有分词错误进行统计,姓名错误占了将近90%[2]。因此中国人名的自动识别是未登录识别问题的重点和关键,中国人名识别问题的解决也会改善汉语词语分析、句法分析乃至中文信息处理的最终质量。1.1中国人名自动识别的困难中国人名数量众多,规律各异,有很大的随意性。其主要的困难在于:1.中国人名构成的多样性;2.人名内部相互成词;3.人名与其上下文组合成词;4.歧义理解。1.中国人名构成的多样性:(1)姓+名:张华平、张浩、西门吹雪、诸葛亮;(2)有名无姓:“春花点点头”;“杰,你好吗?”(3)有姓无名:“刘称赵已离开江西”;(4)姓+前后缀刘总、张老、小李、邱某;(5)港台已婚妇女:范徐丽泰、彭张青。2.人名内部相互成词,指的是姓与名、名与名之间本身就是一个已经被收录的词。如:[王国]维、[高峰]、[汪洋]、张[朝阳]。根据我们对80,000条中国人名的统计,内部成词的比例高达8.49%。3.人名与其上下文组合成词的情况包括人名的首部(姓或名的首字)与人名的上文成词和人名的尾部(姓或名的首字)与人名的下文成词。例如:“这里[有关]天培的壮烈”;“费孝通向人大常委会提交书面报告”。在人民日报1998年1月的语料库中,这种情况接近200例。4.歧义理解的主要是由同源冲突[3]引起的:例如:“河北省刘庄”;中的“刘庄”就是2中国人名与地名的歧义,“周鹏和同学”存在人名“周鹏”和“周鹏和”的歧义[4]。1.2现有解决方案及其不足针对中国人名的自动识别问题,人们已经作过很多的探索,并提出了多种解决方案。根据其使用的方法不同,这些方案大致可以分为三种:规则方法[2,4,5]、统计方法[6]以及规则与统计相结合的方法[1,7,8]。规则方法主要利用两种信息:姓氏用字分类[5]和限制性成分[8]。即:分析姓名用字,驱动对姓名的识别过程,并采集姓名前后相关的成分,对姓名的前后位置进行限制。小规模测试的结果表明,其准确率可以高达97%[4]。在缺乏特大规模熟语料库的时候,规则方法是唯一可行的方法。统计方法主要是针对姓名语料库来训练某个字作为姓名组成部分的概率值,并用它们来计算某个候选字段作为姓名的概率,其中概率值大于一定阈值的字段为识别出的中国人名[6]。规则与统计相结合的办法,可以通过概率计算减少规则方法的复杂性与盲目性,而且可以降低统计方法对语料库规模的要求。目前的研究基本上都是采取规则与统计的方法,不同之处仅仅在于规则与统计的侧重不同而已。现有解决方案存在着本身固有的一些不足:首先,一般采取“单点(首或尾)激活”[4]的机制来触发人名的识别处理。即扫描到姓氏用字、职衔、称呼等具有明显姓名特征的字段时,才将前后的几个字列为候选姓名字段进行人名的识别。那些不具备明显特征的姓名往往会被丢失,如上文中提到的“有名无姓”的人名。其次,姓名候选字段大都是选取切分后的单字碎片[1,2,4,6],也有研究者将少量的二字或多字词纳入候选字段的选取范围[4]。在这种选取机制的作用下,人名内部成词以及人名与上下文成词的情况基本上是无法召回的。根据上文提供的统计数据,由于这两种机制所引起的召回率损失将不小于10%。最后,人名识别采取的大量规则往往代价昂贵而且难以扩展。文献[4]中,研究者就是从10万条人名库、2亿字的真实语料库中将姓名用字分为了9类,并总结了21条识别规则。无论是收集如此巨大的人名库、真实语料库,还是提炼规则,都是一个浩大的工程。这无疑是非常费时、昂贵的。如果增加新的人名形式,也必须增加新的规则,并对以前的规则重新修订,因此规则方法很难扩展。规则可以保证很高的准确率,但是任何规则都不可能覆盖尽可能多的人名,对于规则之外的姓名就完全无能为力。本文将提供一种可以避免上述不足的解决方案——基于角色标注的中国人名自动识别方法。该方法主要采用隐马模型对分词结果进行人名构成角色的标注,然后根据各个不同的角色,进行简单的模式匹配并最终识别出人名。某个字词的人名构成角色定义主要依据于其在人名构成中的不同作用,如姓、名、上文、下文等。字词不同角色的概率以及各个角色之间的转移概率,完全从语料库训练过程中自动抽取。该方法自动学习、自动识别,无需人工的直接干预,改变训练样本,就可以适应新的情况。一次扫描,无需回溯,选取所有的可能字段作为候选姓名,识别处理不需激活。经过大规模的真实语料库测试,我们取得让人满意的实际效果。本文第二节阐述该方法的理论依据,然后给出具体的实现过程,最后提供人名识别的实验结果并进行分析。32、基于角色标注的中国人名自动识别方法2.1中国人名的构成角色中国人名的内部构成与上下文比较集中,而且有一定的规律性。在83,077条人名库中,姓氏用字仅有820个,其中王、张、李三大姓,就占了20%;20,631个单名中,单名用字为1,489个;双名的首字与末用字数均不到2000个。人名的上下文种类也很有限。上文一般是称呼、职衔以及一些连词、动词,如:“总统”、“主任”、“打”、“向”等。下文大多是像“说”、“表示”、“主席”之类的词。我们将人名的内部组成、上下文等与人名识别相关的成分称为中国人名的构成角色(为行文方便,以下简称角色)。我们利用角色表(见表1)对“馆/内/陈列/周/恩/来/和/邓/颖/超生/前/使用/过/的/物品/。”进行角色标注,其结果为:“馆/A内/A陈列/K周/B恩/C来/D和/M邓/B颖/C超生/V前/A使用/A过/A的/A物品/A。/A”编码代码意义例子BPf姓氏张华平先生CPm双名的首字张华平先生DPt双名的末字张华平先生EPs单名张浩说:“我是一个好人”FPpf前缀老刘、小李GPlf后缀王总、刘老、肖氏、吴妈、叶帅KPp人名的上文又来到于洪洋的家。LPn人名的下文新华社记者黄文摄MPpn两个中国人名之间的成分编剧邵钧林和稽道青说UPpf人名的上文和姓成词这里有关天培的壮烈VPnw人名的末字和下文成词龚学平等领导,邓颖超生前XPfm姓与双名的首字成词王国维、YPfs姓与单名成词高峰、汪洋ZPmt双名本身成词张朝阳APo以上之外其他的角色表1中国人名的构成角色表2.2角色自动标注与中国人名识别既然含中国人名的句子包含姓、名、上下文等构成角色,那么换一个角度说:我们就可以通过对构成角色进行标注,通过对角色序列简单的模式匹配来实现中国人名的识别。而中国人名构成角色的标注实质是一个简单的词性标注过程。我们采用的是Viterbi算法[9]进行角色自动标注。即:从所有可能的标注序列中优选出概率最大的标注作为最终标注结果。其理论及推导如下:我们假定W是分词后的Token序列(即未登录词识别前的分词结果),T是W某个可能的角色标注序列.其中T#为最终标注结果,即概率最大的角色序列。则有:W=(w1,w2,…,wm),4T=(t1,t2,…,tm),m0,T#=argTmaxP(T|W)........................…...............................................................................E1根据Bayes公式,有:P(T|W)=P(T)P(W|T)/P(W)..................................................….E2对于一个特定的Token序列来说,P(W)是一个常数,因此根据E1和E2我们可以得到T#=argTmaxP(T)P(W|T)…......................................…......................…...........................E3我们引入隐马尔科夫模型[10]来计算P(T)P(W|T)。其中wi为观察值,角色ti为状态值。则W是观察值序列,而T为隐藏在W后的状态值序列。因此:P(T)P(W|T)≈miiiiittptwp01)|()|(∴T#=argTmaxmiiiiittptwp01)|()|(................….............…...................…..............….........E4T#=argTminmiiiiittptwp01)}|(ln)|({ln.............…............................................E5角色自动标注问题就转换为求解E5表达式最小化的问题。利用Viterbi算法[9]就可以求解T#。为了解决人名与其上下文组合成词的问题,在人名识别之前,我们要对角色U(人名的上文和姓成词)和V(人名的末字和下文成词)进行分裂处理。相应地分裂为KB、DL或者EL。最后,基于角色序列的人名识别就是一个简单的模式最大匹配问题。我们使用到的人名识别模式集为:{BBCD,BBE,BBZ,BCD,BEE,BE,BG,BXD,BZ,CD,EE,FB,Y,XD}。只要符合其中一个模式,我们就人们对应的Token片段组成一个人名。2.1节中的例句“馆/内/陈列/周/恩/来/和/邓/颖/超生/前/使用/过/的/物品/。”对应的T#为:“AAKBCDMBCVAAAAAA”。V分裂处理后,最终的角色序列为:“AAKBCDMBCDLAAAAAA”。模式最大匹配后,我们识别出的人名是:“周恩来”和“邓颖超”。2.3角色信息的自动抽取p(wi|ti)和p(ti|ti-1)是E5中两个很关键的角色信息参数。其中p(wi|ti)指的是角色为ti的Token集合中wi的概率;p(ti|ti-1)表示的是角色ti-1到角色ti的转移概率。在大规模语料库训练的前提下,我们可以得到:p(wi|ti)≈C(wi,ti)/C(ti)….................….............…...................…..............….........E6其中C(wi,ti):wi作为角色ti出现的次数;C(ti):角色ti出现的次数。p(ti|ti-1)≈C(ti-1,ti)/C(ti-1)................….............…...................…..............….......…E7其中C(ti-1,ti):角色ti-1下一个角色是ti的次数;C(wi,
本文标题:基于角色标注的中国人名自动识别研究
链接地址:https://www.777doc.com/doc-1725068 .html