发明内容
本发明的实施例提供了一种中文姓名数据的发现与分类方法,以实现有效地提取数据表中的关键数据。
为了实现上述目的,本发明采取了如下技术方案
一种中文姓名数据的发现与分类方法,包括:
预先设定中文姓名对应的数据分析规则;
提取数据表中的采样数据;
按照所述中文姓名对应的数据分析规则,对所述采样数据进行中文姓名数据分析,根据分析结果发现所述采样数据中的中文姓名。
所述的预先设定中文姓名对应的数据分析规则,包括:
将所述中文姓名种类的数据划分为姓名、姓氏和名字三个子类,并对姓名、姓氏和名字三个子类分别设置姓名计数器、姓氏计数器和名字计数器,针对所用到的姓氏字典设置一个数组计数器,设定所述姓名、姓氏和名字三个子类分别对应的数据分析规则。
所述的预先设定中文姓名对应的数据分析规则,还包括:
构造中文姓名对应的数据字典,该数据字典中存储了中文姓名数据种类中的典型数据。
所述的提取数据表中的采样数据之前,还包括:
读取所述数据表所在的数据库的元数据,该元数据包括每个数据表的数据表名、数据中存储的数据的描述信息,以及每个数据表中的每个字段的字段名、数据类型定义、数据长度精度限制信息,根据所述元数据判断出所述数据库中需要进行数据分析的数据表和数据表中需要进行数据分析的字段;
根据所述数据表中每个字段的字段类型和长度精度,确定需要匹配中文姓名对应的数据分析规则的字段。
所述的提取数据表中的采样数据,包括:
设置数据表的采样行数规则为:提取数据表的前N行,从数据表的第N+1行开始提取M‰比率的数据行;当所述数据表中的全部数据记录的行数小于等于所述采样行数阈值N,则提取所述数据表中的全部记录行数的数据作为采样数据;当所述数据表中的数据记录的行数大于所述采样行数阈值,则提取所述数据表中的排列在前列的所述采样行数阈值N的行数,以及排列在所述采样行数阈值的行数后面的全部数据记录的行数的设定比率M‰作为采样数据。
所述的按照所述中文姓名对应的数据分析规则,对所述采样数据进行中文姓名数据分析,根据分析结果发现所述采样数据中的中文姓名,包括:
选取所述采样数据中的第一张数据表的第一行数据记录的数据,对所述第一行数据记录的数据进行拆分,得到多个字段的数据,选取第一个字段的数据,当所述第一字段的类型为字符串类型的字段,且长度大于等于2,则按照中文姓名对应的数据分析规则,对所述第一个字段的数据进行中文姓名数据分析,根据分析结果对姓名计数器、姓氏计数器、名字计数器和/或数组计数器的计数值进行统计处理;
选取第二个字段的数据,按照所述第一个字段的数据的数据分析过程,对所述第二个字段的数据进行数据分析,依次类推,对所述第一行数据记录中的每个字段的数据进行数据分析;
选取所述采样数据中的第二行数据记录的数据,按照所述第一行数据记录的数据的数据分析过程,对所述第二行数据记录的数据进行数据分析,依次类推,对所述采样数据中的所有数据表中的所有行数据记录的数据进行数据分析;
根据某个数据表中的某个字段对应的姓名计数器、姓氏计数器、名字计数器和/或数组计数器的计数值,判断所述某个字段的数据类型是否为中文姓名。
所述的对所述第一个字段的数据进行中文姓名数据分析,根据分析结果对姓名计数器、姓氏计数器、名字计数器和/或数组计数器的计数值进行统计处理,包括:
当所述第一个字段的数据的最左边的字符匹配姓氏字典中包含的姓氏,并且所述第一个字段的数据中在所述姓氏的右边还有字符,则将姓名对应的计数器的计数值加1,将所述字典姓氏对应的数组计数器的计数值加1,并将所述姓名对应的统计值加1;
当所述第一个字段的数据的最左边的字符匹配姓氏字典中包含的姓氏,并且所述第一个字段的数据中在所述姓氏的右边没有字符,则将姓氏对应的计数器的计数值加1,将所述字典姓氏对应的数组计数器的计数值加1,并将所述姓氏对应的统计值加1。
所述的根据某个数据表中的某个字段对应的姓名计数器、姓氏计数器、名字计数器和/或数组计数器的计数值,判断所述某个字段的数据类型是否为中文姓名,包括:
当所述采样数据中某个字段的数据全部分析完成后,所述姓氏计数器的计数值、所述数组计数器大于进行分析的所述某个字段的数据的总数量的设定比例,并且,统计值大于设定数值的姓氏的数量大于设定的数量阈值,则判定所述某个字段的数据类型为姓氏。
所述的根据某个数据表中的某个字段对应的姓名计数器、姓氏计数器、名字计数器和/或数组计数器的计数值,判断所述某个字段的数据类型是否为中文姓名,包括:
当所述采样数据中所述某个字段的数据全部分析完成后,如果姓名计数器的计数值大于进行分析的所述某个字段的数据的总数量的设定比例,统计所有所述某个字段的数据中重复的数据,当重复的数据占所有所述某个字段的数据的比例小于设定的阈值,则判定所述某个字段的数据类型为姓名。
根据某个数据表中的某个字段对应的姓名计数器、姓氏计数器、名字计数器和/或数组计数器的计数值,判断所述某个字段的数据类型是否为中文姓名,包括:
当判定某个字段的数据类型为姓氏后,对所述某个字段所在的数据记录行中的其它字段的数据进行单字拆分,将每个单字分别在名字字典中进行匹配,当每个单字都匹配名字字典中包括的名字时,则将名字对应的计数器的计数值加1;
当所述其它字段的数据全部分析完成后,如果名字计数器的计数值大于进行匹配的所述其它字段的数据的总数量,则判定所述其它字段的数据类型为名字。
由上述本发明的实施例提供的技术方案可以看出,本发明实施例通过预先设定中文姓名对应的数据分析规则,对采样数据进行数据分析,可以自动、有效地发现企业应用数据库的数据表中的中文姓名数据种类,高效率地将企业应用数据库的数据表中的中文姓名关键数据找出来并归类。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
实施例一
本发明实施例提供了一种有效的、能显著提高准确率的方法,能让企业单位在自身众多复杂的系统当中,找到关键数据并进行分类,便于进一步采取相应的措施。
该实施例提供了一种中文姓名数据的发现与分类方法的处理流程如图1所示,包括如下的处理步骤:
步骤S110、预先设定中文姓名对应的数据分析规则和计数器。
本发明实施例的隐私数据发现和分类的基本原理是对采样数据中的字段的数据进行扫描和分析,得到字段的数据的特征,然后对字段的数据进行归类。同一个字段的数据,需要经过所有隐私数据种类的特征规则算法的分析统计,最终根据相似度来判断它有最有可能是哪一种类型的隐私数据。上述隐私数据可以称为私密数据或敏感信息。
常见的隐私数据种类为身份证号码、邮政编码、营业执照号(工商注册号)、组织机构代码、纳税人识别号、电子邮件地址、企业名称、电话号码、中文姓名和地址共10种隐私数据种类。本发明实施例将所述中文姓名种类的隐私数据划分为姓名、姓氏和名字三个子类,并对姓名、姓氏和名字三个子类分别设置姓名计数器、姓氏计数器和名字计数器,设定所述姓名、姓氏和名字三个子类分别对应的数据分析规则。
针对所用到的姓氏字典设置一个数组计数器,即姓氏字典中的每一个姓氏值都对应使用所述数组中的一个特定元素作为计数器。
构造中文姓名对应的数据字典,该数据字典中存储了中文姓名数据种类中的典型数据,其中姓氏字典包括中国绝大多数的姓氏,名字字典包括中国取名的常用字等。
步骤S120、根据数据库的元数据,获取需要进行隐私数据分析的数据表,以及数据表中的字段类型。
读取所述数据表所在的数据库的元数据,该元数据包括每个数据表的数据表名、数据中存储的数据的描述信息,以及每个数据表中的每个字段的字段名、数据定义、数据限制信息,根据所述元数据判断出所述数据库中需要进行隐私数据提取的数据表和数据表中需要进行隐私数据提取的字段,以及每个字段的字段类型,该字段类型包括数值类型的字段和字符串类型的字段。
根据所述数据表中每个字段的字段类型和长度精度,确定需要匹配中文姓名对应的隐私数据分析规则的字段。
步骤S130、提取需要进行隐私数据分析的数据表中的采样数据。
设置数据表的采样行数阈值,当所述数据表中的全部数据记录的行数小于所述采样行数阈值,则提取所述数据表中的全部记录行数的数据作为采样数据;当所述数据表中的数据记录的行数大于或者等于所述采样行数阈值,则提取所述数据表中的排列在前列的所述采样行数阈值的行数,以及排列在所述采样行数阈值的行数后面的全部数据记录的行数的设定比率作为采样数据。
比如,上述采样行数阈值为1000,采样率缺省为取前1000行,后面从1001行开始取千分之一,每1000行取一行,采样率可根据实际情况配置选择。
步骤S140、按照所述中文姓名对应的数据分析规则,对所述采样数据进行中文姓名数据分析,根据分析结果发现所述采样数据中的中文姓名。
隐私数据种类发现规则与算法中的统一规则如下:
1.输入值为空值、空串或者空格均不计入阀值统计。
2.全角字符预先在调用层转换成半角处理;
3.以下每种隐私数据类型的内部的算法规则,若无特别说明,均为顺序执行且不可忽略,即某条规则校验失败则后面的规则无需校验,该种隐私数据类型判断失败。
4.字典检索加速方法,本发明实施例提供的一种根据关键字的hash值检索得到完整关键词的示意图如图2所示,针对字典值超过100个的字典建议开始使用此方法:
a)将字典中的每一个数据分别使用hash算法生成hash值;
b)将字典中所有数值的hash值分别取特定数值的余数,而每个具体的余数值都对应一个槽位用于存放对应的hash值,该槽位为第一级别,比如取39的余数对应会有0到38余数值总共39个一级槽位;
c)将所述hash值根据其特定值的余数,按顺序放入对应所述槽位;
d)这样即完成多级hashmap索引的第一级别的构建;
e)将所述第一个槽位的hash值取出再次取非上述特定数值因子的数值的余数,同时会得到对应多个二级槽位,这里举例取37的余数,那么每个上述的一级槽位会对应有最多37个二级槽位;
f)将所述每个一级槽位的hash值再分别按顺序装入对应的所述二级槽位,完成多级hashmap索引的第二级别的构建;
g)再将上述某个二级槽位的hash值取出,并计算其非上述所有特定数值因子的数值的余数,对应得到若干个三级槽位,举例这里取34的余数,那么每个上述的二级槽位会对应有最多34个三级槽位;
h)将所述每个二级槽位的hash值再分别按顺序装入对应的所述三级槽位,完成多级hashmap索引的第三级别的构建;
i)如此重复,直到每个槽位中的hash值数量小于等于特定阀值数量,即完成整个多级hashmap索引的构建;
j)字生成的索引结构留着内存中待用
k)字段数据在使用所述字典的hashmap索引结构进行匹配查找时,需要将所述字段数据用同样的hash算法生成hash值在索引中匹配搜索
选取所述采样数据中的第一张数据表的第一行数据记录的数据,对所述第一行数据记录的数据进行拆分,得到多个字段的数据,选取第一个字段的数据,当所述第一字段的类型为字符串类型的字段,且长度大于等于2,则按照中文姓名对应的数据分析规则,对所述第一个字段的数据进行中文姓名数据分析,根据分析结果对姓名计数器、姓氏计数器、名字计数器和/或数组计数器的计数值进行统计处理。
当所述第一个字段的数据的最左边的字符匹配姓氏字典中包含的姓氏,并且所述第一个字段的数据中在所述姓氏的右边还有字符,则将姓名对应的计数器的计数值加1,将所述字典姓氏对应的数组计数器的计数值加1,并将所述姓名对应的统计值加1;
当所述第一个字段的数据的最左边的字符匹配姓氏字典中包含的姓氏,并且所述第一个字段的数据中在所述姓氏的右边没有字符,则将姓氏对应的计数器的计数值加1,将所述字典姓氏对应的数组计数器的计数值加1,并将所述姓氏对应的统计值加1。
选取第二个字段的数据,按照所述第一个字段的数据的隐私数据的分析过程,对所述第二个字段的数据进行隐私数据分析,依次类推,对所述第一行数据记录中的每个字段的数据进行隐私数据分析;
选取所述采样数据中的第二行数据记录的数据,按照所述第一行数据记录的数据的隐私数据的分析过程,对所述第二行数据记录的数据进行隐私数据分析,依次类推,对所述采样数据中的所有数据表中的所有行数据记录的数据进行隐私数据分析;
根据某个数据表中的某个字段对应的姓名计数器、姓氏计数器、名字计数器和/或数组计数器的计数值,判断所述某个字段的数据类型是否为中文姓名。
当所述采样数据中所述字段的数据全部分析完成后,所述姓氏计数器的计数值占所述字段有效数据总数量的比例大于设定比例(比如60%),并且,统计数组计数器中每个元素的百分比,统计值大于设定数值(比如,字段的数据的总数量的1%)的姓氏的数量大于设定的数量阈值(比如10个),则判定所述字段的数据类型为姓氏。
当所述采样数据中所述字段的数据全部分析完成后,如果姓名计数器的计数值大于进行分析的所述字段的数据的总数量的设定比例(比如60%),统计所有所述字段的数据中重复的数据,当重复的数据占所有所述字段的数据的比例小于设定的阈值(比如30%),则判定所述字段的数据类型为姓名。
当判定某个字段的数据类型为姓氏后,对所述某个字段所在的数据记录行中的其它字段的数据进行单字拆分,将每个单字分别在名字字典中进行匹配,当每个单字匹配名字字典中包括的名字时,则将名字对应的计数器的计数值加1。
当所述其它字段的数据全部分析完成后,如果名字计数器的计数值大于进行匹配的所述其它字段的有效数据的总数量的设定比例(比如60%),则判定所述其它字段的数据类型为名字。
综上所述,本发明实施例通过预先设定中文姓名对应的数据分析规则,对采样数据进行数据分析,可以自动、有效地发现企业应用数据库的数据表中的中文姓名数据种类,高效率地将企业应用数据库的数据表中的中文姓名关键数据找出来并归类。
为了实施某些安全措施或者数据分析等工作,将企业内部所有系统的隐私数据找出来、分类梳理,意味着从少则几万多则上亿的表字段中整理。应用本发明实施例的方法,能够极大地减小了工作量、缩短工作时间,把不可能变成可能,把几十人月的工作量变成几十人天,大大缩短项目周期、降低项目风险;准确率高,对于比较规整、数据质量比较好的系统,准确率能超过99%。
本发明实施例能够统一用户界面,从原本分散独立的数据源中将数据采样至集中平台,用户在一个界面即可梳理所有系统的所有数据。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。