中文姓名的自动辨识孙茂松,黄昌宁,高海燕,方捷(清华大学计算机科学系,烟台大学计算机应用 系)【摘要】中文姓名的辨识对汉语自动分词研究具有重要意义。本文提出了一种在中文文本中自 动辨识中文姓名的算法。我们从新华通讯社新闻语料库中随机抽取了300个包含中文姓名的句子 作为测试样本。实验结果表明,召回率达到了99.77%。关键词中文姓名自动辨识,
生词处理 ,
汉语自动分词,中文信息处理一、引言汉语自动分词是中文信息处理的基础课题之一。虽已有十 年的研究历史,但始终未见真正实用的系统面世。困扰此项研究的困难主要有二:歧义切分问题与 生词处理问题。本文所讨论的属于第二个问题的范畴之内。中文姓名一般来说具有任意性,或典雅 浑成,或粗俗率真,或简单明了,或深奥晦涩,洋洋洒洒,繁若星沙,随心所欲,实难预期。无论 分词词典如何庞大,都不可能用穷举的办法将它们囊括进去(著名人物除外)。中文姓名在文章中 的出现频率虽然不高,但绝非可以忽视。由于中文姓名不象印欧语言那样可以通过大写字母来辨识 ,其中的姓氏和名字用字不少又可同时以普通词或普通词一部分的身分参与句子的活动,因此如果 不予处理,将导致为数可观的分词错误。例如:郑杰士来时遇见了林红。(例1)刘清楚楚动人。 (例2)利用从左向右扫描的最大匹配法进行切分,得到:郑杰士来时遇见了林红。刘清楚楚动人 。注意,例1中姓名"郑杰士""林红"被生硬地拆裂成字串。例2中因未认为"刘清"是一个姓 名,导致分用错误蔓延。由此可见,中文姓名的自动辨识对建立一个健壮的自动分词系统具有重要 意义。清华大学智能技术与系统国家重点实验室开放基金资助项目迄今为止,这方面研究见诸报道 的,主要有文献[1,2,3]。[1]完全以中文姓名的概率作为辨识依据,并将之融入限制式 满足求解过程中.虽然取得了令人注目的结果,但存在两点局限:(1)姓名语料库偏小,仅包含 18541个姓名样本.一般认为,这类语料库需要10万个以上姓名样本才算足够大;(2)仅 利用了关于姓名的统计信息,而没有充分挖掘其它各种行之有效的手段.[2],[3]则进一步 从不同的角度进行了有益的尝试。二、辨识中文姓名的当用资源2.1.姓氏频率表XFL与名字 用字频率表MCFL中文姓名由姓氏和名字两个部分组成.表XFL和MCFL取自[4],系根 据1982年中国全国人口普查资料,使用计算机对174,900个中文姓名进行抽样综合统计 的结果。姓名样本分别从中国六大区的七个省市抽取(北京、上海、辽宁、陕西、四川、广东和福 建,各随机抽取25,000个左右),覆盖面广,代表性强,比较合理、科学。统计结果显示: (1)当今仍然使用、活跃的中文姓氏远没有某些姓氏典籍所列举的那么多。统计共得到729个 姓氏,虽遗漏固属难免,但姓氏数目的量级大致应是这样.宋《姓解》收录了姓氏2568个,明 《万姓统谱》收录了3557个,大陆出版的《中华大词典》收录了1942个,台湾出版的《中 国姓氏集》收录了5544个,其中绝大部分已成"死"姓,不复流行;(2)姓氏分布很不均匀 ,但相对集中.729个姓氏中,"王、陈、李、张、刘"这5大姓就占了姓名样本数的32.0 %,前14个姓占49.5%,前114个姓占90.0%,前365个姓占99.0%。而其余 364个姓氏仅占不到1.0%。中国俗语所谓"张王李赵刘,普遍天下走""陈蔡李林王半天下 ",即是这种分布趋势的形象反映;(3)某些姓氏可用作单字词,其中不乏高频单字词。常用的 姓氏如"王、黄、马、高、于"等,不常用的姓氏如"是、过、来、从、那"等;(4)名字用字 分布较姓氏要平缓、分散。共得到3345个名字用字,频率最高的前6个字("英、华、玉、秀 、明、珍")的覆盖率为10.4%,前28个字为30.1%,前410个为90.0%,前1 141字为99.0%;(5)名字用字涉及范围很广。从所属的词类看,不仅有实词,也有各类 虚词。如副词"再、常、太、必、就、非、最、更、也、极、又、仅、皆",介词"以、向、从、 于、稻,连词"而、虽、且、与"等。从感情色彩看,多使用褒义字和中性字,但也出现了一些贬 义字或不太雅的字,如"虫、狗、鸡、狼、愚、暴、恶、悲"等;(6)某些汉字既可用作姓氏, 又可用作名字用字。如"林、方、金、江、万、颜、童、柳"等。上述各点,(1)、(2)、( 4)赋予中文姓名具有统计意义上的可区别性,(3)、(5)使得部分姓名边界模糊,(6)则 导致相邻候选姓名之间产生交叉歧义。2.2中文姓名的概率分布一般来说,中文姓名分单名sn 和双名pn两类。单名形如:sn=x(姓氏)ml(名字首字)双名形如:pn=x(姓名)m l(名字首字)m2(名字末字)姓氏又可分为单姓(如"赵、钱、孙、李")和复姓(如"诸葛 、司马、欧阳")。冠夫性(如"李杨、刘张、陈王")本文暂不予考虑.单姓形如:x=x1复 性形如:x=x1x2(以上x1,x2,m1,m2均代表汉字)令:fx(x0|x0∈姓氏 )表示姓氏x0的使用频率;fm(mo|m0∈名字用字)表示名字用字m0的使用频率则根据 表XFL及MCFL,可给出姓名的概率估值;p(sn)=fx(x)*fm(m1)P(pn )=fx(x)*fm(m1)*fm(m2)利用这两个公式,我们对清华大学近10年共23 ,175名学生的姓名(计单名8,594个,双名14,581,单名与双名之比约为37.2 %:62.8%)进行了概率估值,从而得到中文姓名的概率分布曲线:图1单名概率分布曲线图 2双名概率分布曲线显然,这种概率分布是姓名辨识算法所乐见的。另,单名与双名的概率分布曲 线非常相似。2.3绝对封闭式、相对封闭式和开放式名字用字根据构词能力,名字用字可划分成 三类:绝对封闭式名字用字一类名字用字,既不可作单字词,又不能作构词成分.若这类字落在某 个姓氏的作用域内,则必为该姓名的一部分.进一步地,若落在姓名的m2位置,则该姓名的右边 界定.如"李逵"中的"逵","郑筱云"中的"筱","刘仲藜"中的"藜"字等.相对封闭式 名字用字胡戎睿十分聪明.(例3a)胡戎睿智过人.(例3b)"睿"不是单字词,但可构词, 如"睿智".当不存在相应的构词语境时,这类字的作用与绝对封闭式名字用字完全相同(例3a 中,"胡戎睿"应判成姓名).否则,应与姓名脱离(例3b中,"睿'属'睿智","胡戎"为 姓名).开放式名字用字张玉爱读小说.(例4)例4中的"爱"字,可成为姓名的一部分,同时 又可以单字词的身份参与句子的活动。这将导致在形式上,句子有两种可能的解释:张玉爱读小说 。张玉爱读小说。从姓名的角度来看,如果这类字出现在姓名的m2位置上,那么该姓名的右边界 是不确定的(即应保留"xm1"及"xm1m2"两种可能)。故称之为开放式名字用字。2. 4称谓表称谓常与姓名联袂出现,因此对辨识姓名有指示作用。省长李长春赶到了抗灾现场。(例 5)这是王继宁教授的学生。(例6)例5中,由称谓"省长"指示姓名的左边界;例6中,由称 谓"教授"指示姓名的右边界。称谓具有三种属性:只能用于姓名之后,如"之流""阁下"等; 只能用于姓名之前,如"青年""战士""运动员"等;用于姓名前后均可,如"先生""同志" "市长""司令员"等。与称谓表相配合,我们还设置了一个称谓前缀表,存放"副、总、代、代 理、助理、常务、名誉、荣誉"等,以减少称谓表的冗余度。通过简单的组合即可处理"代理副总 经理"之类较为复杂的称谓。2.5简单上下文指界动词一些动词,如"说、是、指出、认为、表 示、参加"等,常紧接姓名的后面,故可用来帮助判断姓名的右边界。如:姬鹏飞指出,…(例7 )匹配模式某些模式,如:"…的<姓名>"、"以<姓名>{称谓}为<称谓>"(大括号表可 缺省)等,亦具界定姓名左右的功效。如:毕业于同济大学分校的叶冬梅1983年分到局机关后 ,……(例8)以潘杜泉为团长的香港工会代表团和以欧少雄为团长的澳门工会代表团是应中华全 国总工会邀请,…(例9)三、算法设计3.1预切分、标志数组及概率初筛选输入文本分割成句 子后送入数组SENT,并在常用词表的支持下,利用最大匹配法对SENT进行分词,分词结果 仍存回SENT,且保持SENT的长度不变(不妨认为切分出的词与词之间存在隐式的"空"分 割符).然后,根据上节所述资源,建立一个与经分词处理后的数组SENT具有-一对应关系的 标志数组FLAG.赋加标志遵循的规则是:对句内任一位置pt(0<pt<length(S ENT)-1)若SENT[Pt]为孤立字且该字不可作单字词FLAG[pt]←′0′,若 SENT[pt]为孤立字且该字可作单字词FLAG[pt]←′1′;若SENT[pt]属 于某个多字词(含双字词)FLAG[pt]←′2′;若SENT[pt]属于某个称谓FLA G[pt]←'3';若SENT[pt]属于某个指界动词(
单字词)FLAG[pt]←'4 ';若SENT[pt]属于某个指界动词(双字词)FLAG[pt]←'5';若SENT[ pt]是分隔符(数字、字母、标点等非汉字)FLAG[pt]←'6'; 赋加标志的优先权 :'4'>'1';'3'>'5'>'2'接着,算法将寻找SENT中所有可能的潜在姓名。 设SENT中任一连续汉字串CSTRCIC2:若有C1(单姓)∈XFL,C2∈MCFL; 或/*单姓单名*/C1C2C3:若有C1(单姓)∈XFL,C2,C3∈MCFL;或/* 单姓双名*/C1C2C3:若有C1C2(复姓)∈XFL,C3∈MCFL;或/*双姓单名*/C1C2C3C4:若有C1C2(复姓)∈XFL,C3,C4E∈CFL/*双姓双名*/则CSTR即被视作一潜在姓名cn,并将之添加到潜在姓名表CNL中。注意,此操作的作用范围并不受分词结果的制约,即使是已经切出来的多字词,仍可能成为姓名的一部分(这也正是引