CN102609510A - 一种中文姓名数据处理方法和装置 - Google Patents
一种中文姓名数据处理方法和装置 Download PDFInfo
- Publication number
- CN102609510A CN102609510A CN2012100253754A CN201210025375A CN102609510A CN 102609510 A CN102609510 A CN 102609510A CN 2012100253754 A CN2012100253754 A CN 2012100253754A CN 201210025375 A CN201210025375 A CN 201210025375A CN 102609510 A CN102609510 A CN 102609510A
- Authority
- CN
- China
- Prior art keywords
- chinese character
- code
- character
- code table
- chinese
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
Abstract
本发明涉及数据处理技术领域,特别是一种中文姓名数据处理方法,所述方法包括:建立中文码表,所述码表至少包括与姓氏汉字对应的第一类码表以及与名汉字对应的第二类码表;其中,所述第一类码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系;所述第二类码表中存储有名汉字数据的码值以及码值与名汉字数据的对应关系;获取待处理中文姓名数据的每个汉字的码值;根据获取的每个汉字的码值,获取每个汉字的码值在对应的码表中的位置信息,计算每个汉字的偏移值,根据所述位置信息和所述偏移值对待处理汉字分别进行处理。本发明提供的方法实现简单、计算复杂度低,且保证了处理结果的真实性、有效性、稳定性和多样性。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种中文姓名数据处理方法和装置。
背景技术
在进行系统测试过程中,往往需要用到测试数据。由于金融、证券行业的特殊性,在进行大规模的系统测试时所使用的数据往往是实际的真实数据。而金融、证券系统的数据中存在着大量的敏感数据,例如客户姓名、联系方式、账号等信息。一旦这些敏感信息发生泄露,可能会带来极大的风险。因此,在进行系统测试前,往往需要通过一些技术手段对这些敏感数据进行处理。在这些敏感数据中,客户姓名是最难于处理的一类数据,其主要原因为:一方面,客户的数据量较大,处理方法需满足高效性的需求,使得时间和空间开销尽可能小;另一方面,处理方法需满足有效性的需求,使得处理后的数据能够防止使用者通过反推的方式获取原始敏感数据;再一方面,处理方法需满足真实性需求,尽可能地保留中文姓名的语言特征和统计分布特征。
在现有技术中,存在两种对中文姓名数据进行处理的方法。一种方法是直接将所有中文姓名数据替换为固定的中文姓名,例如将全部中文姓名数据替换为“张三”。这种方法处理结果单一,无法满足真实性的需求,使得处理结果完全丧失了中文统计分布特征。另外一种方法是将原姓名数据每个中文汉字随机替换成另外一个中文汉字,得到处理后的数据。这种方法得到的转换结果是随机的,无法满足真实性的需求,处理结果完全不符合中文姓名特征。
发明内容
为解决上述技术问题,本发明实施例提供了一种中文姓名数据处理方法和装置,可以有效的处理中文姓名数据,且处理结果符合中文姓名特征,满足了真实性的需求。
一方面,本发明实施例提供了一种中文姓名数据处理方法,所述方法包括:
建立中文码表,所述码表至少包括与姓氏汉字对应的第一类码表以及与名汉字对应的第二类码表;其中,所述第一类码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系;所述第二类码表中存储有名汉字数据的码值以及码值与名汉字数据的对应关系;
获取待处理中文姓名数据的每个汉字的码值;
根据获取的每个汉字的码值,分别在对应的中文码表中进行查找,获取每个汉字的码值在对应的码表中的位置信息,计算每个汉字的偏移值,根据所述位置信息和所述偏移值对待处理汉字分别进行处理。
优选的,所述获取待处理中文姓名数据的每个汉字的码值为:
将每个汉字的低字节值左移8位的结果与高字节值之和作为每个汉字的码值。
优选的,所述根据获取的每个汉字的码值,分别在对应的中文码表中进行查找,获取每个汉字的码值在对应的码表中的位置信息,计算每个汉字的偏移值,根据所述位置信息和所述偏移值对待处理汉字分别进行处理包括:
根据所述待处理中文姓名数据的姓氏汉字的码值,在第一码表中进行查找,获取与所述姓氏汉字对应的位置信息,计算第一偏移值,根据所述位置信息和第一偏移值对姓氏汉字进行处理;其中,所述第一码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系;
判断所述待处理中文姓名数据是否是单名;
如果是单名,根据所述待处理中文姓名数据的单名汉字的码值,在第二码表中进行查找,获取与所述单名汉字对应的位置信息,计算第二偏移值,根据所述位置信息和所述第二偏移值对所述单名汉字进行处理;其中,所述第二码表存储有单名汉字数据的码值;
如果是复名,根据所述待处理姓名数据的复名汉字的码值在第三码表中进行查找,获取与所述复名汉字对应的位置信息,计算第三偏移值,根据所述位置信息以及第三偏移值对复名汉字进行处理;其中,所述第三码表存储有复名汉字数据的码值。
优选的,所述方法还包括:
当所述第二码表不存在所述单名汉字时或所述第三码表中不存在所述复名汉字时,获取第四偏移值,根据所述第四偏移值获取第四码表中对应的汉字,对单名汉字或复名汉字进行处理。
优选的,所述偏移值通过以下方式获取:
获取所述待处理中文姓名数据汉字的码值之和S;
从预设的参数集中选择偏移参数Pi;
根据以下公式获取偏移值Oi:
Oi=S mod Pi+1
其中,mod为取余函数。
优选的,所述根据所述位置信息和所述偏移值对待处理汉字分别进行处理为:
根据获取的待处理汉字在相应码表中的位置,将获取的位置向下偏移与所述偏移值对应的长度,得到新码值,获取与新码值对应的汉字作为处理结果。
优选的,所述建立中文码表为:
建立与姓氏汉字对应的第一码表、与单名汉字对应的第二码表、与复名汉字对应的第三码表,将所述第一码表、第二码表和第三码表中的汉字数据的码值从小到大排列。
优选的,所述方法还包括:
将所述第一码表、第二码表和第三码表中的汉字码值按照与其对应的汉字数据出现的频率划分成多个分段,将处于同一分段的汉字码值使用指针形成环路。
优选的,所述偏移参数的取值范围为大于1小于N的任意整数,其中N为码表中最小分段中的汉字码值的个数。
优选的,所述根据所述位置信息和所述偏移值对待处理汉字分别进行处理包括:
根据获取的待处理汉字在相应码表中对应的位置信息,将指针向下偏移与偏移值对应的长度得到新码值,将偏移后的指针指向的汉字码值对应的汉字作为处理结果。
优选的,所述分别在对应的中文码表中进行查找为:
采用二分方法分别在对应的中文码表中进行查找。
另一方面,本发明实施例提供了一种中文姓名数据处理装置,所述装置包括:
码表建立模块,用于建立中文码表,所述码表至少包括与姓氏汉字对应的第一类码表以及与名汉字对应的第二类码表;其中,所述第一类码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系;所述第二类码表中存储有名汉字数据的码值以及码值与名汉字数据的对应关系;
码值获取模块,用于获取待处理中文姓名数据的每个汉字的码值;
处理模块,用于根据获取的每个汉字的码值,分别在对应的中文码表中进行查找,获取每个汉字的码值在对应的码表中的位置信息,计算每个汉字的偏移值,根据所述位置信息和所述偏移值对待处理汉字分别进行处理。
优选的,所述处理模块包括:
第一处理单元,用于根据所述待处理中文姓名数据的姓氏汉字的码值,在第一码表中进行查找,获取与所述姓氏汉字对应的位置信息以及第一偏移值,根据所述位置信息和第一偏移值对姓氏汉字进行处理;其中,所述第一码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系;
第一判断单元,用于判断所述待处理中文姓名数据是否是单名;
第二处理单元,用于如果是单名,根据所述待处理中文姓名数据的单名汉字的码值,在第二码表中进行查找,获取与所述单名汉字对应的位置信息,计算第二偏移值,根据所述位置信息和所述第二偏移值对所述单名汉字进行处理;
第三处理单元,用于如果是复名,根据所述待处理姓名数据的复名汉字的码值在第三码表中进行查找,获取与所述复名汉字对应的位置信息,计算第三偏移值,根据所述位置信息以及第三偏移值对复名汉字进行处理。
优选的,所述装置还包括:
第四处理单元,用于当所述第二码表不存在与所述单名汉字对应的码值时或所述第三码表中不存在与所述复名汉字对应的码值时,获取第四偏移值,根据所述第四偏移值获取第四码表中对应的汉字,对单名汉字或复名汉字进行处理。
优选的,所述码表建立单元还用于将第一码表、第二码表和第三码表中的汉字码值按照与其对应的汉字数据出现的频率划分成多个分段,将处于同一分段的汉字码值使用指针形成环路;其中,所述第一码表属于第一类码表,所述第二码表、第三码表属于第二类码表。
本发明实施例能够达到的有益效果为:本发明实施例提供的方法通过建立与姓氏汉字数据对应的第一类码表,建立与名汉字数据对应的第二类码表,在处理中文姓名数据时,获取待处理中文姓名数据的各汉字的码值,根据姓氏汉字的码值在与姓氏汉字对应的第一类码表中进行查找,获取所述姓氏汉字的位置信息,进而获取偏移值信息,并根据偏移值信息和位置信息对姓氏汉字进行处理。同样地,根据名汉字的码值在与名汉字对应的第二类码表中进行查找,获取所述名汉字的位置信息,进而获取偏移值信息,并根据偏移值信息和位置信息对姓名汉字进行处理。由于在本发明中,第一类码表中存储有500多个姓氏汉字,因此根据计算的偏移值信息进行处理时,得到的转换结果仍是中文姓氏;而在与名汉字对应的第二类码表中存储有常用的名汉字数据,因此得到的转换结果仍是中文名字。最后获取的结果符合中文姓名的特征,符合真实性的需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的中文姓名数据处理方法第一实施例流程图;
图2为本发明实施例提供码表数据第一存放方式示意图;
图3为本发明实施例提供的中文姓名数据处理第二实施例流程图;
图4为本发明实施例提供码表数据第二存放方式示意图;
图5为本发明实施例提供的中文姓名数据处理设备示意图。
具体实施方式
在现有技术中,是将原姓名数据每个中文汉字随机替换成另外一个中文汉字,得到处理后的数据。这种方法得到的转换结果是随机的,无法满足真实性的需求,处理结果完全不符合中文姓名特征。例如,对于中文姓名数据“张磊”,获取各汉字的码值。假设在一种编码方式中“张”的码值是5337,并将其随机加上一个偏移量量10,得到一个新码值5347,由此获取的替换结果为“障”;对于名汉字“磊”其码值是3258,加上一个偏移量10获取的新码值是3268,与其对应的汉字是“冷”。按照现有技术的方法,将中文姓名数据“张磊”处理为“障冷”,处理后的结果完全不符合中文姓名特征,不满足真实性的需求。
而本发明实施例正是为了解决上述技术问题,提供了一种中文姓名数据处理方法和装置,可以有效的处理中文姓名数据,且处理结果满足了真实性的需求。
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
参见图1,为本发明提供的中文姓名数据处理方法第一实施例流程图,所述方法包括:
S100,建立中文码表,所述码表至少包括与姓氏汉字对应的第一类码表以及与名汉字对应的第二类码表。
其中,所述第一类码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系;所述第二类码表中存储有名汉字数据的码值以及码值与名汉字数据的对应关系。
S101,获取待处理中文姓名数据的每个汉字的码值。
在本发明实施例中,汉字码值的计算方法为每个汉字的低字节左移8位,再加上高字节的值。即按照以下公式进行计算:
汉字码值=低字节值<<8+高字节值 (1)
例如,对于汉字“夏”来说,其由两个字节表示,其中高字节值用十六进制表示为58,低字节值用十六进制表示为64。将其高字节值和低字节值分别转换为十进制表示,分别是88和100。由于偏移八位相当于乘以2的8次方,因此汉字“夏”的码值M为:
M=100*28+88=25688
这样,获取中文姓名数据每一个汉字对应的码值。由于汉字一般是先对常用字按拼音升序进行编码,然后对非常见汉字进行编码。而在非常见汉字中,有一些是常用姓,例如佟、孟等;有一些则是常用名,例如筠、芸等。这些非常用汉字低字节变化较大,为了使得码值更加均匀,在本发明实施例中,对低字节进行左移8位处理。当然,也可以偏移其他位数,只要能使码值分布均匀即可。
S102,根据获取的每个汉字的码值,分别在对应的中文码表中进行查找,获取每个汉字的码值在对应的码表中的位置信息,计算每个汉字的偏移值,根据所述位置信息和所述偏移值对待处理汉字分别进行处理。
具体的,步骤S102通过步骤S102A和S102B实现:
S102A,根据所述待处理中文姓名数据的姓氏汉字的码值,在第一类码表中进行查找,获取与所述姓氏汉字对应的位置信息以及相应的偏移值,根据所述位置信息和所述偏移值对待处理汉字进行处理;其中,所述第一类码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系。
具体的,步骤S102A具体包括:
S102A1,根据所述待处理中文姓名数据的姓氏汉字的码值,在第一类码表中进行查找,获取与所述姓氏汉字对应的位置信息。
在本发明实施例中,建立了第一类码表,其中第一类码表用于存放常用的中文姓氏的码值。第一类码表获取的汉字数据是根据经验学习得到的数据,覆盖了绝大部分的中文姓氏。参见图2,本发明实施例码表数据第一存放方式示意图。在图2中,各个姓氏数据的码值按照从小到大的顺序排列,为了方便二分查找。
根据获取的姓氏汉字的码值,在第一类码表中进行查找,判断所述第一类码表中是否存在与所述姓氏汉字对应的码值。具体的,进行查找时,采用的是二分查找的方法。具体的,由于第一类码表中的数据的码值是按照从小到大的顺序升序排列的,可以将第一类码表的数据分成两部分,将码表中间记录的码值与查找的码值进行比较,如果二者相等,则查找成功;否则,利用中间记录的码值将码表分成前后两个子表,如果中间位置记录的码值大于查找的码值,则在前一子表中进行查找,同时获取前一子表的中间位置的码值,与查找的码值进行比较;如果中间位置记录的码值小于查找的码值,则在后一子表中进行查找,同时获取后一子表中间位置的码值,与查找的码值进行比较。如此循环比较,直到找到查找的码值。
如果在第一类码表中存在与姓氏汉字对应的码值,则获取所述姓氏汉字在第一类码表中的位置信息。如果在第一类码表中未查找到与姓氏汉字对应的码值,则保留原姓氏数据不做处理。这时因为这样的姓氏为小众的姓氏,可能成为关键的边界测试数据,因此保留此姓氏数据。
S102A2,获取相应的偏移值。
步骤S102A2具体通过以下步骤实现:
(1)获取所述待处理中文姓名数据汉字的码值之和S。
(2)从预设的参数集中选择偏移参数Pi。
在本发明实施例中,可以由用户提供参数集P,用于提供不同的偏移参数Pi。针对不同的系统,其参数集可以不一样,这样可以保证处理结果的多样性,使得多个系统间的处理结果不一致。用户可以通过提供不同参数集的方式来获取不同的处理结果。
(3)根据以下公式获取偏移值O1:
O1=S mod P1+1 (2)
其中,mod为取余函数。其中,P1为从参数集P中选择的偏移参数,Pi可以是大于1的任意整数。举例进行说明,假设待处理的中文姓名数据为“夏曾”,其中姓氏汉字为“夏”,获取“夏”的码值为25688,“曾”的码值为63322,那么获取的码值之和S2为89010。假设偏移参数P1的值为2,由此获得的偏移值O1为:
O1=(89010 mod 2)+1=1
S102A3,根据所述位置信息和所述偏移值对待处理姓氏汉字进行处理。
具体的,步骤S102A3可以这样实现:根据获取的待处理姓氏汉字在第一码表中的位置,将获取的位置向下偏移与所述偏移值对应的长度得到新码值,获取与新码值对应的汉字作为处理结果。
以图2所示的第一类码表为例进行说明,在码表中获取“夏”对应的位置,将所述位置向下偏移1次,得到新码值25947,获取与码值2947对应的汉字为“张”。
当选择的偏移参数P1的值为4时,由此获取的偏移值为:
O1=(89010 mod 4)+1=3
那么,这时对夏进行处理得到的结果为,将得到的位置向下偏移3次,得到新码值36697,获取与码值36697对应的汉字为“杨”,这样就可以将“夏”替换为“杨”。由此可见,从偏移参数集获取的偏移参数不同,或者选择不同的偏移参数集,就会得到不同的处理结果,保证了数据的多样性。
由于本发明实施例中,是根据中文姓名各汉字的码值之和来获取偏移值的,从而保证了获取的处理结果的有效性。比如,具有相同姓的两个中文姓名会因为名字的不同获取了不同的偏移值,从而在后续的处理中被置换成不同的姓,从而防止了使用者通过自己的姓名进行反推处理方法获取原始数据,保证了数据处理的有效性。
S102B,根据所述待处理中文姓名数据的名汉字的码值,在与名汉字对应的第二类码表中进行查找,获取与名汉字对应的位置信息以及偏移值信息,根据所述位置信息和偏移值对待处理汉字进行处理;其中,所述与名汉字对应的码表存储有名汉字数据的码值以及码值与名汉字数据的对应关系。
具体的,步骤S102B具体包括:
S102B1,根据所述待处理中文姓名数据的名汉字的码值,在与名汉字对应的码表中进行查找,获取与所述名汉字对应的位置信息。
在本发明实施例中,建立了与名汉字对应的第二类码表。具体的,所述码表可以存储有常用的中文名汉字的码值。所述码表中获取的名汉字数据是根据经验学习得到的数据,覆盖了绝大部分的中文名(不包括姓氏数据)。优选的,各个名汉字的码值按照从小到大的顺序排列。在本发明的这一实施例中,存放常用名汉字的码表是一个。在本发明的第二实施例中,对单名和复名进行了区分,使用第二码表存放单名汉字数据的码值,使用第三码表存放复名汉字数据的码值,使得由此得到的处理结果更加真实、有效,符合中文统计特征。
根据获取的名汉字的码值,在与名汉字对应的码表中进行查找,判断所述第一码表中是否存在与所述姓氏汉字对应的码值。具体的,进行查找时,采用的是二分查找的方法。查找的方法与查找姓氏汉字的码值相同。如果存在,则获取所述名汉字在相应码表中的位置信息。
S102B2,获取相应的偏移值。
步骤S102B2具体通过以下步骤实现:
(1)获取所述待处理中文姓名数据汉字的码值之和S。
(2)从预设的参数集中选择偏移参数P2。
在本发明实施例中,可以由用户提供参数集P,用于提供不同的偏移参数P2。针对不同的系统,其参数集可以不一样,这样可以保证处理结果的多样性,使得多个系统间的处理结果不一致。用户可以通过提供不同参数集的方式来获取不同的处理结果。
(3)根据以下公式获取偏移值O2:
O2=S mod P2+1 (3)
其中,mod为取余函数。其中,P2为从参数集P中选择的偏移参数,P2可以是大于1的任意整数。
S102B3,根据所述位置信息和所述偏移值对待处理汉字进行处理。
具体的,步骤S102B3可以这样实现:根据获取的待处理汉字在第二类码表中的位置,将获取的位置向下偏移与所述偏移值对应的长度得到新码值,获取与新码值对应的汉字作为处理结果。这里,待处理的汉字即为名汉字数据。
由于本发明实施例中,通过分别建立与姓氏汉字对应的码表以及与名汉字对应的码表,并通过获取姓氏汉字以及名汉字的偏移信息,在与姓氏汉字对应的码表中根据偏移值对姓氏汉字进行替换处理,从而获取处理后的结果,处理后的数据也是姓氏汉字;相应地,对名汉字处理得到的结果也是名汉字,从而符合中文姓名语言特征,满足了真实性的需求。
另一方面,本发明实施例提供的方法是根据中文姓名各汉字的码值之和来获取偏移值的,从而保证了获取的处理结果的有效性。比如,具有相同姓的两个中文姓名会因为名字的不同获取了不同的偏移值,从而在后续的处理中被置换成不同的姓,从而防止了使用者通过自己的姓名进行反推处理方法获取原始数据,保证了数据处理的有效性。
再一方面,在本发明提供的实施例中,码表中存放的汉字码值是有序排列的,在进行查找时,采用的是二分查找方法,最多比较log2(N)次,N为码表汉字个数。因此推算第二步至多比较次数为9次,第三步至多比较次数为10次,方法的时间开销较小,满足了高效性的需求。
参见图3,为本发明实施例提供的中文姓名数据处理方法第二实施例流程图。
S301,建立第一码表、第二码表、第三码表、第四码表。
所述第一码表与姓氏汉字相对应,存放了常用的姓氏汉字的码值;第二码表与单名汉字相对应,存放了常用的单名汉字的码值;第三码表与常用的复名汉字相对应,存放了常见的复名汉字的码值;第四码表中存放了GB2312标准常用汉字没有在第一码表、第二码表第三码表中出现的汉字的码值。将所述第一码表、第二码表和第三码表中的汉字数据的码值从小到大排列。将码表中的汉字码值按照下表所示的结构存储:
表1
汉字码值 | 指针 |
S302,将所述第一码表、第二码表和第三码表中的汉字码值按照与其对应的汉字数据出现的频率划分成多个分段,将处于同一分段的汉字码值使用指针形成环路。
将第一码表、第二码表和第三码表中的汉字码值划分为多个分段,具体可以按照汉字数据出现的频率从高到低划分成多个分段。每个分段的汉字码值个数可以是相同的,也可以是不同的。当每个分段的汉字码值个数不同时,先将汉字码值按照其对应的汉字的出现频率从高到低进行排列,将具有相似频率的汉字对应的码值划分为同一个分段。举例进行说明,假设第一码表中存放有500个姓氏汉字,可以将其按照出现频率高低划分为5个分段:前15位为第一分段,第16-60位为第二分段,第61-150为第三分段,第151-300为第四分段,剩下的为第五分段。码表中处于同一个分段中的汉字用指针串成环路。下面以两个分段来示例,如图4所示。(其中汉字码值为Z/OS中的EBCDIC码按共式1方法计算得到)。在图4中,箭头代表指针指向,实线标识的指针以及虚线标识的指针分别形成了环路。其中,实线标识的指针环路代表第一分段有五个汉字张、杨、王、周、吴形成了链路,他们都属于频度较高的分段;虚线标识的指针环路代表第二分段有五个汉字形成链路:夏、于姚、武、曾,他们都属于频度较低的分段。
按上述方式将第一、第二、第三、第四码表建立好后,实际是将姓氏,单名,复名和其他汉字分别按码值排序存放,同时通过指针环路将姓氏,单名和复名汉字按类似频度进行了分段处理。这样,在后续对中文姓名数据处理时,例如对姓氏汉字进行处理时,由于按照出现频率进行了分段处理并形成了指针,较高频率的姓氏汉字对应的的处理结果与其处于同一分段,因此出现频率也较高,不仅保留了中文姓名的语言特征,还保留了中文姓名的统计分布特征,获取了更为真实、有效的数据。
S303,将第一码表、第二码表、第三码表、第四码表加载至内存中。
本发明实施例中的码表均存放的是汉字码值和指针,加载到内存中所占空间非常小,节省了很大的空间开销。
S304,获取待处理中文姓名数据的每个汉字的码值。
假设待处理的中文姓名为夏曾,获取“夏”的码值是25688,曾的码值是63322。
S305,根据所述待处理中文姓名数据的姓氏汉字的码值,在第一码表中进行二分查找。如果找到,获取与所述姓氏汉字对应的位置信息以及相应的偏移值,根据所述位置信息和所述偏移值对待处理汉字进行处理。
具体的,步骤S305具体包括:
S305A,根据所述待处理中文姓名数据的姓氏汉字的码值,在第一码表中进行查找,获取与所述姓氏汉字对应的位置信息。
如果在第一码表中未找到与待处理姓氏汉字对应的码值,则保留原姓氏汉字。
S305B,获取相应的偏移值。
步骤S305B具体通过以下步骤实现:
305B1,获取所述待处理中文姓名数据汉字的码值之和S。
305B2,从预设的参数集中选择偏移参数Pi。
在本发明实施例中,可以由用户提供参数集P,用于提供不同的偏移参数Pi。优选的,所述偏移参数的取值范围为大于1小于N的任意整数,其中N为码表中最小分段中的汉字码值的个数。
305B3,根据以下公式获取偏移值O1:
O1=S mod P1+1 (4)
其中,mod为取余函数。假设待处理的中文姓名数据为“夏曾”,其中姓氏汉字为“夏”,获取“夏”的码值为25688,“曾”的码值为63322,那么获取的码值之和S2为89010。假设偏移参数P1的值为2,由此获得的偏移值O1为:
O1=(89010 mod 2)+1=1
S305C,根据所述位置信息和所述偏移值对待处理汉字进行处理。
具体的,步骤S305C可以这样实现:根据获取的待处理汉字在相应码表中对应的位置信息,将指针向下偏移与偏移值对应的长度得到新码值,将偏移后的指针指向的汉字码值对应的汉字作为处理结果。
以图4所示的第一码表为例进行说明,在码表中获取“夏”对应的指针位置,将指针位置向下偏移1次,得到新码值31322,获取与码值31322对应的汉字为“于”。姓氏汉字“夏”与“于”均处于频率较高的分段,且均为常用的姓氏汉字。
由于在本发明提供的实施例中,与第一实施例不同的在存放码表中的码值时,是将其按照从小到大的顺序有序排列,并根据码值对应的汉字出现的频率从高到低进行分段处理,因此根据偏移值进行处理时,获取的处理结果与待处理的汉字处于同一分段,保持了其出现频率的特征,更加符合中文统计特征,使得处理结果更为真实有效。
如果在第一码表中未查找到与姓氏汉字对应的码值,则保留原姓氏数据不做处理。这时因为这样的姓氏为小众的姓氏,可能成为关键的边界测试数据,因此保留此姓氏数据。
S306,判断所述待处理中文姓名数据是否是单名。如果是单名,进入步骤S307;如果是复名,进入步骤S309。
S307,根据所述待处理中文姓名数据的单名汉字的码值,在第二码表中进行查找,判断是否第二码表中是否有与所述单名汉字对应的码值,如果有,进入步骤S308。如果未找到,进入步骤S311。
S308,获取与所述单名汉字对应的位置信息,计算第二偏移值,根据所述位置信息和所述第二偏移值对所述单名汉字进行处理。
首先在第二码表中进行二分查找,如果找到,获取第二偏移值:
O2=S mod P2+1 (5)
其中,偏移参数P2的取值范围为大于1小于N2的任意整数,其中N2为第二码表中最小分段中的汉字码值的个数。如果在第二码表中未找到相应的码值,进入步骤S309。
S309,根据所述待处理姓名数据的复名汉字的码值在第三码表中进行查找,判断是否第三码表中是否有与所述复名汉字对应的码值,如果有,进入S310;如果无,进入S311。
S310,获取与所述复名汉字对应的位置信息,计算第三偏移值,根据所述位置信息以及第三偏移值对复名汉字进行处理;如果未找到,进入步骤S311。
首先在第三码表中进行二分查找,如果找到,获取第三偏移值:
O3=S mod P3+1 (6)
其中,偏移参数P3的取值范围为大于1小于N3的任意整数,其中N3为第三码表中最小分段中的汉字码值的个数。如果在第三码表中未找到相应的码值,进入步骤S311。
S311,当所述第二码表不存在所述单名汉字时或所述第三码表中不存在所述复名汉字时,获取第四偏移值,根据所述第四偏移值获取第四码表中对应的汉字,对单名汉字或复名汉字进行处理。
如果在第二码表和第三码表中没有找到与名汉字对应的码值,说明原数据的名汉字在真实的中文姓名中很少被用到,直接通过获取的第四偏移值在第四码表中进行替换处理即可。其中,第四偏移值通过以下方式得到:
O4=S mod P4+1 (7)
其中,P4为第四码表中汉字的个数。通过获取的第四偏移值,在第四码表中获取第O4位置上的码值,获取对应的汉字作为处理后的结果。
S310,将对姓氏汉字、名汉字进行处理后的结果组成中文姓名。
在本发明第二实施例中,在存放码表中的码值时,是将其按照从小到大的顺序有序排列,并根据码值对应的汉字出现的频率从高到低进行分段处理,因此根据偏移值进行处理时,获取的处理结果与待处理的汉字处于同一分段,保持了其出现频率的特征,更加符合中文统计特征,使得处理结果更为真实有效。另一方面,在本发明第二实施例中,通过设置与单名汉字数据对应的第二码表、与复名汉字数据对应的第三码表,并通过判断单名、复名进行相应处理,使得处理结果不但完全符合中文姓名的语言特征,而且保留了中文姓名的统计分布特征。再一方面,本发明可以通过变换不同的码表以及偏移参数集来产生不同的处理结果,保证了处理结果的多样性。
参见图5,为本发明中文姓名数据处理装置示意图。所述装置包括:
码表建立模块501,用于建立中文码表,所述码表至少包括与姓氏汉字对应的第一类码表以及与名汉字对应的第二类码表;其中,所述第一类码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系;所述第二类码表中存储有名汉字数据的码值以及码值与名汉字数据的对应关系。
码值获取单元502,用于获取待处理中文姓名数据的每个汉字的码值。
处理模块503,用于根据获取的每个汉字的码值,分别在对应的中文码表中进行查找,获取每个汉字的码值在对应的码表中的位置信息,计算每个汉字的偏移值,根据所述位置信息和所述偏移值对待处理汉字分别进行处理。
优选的,码表建立模块还用于建立与姓氏汉字对应的第一码表、与单名汉字对应的第二码表、与复名汉字对应的第三码表,将所述第一码表、第二码表和第三码表中的汉字数据的码值从小到大排列。
优选的,所述码表建立模块还用于将所述第一码表、第二码表和第三码表中的汉字码值按照与其对应的汉字数据出现的频率划分成多个分段,将处于同一分段的汉字码值使用指针形成环路。
具体的,所述处理模块包括:
第一处理单元,用于根据所述待处理中文姓名数据的姓氏汉字的码值,在第一码表中进行查找,获取与所述姓氏汉字对应的位置信息以及第一偏移值,根据所述位置信息和所述偏移值对待处理汉字进行处理;其中,所述第一码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系。
第一判断单元,用于判断所述待处理中文姓名数据是否是单名;
第二处理单元,用于如果是单名,根据所述待处理中文姓名数据的单名汉字的码值,在第二码表中进行查找,获取与所述单名汉字对应的位置信息,计算第二偏移值,根据所述位置信息和所述第二偏移值对所述单名汉字进行处理;
第三处理单元,用于如果是复名,根据所述待处理姓名数据的复名汉字的码值在第三码表中进行查找,获取与所述复名汉字对应的位置信息,计算第三偏移值,根据所述位置信息以及第三偏移值对复名汉字进行处理。
优选的,所述装置还包括:
第四理单元,用于当所述第二码表不存在与所述单名汉字对应的码值时或所述第三码表中不存在与所述复名汉字对应的码值时,获取第四偏移值,根据所述第四偏移值获取第四码表中对应的汉字,对单名汉字或复名汉字进行处理。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (15)
1.一种中文姓名数据处理方法,其特征在于,所述方法包括:
建立中文码表,所述码表至少包括与姓氏汉字对应的第一类码表以及与名汉字对应的第二类码表;其中,所述第一类码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系;所述第二类码表中存储有名汉字数据的码值以及码值与名汉字数据的对应关系;
获取待处理中文姓名数据的每个汉字的码值;
根据获取的每个汉字的码值,分别在对应的中文码表中进行查找,获取每个汉字的码值在对应的码表中的位置信息,计算每个汉字的偏移值,根据所述位置信息和所述偏移值对待处理汉字分别进行处理。
2.根据权利要求1所述的方法,其特征在于,所述获取待处理中文姓名数据的每个汉字的码值为:
将每个汉字的低字节值左移8位的结果与高字节值之和作为每个汉字的码值。
3.根据权利要求1所述的方法,其特征在于,所述根据获取的每个汉字的码值,分别在对应的中文码表中进行查找,获取每个汉字的码值在对应的码表中的位置信息,计算每个汉字的偏移值,根据所述位置信息和所述偏移值对待处理汉字分别进行处理包括:
根据所述待处理中文姓名数据的姓氏汉字的码值,在第一码表中进行查找,获取与所述姓氏汉字对应的位置信息,计算第一偏移值,根据所述位置信息和第一偏移值对姓氏汉字进行处理;其中,所述第一码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系;
判断所述待处理中文姓名数据是否是单名;
如果是单名,根据所述待处理中文姓名数据的单名汉字的码值,在第二码表中进行查找,获取与所述单名汉字对应的位置信息,计算第二偏移值,根据所述位置信息和所述第二偏移值对所述单名汉字进行处理;其中,所述第二码表存储有单名汉字数据的码值;
如果是复名,根据所述待处理姓名数据的复名汉字的码值在第三码表中进行查找,获取与所述复名汉字对应的位置信息,计算第三偏移值,根据所述位置信息以及第三偏移值对复名汉字进行处理;其中,所述第三码表存储有复名汉字数据的码值。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述第二码表不存在所述单名汉字时或所述第三码表中不存在所述复名汉字时,获取第四偏移值,根据所述第四偏移值获取第四码表中对应的汉字,对单名汉字或复名汉字进行处理。
5.根据权利要求1所述的方法,其特征在于,所述偏移值通过以下方式获取:
获取所述待处理中文姓名数据汉字的码值之和S;
从预设的参数集中选择偏移参数Pi;
根据以下公式获取偏移值Oi:
Oi=S mod Pi+1
其中,mod为取余函数。
6.根据权利要求1所述的方法,其特征在于,所述根据所述位置信息和所述偏移值对待处理汉字分别进行处理为:
根据获取的待处理汉字在相应码表中的位置,将获取的位置向下偏移与所述偏移值对应的长度,得到新码值,获取与新码值对应的汉字作为处理结果。
7.根据权利要求1所述的方法,其特征在于,所述建立中文码表为:
建立与姓氏汉字对应的第一码表、与单名汉字对应的第二码表、与复名汉字对应的第三码表,将所述第一码表、第二码表和第三码表中的汉字数据的码值从小到大排列。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
将所述第一码表、第二码表和第三码表中的汉字码值按照与其对应的汉字数据出现的频率划分成多个分段,将处于同一分段的汉字码值使用指针形成环路。
9.根据权利要求5或8所述的方法,所述偏移参数的取值范围为大于1小于N的任意整数,其中N为码表中最小分段中的汉字码值的个数。
10.根据权利要求8所述的方法,其特征在于,所述根据所述位置信息和所述偏移值对待处理汉字分别进行处理包括:
根据获取的待处理汉字在相应码表中对应的位置信息,将指针向下偏移与偏移值对应的长度得到新码值,将偏移后的指针指向的汉字码值对应的汉字作为处理结果。
11.根据权利要求1所述的方法,其特征在于,所述分别在对应的中文码表中进行查找为:
采用二分方法分别在对应的中文码表中进行查找。
12.一种中文姓名数据处理装置,其特征在于,所述装置包括:
码表建立模块,用于建立中文码表,所述码表至少包括与姓氏汉字对应的第一类码表以及与名汉字对应的第二类码表;其中,所述第一类码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系;所述第二类码表中存储有名汉字数据的码值以及码值与名汉字数据的对应关系;
码值获取模块,用于获取待处理中文姓名数据的每个汉字的码值;
处理模块,用于根据获取的每个汉字的码值,分别在对应的中文码表中进行查找,获取每个汉字的码值在对应的码表中的位置信息,计算每个汉字的偏移值,根据所述位置信息和所述偏移值对待处理汉字分别进行处理。
13.根据权利要求12所述的装置,其特征在于,所述处理模块包括:
第一处理单元,用于根据所述待处理中文姓名数据的姓氏汉字的码值,在第一码表中进行查找,获取与所述姓氏汉字对应的位置信息以及第一偏移值,根据所述位置信息和第一偏移值对姓氏汉字进行处理;其中,所述第一码表中存储有姓氏汉字数据的码值以及码值与姓氏汉字数据的对应关系;
第一判断单元,用于判断所述待处理中文姓名数据是否是单名;
第二处理单元,用于如果是单名,根据所述待处理中文姓名数据的单名汉字的码值,在第二码表中进行查找,获取与所述单名汉字对应的位置信息,计算第二偏移值,根据所述位置信息和所述第二偏移值对所述单名汉字进行处理;
第三处理单元,用于如果是复名,根据所述待处理姓名数据的复名汉字的码值在第三码表中进行查找,获取与所述复名汉字对应的位置信息,计算第三偏移值,根据所述位置信息以及第三偏移值对复名汉字进行处理。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
第四处理单元,用于当所述第二码表不存在与所述单名汉字对应的码值时或所述第三码表中不存在与所述复名汉字对应的码值时,获取第四偏移值,根据所述第四偏移值获取第四码表中对应的汉字,对单名汉字或复名汉字进行处理。
15.根据权利要求12所述的装置,其特征在于,所述码表建立模块还用于将第一码表、第二码表和第三码表中的汉字码值按照与其对应的汉字数据出现的频率划分成多个分段,将处于同一分段的汉字码值使用指针形成环路;其中,所述第一码表属于第一类码表,所述第二码表、第三码表属于第二类码表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210025375.4A CN102609510B (zh) | 2012-02-06 | 2012-02-06 | 一种中文姓名数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210025375.4A CN102609510B (zh) | 2012-02-06 | 2012-02-06 | 一种中文姓名数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102609510A true CN102609510A (zh) | 2012-07-25 |
CN102609510B CN102609510B (zh) | 2014-05-28 |
Family
ID=46526882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210025375.4A Active CN102609510B (zh) | 2012-02-06 | 2012-02-06 | 一种中文姓名数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102609510B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473019A (zh) * | 2013-09-11 | 2013-12-25 | 华为数字技术(苏州)有限公司 | 数据处理方法、服务器及存储阵列 |
CN105468687A (zh) * | 2015-11-17 | 2016-04-06 | 立德高科(北京)数码科技有限责任公司 | 一种码值数据随机关联方法与关联系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1270358A (zh) * | 1999-04-08 | 2000-10-18 | 英业达集团(上海)电子技术有限公司 | 文字转码通讯方法及装置 |
CN1558344A (zh) * | 2004-01-21 | 2004-12-29 | 王衍淞 | 码表数据结构 |
CN1632798A (zh) * | 2004-12-31 | 2005-06-29 | 北京中星微电子有限公司 | 中文字典搜索引擎及在中文字典中快速定位字的方法 |
CN101404007A (zh) * | 2008-11-19 | 2009-04-08 | 闻泰集团有限公司 | 一种Unicode编码到GB2312编码转换方法 |
CN101661337A (zh) * | 2009-09-24 | 2010-03-03 | 深圳创维-Rgb电子有限公司 | 一种汉字查找方法、装置及手持终端 |
-
2012
- 2012-02-06 CN CN201210025375.4A patent/CN102609510B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1270358A (zh) * | 1999-04-08 | 2000-10-18 | 英业达集团(上海)电子技术有限公司 | 文字转码通讯方法及装置 |
CN1558344A (zh) * | 2004-01-21 | 2004-12-29 | 王衍淞 | 码表数据结构 |
CN1632798A (zh) * | 2004-12-31 | 2005-06-29 | 北京中星微电子有限公司 | 中文字典搜索引擎及在中文字典中快速定位字的方法 |
CN101404007A (zh) * | 2008-11-19 | 2009-04-08 | 闻泰集团有限公司 | 一种Unicode编码到GB2312编码转换方法 |
CN101661337A (zh) * | 2009-09-24 | 2010-03-03 | 深圳创维-Rgb电子有限公司 | 一种汉字查找方法、装置及手持终端 |
Non-Patent Citations (2)
Title |
---|
戚宇恒: "密码技术及其应用", 《中国水运(学术版)》 * |
苏学东: "《第一章 古典密码及其分析》", 《古典密码的计算机自动分析》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473019A (zh) * | 2013-09-11 | 2013-12-25 | 华为数字技术(苏州)有限公司 | 数据处理方法、服务器及存储阵列 |
CN105468687A (zh) * | 2015-11-17 | 2016-04-06 | 立德高科(北京)数码科技有限责任公司 | 一种码值数据随机关联方法与关联系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102609510B (zh) | 2014-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102053992B (zh) | 聚类方法和系统 | |
CN106844407B (zh) | 基于数据集相关性的标签网络产生方法和系统 | |
CN103279478B (zh) | 一种基于分布式互信息文档特征提取方法 | |
CN101694668B (zh) | 网页结构相似性确定方法及装置 | |
CN104111936B (zh) | 数据查询方法和系统 | |
CN109614402B (zh) | 多维数据查询方法和装置 | |
CN107391502B (zh) | 时间间隔的数据查询方法、装置及索引构建方法、装置 | |
CN103425687A (zh) | 一种基于关键词的检索方法和系统 | |
CN103136228A (zh) | 一种图片搜索方法以及图片搜索装置 | |
CN104123346A (zh) | 一种结构化数据搜索方法 | |
Gao et al. | A new agglomerative hierarchical clustering algorithm implementation based on the map reduce framework | |
CN104778164B (zh) | 检测重复url的方法及装置 | |
CN113836131A (zh) | 一种大数据清洗方法、装置、计算机设备及存储介质 | |
CN102591880A (zh) | 信息提供方法及装置 | |
CN109325146A (zh) | 一种视频推荐方法、装置、存储介质和服务器 | |
CN109885651B (zh) | 一种问题推送方法和装置 | |
CN106354871A (zh) | 一种企业名称的相似性检索方法 | |
CN109977316A (zh) | 一种并行式文章推荐方法、装置、设备及存储介质 | |
CN110245289A (zh) | 一种信息搜索方法以及相关设备 | |
CN111932308A (zh) | 数据推荐方法、装置和设备 | |
CN113886708A (zh) | 基于用户信息的产品推荐方法、装置、设备及存储介质 | |
CN111177372A (zh) | 一种科技成果的分类方法、装置、设备及介质 | |
CN106033444B (zh) | 文本内容的聚类方法和装置 | |
CN102609510B (zh) | 一种中文姓名数据处理方法和装置 | |
Yin et al. | Content‐Based Image Retrial Based on Hadoop |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |