发明内容
本发明的实施例提供了一种电话号码数据的发现与分类方法,以实现有效地提取数据表中的关键数据。
为了实现上述目的,本发明采取了如下技术方案
一种电话号码数据的发现与分类方法,包括:
预先设定电话号码对应的数据分析规则;
提取数据表中的采样数据;
按照所述电话号码对应的数据分析规则,对所述采样数据进行电话号码数据分析,根据分析结果发现所述采样数据中的电话号码。
所述的预先设定电话号码对应的数据分析规则,包括:
将电话号码种类的数据划分为混合电话号码、移动电话号码、固话号码和疑似电话号码四个子类,并对移动电话号码、固话号码和疑似电话号码分别设置移动电话号码计数器、固话号码计数器和疑似电话号码计数器。
所述的提取数据表中的采样数据之前,还包括:
读取所述数据表所在的数据库的元数据,该元数据包括每个数据表的数据表名、数据中存储的数据的描述信息,以及每个数据表中的每个字段的字段名、数据类型定义、数据长度精度限制信息,根据所述元数据判断出所述数据库中需要进行数据分析的数据表和数据表中需要进行数据分析的字段;
根据所述数据表中每个字段的字段类型和长度精度,确定需要匹配电话号码对应的数据分析规则的字段。
所述的提取数据表中的采样数据,包括:
设置数据表的采样行数规则为:提取数据表的前N行,从数据表的第N+1行开始提取M‰比率的数据行;当所述数据表中的全部数据记录的行数小于等于所述采样行数阈值N,则提取所述数据表中的全部记录行数的数据作为采样数据;当所述数据表中的数据记录的行数大于所述采样行数阈值,则提取所述数据表中的排列在前列的所述采样行数阈值N的行数,以及排列在所述采样行数阈值的行数后面的全部数据记录的行数的设定比率M‰作为采样数据。
所述的按照所述电话号码对应的数据分析规则,对所述采样数据进行电话号码数据分析,根据分析结果发现所述采样数据中的电话号码,包括:
选取所述采样数据中的第一张数据表的第一行数据记录的数据,对所述第一行数据记录的数据进行拆分,得到多个字段的数据,选取第一个字段的数据,当所述第一字段的类型为字符串类型或者整形的数值类型字段,且长度大于等于7,则按照电话号码对应的数据分析规则,对所述第一个字段的数据进行电话号码数据分析,根据分析结果对移动电话号码计数器、固话号码计数器和疑似电话号码计数器的计数值进行统计处理;
选取第二个字段的数据,按照所述第一个字段的数据的数据分析过程,对所述第二个字段的数据进行数据分析,依次类推,对所述第一行数据记录中的每个字段的数据进行数据分析;
选取所述采样数据中的第二行数据记录的数据,按照所述第一行数据记录的数据的数据分析过程,对所述第二行数据记录的数据进行数据分析,依次类推,对所述采样数据中的所有数据表中的所有行数据记录的数据进行数据分析;
根据某个数据表中的某个字段对应的移动电话号码计数器、固话号码计数器和疑似电话号码计数器的计数值,判断所述某个字段的数据类型是否为电话号码。
所述的按照电话号码对应的数据分析规则,对所述第一个字段的数据进行电话号码数据分析,根据分析结果对移动电话号码、固话号码和疑似电话号码对应的计数值进行统计处理,包括:
去除字段的数据中的非数字字符,保留数字,当保留的数字的长度等于11或者13,并且从数字的最右边数起的第9-11位匹配移动电话号码数据字典中包括的移动电话号码的前三位字符,则将移动电话号码计数器的计数值+1;
当进行固话电话分析时,对字段的数据中除了+号以外的符号都换成‘-’,得到符号转换后的字段的数据,对所述符号转换后的字段的数据按照设定的正则表达式进行匹配,所述设定的正则表达式为:((((00|\+)?86(\+|-)?)|\+)?(0)?(10|2\d{1}|[3-9]\d{2})-?)?[2-8]\d{6,7}(-?\d{2,4})?,当所述正则表达式匹配成功,且上述正则表达式能够成功获取固定电话区号,那么将所述获取的区号去匹配固定电话区号数据字典,若匹配成功则将固话电话计数器的计数值+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值在索引中匹配搜索
选取所述采样数据中的第一张数据表的第一行数据记录的数据,对所述第一行数据记录的数据进行拆分,得到多个字段的数据,选取第一个字段的数据,当所述第一字段的类型为字符串类型或者整形的数值类型的字段,且长度大于等于7,则按照电话号码对应的数据分析规则,对所述第一个字段的数据进行电话号码数据分析,根据分析结果对移动电话号码计数器、固话号码计数器和疑似电话号码计数器的计数值进行统计处理。
判断字段的数据格式为:国际字冠-国家代码-移动电话号码本体,国际字冠为00、+或者没有,国家代码为86或没有,中间的“-”为间隔符,可以为“-”、空格或者没有,移动电话号码本体长度为11位,并且从数字的最右边数起的第9-11位匹配移动电话号码前缀数据字典中包括的移动电话号码的前三位字符,则将移动电话号码计数器的计数值+1;
当进行固话电话分析时,对字段的数据中除了+号以外的符号都换成‘-’,得到符号转换后的字段的数据,对所述符号转换后的字段的数据按照设定的正则表达式进行匹配,所述设定的正则表达式为:((((00|\+)?86(\+|-)?)|\+)?(0)?(10|2\d{1}|[3-9]\d{2})-?)?[2-8]\d{6,7}(-?\d{2,4})?,当所述正则表达式匹配成功,且上述正则表达式能够成功获取固定电话区号,那么将所述获取的区号去匹配固定电话区号数据字典,若匹配成功则将固话电话计数器的计数值+1;
当进行疑似电话号码分析时,判断字段的数据是否满足日期格式,该日期格式包括:[四位年份]+[两位月份]+[两位天],[两位天]+[两位月份]+[四位年份],[两位月份]+[两位天]+[四位年份],如果是,则判定该字段的数据不为电话号码,针对该字段数据电话号码判断逻辑结束;否则,则将疑似电话号码计数器的计数值+1。
选取第二个字段的数据,按照所述第一个字段的数据的隐私数据的分析过程,对所述第二个字段的数据进行隐私数据分析,依次类推,对所述第一行数据记录中的每个字段的数据进行隐私数据分析;
选取所述采样数据中的第二行数据记录的数据,按照所述第一行数据记录的数据的隐私数据的分析过程,对所述第二行数据记录的数据进行隐私数据分析,依次类推,对所述采样数据中的所有数据表中的所有行数据记录的数据进行隐私数据分析;
根据某个数据表中的某个字段对应的移动电话号码计数器、固话号码计数器和疑似电话号码计数器的计数值,判断所述某个字段的数据类型是否为电话号码。
当所述采样数据中所述字段的数据全部分析完成后,对各计数器值进行分析:
当所述移动电话号码对应的计数器的计数值占该字段整体有效行数总值占比达上限阀值,而固定电话计数值的占比小于下限阀值时,则判断所述字段的数据类型为移动电话号码;
当所述固话电话对应的计数器的计数值占该字段整体有效行数总值占比达上限阀值,而移动电话计数器的占比小于下限阀值时,则判断所述字段的数据类型为固话电话;
当移动电话和固定电话计数值的占比分别都大于下限阀值,且两个计数值占比之和达到上限阀值时,则判断所述字段的数据类型为混合电话号码;
当所述移动电话和固定电话计数器的计数值的占比均小于下限值,且疑似电话号码对应的计数器的计数值相对该字段整体有效行数总值的占比大于设定比例,则判断所述字段的数据类型为疑似电话号码。
当所述移动电话号码对应的计数器、所述固话电话对应的计数器和所述疑似电话号码对应的计数器三个计数器的计数值总值不大于设定的电话号码判断阈值时,则判断所述字段的数据类型不为电话号码。
综上所述,本发明实施例通过预先设定电话号码对应的数据分析规则,对采样数据进行数据分析,可以自动、有效地发现企业应用数据库的数据表中的电话号码数据种类,高效率地将企业应用数据库的数据表中的电话号码关键数据找出来并归类。
为了实施某些安全措施或者数据分析等工作,将企业内部所有系统的隐私数据找出来、分类梳理,意味着从少则几万多则上亿的表字段中整理。应用本发明实施例的方法,能够极大地减小了工作量、缩短工作时间,把不可能变成可能,把几十人月的工作量变成几十人天,大大缩短项目周期、降低项目风险;准确率高,对于比较规整、数据质量比较好的系统,准确率能超过99%。
本发明实施例能够统一用户界面,从原本分散独立的数据源中将数据采样至集中平台,用户在一个界面即可梳理所有系统的所有数据。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。