具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在网络交易中,具有不良企图的用户往往会注册一个虚假的姓名,例如该用户的注册名为典型的其他语种的姓名或为错误的汉语拼音,但是该用户使用的银行卡或收货地址却是与中国相关的信息。对于该类用户,有理由怀疑该用户的信息存在一定的虚假性,需要提醒其他用户与该用户之间的交易存在一定的风险。因此,如果我们可以对该用户提供的注册名是否属于汉语姓氏进行识别,就能够发现该用户的注册名与其他相关信息之间是否一致。如果识别得到该用户的注册名不属于汉语姓氏,但是该用户的其他信息均与中国相关,那么有理由怀疑该用户使用的是虚假身份信息,需要提醒与之交易的其他用户提高警惕,避免因上当受骗造成个人财产损失。
本申请实施例的方法,提供一种汉语姓氏的识别方法,使用该方法可以对用户提供的以字符串形式表示的姓氏是否属于汉语姓氏进行识别。该方法应用在网络交易领域时,可以对用户提供的注册名中的姓氏是否属于汉语姓氏进行识别,并将识别结果与对该用户的其他注册信息进行比对,如果二者不一致,说明该用户提供的身份信息是虚假的,从而可以提醒与之交易的其他用户需要提高警惕,避免上当受骗。由此可以很好的保护使用网络交易的用户的财产安全,提高网络交易的安全性和可靠性。
参照图1,为本申请的姓氏所属语种的识别模型的建立方法的一个实施例的流程图。如图1所示,所述方法用于服务器,所述方法可以包括以下步骤:
步骤101:建立各语种分别对应的字符串形式的姓氏样本库。
本申请实施例中,针对不同语种,分别建立该语种对应的字符串形式的姓氏样本库。例如,对于英语,建立英语姓氏样本库,该样本库包括几乎所有的英语姓氏,例如Smith、Miller、Johnson、Brown、Williams等;对于德语,建立德语姓氏样本库,该样本库中包括几乎所有的德语姓氏,例如Michael、Judith、Andreas、Peter等;对于阿拉伯语,建立阿拉伯语姓氏样本库,该样本库包括几乎所有的阿拉伯语姓氏,例如Aban、Abbas、Abdud、Adam等;对于其他语种依此类推。
其中,需要说明的是,对于汉语姓氏,需要将其转化为拼音姓氏,并建立汉语姓氏样本库,该样本库中包括几乎所有的汉语姓氏对应的拼音。例如zhang、li、dong、zhou等。
另外需要说明的是,为了确保识别模型的精确度,就需要保证各姓氏样本库的准确性,尽可能的保证各语种分别对应的姓氏样本库的准确度。
在实际应用中,尽可能多的建立世界上各语种对应的姓氏样本库,且每个语种对应的姓氏样本库中包括的姓氏样本也尽可能的全面。由此可以加强对姓氏所属语种进行识别的准确度。
需要说明的是,本申请实施例中,在建立各语种分别对应的字符串形式的姓氏样本库时,如果姓氏样本的字符串长度过短,可能会对后面的识别的准确度造成一定的影响。因此,可以对字符串长度过短的姓氏进行扩展。
一般情况下,可以在姓氏的字符串长度小于等于4时,对该姓氏的字符串长度进行扩展,将其长度扩展为大于等于6。
具体的,本申请实施例中,所述对姓氏的字符串长度进行扩展可以包括:当所述姓氏的字符串长度等于2时,将所述姓氏的字符串复制两遍后接续在所述姓氏末尾的字母后;当所述姓氏的字符串长度等于3或4时,将所述姓氏的字符串复制一遍后接续在所述姓氏末尾的字母后。
在实际应用中,由于汉语姓氏的字符串表达形式即为该姓氏的拼音,而拼音的字符串长度一般都比较短,例如“ge”、“li”或者“han”等。为了保证对姓氏识别的准确度,可以对该类比较短的汉语姓氏进行扩展。
具体的,对于字符串长度为2的汉语姓氏,例如“ge”,可以将其复制两遍后接续在所述姓氏末尾的字母后,扩展为“gegege”;再例如“li”,同样复制两遍后接续在所述姓氏末尾的字母后,扩展为“lilili”。
对于字符串长度为3或4的汉语姓氏,例如“han”,可以将其复制一遍后接续在所述姓氏末尾的字母后,扩展为“hanhan”;再例如“zhao”,同样复制一遍后接续在所述姓氏末尾的字母后,扩展为“zhaozhao。
当然上述扩展方式只是本申请实施例的一种具体的实现方式,在实际应用中,并不局限于此。
步骤102:设定一种字符串的划分方式;该划分方式为将每个姓氏对应的字符串的正数前n1个字母划分为首部分,将每个姓氏对应的字符串的倒数n2个字母划分为尾部分,将每个姓氏对应的字符串的首部分和尾部分之间的部分划分为中间部分。其中,n1和n2均为正整数。
本申请实施例中,设定一种字符串的划分方式,对各语种分别对应的姓氏样本库中的姓氏进行划分,将各样本库中的每个姓氏对应的字符串划分为首部分、尾部分和中间部分。假设n1=2,n2=2,即该划分方式被设定为将每个姓氏对应的字符串的正数前2个字母划分为首字母,将每个姓氏对应的字符串的倒数2个字母划分为尾部分,则每个姓氏对应的字符串的首部分和尾部分之间的部分即为中间部分。
例如,以英语姓氏“Johnson”为例进行说明,则该姓氏的正数前2个字母“jo”为首部分,该姓氏的倒数2个字母“on”为尾部分,该姓氏的首部分和尾部分之间的部分“hns”为中间部分。
再例如,以德语姓氏“Michael”为例进行说明,则该姓氏的正数前2个字母“mi”为首部分,该姓氏的倒数2个字母“el”为尾部分,该姓氏的首部分和尾部分之间的部分“cha”为中间部分。
当然,上述仅是以一种具体划分方式为例进行说明。在实际应用中,对于字符串形式的姓氏的划分方式可以根据实际的需要具体设定。一般该划分方式可以根据姓氏的字符串的长度来具体设定。
需要说明的是,本申请实施例中,一旦确定了划分方式,并依据该划分方式生成了具体的识别模型后,该划分方式就确定了。当使用该识别模型对姓氏所属语种进行识别时,就必须按照生成该识别模型的划分方式对待识别的姓氏进行划分。
假设当前的识别模型采用了如上述示例所述的划分方式,即为字符串的前2个字母划分为首部分,尾部2个字母划分为尾部分,其余部分为中间部分。那么使用该识别模型对姓氏所属语种进行识别时,就必须按照该划分方式对待识别的姓氏进行划分。
需要说明的是,本申请实施例中,n1和n2均为正整数。一般情况下,该n1和n2可以设定为1至4之间的正整数。
步骤103:按照步骤102设定的字符串的划分方式,结合每个语种分别对应的姓氏样本库,对每个语种分别建立识别模型;该识别模型包括首部分生成概率矩阵、尾部分生成概率矩阵、首部分到中间部分的首字母的转移概率矩阵、中间部分尾字母到尾部分的转移概率矩阵以及中间部分相邻字母之间的转移概率矩阵。
其中,该首部分生成概率矩阵为:穷举从26个字母中任选n1个字母构成的字符串,分别计算每个字符串作为该语种的姓氏的首部分的概率,并将所有字符串分别对应的概率构成该首部分生成概率矩阵;该矩阵包括26的n1次方行乘以1列。
例如,假设n1=2,那么穷举任选2个字母构成的字符串,包括aa、ab、ac……zz,共有26的2次方(576)种可能。分别计算每个字符串作为该语种的姓氏的首部分的概率。假设对于英语语种,则分别计算aa作为英语语种的姓氏的首部分的概率Ph,en(“aa”),ab作为英语语种的姓氏的首部分的概率Ph,en(“ab”)……直至,zz作为英语语种的姓氏的首部分的概率Ph,en(“zz”)。并将计算得到的所有字符串分别对应的概率构成首部分生成概率矩阵M(Ph,en),如下式(1)所示:
且需要说明的是,为每一个语种,分别生成一首部分生成概率矩阵;对于不同的语种,分别对应的首部分生成概率矩阵并不相同。例如,对应英语的首部分生成概率矩阵为M(Ph,en),对应德语的首部分生成概率矩阵为M(Ph,de),对应汉语的首部分生成概率矩阵为M(Ph,ch)等等。
该尾部分生成概率矩阵为:穷举从26个字母中任选n2个字母构成的字符串,分别计算每个字符串作为该语种的姓氏的尾部分的概率,并将所有字符串分别对应的概率构成该尾部分生成概率矩阵,该矩阵包括26的n2次方行乘以1列。
例如,假设n2=2,那么穷举任选2个字母构成的字符串,包括aa、ab、ac……zz,共有26的2次方(576)种可能。分别计算每个字符串作为该语种的姓氏的尾部分的概率。假设对于英语语种,则分别计算aa作为英语语种的姓氏的尾部分的概率Pt,en(“aa”),ab作为英语语种的姓氏的尾部分的概率Pt,en(“ab”)……直至,zz作为英语语种的姓氏的尾部分的概率Pt,en(“zz”)。并将计算得到的所有字符串分别对应的概率构成尾部分生成概率矩阵M(Pt,en),如下式(2)所示:
且需要说明的是,为每一个语种,分别生成一尾部分生成概率矩阵;对于不同的语种,分别对应的尾部分生成概率矩阵并不相同。例如,对应英语的尾部分生成概率矩阵为M(Pt,en),对应德语的尾部分生成概率矩阵为M(Pt,de),对应汉语的尾部分生成概率矩阵为M(Pt,ch)等等。
该首部分到中间部分的首字母的转移概率矩阵为:从26个字母中任选n1个字母构成的字符串作为该语种的姓氏的首部分且从26个字母中任选1个字母作为该语种的姓氏的中间部分的首字母,对上述情况进行穷举,且计算得到每种情况在该语种的姓氏中出现的概率,并将所有情况分别对应的概率构成该首部分到中间部分的首字母的转移概率矩阵;该矩阵包括26的n1次方行乘以26列。
例如,假设n1=2,那么穷举任选2个字母构成的字符串,包括aa、ab、ac……zz,共有26的2次方(576)种可能;而任选1个字母作为中间部分的首字母包括26中可能。则穷举上述情况,包括576*26种可能,包括:aa-a、aa-b、aa-c……zz-y、zz-z。假设对于英语语种,分别计算上述每种情况在英语的姓氏中出现的概率,例如,以aa作为首部分、以a作为中间部分的首字母出现的概率(即为“aa”到“a”的转移概率)Phm,en(“a”|“aa”);以aa作为首部分、以b作为中间部分的首字母出现的概率(即为“aa”到“b”的转移概率)Phm,en(“b”|“aa”);……以zz作为首部分、以z作为中间部分的首字母出现的概率(即为“zz”到“z”的转移概率)Phm,en(“z”|“zz”)。并将计算得到的上述所有情况分别对应的概率构成首部分到中间部分的首字母的转移概率矩阵M(Phm,en),如下式(3)所示:
且需要说明的是,为每一个语种,分别生成一首部分到中间部分的首字母的转移概率矩阵;对于不同的语种,分别对应的首部分到中间部分的首字母的转移概率矩阵并不相同。例如,对应英语的首部分到中间部分的首字母的转移概率矩阵为M(Phm,en),对应德语的首部分到中间部分的首字母的转移概率矩阵为M(Phm,de),对应汉语的首部分到中间部分的首字母的转移概率矩阵为M(Phm,ch)等等。
该中间部分尾字母到尾部分的转移概率矩阵为:从26个字母中任选1个字母作为该语种的姓氏的中间部分的尾字母且从26个字母中任选n2个字母构成的字符串作为该语种的姓氏的尾部分,对上述情况进行穷举,且计算得到每种情况在该语种的姓氏中出现的概率,并将所有情况分别对应的概率构成该中间部分尾字母到尾部分的转移概率矩阵;该矩阵包括26行乘以26的n2次方列。
例如,假设n2=2,那么任选1个字母作为中间部分的首字母包括26种可能;穷举任选2个字母构成的字符串,包括aa、ab、ac……zz,共有26的2次方(576)种可能。则穷举上述情况,包括26*576种可能,包括:a-aa、a-ab、a-ac……z-zy、z-zz。假设对于英语语种,分别计算上述每种情况在英语的姓氏中出现的概率,例如,以a作为中间部分的尾字母、以aa作为尾部分出现的概率(即为“a”到“aa”的转移概率)Pmt,en(“aa”|“a”);以a作为中间部分的尾字母、以ab作为尾部分出现的概率(即为“a”到“ab”的转移概率)Pmt,en(“ab”|“a”);……以z作为中间部分的尾字母、以zz作为尾部分出现的概率(即为“z”到“zz”的转移概率)Pmt,en(“zz”|“z”)。并将计算得到的上述所有情况分别对应的概率构成中间部分尾字母到尾部分的转移概率矩阵M(Pmt,en),如下式(4)所示:
且需要说明的是,为每一个语种,分别生成一中间部分尾字母到尾部分的转移概率矩阵;对于不同的语种,分别对应的中间部分尾字母到尾部分的转移概率矩阵并不相同。例如,对应英语的中间部分尾字母到尾部分的转移概率矩阵为M(Pmt,en),对应德语的中间部分尾字母到尾部分的转移概率矩阵为M(Pmt,de),对应汉语的中间部分尾字母到尾部分的转移概率矩阵为M(Pmt,ch)等等。
该中间部分相邻字母之间的转移概率矩阵为:穷举从26个字母中任选2个字母构成的相邻字母,分别计算每对相邻字母出现在该语种的姓氏的中间部分的概率,并将所有相邻字母分别对应的概率构成该中间部分相邻字母之间的转移概率矩阵,该矩阵包括26行乘以26列。
例如,假设n2=2,那么穷举任选2个字母构成的相邻字母,包括a-a、a-b、a-c……z-z,共有26的2次方(576)种可能。分别计算每对相邻字母出现在该语种的姓氏的中间部分的概率。假设对于英语语种,则分别计算:a-a出现在英语姓氏的中间部分的概率Pm,en(“a”|“a”),ab出现在英语姓氏的中间部分的概率Pm,en(“b”|“a”)……z-z出现在英语姓氏的中间部分的概率Pm,en(“z”|“z”)。并将计算得到的所有相邻字母分别对应的概率构成中间部分相邻字母之间的转移概率矩阵M(Pm,en),如下式(5)所示:
至此,就完成了本申请实施例的识别模型的建立过程。本申请实施例中,针对每个语种分别对应的姓氏样本库,分别建立各语种分别对应的识别模型。该识别模型包括各语种分别对应的首部分生成概率矩阵、尾部分生成概率矩阵、首部分到中间部分的首字母的转移概率矩阵、中间部分尾字母到尾部分的转移概率矩阵以及中间部分相邻字母之间的转移概率矩阵。
下面对本申请实施例中,利用该各语种分别对应的识别模型对某个字符串形式的姓氏所属语种进行识别的过程进行详细的介绍。
参照图2,为本申请的汉语姓氏的识别方法的一个实施例的流程图。如图2所示,所述方法用于服务器,所述方法可以包括以下步骤:
步骤201:判断待识别姓氏的字符串长度,当所述姓氏的字符串长度小于等于预设长度时,进入步骤202;当所述姓氏的字符串长度大于预设长度时,进入步骤203。
本申请实施例中,如果待识别姓氏的字符串长度过短,可能会对后面的识别的准确度造成一定的影响。因此,可以对字符串长度过短的姓氏进行扩展。
一般情况下,该预设长度可以设定为4。当然,在实际应用中,所述预设长度的具体取值可以根据实际需要具体设定。
步骤202:对所述待识别姓氏的字符串长度进行扩展。
具体的,对所述姓氏的字符串长度进行扩展可以包括:当所述姓氏的字符串长度等于第一长度时,将所述姓氏的字符串复制两遍并接续在所述姓氏末尾的字母后;当所述姓氏的字符串长度大于所述第一长度小于所述预设长度时,将所述姓氏的字符串复制一遍并接续在所述姓氏末尾的字母后;其中,所述第一长度小于所述预设长度。
一般情况下,可以在姓氏的字符串长度小于等于4时,对该姓氏的字符串长度进行扩展,将其长度扩展为大于等于6。
具体的,本申请实施例中,所述对姓氏的字符串长度进行扩展可以包括:当所述姓氏的字符串长度等于2时,将所述姓氏的字符串复制两遍后接续在所述姓氏末尾的字母后;当所述姓氏的字符串长度大于1小于4时,将所述姓氏的字符串复制一遍后接续在所述姓氏末尾的字母后。
需要说明的是,本申请实施例中,在识别模型建立阶段和对姓氏识别阶段,对姓氏的字符串长度的扩展必须保持一致。即为,只有在识别模型建立阶段对字符串较短的姓氏进行了扩展,则在姓氏识别阶段才会同样的对字符串较短的姓氏进行扩展,且两个阶段采用的扩展方法必须完全相同。由此可能确保利用该识别模型对姓氏所属语种识别的准确度。而如果在识别模型建立阶段没有对字符串较短的姓氏进行扩展,那么同样,在姓氏识别阶段也不会对字符串较短的姓氏进行扩展。
在实际应用中,由于汉语姓氏的字符串表达形式即为该姓氏的拼音,而拼音的字符串长度一般都比较短,例如“ge”、“li”或者“han”等。为了保证对姓氏识别的准确度,可以对该类比较短的汉语姓氏进行扩展。
具体的,对于字符串长度为2的汉语姓氏,例如“ge”,可以将其复制两遍后接续在所述姓氏末尾的字母后,扩展为“gegege”;再例如“li”,同样复制两遍后接续在所述姓氏末尾的字母后,扩展为“lilili”。
对于字符串长度为3或4的汉语姓氏,例如“han”,可以将其复制一遍后接续在所述姓氏末尾的字母后,扩展为“hanhan”;再例如“zhao”,同样复制一遍后接续在所述姓氏末尾的字母后,扩展为“zhaozhao。
步骤203:对待识别姓氏按照预设的划分方式进行划分;该划分方式为将每个姓氏对应的字符串的正数前n1个字母划分为首部分,将每个姓氏对应的字符串的倒数n2个字母划分为尾部分,将每个姓氏对应的字符串的首部分和尾部分之间的部分划分为中间部分。
本申请实施例中,当需要对某个字符串形式的姓氏所属的语种进行识别时,首先需要对该姓氏按照预设的划分方式进行划分。具体的,将该姓氏的字符串按照预设的划分方式划分为首部分、中间部分和尾部分。
需要说明的是,本申请实施例中,一旦确定了划分方式,并依据该划分方式建立了具体的识别模型后,该划分方式就确定了。当使用该识别模型对姓氏所属语种进行识别时,就必须按照建立该识别模型的划分方式对待识别的姓氏进行划分。
假设当前的识别模型采用了如下所述的划分方式,例如字符串的前2个字母划分为首部分,尾部2个字母划分为尾部分,其余部分为中间部分。那么使用该识别模型对姓氏所属语种进行识别时,就必须按照该划分方式对待识别的姓氏进行划分。
例如,以姓氏“Alisayed”为例进行说明。对该姓氏的字符串进行划分,可以将该字符串的前2个字母“al”划分为首部分,将该字符串的尾部两个字母“ed”划分为尾部分,该字符串首部分与尾部分之间的字母“isay”划分为中间部分。
当然,上述仅是以一种具体划分方式为例进行说明。在实际应用中,该预设的划分方式可以根据实际的需要具体设定。一般该划分方式可以根据姓氏的字符串的长度来具体设定。
当然,在实际应用中,有可能出现姓氏的字符串过短的情况,例如对于英文姓氏“Mike”,当对其进行划分时,则设定该姓氏的前2个字母“mi”为首部分,设定该姓氏的尾部分为空,该姓氏的其余部分“ke”为中间部分。
需要进一步说明的是,本申请实施例中,在所述对待识别的字符串形式的姓氏按照预设的划分方式进行划分之前,所述方法还可以包括:去除所述待识别姓氏中包括的非英文字母的字符;将去除非英文字母的字符后的所述姓氏中的所有字母变为小写形式。
步骤204:对于每个语种,利用该语种对应的识别模型,分别得到该待识别姓氏的首部分概率、该待识别姓氏的尾部分概率、该待识别姓氏的首部分到中间部分的首字母的转移概率、该待识别姓氏的中间部分的尾字母到尾部分的转移概率、以及该待识别姓氏的中间部分相邻字母之间的转移概率。
具体的,由前述实施例可知,对于每个语种,分别对应一识别模型,每个语种的识别模型分别包括首部分生成概率矩阵、尾部分生成概率矩阵、首部分到中间部分的首字母的转移概率矩阵、中间部分尾字母到尾部分的转移概率矩阵以及中间部分相邻字母之间的转移概率矩阵。
对于每个语种,分别查找该语种的首部分生成概率矩阵,获取该待识别姓氏的首部分作为该语种的姓氏的首部分的概率。
例如,仍以姓氏“Alisayed”为例进行说明。该姓氏的首部分为“al”。则查找英语的首部分生成概率矩阵,获取“al”作为英语姓氏的首部分的概率Ph,en(“al”);查找德语的首部分生成概率矩阵,获取“al”作为德语姓氏的首部分的概率Ph,de(“al”);查找汉语的首部分生成概率矩阵,获取“al”作为汉语姓氏的首部分的概率Ph,ch(“al”);以此类推,查找得到“al”作为每个语种姓氏的首部分的概率Ph,i(“al”),其中i表示语种类别。
对于每个语种,分别查找该语种的尾部分生成概率矩阵,获取该待识别姓氏的尾部分作为该语种的姓氏的尾部分的概率。
例如,仍以姓氏“Alisayed”为例进行说明。该姓氏的尾部分为“ed”。则查找英语的尾部分生成概率矩阵,获取“al”作为英语姓氏的尾部分的概率Pt,en(“al”);查找德语的尾部分生成概率矩阵,获取“al”作为德语姓氏的尾部分的概率Pt,de(“al”);查找汉语的尾部分生成概率矩阵,获取“al”作为汉语姓氏的尾部分的概率Pt,ch(“al”);以此类推,查找得到“al”作为每个语种姓氏的尾部分的概率Pt,i(“al”),其中i表示语种类别。
对于每个语种,分别查找该语种的首部分到中间部分的首字母的转移概率矩阵,获取该待识别姓氏的首部分到中间部分的首字母的转移概率。
例如,仍以姓氏“Alisayed”为例进行说明。该姓氏的首部分为“al”,中间部分“isay”的首字母为“i”,则查找英语的首部分到中间部分的首字母的转移概率矩阵,获取英语姓氏中以“al”为首部分、以“i”为中间部分的首字母的转移概率Phm,en(“i”|“al”);查找德语的首部分到中间部分的首字母的转移概率矩阵,获取德语姓氏中以“al”为首部分、以“i”为中间部分的首字母的转移概率Phm,de(“i”|“al”);查找汉语的首部分到中间部分的首字母的转移概率矩阵,获取汉语姓氏中以“al”为首部分、以“i”为中间部分的首字母的转移概率Phm,ch(“i”|“al”);以此类推,查找得到每个语种中以“al”为首部分、以“i”为中间部分的首字母的概率Phm,i(“i”|“al”),其中i表示语种类别。
对于每个语种,分别查找该语种的中间部分尾字母到尾部分的转移概率矩阵,获取该待识别姓氏的中间部分尾字母到尾部分的转移概率。
例如,仍以姓氏“Alisayed”为例进行说明。该姓氏的中间部分尾字母为“y”,尾部分为“ed”,则查找英语的中间部分尾字母到尾部分的转移概率矩阵,获取英语姓氏中以“y”为中间部分尾字母、以“ed”为尾部分的转移概率Pmt,en(“ed”|“y”);查找德语的中间部分尾字母到尾部分的转移概率矩阵,获取德语姓氏中以“y”为中间部分尾字母、以“ed”为尾部分的转移概率Pmt,de(“ed”|“y”);查找汉语的中间部分尾字母到尾部分的转移概率矩阵,获取汉语姓氏中以“y”为中间部分尾字母、以“ed”为尾部分的转移概率Pmt,ch(“ed”|“y”);以此类推,查找得到每个语种中以“y”为中间部分尾字母、以“ed”为尾部分的概率Pmt,i(“ed”|“y”),其中i表示语种类别。
对于每个语种,分别查找该语种的中间部分相邻字母之间的转移概率矩阵,获取该待识别姓氏的中间部分包括的各相邻字母之间的转移概率。
例如,仍以姓氏“Alisayed”为例进行说明。该姓氏的中间部分为“isay”,其中包括的相邻字母有i-s、s-a、a-y,则分别查找各语种的中间部分相邻字母之间的转移概率矩阵,获取每对相邻字母之间的转移概率。
对于英语语种,查找英语的中间部分相邻字母之间的转移概率矩阵,得到i-s出现在英语姓氏的中间部分的概率Pm,en(“s”|“i”),s-a出现在英语姓氏的中间部分的概率Pm,en(“a”|“s”),a-y出现在英语姓氏的中间部分的概率Pm,en(“y”|“a”)。对于德语语种,查找德语的中间部分相邻字母之间的转移概率矩阵,得到i-s出现在德语姓氏的中间部分的概率Pm,de(“s”|“i”),s-a出现在德语姓氏的中间部分的概率Pm,de(“a”|“s”),a-y出现在德语姓氏的中间部分的概率Pm,de(“y”|“a”)。以此类推,查找得到每个语种中每对相邻字母之间的转移概率Pm,i(“a”|“s”)、Pm,i(“s”|“i)、Pm,i(“y”|“a)、,其中i表示语种类别。
步骤205:对于每个语种,分别计算得到该待识别姓氏对应该语种的生成概率,该生成概率等于该待识别姓氏的首部分概率、该待识别姓氏的尾部分概率、该待识别姓氏的首部分到中间部分的首字母的转移概率、该待识别姓氏的中间部分的尾字母到尾部分的转移概率和该待识别姓氏的中间部分相邻字母之间的转移概率的乘积。
仍以姓氏“Alisayed”为例进行说明。由步骤202可知:
对于英语语种,该姓氏“Alisayed”的首部分概率为Ph,en(“al”)、该姓氏“Alisayed”的尾部分概率为Pt,en(“al”)、该姓氏“Alisayed”的首部分到中间部分的首字母的转移概率为Phm,en(“i”|“al”)、该姓氏“Alisayed”的中间部分的尾字母到尾部分的转移概率为Pmt,en(“ed”|“y”)、该姓氏“Alisayed”的中间部分相邻字母之间的转移概率分别为Pm,en(“s”|“i”)、Pm,en(“a”|“s”)和Pm,en(“y”|“a”)。
则,该姓氏“Alisayed”对应英语的生成概率Pen(“Alisayed”)为:
Pen(“Alisayed”)=Ph,en(“al”)×Pt,en(“al”)×Phm,en(“i”|“al”)×Pmt,en(“ed”|“y”)×Pm,en(“s”|“i”)×Pm,en(“a”|“s”)×Pm,en(“y”|“a”)
对于德国语种,该姓氏“Alisayed”的首部分概率为Ph,de(“al”)、该姓氏“Alisayed”的尾部分概率为Pt,de(“al”)、该姓氏“Alisayed”的首部分到中间部分的首字母的转移概率为Phm,de(“i”|“al”)、该姓氏“Alisayed”的中间部分的尾字母到尾部分的转移概率为Pmt,de(“ed”|“y”)、该姓氏“Alisayed”的中间部分相邻字母之间的转移概率分别为Pm,de(“s”|“i”)、Pm,de(“a”|“s”)和Pm,de(“y”|“a”)。
则,该姓氏“Alisayed”对应德语的生成概率Pde(“Alisayed”)为:
Pde(“Alisayed”)=Ph,de(“al”)×Pt,de(“al”)×Phm,de(“i”|“al”)×Pmt,de(“ed”|“y”)×Pm,de(“s”|“i”)×Pm,de(“a”|“s”)×Pm,de(“y”|“a”)
以此类推,分别计算得到该待识别姓氏对应每个语种的生成概率Pi(“Alisayed”),i表示语种的种类。
步骤206:比较得到该待识别姓氏对应每个语种的生成概率的最大值,当所述最大值对应的语种为汉语时,确定所述姓氏属于汉语姓氏。
本申请实施例中,通过步骤205可以计算得到该待识别姓氏对应每个语种的生成概率,通过比较得到该生成概率的最大值,确定该最大值对应的语种,即为该待识别姓氏对应该语种的生成概率最大,则可以判定该待识别姓氏属于该语种。
基于此,当该姓氏对应汉语的生成概率最大时,则可以判定该姓氏属于汉语姓氏;否则,则可以认为该姓氏是来自其他语种的姓氏。
以姓氏“hanhan”为例进行说明。由步骤205可以计算得到,该姓氏对应英语的生成概率为Pen(hanhan”),对应德语的生成概率为Pde(“hanhan”),对应汉语的生成概率为Pch(“hanhan”)……对各生成概率进行比较,得到其中的最大值。
假设通过计算和比较,该姓氏“hanhan”对应汉语的生成概率最大,则可以判定该姓氏“hanhan”所属的语种为汉语,即为该“hanhan”是一个汉语的姓。
本申请实施例中,根据各语种分别对应的字符串形式的姓氏样本库,建立各语种分别对应的识别模型,该识别模型包括首部分生成概率矩阵、尾部分生成概率矩阵、首部分到中间部分的首字母的转移概率矩阵、中间部分尾字母到尾部分的转移概率矩阵以及中间部分相邻字母之间的转移概率矩阵。当需要对某个姓氏是否属于汉语姓氏进行识别时,按照预设的划分方式将该姓氏划分为首部分、中间部分和尾部分,并依据各语种分别对应的识别模型,获取得到该待识别姓氏对应每个语种的首部分概率、尾部分概率、首部分到中间部分的首字母的转移概率、中间部分的尾字母到尾部分的转移概率、以及中间部分相邻字母之间的转移概率,并据此计算得到该待识别姓氏对应每个语种的生成概率;比较得到该待识别姓氏对应每个语种的生成概率的最大值,当该最大值对应的语种为汉语时,即可判定得到该待识别姓氏属于汉语姓氏。
使用本申请实施例的方法,可以对用户提供的以字符串形式表示的姓氏是否属于汉语进行识别。该方法应用在网络交易领域时,可以对用户提供的注册名中的姓氏是否属于汉语姓氏进行识别,并将识别结果与该用户注册的其他信息进行比对;如果识别得到该用户的注册名不属于汉语姓氏,但是该用户的其他信息均与中国相关,则有理由怀疑该用户提供的身份信息是虚假的,从而可以提醒与之交易的其他用户提高警惕,避免上当受骗。由此可以很好的保护使用网络交易的用户的财产安全,提高网络交易的安全性和可靠性。
进一步的,本申请实施例的方法,针对汉语姓氏对应的拼音的字符串长度过短的现象,对字符串长度过短的姓氏进行扩展,将其字符串扩展为大于等于6。具体的扩展方法为将该姓氏的字符串复制一遍或两遍后接续在该姓氏原有字符串末尾的字母后,将该姓氏的字符串长度扩展为原有长度的两倍或三倍。通过该扩展方法,可以有效保证利用该识别模型,对姓氏所属语种的识别的准确度。
与本申请的方法实施例相对应,本申请还提供了汉语姓氏的识别装置及服务器的实施例。
本申请的汉语姓氏的识别装置的实施例可以应用在服务器上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请的汉语姓氏的识别装置所在设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,如对于客户端设备来说,可能包括摄像头、触摸屏子、通信组件等,对于服务器,可能包括负责处理报文的转发芯片等等。
参见图4,为本申请的汉语姓氏的识别装置的一个实施例框图,该装置可以应用在服务器上:
该装置可以包括:识别触发单元401和语种识别单元402。其中,
所述识别触发单元401,用于如果待识别姓氏的字符串长度小于等于预设长度,则对所述姓氏的字符串长度进行扩展后,触发所述语种识别单元402;如果待识别姓氏的字符串长度大于预设长度,则直接触发所述语种识别单元402。
所述语种识别单元402包括:第一划分子单元4021、第一概率计算子单元4022、第二概率计算子单元4023和语种确定子单元4024;其中,
所述第一划分子单元4021,用于对所述姓氏按照预设的划分方式进行划分;所述划分方式为将所述姓氏的前n1个字母划分为首部分,将所述姓氏的倒数n2个字母划分为尾部分,将所述姓氏的首部分和尾部分之间的字母划分为中间部分;其中,所述n1和n2为正整数。
所述第一概率计算子单元4022,用于根据每个语种对应的识别模型,分别得到所述姓氏对应各语种的首部分概率、尾部分概率、首部分到中间部分的首字母的转移概率、中间部分的尾字母到尾部分的转移概率、以及中间部分相邻字母之间的转移概率。
所述第二概率计算子单元4023,分别计算所述姓氏对应各语种的首部分概率、尾部分概率、首部分到中间部分的首字母的转移概率、中间部分的尾字母到尾部分的转移概率和中间部分相邻字母之间的转移概率的乘积,得到所述姓氏对应各语种的生成概率。
所述语种确定子单元4024,用于比较得到所述姓氏对应各语种的生成概率的最大值,当所述最大值对应的语种为汉语时,确定所述姓氏属于汉语姓氏。
其中,所述装置还可以包括:识别模型建立单元。
所述识别模型建立单元包括:样本库建立子单元、设定子单元和模型建立子单元。
所述样本库建立子单元,用于建立每个语种分别对应的字符串形式的姓氏样本库。
所述设定子单元,用于设定所述预设的字符串划分方式。
所述模型建立子单元,用于按照所述划分方式,结合每个语种分别对应的姓氏样本库,对每个语种分别建立识别模型;所述识别模型包括首部分生成概率矩阵、尾部分生成概率矩阵、首部分到中间部分的首字母的转移概率矩阵、中间部分尾字母到尾部分的转移概率矩阵以及中间部分相邻字母之间的转移概率矩阵。
其中,所述样本库建立子单元还包括:第一扩展子单元,用于当姓氏样本库中的姓氏的字符串长度小于等于预设长度时,对所述姓氏的字符串长度进行扩展。
其中,所述识别触发单元可以包括:第二扩展子单元和第三扩展子单元。
所述第二扩展子单元,用于当所述姓氏的字符串长度等于第一长度时,将所述姓氏的字符串复制两遍并接续在所述姓氏末尾的字母后。
所述第三扩展子单元,用于当所述姓氏的字符串长度大于所述第一长度小于所述预设长度时,将所述姓氏的字符串复制一遍并接续在所述姓氏末尾的字母后;其中,所述第一长度小于所述预设长度。
其中,所述模型建立子单元包括:第一模型建立子单元,用于穷举从26个字母中任选n1个字母构成的字符串;分别计算每个字符串作为所述语种的姓氏的首部分的概率;将所有字符串分别对应的概率构成所述语种对应的首部分生成概率矩阵。
其中,所述模型建立子单元包括:第二模型建立子单元,用于穷举从26个字母中任选n2个字母构成的字符串;分别计算每个字符串作为所述语种的姓氏的尾部分的概率;将所有字符串分别对应的概率构成所述语种对应的尾部分生成概率矩阵。
其中,所述模型建立子单元包括:第三模型建立子单元,用于从26个字母中任选n1个字母构成的字符串作为姓氏的首部分且从26个字母中任选1个字母作为姓氏的中间部分的首字母;对上述情况进行穷举;计算得到每种情况在所述语种的姓氏中出现的概率;将所有情况分别对应的概率构成所述语种对应的首部分到中间部分的首字母的转移概率矩阵。
其中,所述模型建立子单元包括:第四模型建立子单元,用于从26个字母中任选1个字母作为姓氏的中间部分的尾字母且从26个字母中任选n2个字母构成的字符串作为姓氏的尾部分;对上述情况进行穷举;计算得到每种情况在所述语种的姓氏中出现的概率;将所有情况分别对应的概率构成所述语种的中间部分尾字母到尾部分的转移概率矩阵。
其中,所述模型建立子单元包括:第五模型建立子单元,用于穷举从26个字母中任选2个字母构成的相邻字母;分别计算每对相邻字母出现在所述语种的姓氏的中间部分的概率;将所有相邻字母分别对应的概率构成所述语种对应的中间部分相邻字母之间的转移概率矩阵。
其中,所述语种识别单元还包括:去除子单元,用于去除所述待识别姓氏中包括的非英文字母的字符;转化子单元,用于将去除非英文字母的字符后的所述姓氏中的所有字母变为小写形式。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
应用本申请实施例,能够依据每个语种分别对应的识别模型,对用户提供的以字符串形式表示的姓氏是否属于汉语进行识别。
该方法应用在网络交易领域时,可以对用户提供的注册名中的姓氏是否属于汉语姓氏进行识别,并将识别结果与该用户注册的其他信息进行比对;如果识别得到该用户的注册名不属于汉语姓氏,但是该用户的其他信息均与中国相关,则有理由怀疑该用户提供的身份信息是虚假的,从而可以提醒与之交易的其他用户提高警惕,避免上当受骗。由此可以很好的保护使用网络交易的用户的财产安全,提高网络交易的安全性和可靠性
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。