本技术涉及数据处理和自然语言处理的深度学习领域,尤其涉及一种基于nlp进行敏感数据增强的深度学习方法及装置。
背景技术:
1、随着信息技术的爆发式发展,大数据时代的到来,数据的重要程度越发受到重视,其中对于敏感数据的有效梳理已经成为当前数据研究的重中之重。对于任何企业,涉及隐私的敏感数据都需要一种行之有效的识别方法,探查出其分布状况,对其实现对其有效管理和保护。
2、现有的敏感数据识别技术,大致可分为如下两类:
3、基于数据格式匹配的方法:
4、基于关键字进行匹配的方法:根据定义的关键字直接进行匹配,其有关键字难以全面概括,定义简单等多种问题。
5、基于规则进行匹配的方法:使用正则表达式等规则对数据进行匹配,其同样地难以全面概括,定义灵活性差。
6、基于机器学习的方法:
7、基于统计机器学习的方法:利用数据中的统计分布信息,使用机器学习算法,对数据中的知识进行学习。其需要较大数量的高质量训练数据,善于捕捉结构化信息,其泛化能力不足,算法较难实现自我调整。
8、基于神经深度学习的方法:利用神经网络的优化能力,使用深度学习对数据中的只进行学习,其十分依赖于较大数量的高质量的训练数据,但是其具有较好的泛化能力,善于捕捉数据内部的隐式联系,可以通过持续学习对模型参数不断优化迭代,此外引入预训练模型的方法,其表现较为突出。
技术实现思路
1、以下将对本发明的实施例给出详细的说明。尽管本发明将结合一些具体实施方式进行阐述和说明,但需要注意的是本发明并不仅仅只局限于这些实施方式。相反,对本发明进行的修改或者等同替换,均应涵盖在本发明的权利要求范围当中。
2、另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员将理解,没有这些具体细节,本发明同样可以实施。
3、本提案要解决的技术问题:
4、基于以上对于现有技术方案的总结,综合考虑上述各种技术方案的优缺点,可以看出基于数据格式匹配的方法,对于数据的依赖性较低,但是模型表现较差;基于数据知识的方法,高度依赖于高质量的训练数据,但是其表现较好,本提案提出一种方法,在现有的深度学习模型的基础上,可以利用数据格式匹配方法创建大量的伪标记数据,也可以利用语言的组合性进一步实现实现数据增强,为模型提供大量的额外监督信号。此外,提出将基于神经深度学习的方法和基于统计机器学习方法相融合,实现对于数据中语义和结构充分利用。
5、为了实现上述目的本发明采用以下技术手段:
6、一种基于nlp进行敏感数据增强的深度学习方法,包括以下步骤:
7、步骤1: 获取包括至少一种敏感信息实例以及其对应的标签的原始标记训练数据;
8、步骤2:引入大量的无标注训练数据,即引入没有标记信息的敏感信息实例;
9、步骤3: 通过数据格式匹配获得敏感信息实例伪标记数据;
10、步骤4:利用语言的组合性,将原始标记训练数据集和伪标记数据进行进一步的组合,获得组合增强数据;
11、步骤5:搭建和加载机器学习模型;
12、步骤6: 机器学习模型训练过程中引入原始训练数据集、 伪标记数据集以及组合增强数据,直至模型收敛。
13、上述技术方案中,敏感信息包括姓名、地址、身份证号。
14、上述技术方案中,步骤3具体包括以下几个步骤:
15、步骤3.1: 根据训练数据包含的敏感信息类型,获取基于数据格式匹配的函数列表,函数列表为正则表达式等字符串匹配函数;
16、步骤3.2: 根据设计的函数列表,对无标注数据的每一个条目进行识别,得到伪的标注结果;
17、步骤3.3: 对于无标注数据进行全域的识别,如果存在得到相关敏感信息类别结果,则返回对应识别得到的敏感类型,否则执行步骤3.4;
18、步骤3.4: 对输入的无标注数据进行中文、英文和数字的分割,将数据分割为英文和数字、中文两部分数据,对于不同类型的数据段使用不同类型的匹配函数进行识别;对于英文数字段使用英文数字相结合的相关的所有匹配函数逐个对当前数据段识别,如果存在函数匹配成功,返回函数对应的敏感数据类型,作为识别结果,否则继续;对于中文数据段使用中文相关的所有匹配函数逐个对当前数据段进行识别,如果存在函数匹配成功,返回函数对应的敏感数据类型,否则执行步骤3.5;
19、步骤3.5: 对于输入的无标注数据进行英数的分割,将数据分割为数字、英文的数据部分,对于不同类型的数据使用不同类型相关的匹配函数进行识别;对于数字段使用数字相关的匹配函数逐个对当前数据段进行识别,如果存在函数匹配成功,返回函数对应的敏感数据类型,作为识别结果,否则继续;对于英文段使用英文相关的匹配函数逐个对当前数据段进行识别,如果存在函数匹配成功,返回函数对应的敏感数据类型,作为识别结果,否则继续,否则执行步骤3.6;
20、步骤3.6:所有匹配函数无法正确匹配当前无标注数据,将当前输入的无标注数据,标识为非敏感数据类型;
21、步骤3.7: 最终得到带有伪标注的数据。
22、上述技术方案中,步骤4具体包括以下几个步骤:
23、步骤4.1:对所有带有标注的数据,按照标注信息中敏感数据类型进行分类,敏感数据类型相同的数据归类为一个类,得到带有标注的敏感数据类型分类集合,即标注数据中每一个敏感数据类型对应一个数据集合;
24、步骤4.2: 对所有带有伪标注的数据,按照伪标注信息中敏感数据类型进行分类,敏感数据类型相同的数据归类为一个类,得到带有伪标注的敏感数据类型分类集合,即伪标注数据中每一个敏感数据类型对应一个数据集合;
25、步骤4.3: 依据敏感数据类型,将步骤3.1人工设计的基于格式匹配的函数列表进行分类,对应相同的敏感数据类型匹配函数为一类,得到不同的匹配函数集合;
26、步骤4.4:对于步骤4.1得到的带有标注的敏感数据类型的集合进行遍历,进行集合内的组合实现增强,对于一个敏感数据类型对应的数据集合,使用步骤4.3得到的对应的敏感数据类型的函数,对样本进行逐个解析,将每条数据样本,按照基于数据格式匹配的函数进行子成分划分,其子成分划分依据来自于匹配函数中的不同子成分匹配函数,依据不同的子匹配函数进行子成分的子成分识别,得到带有标注的数据中对应子成分及其子成分类型;
27、步骤4.5: 将得到的带有标注数据中对应子成分,按照子成分类型进行子成分的集合归纳,每个敏感数据类型中的每一个子成分类型,得到一个对应的子成分数据段集合;对于一条标注数据,首先依据离散分布概率进行采样,选择将要替换的子成分,之后在子成分集合中进行采样,替换得到组合性扩增的样本,其敏感数据类型为当前数据的敏感数据类型;
28、步骤4.6: 对于带有伪标注的同等敏感数据类型的集合进行遍历,收集其子成分集合,对于一个敏感数据类型集合,使用对应的敏感数据类型的函数,对样本进行逐个解析,将每条数据样本,按照基于数据格式匹配的函数进行子成分划分,其子成分划分依据来自于匹配函数中的不同子匹配函数,依据不同的子匹配函数进行子成分的子成分标识,得到带有伪标注的数据中对应子成分及其子成分类型;
29、步骤4.7: 将得到的带有伪标注数据中对应子成分,按照子成分类型进行子成分的集合归纳,之后利用此子成分集合对标注数据进行增强,对于一条标注数据,首先依据离散分布概率进行采样,选择将要替换的子成分,之后在伪标注子成分集合中进行采样,替换得到组合性扩增的样本,其敏感数据类型为当前数据的敏感数据类型;
30、步骤4.8: 得到组合增强的数据。
31、上述技术方案中,步骤5具体包括以下几个步骤:
32、步骤5.1: 搭建基于transformer神经网络结构的bert模型编码器,用于将离散的数据编码到隐空间中;
33、步骤5.2: 加载预训练的模型参数;
34、步骤5.2: 搭建条件随机场模型crf,用于结构化建模;
35、步骤5.3:使用线性层构建敏感类别分类器,实现将隐状态映射到离散的类别;
36、步骤5.4: 对于线性层进行参数的初始化,得到机器学习模型。
37、上述技术方案中,步骤6主要包含如下几个步骤:
38、步骤6.1: 对于模型输入数据进行token级别的切分,使用相关的分词器将输入的数据样本切分为token级别的粒度;
39、步骤6.2: 将token级别的表示,通过预训练模型词典转换为token id,得到输入数据的token id;
40、步骤6.3: 将句子的token id,转换为通过bert的embedding函数得到整个每个词对应的embedding表示;
41、步骤6.4:将输入数据的embedding表示,输入到bert的编码器中,得到当前输入数据的隐状态。
42、步骤6.5: 将得到的隐状态通过均值池化处理,得到整个句子级别的表示,之后输入到分类器中,计算其与真实标签的交叉熵,得到识别分类损失。
43、步骤6.5: 将隐状态通过crf进行结构化建模,输出每个位置对应的发射状态概率,计算其与真实标签的交叉熵,得到token级别的是被识别分类损失。
44、本发明还提供了一种基于nlp进行敏感数据增强的深度学习装置,包括以下模块:
45、数据获取模块: 获取包括至少一种敏感信息实例以及其对应的标签的原始标记训练数据;
46、无标注训练数据模块:引入大量的无标注训练数据,即引入没有标记信息的敏感信息实例;
47、伪标记模块: 通过数据格式匹配获得敏感信息实例伪标记数据;
48、增强数据模块:利用语言的组合性,将原始标记训练数据集和伪标记数据进行进一步的组合,获得组合增强数据;
49、模型搭建模块:搭建和加载机器学习模型;
50、训练模块: 机器学习模型训练过程中引入原始训练数据集、 伪标记数据集以及组合增强数据,直至模型收敛。
51、上述装置中,敏感信息包括姓名、地址、身份证号。
52、上述装置中,伪标记模块实现具体包括以下几个步骤:
53、步骤3.1: 根据训练数据包含的敏感信息类型,获取基于数据格式匹配的函数列表,函数列表为正则表达式字符串匹配函数;
54、步骤3.2: 根据设计的函数列表,对无标注数据的每一个条目进行识别,得到伪的标注结果;
55、步骤3.3: 对于无标注数据进行全域的识别,如果存在得到相关敏感信息类别结果,则返回对应识别得到的敏感类型,否则执行步骤3.4;
56、步骤3.4: 对输入的无标注数据进行中文、英文和数字的分割,将数据分割为英文和数字、中文两部分数据,对于不同类型的数据段使用不同类型的匹配函数进行识别;对于英文数字段使用英文数字相结合的相关的所有匹配函数逐个对当前数据段识别,如果存在函数匹配成功,返回函数对应的敏感数据类型,作为识别结果,否则继续;对于中文数据段使用中文相关的所有匹配函数逐个对当前数据段进行识别,如果存在函数匹配成功,返回函数对应的敏感数据类型,否则执行步骤3.5;
57、步骤3.5: 对于输入的无标注数据进行英数的分割,将数据分割为数字、英文的数据部分,对于不同类型的数据使用不同类型相关的匹配函数进行识别;对于数字段使用数字相关的匹配函数逐个对当前数据段进行识别,如果存在函数匹配成功,返回函数对应的敏感数据类型,作为识别结果,否则继续;对于英文段使用英文相关的匹配函数逐个对当前数据段进行识别,如果存在函数匹配成功,返回函数对应的敏感数据类型,作为识别结果,否则继续,否则执行步骤3.6;
58、步骤3.6:所有匹配函数无法正确匹配当前无标注数据,将当前输入的无标注数据,标识为非敏感数据类型;
59、步骤3.7: 最终得到带有伪标注的数据。
60、上述装置中,增强数据模块具体包括以下几个步骤:
61、步骤4.1:对所有带有标注的数据,按照标注信息中敏感数据类型进行分类,敏感数据类型相同的数据归类为一个类,得到带有标注的敏感数据类型分类集合,即标注数据中每一个敏感数据类型对应一个数据集合;
62、步骤4.2: 对所有带有伪标注的数据,按照伪标注信息中敏感数据类型进行分类,敏感数据类型相同的数据归类为一个类,得到带有伪标注的敏感数据类型分类集合,即伪标注数据中每一个敏感数据类型对应一个数据集合;
63、步骤4.3: 依据敏感数据类型,将步骤3.1人工设计的基于格式匹配的函数列表进行分类,对应相同的敏感数据类型匹配函数为一类,得到不同的匹配函数集合;
64、步骤4.4:对于一个敏感数据类型对应的数据集合,使用步骤4.3得到的对应的敏感数据类型的函数,对样本进行逐个解析,将每条数据样本,按照基于数据格式匹配的函数进行子成分划分,其子成分划分依据来自于匹配函数中的不同子成分匹配函数,依据不同的子匹配函数进行子成分的子成分识别,得到带有标注的数据中对应子成分及其子成分类型;
65、步骤4.5: 将得到的带有标注数据中对应子成分,按照子成分类型进行子成分的集合归纳,每个敏感数据类型中的每一个子成分类型,得到一个对应的子成分数据段集合;对于一条标注数据,首先依据离散分布概率进行采样,选择将要替换的子成分,之后在子成分集合中进行采样,替换得到组合性扩增的样本,其敏感数据类型为当前数据的敏感数据类型;
66、步骤4.6: 对于带有伪标注的同等敏感数据类型的集合进行遍历,收集其子成分集合,对于一个敏感数据类型集合,使用对应的敏感数据类型的函数,对样本进行逐个解析,将每条数据样本,按照基于数据格式匹配的函数进行子成分划分,其子成分划分依据来自于匹配函数中的不同子匹配函数,依据不同的子匹配函数进行子成分的子成分标识,得到带有伪标注的数据中对应子成分及其子成分类型;
67、步骤4.7: 将得到的带有伪标注数据中对应子成分,按照子成分类型进行子成分的集合归纳,之后利用此子成分集合对标注数据进行增强,对于一条标注数据,首先依据离散分布概率进行采样,选择将要替换的子成分,之后在伪标注子成分集合中进行采样,替换得到组合性扩增的样本,其敏感数据类型为当前数据的敏感数据类型;
68、步骤4.8: 得到组合增强的数据。
69、上述装置中,模型搭建模块具体包括以下几个步骤:
70、步骤5.1: 搭建基于transformer神经网络结构的bert模型编码器,用于将离散的数据编码到隐空间中;
71、步骤5.2: 加载预训练的模型参数;
72、步骤5.2: 搭建条件随机场模型crf,用于结构化建模;
73、步骤5.3:使用线性层构建敏感类别分类器,实现将隐状态映射到离散的类别;
74、步骤5.4: 对于线性层进行参数的初始化,得到机器学习模型。
75、上述装置中,训练模块主要包含如下几个步骤:
76、步骤6.1: 对于模型输入数据进行token级别的切分,使用相关的分词器将输入的数据样本切分为token级别的粒度;
77、步骤6.2: 将token级别的表示,通过预训练模型词典转换为token id,得到输入数据的token id;
78、步骤6.3: 将句子的token id,转换为通过bert的embedding函数得到整个每个词对应的embedding表示;
79、步骤6.4:将输入数据的embedding表示,输入到bert的编码器中,得到当前输入数据的隐状态;
80、步骤6.5: 将得到的隐状态通过均值池化处理,得到整个句子级别的表示,之后输入到分类器中,计算其与真实标签的交叉熵,得到识别分类损失;
81、步骤6.5: 将隐状态通过crf进行结构化建模,输出每个位置对应的发射状态概率,计算其与真实标签的交叉熵,得到token级别的是被识别分类损失。
82、本发明因为采用上述技术方案,因此具备以下有益效果:
83、引入了大量的无标注数据,实现了数据增强:利用基于匹配方法在数据资源较少时的优异表现的特点,通过基于已有标注数据,设计匹配函数,实现对于无标注数据的引入,提供了伪标注数据,增强了模型对于训练数据分布外的数据的泛化能力。
84、通过组合性实现了,实现了标注数据和伪标注数据的组合数据增强,提供了置信度更高的数据增强:利用数据自身的组合性,使用设计的匹配函数,对其子成分进行提取,在保留子成分分布不变的同时,通过使用标注数据和伪标注数据的子成分的替换,实现了进一步的数据增强,且增强的样本具有较高的置信度,进一步增强了模型对于数据中知识的泛化能力。
85、通过多任务训练的方式引入了token级别损失,辅助句子级别的敏感数据识别:在进行模型训练的时候,引入了token级别的识别分类损失,通过利用token级别和句子级别的类别一致性,辅助敏感数据识别的主体任务。
86、同时进行了结构化和语义级别信息建模:在机器学习模型中,使用了基于transformer结构的预训练模型,实现了对于语义级别的编码,此外对于token级别的序列的建模过程中,使用了crf进行结构化信息的捕捉,从多维度实现主体任务的训练。