本发明属于数据识别技术领域,具体涉及一种基于自然语言处理和规则匹配的数据隐私信息检测系统。
背景技术:
近年来各种网络和电话诈骗集团通过使用个人信息对指定对象进行财产或人身损害,造成严重的社会影响。这些个人信息往往由于信息所有者对个人隐私的忽视而被泄露,在网络环境中存在大量和公民相关的公开数据,这其中不乏个人隐私信息。2017年8月皖赣等部分政府网站泄露公民隐私信息得到了人们的广泛关注;同年12月5日,人社部、财政部两部委办公厅下发《关于在就业补助资金使用信息公开中进一步加强个人信息保护的通知》,其中指出个别地区在就业补助资金使用信息公开中,由于专业性、规范性不足,存在享受补贴人员个人信息和隐私泄露的隐患;近期部分省份也将开展学生资助公示信息排查清理工作,受助学生信息公示时,不得公布学生身份证件号码、家庭住址、电话号码等个人敏感信息,从而切实保护受助学生的个人信息和隐私。
大数据资源被广泛应用于企业业务和科学研究等领域,数据量的庞大和多样易造成人们对隐私信息的忽视,它们往往包含合法公民的个人信息,一旦信息泄露,将会对人身或财产造成不必要的损害。为了保护个人隐私信息,国家发布了《中华人民共和国网络安全法》,并起草了《中华人民共和国个人信息保护法(草案)》,但是在法律保护的前提下仍有许多隐私数据因为公民法律意识不强,拥有者操作不当或是攻击者的恶意获取而被泄露,这些隐私数据可能存在于互联网中的许多公开环境中。为了缓解这一现象的发生,互联网上的公开数据在被收集后和用于分析前,应当经过一定的方法检测其是否含有隐私信息,只有符合法律规定的数据才能被使用,以减少个人信息泄露的可能性。
近几年,新兴的大数据共享或分析平台已达到上百种,其中不乏大型网站提供的数据资源,例如百度指数、google趋势、微博指数等。这些大数据平台涉及网站分析类、移动应用分析类、媒体传播类、电商数据、投资数据、金融数据、游戏数据、国家社会数据等多种类型,并且利用数据挖掘、数据可视化等技术进行不同目的的分析。
大量的数据集被用来分享、交易,在这样的环境下,想要保证数据内隐私信息的安全性是一件十分有挑战性的工作。对于大型的大数据平台而言,其内部存在一定的管理与保护条例来防止隐私数据的泄露,但是平台与平台之间并没有形成统一性的规章制度来确保隐私信息的安全性。一些大数据分析平台对于用户上传的数据并没有按照法律要求进行严格的检查,因此这些平台中可能包含公民的隐私信息,一旦这些信息被泄露,将可能对当事人造成不利影响。
当前并不存在成熟或完整的隐私信息检测工具,现有的如电话号码、银行卡号的检测算法也并不能全面完整地覆盖,且并不提供可直接使用的算法或可调用的接口。经调研发现目前缺乏综合性强,可用性高的隐私信息检测工具;除此之外,现有的开源算法的性能由于其复杂度较高而受到影响,不利于在大数据平台中对gb、tb级以上的数据集进行检测。
技术实现要素:
本发明的目的是为了解决当前互联网公开数据集以及大数据平台中可能存在隐私信息的问题,提供一种新型的数据隐私信息检测系统。
本发明提供的数据隐私信息检测系统,采用自然语言处理模型和多种类型的匹配算法;通过对数据中的隐私信息进行快速匹配,生成相关报告,从而显示数据中包含的隐私信息种类、数量、定位与具体内容,以提醒数据收集者或数据分析者使用的数据中可能携带隐私信息,若检测数据来自于互联网公开环境,则可以提醒用户隐私泄露的可能性与防范的必要性。
本发明结合基于正则表达式、字典树、命名实体识别等多种类型的匹配算法,可进行包含人名、生日、身份证号、地址、电话号码、银行卡号、电子邮箱、ip地址和mac地址的检测,同时提供封装好可直接调用的api,由数据拥有者或分析者进行调用。参见下表1。
表1隐私信息类别及对应检测算法
与网上现有的匹配方法不同的是,本发明提供多类别、分层级、分粒度的检测方法,以提高对大容量数据集的检测覆盖率和效率。具体使用的匹配算法及其匹配粒度信息如下表所示:
本发明设计的数据隐私信息检测系统,包括如下四个模块:数据预处理模块、隐私检测模块、文本分析模块和检测结果生成模块。数据预处理模块用于对系统运行进行各种配置,并对输入数据集进行格式化;隐私数据检测模块用于实现系统的检测功能;文本分析模块对检测结果进行基于上下文的分析,筛选出符合规则的隐私数据;检测结果生成模块基于分析结果生成包含隐私信息比例、种类、定位和具体内容的数据隐私信息报告;在数据预处理模块,系统支持多样化的运行配置,以及多种格式的数据文件输入;在隐私检测模块,系统提供基本的分词与词性标注功能,以及多种类型、可扩展的隐私检测算法;在文本分析模块,系统基于上下文信息以及统计或自定义规则筛选符合要求的隐私数据。
数据隐私信息检测系统中的四个模块存在顺序关联,一个完整的检测流程包括:数据预处理模块对原文件中空值、分段等内容的处理,隐私数据检测模块对单条数据进行分词与多种类别的算法匹配;文本分析模块参考检测内容及其上下文进行的语义分析;检测结果生成模块依据上阶段的结果生成的隐私信息检测报告。其中,分词与文本分析是可选功能,即当出现中文文本数据时,需要进行分词操作;当希望提高精确度而不十分重视时间性能时,可选择进行文本分析。
下面对这四个模块的详细功能进行分析说明。
数据预处理模块,用于将项目启动时设置的配置信息动态加载至系统的运行逻辑,以满足不同的数据检测与分析需求;同时,数据预处理模块将各种格式的数据文件转换为满足检测要求格式的数据文件,格式化的数据文件将被传递到隐私数据检测模块;经预处理后的数据易于检测,即每一条数据都可以用简单的符号或分词方法进行切分,从而适用于多种隐私信息匹配算法;同时易于定位,即通过预处理的数据可以计算其在原文件中的对应位置,便于文本分析模块基于原文进行分析,同时辅助检测结果生成模块对隐私内容进行展示。
隐私检测模块,用于对预处理后的数据进行分词、词性标注以及隐私实体的识别;需要匹配的隐私信息类别参照了国内外相关法律(《中华人民共和国网络安全法》、《通用数据保护条例(gdpr)》);系统利用感知机模型对文本进行分词与词性标注,并利用双数组trie树以提供高效的匹配算法,降低时间消耗;隐私数据检测模块需要提供检测出的隐私信息的类型和定位给文本分析模块,由该模块对检测实体及其上下文进行新一轮基于规则的分析。
文本分析模块,依照隐私检测模块获取的隐私信息种类及定位在原文中进行基于上下文的分析,分析内容包括:一是基于检测隐私实体的上下文关键词提高检测结果的精确度,二是基于规则对检测到的隐私实体之间的关联与组合模式进行匹配(例如检测到的隐私实体只有和人名组合在一起的时候才被最终判定为隐私信息),判定其是否真的为隐私信息;只有确定为隐私信息的数据才会以“类别+下标索引+组合模式+具体内容”的方式传输到检测结果生成模块以生成检测报告;
检测结果生成模块,用于根据检测到的隐私信息类别及定位生成隐私信息检测报告,报告中以文字和图像形式详细展示原文件基本信息,隐私信息类别、比例和隐私的具体内容;如果文件中出现隐私信息,检测结果生成模块将会根据隐私信息泄露的严重性在报告中给出提示或警示信息,要求用户及时对数据内容进行处理,在不影响数据最终使用目标的情况下将这些信息抹去。
在数据预处理模块中,(1)提供灵活的配置选项,以满足系统使用者的不同需求;(2)将格式化与非格式化数据统一处理,便于检测与定位的数据格式,以保证系统的松耦合性和检测结果在原文中位置的一致性;其中:
配置选项包括:是否支持多文件处理,是否需要分词与词性标注,是否开启基于上下文的文本分析功能,以及需要检测的隐私实体类别;
处理格式化数据具体过程是:当输入的数据文件格式满足xls、xlsx、csv三种类型时,系统将其统一转换为csv格式的文件,每两条数据之间以英文逗号“,”间隔,每一行数据前添加行数信息;数据预处理模块将保存预处理前的文件工作簿与行数信息和预处理后的行数信息之间的映射关系;
处理非格式化数据具体过程是:当输入的数据文件格式满足pdf、txt两种类型时,系统首先将其统一转换为txt格式文本文件,然后再转换为csv格式的文件,每两条数据之间以英文逗号“,”间隔,每一行数据前添加行数信息;对于pdf文件,数据预处理模块将保存预处理前的文件页数与行数信息和预处理后的行数信息之间的映射关系;
在数据预处理模块中,系统将维护一个预处理前和预处理后数据位置信息的映射关系,用于在隐私数据检测模块检测隐私数据时快速定位其在原文件中的位置,便于在文本分析模块和结果生成模块检索原数据信息。
在隐私检测模块中,提供中文分词和词性标注的功能,同时支持多种类型的隐私信息匹配算法;隐私信息匹配算法是可拓展的,当后续新增需要检测的隐私信息类别时,本模块可以便捷拓展并应用新的算法;隐私信息匹配算法应用感知机模型和双数组trie树构建数据字典,快速对目标数据进行隐私实体的划分;隐私信息种类有以下九种:人名、生日、身份证号、住址、电话号码、银行卡号、电子邮箱、ip地址和mac地址;且假设所有信息都是以明文形式存储;隐私信息种类还可以根据需求进行添加;同时,隐私信息匹配算法可以通过配置选项自定义组合,从而进行针对性的检测;隐私信息匹配算法应用了先粗粒度,后细粒度的匹配方法,根据数据的格式(例如纯数字或纯文本)选择对应的匹配算法,以减少每条数据需要应用的算法数量;检测的结果将会以“类别+下标索引”的方式传输到文本分析模块供其进行分析或传输到检测结果生成模块中用于生成检测报告。
本发明提出的方案是高效的,使用优化的算法和多线程处理大容量数据。
本发明是可扩展的,所有的设计遵循面向对象的要求,并应用了单例模式、模板模式和工厂模式,使得对数据文件进行预处理的类与检测数据的匹配算法类,都可以被快速的扩展与应用,以顺应新的需求。
本发明既提供封装好的完整算法集,对数据文件进行直接检测,同时也提供单种算法的api,对单条数据进行特定种类型隐私信息的检测。本发明支持多种平台的直接调用,具有较好的易用性和可移植性。
本发明中使用的部分匹配算法采用双数组trie树,基于现有的手机号码前缀、银行卡号前缀、身份证号前缀等信息,在匹配过程中自动根据数据满足的条件将其划分为更加细粒度的类别(例如:所属银行、号码所属地等),在一定程度上提高了识别的准确性,减少漏报的同时也降低误报的可能性。关于人名地名等中文数据的识别则依靠现有的中文分词与词性标注模型,并通过自主设计的匹配算法提高了识别的精确度。
本发明所设计的数据隐私信息检测系统采用松耦合的设计模式,可以轻松实现代码的移植和复用。对于部分大数据平台而言,通过部署隐私信息检测系统可以在用户上传或使用数据之前对其内部是否存在隐私信息进行检测,以减少数据集中隐私信息的比例。对于多数社交网络平台而言,则可以通过使用该系统对其用户公开数据的隐私性进行分析,及时给出应对措施。同时,通过后续的分析与开发,隐私信息检测系统还可以拓展为针对某些领域(例如:医学、教育、商业等)的工具,具有良好的应用前景和发展前景。
附图说明
图1为数据隐私信息检测系统的功能结构图。
图2为系统总体流程图。
图3为数据预处理模块具体流程图。
图4为数据隐私检测模块的uml类图。
图5为数据文本分析模块应用示例。
图6为数据检测结果生成模块具体流程图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
数据隐私信息检测系统主要面向大数据平台和社交类应用。其中大数据平台上的数据拥有者和数据使用者可以主动使用数据隐私检测系统对个人数据进行预检测,以减少隐私信息泄露的风险,同时大数据平台也可以通过使用隐私数据检测系统进行批量的检测和管理,防止其提供的数据集中出现未被保护的隐私信息,从而在满足国家法律要求的前提下收集数据;对于社交类应用,则可以通过对用户公开的数据资源进行扫描以确定用户的隐私信息是否在不经意间被泄露,并及时提示先关用户,以保障其隐私安全。
在本发明实施例中,系统的功能结构图如图1所示。由图1可见,本系统分为四个模块:数据预处理模块、隐私检测模块、文本分析模块和检测结果生成模块。系统的输入为多种格式的数据集文件,输出为包含文本、图像信息的数据集隐私信息检测报告。系统中的每个模块独立完成其任务,并规定了模块之间传递信息的固定方式,因此每个模块都可以单独作为工具类进行使用。
一、系统整体流程设计说明
图2展示了系统实现功能的整体流程,实线标注的为系统的核心内容,图中的箭头方向表示数据的流通方向。数据以文件形式输入系统,使用者可以通过灵活的配置对系统的整体逻辑进行设计,其中包括是否需要文本处理(enabletext)、是否需要文本分析(enablecontext)、需要检测的目标对象(enableperson、enableemail)等。图中实线箭头指示的流程表示不需要进行文本处理和分析的情况,虚线箭头指示流程为处理文本数据的情况。系统默认执行实线标注流程,除非使用者在配置信息中指定输入数据中包含中文文本。文本处理模块主要负责中文分词和词性标注,文本分析模块依靠上个模块的检测结果对检测目标上下文中的关键词和其他隐私数据进行统计,匹配现有的隐私信息常见组合模式,从而提高检测结果的准确性。最终,算法检测出的隐私信息以及定位都会传输到最后一个模块来生成隐私信息检测报告,其中包含各隐私信息种类及比例,具体内容,隐私信息的泄露程度等。
二、数据预处理模块设计说明
数据预处理主要实现了:根据数据集文件类型对不同类别的数据进行格式化处理,去除空值,乱码,在每行数据前添加唯一标识符作为数据定位的索引,为预处理前原文件和预处理后的文件创建并维护映射关系,从而在检测预处理文件时能够快速定位到数据在原文件中的位置。
对于系统实现的匹配算法,当前的检测方式是一次针对一条数据,即格式化数据中由英文逗号间隔的一个字符串,或文本数据处理后的一个独立的单词或句子,单条数据应该满足上文中九种隐私信息的基本格式要求:全为数字或由英文、数字加英文符号组成,或者全部为文本内容。通过收集北京、上海和深圳开放数据平台的几千个数据资源,汇总得到了公开数据的主要存在形式,分为以下几类:格式数据,多以xlsx、xls、csv等文件类型存储,数据遵循一定的格式约束,具有相同的结构和属性;文本数据,多以txt、doc、docx、pdf等文件类型存储,数据以自然语言和表格、图形的组合形式表示,往往不存在规律。根据文件格式出现比例,系统仅支持频率较高的xls、xlsx、csv、txt以及pdf文件,但其他格式的文件如:doc、docx、xml以及html等也可以根据具体需求进行扩展。由于模块之间相互独立,因此后续的模块不会因为输入文件格式不同而受到影响。检测模型需要对不同来源的数据进行处理,系统将需要预处理的数据格式分为两种:
结构化数据,多以csv,xlsx,xls等文件类型存储;
非结构化数据,多以pdf,txt等文件类型存储。
首先,通过使用文件读取工具对不同种类的数据进行格式转换:对于结构化数据,可以将其全部转化为csv格式;对于非结构化数据,可以通过先转换为txt格式,对内容分割后再转为csv文件格式来完成。生成的预处理文件中的结构化和非结构化数据以英文“,”间隔,并分行进行存储。除此之外,预处理后的文件中会在每一行的开始处添加行数标识,便于在对数据进行检测时快速定位其所在位置。预处理阶段的流程如图3所示。
三、隐私检测模块设计说明
隐私检测模块主要实现了:同时对多种隐私信息进行检测,记录检测到的隐私信息类别、内容、上下文以及在预处理文件中的位置信息,并将其传送到文本分析模块进行更精确的隐私数据筛选,或传送到检测结果生成模块形成最终的检测报告。
目前需要进行匹配的隐私信息包含:人名、生日、身份证号、家庭住址、电话号码、银行卡号、电子邮箱、ip地址和mac地址,这些数据通过一些规则组合后可以唯一标识某一个体,属于个人隐私的范围,因此除特殊情况(例如公司法人信息)之外不应该被公开于互联网中。上述隐私检测依靠正则表达式,双数组trie树构造的本地词典,以及hanlp的中文分词与词性标注模型为主要工具,借助现有模型的高效性,将每种匹配类型封装为一个工具类,通过对这些工具类的调用来实现数据的检测。
图4展示了数据隐私检测模块的uml类图(局部),对于文本数据,首先需要经过分词、词性标注,最后通过各种命名实体识别算法完成隐私数据的检测;对于非文本数据例如手机、邮箱的识别,则可以直接调用底层的识别算法完成。图中仅展示了地址、人名和电话识别的类,除此之外的六种实体同样对应六个类来分别进行匹配;对于人名、地址、电话、身份证号和银行卡号的识别则应用了双数组trie树存储词典,提升了匹配效率。
四、文本分析模块设计说明
文本分析模块主要实现了:对隐私检测模块获取到的隐私信息上下文进行关键词匹配,以提高检测内容的准确性;同时对出现的隐私信息组合进行基于规则的匹配,以进一步满足法律规定隐私数据的要求。
文本分析模块会获取到隐私信息的内容、类别以及其所在的上下文,上下文长度可以自由调整,默认以隐私信息所在以及前后共三个句子的长度作为其上下文信息。对于关键词匹配,每种类别的隐私信息都会有其独特的关键词,这些内容主要来自于对现有检测到隐私信息的数据集的统计分析,例如检测到是电话号码的字符串上下文中出现“电话”、“联系”等关键词时,这串数字是电话号码的可能性更高。对于规则匹配,由于单条隐私信息出现在文本中构成的隐私泄露风险远小于多条隐私信息组合出现的情况,因此文本分析模块会对集中出现隐私信息的文本进行规则匹配,以确定隐私泄露的风险;这些规则同样来自于对现有数据集的统计。
图5展示了文本分析模块的一个应用示例:对于检测到单条人名的情况,系统不对其进行关键词检测和其他操作,这是因为在互联网公开的数据集中,独立的人名出现造成的隐私泄露风险远小于在其他特殊环境,例如病历中,因此只有当人名与其他隐私信息组合在一起时,其隐私泄露的风险才会更高;对于其他类别的隐私数据,系统会对其关键词进行匹配,如图中红色标注,未匹配到关键词的情况将被系统忽视;当一段指定长度的文本中同时出现多类隐私信息(样例3),系统会基于现有的规则库对其进行匹配,满足匹配规则的将被记录并最终传送到检测结果生成模块。
五、检测结果生成模块设计说明
检测结果生成模块主要实现了:根据隐私数据检测模块或文本分析模块获取的隐私信息类型、数据内容及其在预处理文件中的定位,确定其在原文件中的具体位置,并生成包含隐私信息类别、比例、内容、泄露程度和对数据集进行修改建议的数据隐私信息报告。
隐私数据检测模块在检测到隐私数据时将会获取数据所在的位置信息,在当前版本,我们为每一行数据添加行数信息的标识,来快速定位隐私数据在原文件中的位置。如图6所示,在检测过程中,会维护已检测出的隐私信息,用一个消息队列进行存储,数据检测模块会向该队列中写入检测到的隐私数据类别以及其所在位置;与此同时,数据快照模块将会读取队列的更新内容,获取对应的隐私数据及其具体位置,并生成相应的隐私信息检测报告(例如图中的result.txt)。在隐私报告中将会显示原文件的元数据信息,隐私数据泄露程度、隐私信息所占比例,以及其中出现的所有隐私数据类别、具体内容和其在原文件中的位置。通过这种报告形式来帮助分析者快速定位文件中的隐私信息并采取相应措施。