背景技术
中文信息处理是指用计算机对中文的音、形、义等信息进行处理和加工,是自然语言信息处理的一个分支。其中,中文信息处理主要研究如何利用计算机对汉语信息进行自动处理,与英文等西方语言相比,汉语缺乏明显的分隔标记,在语法、语义和语用等方面也更加灵活,这就增加了计算机处理和理解的难度。而词语分析是中文自然语言处理的前提和基础,中文词语分析的研究也已经取得较大的进展,但是,在处理含有未登录词的文本时,相应的处理结果一般难以满足实际的需求。
具体的,未登录词的错误识别,不仅仅会导致自身无法正确识别,而且未登录词往往与前后的其他字词交叉组合,会严重影响其他词的正确识别,从而直接降低了词语分析的正确率,甚至影响到整个句子分析的正确率。可以看出,未登录词的自动识别已经成为了中文词语分析质量的瓶颈问题。
进一步的,命名实体在未登录词中占有较大的比重,也是未登录词识别的主要难点。其中,命名实体是指文本中具有特定意义的实体,可以表示为现实世界中的抽象事物或者具体事物,该命名实体主要包括人名、地名、机构名、日期、时间、货币值和百分数等。而从识别效果上看,日期、时间、货币值和百分数等的识别相对简单,规则的统计、数据的训练统计也相对容易。
但是,由于人名、地名、机构名等命名实体具有开放性和发展性的特点,构成规律具有较大的随意性,使得对人名、地名、机构名的识别存在着较大的误识别和漏识别;而且命名实体的识别对于正确理解文本具有重要意义,是信息抽取、自动问答、机器翻译等技术的基础;因此,对人名、地名、机构名的识别也是现在命名实体识别的研究重点。其中,在人名、地名、机构名的识别过程中,中国人名和音译人名等人名实体在命名实体中占有很大的比重,使得人名的自动识别成为了未登录识别的重点,人名识别问题的解决将会改善汉语词法分析、句法分析乃至中文信息处理的最终质量。
现有技术中,通常使用基于角色标注的方法进行中国人名的自动识别,即利用从语料库中自动抽取的角色信息,采取Viterbi算法(Viterbi算法是一种卷积码的解码算法)对切词结果进行角色标注,在角色序列的基础上,进行模式最大匹配,从而实现中国人名的识别。
具体的,该基于角色标注的方法认为:句子中的每个词条都隐含地携带了一个角色信息,其中,角色表示词条在句子或命名实体中所起的作用。该角色标注就是指对切分结果得到的词条序列中的每个词条标注上相应的角色,其中,角色主要分为三类,分别为:人名的内部组成角色、与上下文成词角色、人名无关角色。如表1所示的一种角色表:
表1
可以看出,根据表1所示的角色表,当切分结果为馆/内/陈列/周/恩/来/和/邓/颖/超生/前/使用/过/的/物品/时,对切分结果得到的词条序列中的每个词条标注上相应的角色的结果(即角色标注的结果)为“馆/A内/A陈列/A周/B恩/C来/D和/A邓/B颖/C超生/V前/A使用/A过/A的/A物品/A”
进一步的,在该基于角色标注的方法中,是通过使用Viterbi算法进行角色的自动标注的;即从所有可能的标注序列中优选出概率最大的标注作为最终的标注结果;具体的理论及推导过程如下:
假设W是分词后的Token序列(即未登录词识别前的分词结果),W=(w1,w2,...,wm);T是W的某个可能的角色标注序列,T=(t1,t2,...,tm),m>0;其中,T#为最终标注结果,即概率最大的角色序列。根据Bayes公式,并引入隐马尔科夫模型,则
(公式1)
其中,wi为观察值,角色ti为状态值,W是观察值序列,T为隐藏在W后的状态值序列;p(wi|ti)指的是角色为ti的Token集合中wi的概率;p(ti|ti-1)指的是角色ti-1到角色ti的转移概率。
假设C(wi,ti):wi作为角色ti出现的次数;
C(ti-1,ti):角色ti-1下一个角色是ti的次数;
C(ti):角色ti出现的次数。
在大规模语料库训练的前提下:
P(wi|ti)≈C(wi,ti)/C(ti) (公式2)
P(ti|ti-1)≈C(ti-1,ti)/C(ti-1) (公式3)
可以看出,在该基于角色标注的方法中,上述的角色自动标注问题就转换成了求解公式1的表达式最小化的问题;其中,该Vitebi算法中有专门解决上述问题的方法,已经非常成熟,在此不再赘述;即通过上述的公式1、公式2和公式3可以实现角色自动标注。
在实现本发明的过程中,发明人发现现有技术至少存在如下问题:
(1)现有的基于角色标注的方法依赖于上下文角色集合。例如,输入字符串为刘炽平百度百科时,粗分的结果为刘/炽/平/百度/百科,如果百度这个词条没有人名的下文角色,则刘炽平将无法被正确识别;而人名的上下文角色集合并不是封闭的集合,而是具有开放性和发展性的集合;因此,要获得充分的上下文角色集合非常困难;进而导致人名无法被正确识别。
(2)现有的基于角色标注的方法所训练出的各种概率依赖于训练语料;而训练语料是封闭集合,在使用训练语料进行训练时,可能会导致训练出的概率出现问题,进而使得人名无法正确识别。
(3)现有的基于角色标注的方法对音译人名,尤其是英译人名识别的支持不够。
(4)现有的基于角色标注的方法缺乏误识别人名排除机制,在人名识别过程出现错误时,不能进行很好的排除,人名识别的准确率有待提高。
发明内容
本发明实施例提供了一种中文人名识别的方法和装置,以准确的识别中文人名。
为了达到上述目的,本发明实施例提供了一种中文人名识别的方法,包括:
获取输入序列,并对所述输入序列进行分词;
对分词后的输入序列进行角色标注,并获取角色标注序列;
根据人名识别模式对所述角色标注序列进行匹配,并输出组成的人名。
所述获取角色标注序列之后,还包括:
检测所述角色标注序列中的人名识别角色,并对出现错误的人名识别角色进行修正。
所述获取角色标注序列之后,还包括:
对角色标注序列中的角色U和角色V进行***处理。
对角色标注序列中的角色U进行***处理包括:
当所述角色U的后一个角色为C,E,G,或Z时,将所述角色U对应的内容***为角色A和角色B;当所述角色U的后一个角色为D时,将所述角色U对应的内容***为角色A和角色C;当所述角色U的后一个角色为I,X2,或E2时,将所述角色U对应的内容***为角色A和角色H;当所述角色U的后一个角色为其他角色时,将所述角色U对应的内容***为角色A和角色A;
对角色标注序列中的角色V进行***处理具体包括:
当所述角色V的前一个角色为C或X时,将所述角色V对应的内容***为角色D和角色A;当所述角色V的前一个角色为B时,将所述角色V对应的内容***为角色E和角色A;当所述角色V的前一个角色为I或X2时,将所述角色V对应的内容***为角色T和角色A;当所述角色V的前一个角色为H时,将所述角色V对应的内容***为角色E2和角色A;当所述角色V的前一个角色为其他角色时,将所述角色V对应的内容***为角色A和角色A。
所述根据人名识别模式对所述角色标注序列进行匹配,并输出组成的人名包括:
根据人名识别模式对经过角色U和角色V***处理后的角色标注序列进行模式最大匹配,并输出组成的人名。
根据人名识别模式对经过角色U和角色V***处理后的角色标注序列进行模式最大匹配,并输出组成的人名包括:
当经过角色U和角色V***处理后的角色标注序列中存在人名识别模式BCD,BE,BG,BZ,FB,Y,XD或FE时,模式最大匹配的结果为对应内容是中国人名;
当经过角色U和角色V***处理后的角色标注序列中存在人名识别模式HE2,[H|X2][I|X2]+[T|X2],X2T,X2或Y时,模式最大匹配的结果为对应内容是音译人名。
所述获取输入序列之前,还包括:进行模型训练;
所述对分词后的输入序列进行角色标注包括:根据模型训练的结果对分词后的输入序列进行角色标注。
所述进行模型训练包括:
获取输入语料,并去掉所述输入语料中存在的嵌套标注结构,得到无嵌套的标注语料;去掉所述输入语料中的所有的词性标记,得到正文语料,并对所述正文语料使用分词***进行切分,得到分词后语料;
根据角色表对所述分词后语料进行标注,得到角色标注语料,其中,所述角色表中不包含上下文角色信息;
根据所述角色标注语料获取角色转移语料和角色发射语料;
根据所述角色转移语料和角色发射语料进行模型训练。
一种中文人名识别的装置,包括:
获取模块,用于获取输入序列,并对所述输入序列进行分词;
角色标注模块,用于对所述获取模块分词后的输入序列进行角色标注,并获取角色标注序列;
模式匹配模块,用于根据人名识别模式对所述角色标注模块获取的角色标注序列进行匹配,并输出组成的人名。
还包括:
角色修正模块,用于检测所述角色标注模块获取的角色标注序列中的人名识别角色,并对出现错误的人名识别角色进行修正。
还包括:
角色拆解模块,用于对所述角色标注模块获取的角色标注序列中的角色U和角色V进行***处理。
所述角色拆解模块具体用于,当所述角色U的后一个角色为C,E,G,或Z时,将所述角色U对应的内容***为角色A和角色B;当所述角色U的后一个角色为D时,将所述角色U对应的内容***为角色A和角色C;当所述角色U的后一个角色为I,X2,或E2时,将所述角色U对应的内容***为角色A和角色H;当所述角色U的后一个角色为其他角色时,将所述角色U对应的内容***为角色A和角色A;
当所述角色V的前一个角色为C或X时,将所述角色V对应的内容***为角色D和角色A;当所述角色V的前一个角色为B时,将所述角色V对应的内容***为角色E和角色A;当所述角色V的前一个角色为I或X2时,将所述角色V对应的内容***为角色T和角色A;当所述角色V的前一个角色为H时,将所述角色V对应的内容***为角色E2和角色A;当所述角色V的前一个角色为其他角色时,将所述角色V对应的内容***为角色A和角色A。
所述模式匹配模块具体用于,根据人名识别模式对经过角色U和角色V***处理后的角色标注序列进行模式最大匹配,并输出组成的人名。
当经过角色U和角色V***处理后的角色标注序列中存在人名识别模式BCD,BE,BG,BZ,FB,Y,XD或FE时,模式最大匹配的结果为对应内容是中国人名;
当经过角色U和角色V***处理后的角色标注序列中存在人名识别模式HE2,[H|X2][I|X2]+[T|X2],X2T,X2或Y时,模式最大匹配的结果为对应内容是音译人名。
还包括:
训练模块,用于在获取输入序列之前,进行模型训练;
所述角色标注模块还用于,根据所述训练模块的模型训练的结果对分词后的输入序列进行角色标注。
所述训练模块具体用于,获取输入语料,并去掉所述输入语料中存在的嵌套标注结构,得到无嵌套的标注语料;去掉所述输入语料中的所有的词性标记,得到正文语料,并对所述正文语料使用分词***进行切分,得到分词后语料;根据角色表对所述分词后语料进行标注,得到角色标注语料,其中,所述角色表中不包含上下文角色信息;并根据所述角色标注语料获取角色转移语料和角色发射语料;根据所述角色转移语料和角色发射语料进行模型训练。
与现有技术相比,本发明具有以下优点:通过对分词后的输入序列进行角色标注,能够准确的识别出中国人名和音译人名;而且本发明所提出的角色集合并不依赖于上下文角色集合,进一步的提高了中国人名识别的准确性。
具体实施方式
下面将结合本发明中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种中文人名识别的方法,如图1所示,具体包括以下步骤:
步骤101,获取输入序列,并对所述输入序列进行分词。
步骤102,对分词后的输入序列进行角色标注,并获取角色标注序列。
其中,所述获取角色标注序列之后,还包括:检测所述角色标注序列中的人名识别角色,并对出现错误的人名识别角色进行修正。
所述获取角色标注序列之后,还包括:对角色标注序列中的角色U和角色V进行***处理。需要说明的是,该对角色标注序列中的角色U和角色V进行***处理的操作,与检测所述角色标注序列中的人名识别角色,并对出现错误的人名识别角色进行修正的操作并没有先后的顺序关系。
具体的,对角色标注序列中的角色U进行***处理包括:当所述角色U的后一个角色为C,E,G,或Z时,将所述角色U对应的内容***为角色A和角色B;当所述角色U的后一个角色为D时,将所述角色U对应的内容***为角色A和角色C;当所述角色U的后一个角色为I,X2,或E2时,将所述角色U对应的内容***为角色A和角色H;当所述角色U的后一个角色为其他角色时,将所述角色U对应的内容***为角色A和角色A;
对角色标注序列中的角色V进行***处理具体包括:当所述角色V的前一个角色为C或X时,将所述角色V对应的内容***为角色D和角色A;当所述角色V的前一个角色为B时,将所述角色V对应的内容***为角色E和角色A;当所述角色V的前一个角色为I或X2时,将所述角色V对应的内容***为角色T和角色A;当所述角色V的前一个角色为H时,将所述角色V对应的内容***为角色E2和角色A;当所述角色V的前一个角色为其他角色时,将所述角色V对应的内容***为角色A和角色A。
步骤103,根据人名识别模式对所述角色标注序列进行匹配,并输出组成的人名。其中,所述根据人名识别模式对所述角色标注序列进行匹配,并输出组成的人名包括:根据人名识别模式对经过角色U和角色V***处理后的角色标注序列进行模式最大匹配,并输出组成的人名。
具体的,根据人名识别模式对经过角色U和角色V***处理后的角色标注序列进行模式最大匹配,并输出组成的人名包括:当经过角色U和角色V***处理后的角色标注序列中存在人名识别模式BCD,BE,BG,BZ,FB,Y,XD或FE时,模式最大匹配的结果为对应内容是中国人名;当经过角色U和角色V***处理后的角色标注序列中存在人名识别模式HE2,[H|X2][I|X2]+[T|X2],X2T,X2或Y时,模式最大匹配的结果为对应内容是音译人名。
本发明实施例中,所述获取输入序列之前,还包括:进行模型训练;此时,所述对分词后的输入序列进行角色标注包括:根据模型训练的结果对分词后的输入序列进行角色标注。
具体的,所述进行模型训练包括:获取输入语料,并去掉所述输入语料中存在的嵌套标注结构,得到无嵌套的标注语料;去掉所述输入语料中的所有的词性标记,得到正文语料,并对所述正文语料使用分词***进行切分,得到分词后语料;根据角色表对所述分词后语料进行标注,得到角色标注语料,其中,所述角色表中不包含上下文角色信息;根据所述角色标注语料获取角色转移语料和角色发射语料;根据所述角色转移语料和角色发射语料进行模型训练。
可见,本发明实施例所提供的方法中,通过对分词后的输入序列进行角色标注,能够准确的识别出中国人名和音译人名;而且本发明所提出的角色集合并不依赖于上下文角色集合,进一步的提高了中国人名识别的准确性。
本发明实施例二提供一种中文人名识别的方法,如图2所示,具体包括以下步骤:
步骤201,进行模型训练。其中,在进行中文人名识别的过程中,为了保证角色标注的准确性,需要进行模型训练,从而对每个词都有准确的角色标注结果。
具体的,本发明实施例中可以通过使用基于类的语言模型进行模型训练,和角色标注模型进行模型训练。其中,在基于类的语言模型中,需要将人名、地名、机构名等三类命名实体分别定义为三个类别,即PN(Person Name)、LN(Location Name)和ON(Organization Name);训练之前,需要将人名、地名、机构名替换为PN、LN和ON,在这之后,使用普通语言模型的训练方法进行训练即可。其中,该基于类的语言模型中包括两个子模型,分别为上下文模型P(C)(Context Model)和命名实体类模型P(S|C)(Class Model),该基于类的语言模型为现有比较成熟的实施方式,在此不再详加赘述。对于通过使用该角色标注模型进行模型训练的过程即通过使用SegTag来进行模型训练。当然,在实际的应用中,还可以通过其他的语言模型进行模型训练,本发明实施例中不再赘述。
具体的,如图3所示,本发明实施例中,上述基于角色标注模型的训练过程具体包括以下步骤:
步骤301,对输入语料进行预处理。其中,该输入语料来自切分标注好的语料库(例如,2000年***语料库)。对输入语料进行预处理具体为:去掉输入语料中存在的嵌套标注结构,并得到无嵌套的标注语料。例如,原始输入语料为:以/p毛/nrf泽东/nrg同志/n为/vl代表/n的/ud[中国/ns***/n]nt;通过对去掉输入语料中存在的嵌套标注结构,得到处理后的语料(无嵌套的标注语料)为:以/p毛/nrf泽东/nrg同志/n为/v代表/n的/u中国/ns***/n;可以看出,在输入语料中,存在嵌套标注结构,例如,vl(动词中一种更具体的词性),ud(助词中一种更具体的词性),nt(机构名,将中国***嵌套在了一起),去掉输入语料中存在的嵌套标注结构后,得到v(动词)、u(助词),并解除了中国***的嵌套。
此外,还需要将输入语料中的所有的词性标记都去掉,得到正文语料,即上述情况下处理后的正文语料为:以***同志为代表的中国***。进一步对正文语料使用分词***进行切分,得到的语料为分词后语料。其中,该切分过程仅仅是分词,不进行任何命名实体识别和词性标注。
可以看出,通过本步骤的预处理过程,可以得到两个中间语料,即无嵌套的标注语料和分词后语料。
步骤302,获取角色标注语料,即根据各个角色的含义对每个词条进行角色标注。其中,在获得分词后语料时,本步骤中可以根据角色表对分词后语料进行标注,得到角色标注语料。例如,对于上述的例子,分词后语料为:以/毛/泽东/同志/为/代表/的/中国***/,直接根据该分词后语料来得到角色标注语料,结果为:以/A毛/B泽东/Z同志/A为/A代表/A的/A中国/A***/A。
需要说明的是,为了解决现有技术中过于依赖于上下文角色集合的问题,本发明实施例中所使用的角色表是没有上下文角色信息的,例如,针对现有技术中表1所示的角色表,去掉表2所示的上下文角色信息,可以得到本发明实施例所使用的表3所示的角色表,即上述获取角色标注语料的过程是基于表3所示角色表的前提下得出的;当然,根据实际的需要,还可以对表3所示的角色表进行修改和调整,该过程本发明实施例中不再赘述。
表2
K |
人名的上文 |
又来到于洪洋的家。 |
L |
人名的下文 |
***记者黄文摄 |
M |
两个人名之间的成分 |
编剧邵钧林和稽道青说 |
表3
可以看出,与表1相比,本发明实施例所使用的角色表中并没有人名的上文、人名的下文和两个人名之间的成分等角色,使得本步骤中获取角色标注语料的过程并依赖于上下文角色集合,即本发明实施例所提出的中文人名识别方法并不依赖于上下文角色集合。
需要说明的是,在上述的表3中,并不局限于使用上述的字母表示对应的含义,例如,还可以使用角色C表示中国人名的姓氏,使用角色B表示中国人名的双名的首字,即表3中角色与意义之间对应关系可以根据实际的需要进行任意调整;角色与意义之间对应关系的任意组合均在本发明保护范围之内,本发明实施例中以表3所示的对应关系为例进行说明。
需要说明的是,在本发明实施例中,是通过SegTag方法来获取角色标注语料的。其中,该通过SegTag方法来获取角色标注语料包括:
(1)记录人名信息,其中,该记录人名信息的过程具体为:通过扫描无嵌套的标注语料(在步骤301中获取)中的每一行,记录该行中所有人名出现的位置(该位置的计算忽略了所有出现的空格)以及该人名的类型等。其中,该人名的类型主要包括:中国人的姓氏部分、中国人的名字部分、两个汉字长度的无姓氏中国人名、超过两个汉字长度的外国人名、两个汉字长度的外国人名和被标注为人名词性的非人名等。
(2)为每个词条标注角色,在分词后语料(在步骤301中获取)中取出对应的行,并对每个词所出现的位置与下一个最近的人名所在的位置进行比较,根据每个词与人名的相对位置以及该人名的类型,来标注相应的角色。
通过SegTag方法来获取角色标注语料与现有标注语料方法的区别在于:SegTag方法是对分词后语料(当前分词***分词后的语料)进行标注,而现有标注语料的方法是对输入语料的标准切分结果进行标注。此时,由于切词结果可能是不同的,SegTag方法所得到的角色模型训练语料也可能是不同的。例如,如果分词后语料为:以/毛/泽东/同志/为/代表/的/中国/***/时,则角色标注后语料为以/A毛/B泽东/Z同志值/A值/A表值/A值/A国值/A产党/A;而如果分词后语料为:以/毛/泽东/同志/为/代表/的/中国/***/时,则角色标注后语料为:以/A毛/B泽/C东/D同志/A为/A代表/A的/A中国/A***/A。
可以看出,本发明实施例中通过对分词后语料进行标注相应的角色,使得角色标注结果可以随着当前分词***的变化而变化,从而提高了人名识别的准确率。例如,当前分词***的切分结果为:以/毛/泽/东/同志/为/代表/的/中国/***,则训练语料中角色标注的结果如果为以/A毛/B泽东/Z同志/A为/A代表/A的/A中国/A***/A,此时,***这个人名就有可能识别不出来。特别是,当角色模型中包含泽东作为角色Z的概率,而没有泽作为角色C的概率、东作为角色D的概率时,***将不能正确识别出来。
步骤303,提取训练文件和词典。即对上述步骤302中获取到的角色标注语料进行提取,获得相应的角色转移语料和角色发射语料。其中,该角色转移语料是将所有的词条去掉,仅保留相应的角色得到的语料;而角色发射语料是将每个角色和词条放在单独的一行得到的语料。例如,角色标注语料为:以/A毛/B泽/C东/D同志/A为/A代表/A的/A中国/A***/A时,则提取后的角色转移语料为:A B C D A A A A A A”。提取后的角色发射语料为:
A以
B毛
C泽
D东
A同志
A为
A代表
A的
A中国
A***
此外,在得到上述角色转移语料和角色发射语料的同时,还可以得到一个初始的角色词典;其中,该获得角色词典的过程为:从角色标注模型的训练语料中抽取出一个基本的角色词典,并对该基本的角色词典进行逐步提纯和扩充。例如,根据角色标注模型,可以容易地获得一个包含大量中国人名和音译人名的人名表语料,通过对该人名表语料进行统计处理,就能获得一个比较准确的人名常用字及每个常用字对应的常用角色集合。当然,在实际应用中,根据发现的错误识别,还需要逐步地提纯和扩充角色词典,从而获得高质量的角色词典,在此不再赘述。
步骤304,进行模型训练。其中,根据现有技术中角色标注的方法所使用的公式1,可以看出,需要训练的目的是获取两种类型的概率值:p(wi|ti)和p(ti|ti-1);该p(wi|ti)指的是角色为ti的Token集合中wi的概率,即角色发射概率;p(ti|ti-1)表示的是角色ti-1到角色ti的转移概率,即角色转移概率。可以看出,通过使用上述步骤303中获得的角色转移语料和角色发射语料即可以进行模型训练,并最终获得训练结果。
本发明实施例中,通过使用Katz平滑算法对角色转移概率和角色发射概率进行平滑,从而解决了使用最大似然估计得到的概率模型不可避免地遇到数据稀疏的问题,该Katz平滑算法为现有的算法,本发明实施例中不再赘述,
可以看出,通过上述的步骤301-步骤304,即可以获得模型训练的结果,在后续进行中文人名识别的过程中,可以直接使用该模型训练的结果进行相应的中文人名识别。
步骤202,根据模型训练的结果对中文人名进行识别。其中,在中文信息处理过程中,需要对该中文信息中的中文人名进行识别,从而实现中文信息处理的过程。
具体的,如图4所示,本发明实施例中,根据模型训练的结果对中文人名进行识别的过程具体包括以下步骤:
步骤401,对输入句子进行分词,从而得到分词后句子。本发明实施例中以输入句子为:馆内陈列周恩来和邓颖超生前使用过的物品,为例进行说明;可以看出,对应的分词后句子(其中的一种分词结果)为:馆/内/陈列/周/恩/来/和/邓/颖/超生/前/使用/过/的/物品。
步骤402,对分词后句子,通过使用角色标注模型,并借助Viterbi算法,求出概率最大的角色标注序列。例如,上述的角色标注结果为:馆/A内/A陈列/A周/B恩/C来/D和/A邓/B颖/C超生/V前/A使用/A过/A的/A物品/A。其中,该角色标注结果可以根据上述模型训练的结果进行角色标注(例如,通过使用上述模型训练的角色词典所获得);该步骤为现有的处理方式,本发明实施例中不再详加赘述。
需要说明的是,本步骤的执行主体可以为角色标注模块,当然,根据实际的需要,也可以使用其他实体进行处理,在此不再赘述。
对于角色词典中没有出现的词条(即角色词典的未登陆词条),本发明实施例中,提出了一种有效的未登陆词条的猜测方法;该猜测方法的原则是根据词条的长度和组成字符的特点,来猜测词条的角色;具体包括:
(1)如果该未登陆词条有奇数个字节,或者不少于6个字节,或者有非汉字字符,则直接确定该未登陆词条的角色为人名无关角色A。
(2)如果该未登陆词条为单个汉字,则需要猜测的角色为A|C|D|E。
(3)如果该未登陆词条为两个汉字,则需要猜测的角色为A|X|Z。
需要说明的是,由于音译人名的用字相对集中,因此,角色词典中基本上包含了常见的音译人名用字及对应的常用角色,即上述猜测方法主要是对可能的中国人名角色进行猜测。
步骤403,对角色标注序列中可能产生识别错误的人名识别角色进行检测,并对可能的识别错误及时修正相应的角色。其中,本步骤的执行主体可以为角色修正模块,当然,根据实际的需要,也可以使用其他实体进行处理,在此不再赘述。
本步骤中,假设待识别的人名字符串为wmwm+1...wn,相应的人名模式为tmtm+1...tn;其中,m>=0,n>=m+2;与该人名相邻的前面一个词和后面一个词分别为wm-1和wn+1,本发明实施例中通过比较两条路径的概率,从而决定是否识别该人名。其中,该两条路径分别是:
路径1(人名路径,PN_PATH)
即P(wm-1至PN)*P(PN至wn+1)*P(wmwm+1...wn|PN)
路径2(非人名路径,NOT_PN_PATH)
即P(wm-1至wm)*P(wm至wm+1)*...P(wn至wn+1)
具体的,路径1是能将wmwm+1...wn识别为人名的路径,其中,第一个概率值是P(wm-1至PN),表示人名的上文到人名的转移概率值,第二个概率值是P(PN至wn+1),表示PN到人名的下文的转移概率值,第三个概率值是(wmwm+1...wn|PN),表示该识别出的人名是wmwm+1...wn的概率值;可以看出,路径1的概率值就是上述三个概率的乘积。
路径2是不能将wmwm+1...wn识别为人名的路径,其中,该路径2的概率值是路径2上相邻词条的转移概率的乘积值。
进一步的,通过比较上述两条路径的概率,从而决定是否识别该人名具体包括:如果路径1的概率值不小于路径2的概率值,则将wmwm+1...wn识别为人名;否则,将wmwm+1...wn识别为人名可能发生误识别,不能将wmwm+1...wn识别为人名,并将wmwm+1...wn对应的角色都标记为人名无关角色,即标记为A角色。
需要说明的是,上述两个路径的计算方式具体为:(1)路径1中的第三个概率值P(wmwm+1...wn|PN),是通过使用角色发射概率来计算的,即P(wmwm+1...wn|PN)=p(tm至wm)*p(tm+1至wm+1)*...*p(tn至wn);(2)路径1中的其他概率值和路径2中的所有概率值都可以从基于类的语言模型中获得。在实际应用中,由于路径1相乘的概率的个数比路径2的个数多1个;即根据实际的需要,还可以在(wmwm+1...wn|PN)前面加一个权重因子w,以使上述两条路径的比较更加准确。其中,上述的两个路径的计算方式均可以采用现有的实施方式进行获取,本发明实施例中不再详加赘述。
另外,由于BCD模式和XD模式下发生误识别的可能性较大,因此,为了更加准确地纠正可能出现的识别错误;对于BCD模式和XD模式,还需要添加第三条比较路径,称为PN_PATH2;该路径为:
路径3(人名路径2,PN_PATH2)
即P(wm-1至PN)*P(PN至wn)*P(wmwm+1...wn-1|PN)*P(wn至wn+1)
具体的,路径3是能将wmwm+1...wn-1识别为人名的路径,其中,路径3的前三个概率值的含义与路径1中的三个概率值类似,在此不再赘述;而第四个概率值P(wn至wn+1)是人名的下文wn到下一个下文wn+1的转移概率值;同样的,该转移概率值也可以从基于类的语言模型中获得,在此不再赘述。
本发明实施例中,如果路径3的概率值大于路径1的概率值和路径2的概率值时,则需要修改wn-1和wn相应的角色,即分别修改为tn-1和tn。其中,当待纠正模式为BCD模式时,则将tn-1修改为角色E,将tn修改为角色A;当待纠正模式为XD模式时,则将tn-1修改为角Y,将tn修改为角色A。
为了更加清楚的说明本步骤,继续以上述的例子进行说明。其中,上述步骤中经过角色标注得到的角色标注序列为:馆/A内/A陈列/A周/B恩/C来/D和/A邓/B颖/C超生/V前/A使用/A过/A的/A物品/A。由于此时使用的是BCD模式,处于待修正的模式范围内,即角色修正模块需要比较三条路径概率值的大小,并得出最终的修正结果。
具体的:路径1:P(陈列至PN)*P(PN至和)*P(周恩来|PN);其中,P(周恩来|PN)=P(周|B)*P(恩|C)*P(来|D)。
路径2:P(陈列至周)*P(周至恩)*P(恩至来)*P(来至和)。
路径3:P(陈列至PN)*P(PN至来)*P(周恩|PN)*P(来至和)。其中,P(周恩|PN)=P(周|B)*P(恩|E)。
综上可以看出,(1)如果路径1的概率值最大,则识别该人名,不需要做任何角色修改;(2)如果路径2的概率值最大,则需要修改待识别人名对应的各字符串的角色为A,即周、恩、来,三个词条对应的角色都修改为人名无关角色A;(3)如果路径3的概率值最大,则需要将恩和来的角色分别修改为角色E和角色A。该计算各个路径概率值和最终的比较过程本步骤中不再详加赘述。
步骤404,通过设定的条件来排除或者修正人名的错误识别。其中,本步骤的执行主体可以为规则检查模块,当然,根据实际的需要,也可以使用其他实体进行处理,在此不再赘述。
具体的,该设定的条件的包括:
(1)在BCD模式中,如果D角色对应的汉字为和,且下面紧邻的字符串被识别为人名,则此处的和是一个连词;即需要将该BCD模式修改为BE模式,将原来的BC部分识别为人名。例如,他看到了郭全和赵涛在打架,可能识别出的人名为:郭全和(BCD模式)、赵涛,通过使用上述的条件,可以纠正误识别郭全和。为郭全,和被看作是一个连词。
(2)满足如下任意一个条件的音译名不予识别。超过16个汉字的音译名(例如,安德鲁杰弗森卡斯特罗比尔盖茨鲍尔默乔布斯布林佩奇,可能识别为一个音译人名,此时需要排除这个人名);识别出的人名中包含3个或以上的连续相同字符(例如,阿阿阿罗),不能识别为一个人名。
(3)在识别出的人名中,如果前面或者后面有“、”(顿号)时,则“、”前后的词如果确定不是人名,那么这个人名就不能识别。其原因是顿号常常是人名的左右边界,顿号分割的词语若是人名,前后应该也有人名出现,否则必须将该人名排除。
步骤405,对角色标注序列中的角色U(人名上文单字和人名首字成词)和V(人名末字和下文单字成词)进行***处理。其中,在上述步骤中已经获得了角色标注序列,本步骤中还需要对角色U和V进行***处理,从而得到更加准确的角色标注序列。其中,本步骤的执行主体可以为角色拆解模块,当然,根据实际的需要,也可以使用其他实体进行处理,在此不再赘述。
需要说明的是,上述步骤403、步骤404和步骤405之间并没有先后的顺序关系,本发明实施例中只是以上述的步骤为例进行说明的。在实际应用中,上述的步骤还可以根据实际的需要进行调整,例如,先执行步骤405中对角色标注序列中的角色U和V进行***处理的步骤,之后,进行步骤403中对角色标注序列中可能产生识别错误的人名识别角色进行检测,并对可能的识别错误及时修正相应的角色的步骤,之后,进行步骤404中通过设定的条件来排除或者修正人名的错误识别的步骤,本发明实施例中不再赘述。
具体的,为了解决人名与对应的上下文间组合成词的问题,需要对角色U和V进行拆解,具体的拆解过程如表4的角色U的拆解方法,和表5所示的角色V的拆解方法;当然,根据实际的需要,还可以对表4和表5中的内容进行调整和修改,在此不再赘述。
表4:角色U的拆解方法
角色U的后一个角色 |
拆解结果 |
C,E,G,Z |
AB |
D |
AC |
I,X2,E2 |
AH |
其他角色 |
AA |
表5:角色V的拆解方法
角色V的前一个角色 |
拆解结果 |
C,X |
DA |
B |
EA |
I,X2 |
TA |
H |
E2A |
其他角色 |
AA |
为了更加清楚的说明本步骤,继续以上述的例子进行说明;在上述角色标注序列:馆/A内/A陈列/A周/B恩/C来/D和/A邓/B颖/C超生/V前/A使用/A过/A的/A物品/A中,需要对角色V进行***拆解,可以看出,角色V的前一个角色为角色C,即对于的拆解结果为DA,可以看出,***后得到的角色标注结果为:馆/A内/A陈列/A周/B恩/C来/D和/A邓/B颖/C超/D生/A前/A使用/A过/A的/A物品/A。
步骤406,根据人名识别模式对***处理后的角色标注序列进行匹配,并输出组成的人名,记录该人名在句子中的位置。其中,本步骤的执行主体可以为模式匹配模块,当然,根据实际的需要,也可以使用其他实体进行处理,在此不再赘述。
具体的,该人名识别模式如表6所示,当然,根据实际的需要,还可以对表6的内容进行调整和修改,在此不再赘述。
表6:人名识别模式集
进一步的,本步骤中,是根据人名识别模式对***处理后的角色标注序列进行模式最大匹配的,即在***处理后的角色标注序列中有人名识别模式集中对应的内容时,根据该人名识别模式集对应的内容,进行模式最大匹配。例如,当角色标注序列中具有中国人名识别模式BCD时,则模式最大匹配的结果为BCD(模式匹配结果可能为BC、CD等),可见,本发明实施例中需要使用模式最大匹配的方法对角色标注序列进行匹配,在此不再赘述。
继续以上述的例子进行说明时,由于***处理后的角色标注序列为:馆/A内/A陈列/A周/B恩/C来/D和/A邓/B颖/C超/D生/A前/A使用/A过/A的/A物品/A,模式最大匹配后,识别出的人名是:周恩来(BCD模式)、邓颖超(BCD模式)。此外,上述的音译人名识别模式[H|X2][I|X2]+[T|X2]是一个正则式的形式,即如果首词角色为H或者角色X2,中间角色中有若干个角色I或者角色X2,末词角色为角色X2或者角色T,则都可以识别为音译人名。
需要说明的是,在本发明实施例中,上述的角色标注模块、角色修正模块、规则检查模块、角色拆解模块、模式匹配模块可以根据实际的需要进一步组合为一个或多个模块,或者进一步拆分为多个子模块。
其中,上述步骤401-步骤406还可以根据实际的需要对先后顺序进行调整,在此不再赘述。
可见,通过使用本发明实施例所提供的方法,充分利用了角色标注模型和基于类的语言模型的优点,能够在保证较高召回率的前提下,较为准确地识别出中国人名和音译人名;而且本发明中所提出的角色并不依赖于上下文角色用字集合,从而使得人名识别***在一定训练数据条件下达到较高的人名识别召回率。此外,本发明还提供了一个非常实用的未登陆词条猜测策略,能够有效猜测大部分未登陆词条的角色,一定程度上解决了未登陆词对人名识别的负面影响。
本发明实施例还提供一种中文人名识别的装置,如图5所示,包括:
获取模块51,用于获取输入序列,并对所述输入序列进行分词。
角色标注模块52,用于对所述获取模块51分词后的输入序列进行角色标注,并获取角色标注序列。
模式匹配模块53,用于根据人名识别模式对所述角色标注模块52获取的角色标注序列进行模式最大匹配,并输出组成的人名。
本发明实施例还提供一种中文人名识别的装置,如图6所示,包括:
获取模块61,用于获取输入序列,并对所述输入序列进行分词。
角色标注模块62,用于对所述获取模块61分词后的输入序列进行角色标注,并获取角色标注序列。
模式匹配模块63,用于根据人名识别模式对所述角色标注模块62获取的角色标注序列进行模式最大匹配,并输出组成的人名。
角色修正模块64,用于检测所述角色标注模块获取的角色标注序列中的人名识别角色,并对出现错误的人名识别角色进行修正。
角色拆解模块65,用于对所述角色标注模块获取的角色标注序列中的角色U和角色V进行***处理。
其中,所述角色拆解模块65具体用于,当所述角色U的后一个角色为C,E,G,或Z时,将所述角色U对应的内容***为角色A和角色B;当所述角色U的后一个角色为D时,将所述角色U对应的内容***为角色A和角色C;当所述角色U的后一个角色为I,X2,或E2时,将所述角色U对应的内容***为角色A和角色H;当所述角色U的后一个角色为其他角色时,将所述角色U对应的内容***为角色A和角色A;
当所述角色V的前一个角色为C或X时,将所述角色V对应的内容***为角色D和角色A;当所述角色V的前一个角色为B时,将所述角色V对应的内容***为角色E和角色A;当所述角色V的前一个角色为I或X2时,将所述角色V对应的内容***为角色T和角色A;当所述角色V的前一个角色为H时,将所述角色V对应的内容***为角色E2和角色A;当所述角色V的前一个角色为其他角色时,将所述角色V对应的内容***为角色A和角色A。
进一步的,所述模式匹配模块63具体用于,根据人名识别模式对经过角色U和角色V***处理后的角色标注序列进行模式最大匹配,并输出组成的人名。当经过角色U和角色V***处理后的角色标注序列中存在人名识别模式BCD,BE,BG,BZ,FB,Y,XD或FE时,模式最大匹配的结果为对应内容是中国人名;当经过角色U和角色V***处理后的角色标注序列中存在人名识别模式HE2,[H|X2][I|X2]+[T|X2],X2T,X2或Y时,模式最大匹配的结果为对应内容是音译人名。
训练模块66,用于在获取输入序列之前,进行模型训练;所述角色标注模块62还用于,根据所述训练模块66的模型训练的结果对分词后的输入序列进行角色标注。
具体的,所述训练模块66具体用于,获取输入语料,并去掉所述输入语料中存在的嵌套标注结构,得到无嵌套的标注语料;去掉所述输入语料中的所有的词性标记,得到正文语料,并对所述正文语料使用分词***进行切分,得到分词后语料;根据角色表对所述分词后语料进行标注,得到角色标注语料,其中,所述角色表中不包含上下文角色信息;并根据所述角色标注语料获取角色转移语料和角色发射语料;根据所述角色转移语料和角色发射语料进行模型训练。
可见,通过使用本发明实施例所提供的装置,充分利用了角色标注模型和基于类的语言模型的优点,能够在保证较高召回率的前提下,较为准确地识别出中国人名和音译人名;而且本发明中所提出的角色并不依赖于上下文角色用字集合,从而使得人名识别***在一定训练数据条件下达到较高的人名识别召回率。此外,本发明还提供了一个非常实用的未登陆词条猜测策略,能够有效猜测大部分未登陆词条的角色,一定程度上解决了未登陆词对人名识别的负面影响。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以集成于一体,也可以分离部署;可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。