机器学习、隐私代码确定方法、装置及电子设备与流程

文档序号:20700116发布日期:2020-05-12 15:34阅读:143来源:国知局
机器学习、隐私代码确定方法、装置及电子设备与流程

本申请涉及计算机技术领域,尤其涉及一种机器学习、隐私代码确定方法、装置及电子设备。



背景技术:

代码是计算机程序产品开发公司的重要资产,需要被重点保护,尤其是公司核心系统的隐私代码。但是,开发公司的代码种类繁多、数量较大,并且,还有可能包含不少非隐私代码,如开源代码和通用测试代码。因此,如果要进行代码的保护,首先要识别出哪些代码属于隐私代码,然后针对性的给予保护。

目前,先基于代码文件名进行初步筛选,然后再由人工查看代码中的相关内容,确定需要保护的隐私代码。显然这种确定方式效率低下。



技术实现要素:

本说明书实施例提供了一种机器学习、隐私代码确定方法、装置及电子设备,以解决相关技术确定隐私代码的方式效率低下的问题。

为解决上述技术问题,本说明书实施例是这样实现的:

第一方面,提出了一种用于确定隐私代码的机器学习方法,包括:

获取批量样本数据,其中,所述批量样本数据中包含正样本数据和负样本数据,正样本数据中包含隐私代码文件,负样本数据中不包含隐私代码文件;

基于代码文件的相似性度量参数,从所述样本数据中筛选出多个第一代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第二代码文件,其中,一个第一代码文件对应一个第二代码文件,且第一代码文件与对应的第二代码文件的相似程度满足预设条件;

基于所述多个第一代码文件和所述多个第二代码文件,确定所述样本数据对应的目标参数,其中,所述目标参数包括结构相似性参数和词向量参数中的至少一种,所述结构相似性参数表示所述多个第一代码文件形成的文件结构树与所述多个第二代码文件形成的文件结构树的相似性,所述词向量参数包括至少一个第一词向量和至少一个第二词向量,所述第一词向量为所述第一代码文件的路径中关键词的词向量,所述第二词向量为所述第二代码文件的路径中关键词的词向量;

将所述样本数据对应的目标参数及所述样本数据的标签作为输入,训练目标模型,所述目标模型用于确定待检测的一批代码文件与隐私代码文件的相似性度量参数。

第二方面,提出了一种基于机器学习的隐私代码确定方法,包括:

获取一批待检测代码文件;

基于代码文件的相似性度量参数,从所述一批待检测代码文件中筛选出多个第三代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第四代码文件,其中,一个第三代码文件对应一个第四代码文件,且第三代码文件与对应的第四代码文件的相似程度满足所述预设条件;

基于所述多个第三代码文件和所述多个第四代码文件,确定所述一批待检测代码文件对应的目标参数;

将所述一批待检测代码文件对应的目标参数输入目标模型,确定所述一批待检测代码文件与隐私代码文件的相似性度量参数,其中,所述目标模型由第一方面所述的机器学习方法训练得到;

基于所述一批待检测代码文件与隐私代码文件的相似性度量参数,确定所述一批待检测代码文件中是否存在隐私代码文件。

第三方面,提出了一种用于确定隐私代码的机器学习装置,包括:

第一获取模块,用于获取批量样本数据,其中,所述批量样本数据中包含正样本数据和负样本数据,正样本数据中包含隐私代码文件,负样本数据中不包含隐私代码文件;

第一筛选模块,用于基于代码文件的相似性度量参数,从所述样本数据中筛选出多个第一代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第二代码文件,其中,一个第一代码文件对应一个第二代码文件,且第一代码文件与对应的第二代码文件的相似程度满足预设条件;

第一确定模块,用于基于所述多个第一代码文件和所述多个第二代码文件,确定所述样本数据对应的目标参数,其中,所述目标参数包括结构相似性参数和词向量参数中的至少一种,所述结构相似性参数表示所述多个第一代码文件形成的文件结构树与所述多个第二代码文件形成的文件结构树的相似性,所述词向量参数包括至少一个第一词向量和至少一个第二词向量,所述第一词向量为所述第一代码文件的路径中关键词的词向量,所述第二词向量为所述第二代码文件的路径中关键词的词向量;

训练模块,用于将所述样本数据对应的目标参数及所述样本数据的标签作为输入,训练目标模型,所述目标模型用于确定待检测的一批代码文件与隐私代码文件的相似性度量参数。

第四方面,提出了一种基于机器学习的隐私代码确定装置,包括:

获取模块,用于获取一批待检测代码文件;

筛选模块,用于基于代码文件的相似性度量参数,从所述一批待检测代码文件中筛选出多个第三代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第四代码文件,其中,一个第三代码文件对应一个第四代码文件,且第三代码文件与对应的第四代码文件的相似程度满足所述预设条件;

第一参数确定模块,用于基于所述多个第三代码文件和所述多个第四代码文件,确定所述一批待检测代码文件对应的目标参数;

第二参数确定模块,用于将所述一批待检测代码文件对应的目标参数输入目标模型,确定所述一批待检测代码文件与隐私代码文件的相似性度量参数,其中,所述目标模型由第一方面所述的机器学习方法训练得到;

隐私代码确定模块,用于基于所述一批待检测代码文件与隐私代码文件的相似性度量参数,确定所述一批待检测代码文件中是否存在隐私代码文件。

第五方面,提出了一种电子设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:

获取批量样本数据,其中,所述批量样本数据中包含正样本数据和负样本数据,正样本数据中包含隐私代码文件,负样本数据中不包含隐私代码文件;

基于代码文件的相似性度量参数,从所述样本数据中筛选出多个第一代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第二代码文件,其中,一个第一代码文件对应一个第二代码文件,且第一代码文件与对应的第二代码文件的相似程度满足预设条件;

基于所述多个第一代码文件和所述多个第二代码文件,确定所述样本数据对应的目标参数,其中,所述目标参数包括结构相似性参数和词向量参数中的至少一种,所述结构相似性参数表示所述多个第一代码文件形成的文件结构树与所述多个第二代码文件形成的文件结构树的相似性,所述词向量参数包括至少一个第一词向量和至少一个第二词向量,所述第一词向量为所述第一代码文件的路径中关键词的词向量,所述第二词向量为所述第二代码文件的路径中关键词的词向量;

将所述样本数据对应的目标参数及所述样本数据的标签作为输入,训练目标模型,所述目标模型用于确定待检测的一批代码文件与隐私代码文件的相似性度量参数。

第六方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:

获取批量样本数据,其中,所述批量样本数据中包含正样本数据和负样本数据,正样本数据中包含隐私代码文件,负样本数据中不包含隐私代码文件;

基于代码文件的相似性度量参数,从所述样本数据中筛选出多个第一代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第二代码文件,其中,一个第一代码文件对应一个第二代码文件,且第一代码文件与对应的第二代码文件的相似程度满足预设条件;

基于所述多个第一代码文件和所述多个第二代码文件,确定所述样本数据对应的目标参数,其中,所述目标参数包括结构相似性参数和词向量参数中的至少一种,所述结构相似性参数表示所述多个第一代码文件形成的文件结构树与所述多个第二代码文件形成的文件结构树的相似性,所述词向量参数包括至少一个第一词向量和至少一个第二词向量,所述第一词向量为所述第一代码文件的路径中关键词的词向量,所述第二词向量为所述第二代码文件的路径中关键词的词向量;

将所述样本数据对应的目标参数及所述样本数据的标签作为输入,训练目标模型,所述目标模型用于确定待检测的一批代码文件与隐私代码文件的相似性度量参数。

第七方面,提出了一种电子设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:

获取一批待检测代码文件;

基于代码文件的相似性度量参数,从所述一批待检测代码文件中筛选出多个第三代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第四代码文件,其中,一个第三代码文件对应一个第四代码文件,且第三代码文件与对应的第四代码文件的相似程度满足所述预设条件;

基于所述多个第三代码文件和所述多个第四代码文件,确定所述一批待检测代码文件对应的目标参数;

将所述一批待检测代码文件对应的目标参数输入目标模型,确定所述一批待检测代码文件与隐私代码文件的相似性度量参数,其中,所述目标模型由第一方面所述的机器学习方法训练得到;

基于所述一批待检测代码文件与隐私代码文件的相似性度量参数,确定所述一批待检测代码文件中是否存在隐私代码文件。

第八面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:

获取一批待检测代码文件;

基于代码文件的相似性度量参数,从所述一批待检测代码文件中筛选出多个第三代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第四代码文件,其中,一个第三代码文件对应一个第四代码文件,且第三代码文件与对应的第四代码文件的相似程度满足所述预设条件;

基于所述多个第三代码文件和所述多个第四代码文件,确定所述一批待检测代码文件对应的目标参数;

将所述一批待检测代码文件对应的目标参数输入目标模型,确定所述一批待检测代码文件与隐私代码文件的相似性度量参数,其中,所述目标模型由第一方面所述的机器学习方法训练得到;

基于所述一批待检测代码文件与隐私代码文件的相似性度量参数,确定所述一批待检测代码文件中是否存在隐私代码文件。

由以上本说明书实施例提供的技术方案可见,本说明书实施例提供的方案至少具备如下一种技术效果:由于首先将代码文件作为普通文本来处理,通过比较代码文件的相似性度量参数的选取内容相近的、隐私标签已知的代码文件,这种方式速度快;其次,通过比较代码文件的结构相似性参数和词向量参数中的至少一种,从代码文件的目录结构和目录关键词中的至少一个角度来确定一批代码文件与隐私代码文件的相似性,这种方式相比于深入剖析代码结构来说,更轻量化、执行速度更快,可以更好地满足隐私代码文件批量外发场景中的实时检测要求。总之,通过本方法,可以极大地提升隐私代码的检测效率。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是本说明书实施例提供的一种用于确定隐私代码的机器学习方法的流程示意图之一。

图2是本说明书实施例提供的一种用于确定隐私代码的机器学习方法的流程示意图之二。

图3是本说明书实施例提供的一种用于确定隐私代码的机器学习方法的流程示意图之三。

图4是本说明书实施例提供的一种基于机器学习的隐私代码确定方法的流程示意图。

图5是本说明书实施例提供的一种电子设备的结构示意图。

图6是本说明书实施例提供的另一种电子设备的结构示意图。

图7是本说明书实施例提供的一种用于确定隐私代码的机器学习装置的结构示意图之一。

图8是本说明书实施例提供的一种用于确定隐私代码的机器学习装置的结构示意图之二。

图9是本说明书实施例提供的一种基于机器学习的隐私代码确定装置的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了解决相关技术确定隐私代码的方式效率低下的问题,本说明书实施例提供一种用于确定隐私代码的机器学习方法和装置,以及一种基于机器学习的隐私代码确定方法和装置。本说明书实施例提供的方法及装置可以由电子设备执行,例如终端设备或服务端设备。换言之,所述方法可以由安装在终端设备或服务端设备的软件或硬件来执行。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。所述终端设备包括但不限于:智能手机、个人电脑(personalcomputer,pc)、笔记本电脑、平板电脑、电子阅读器、网络电视、可穿戴设备等智能终端设备中的任一种。

在本说明书的实施例中,用于确定隐私代码的机器学习方法可以看作是目标模型的训练过程,基于机器学习的隐私代码确定方法可以看作是应用目标模型识别一批待检测代码文件中是否包含隐私代码的过程,下面分别进行说明。

首先对本说明书实施例提供的一种用于确定隐私代码的机器学习方法进行说明。

图1是本说明书的一个实施例提供的用于确定隐私代码的机器学习方法的实现流程示意图。如图1所示,该方法可以包括如下步骤。

步骤102、获取批量样本数据,其中,所述批量样本数据中包含正样本数据和负样本数据,正样本数据中包含隐私代码文件,负样本数据中不包含隐私代码文件。

具体而言,一个样本数据中可以包含一批代码文件,正样本数据包含的一批代码文件中存在隐私代码文件,负样本数据包含的一批代码文件中不存在隐私代码文件,且正样本数据和负样本数据都具有相应的标签。

隐私代码文件是指包含隐私代码的代码文件。非隐私代码文件是指不包含隐私代码的代码文件。隐私代码可以是代码所有者或开发者不愿意或不便于对外公开的代码,例如,对于一家计算机程序产品开发公司而言,其核心系统的代码承载着核心业务,可能属于隐私代码,不便于对外公开。

可以理解,在本说明书实施例中,一个样本数据中之所以包含一批代码文件而不是一个代码文件,是因为代码文件所有者(代码开发公司)常常会面对将一批代码文件打成一个压缩包进行外发(如发给另一家公司)的场景,这种场景往往潜伏着隐私代码被泄露而不自知的风险。

在具体实现时,可以设一个样本数据库,其中包含正样本数据和负样本数据,在从中获取批量批样本数据之前,可以先对该样本数据库进行清洗,以将其中重复、多余的代码删除,将缺失的代码补充完整。

步骤104、基于代码文件的相似性度量参数,从所述样本数据中筛选出多个第一代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第二代码文件,其中,一个第一代码文件对应一个第二代码文件,且第一代码文件与对应的第二代码文件的相似程度满足预设条件。

预设代码库中的代码文件的隐私性已知且具有相应的标签,当预设代码库中的代码文件为隐私文件时,它的隐私标签与正样本数据的标签一致,当预设代码库中的代码文件为非隐私文件时,它的隐私标签与负样本数据的标签一致。从样本数据中筛选出的一个第一代码文件对应从预设代码库中筛选出的一个第二代码文件,也即步骤104中筛选出的多个第一代码文件与多个第二代码文件一一对应,且第一代码文件与对应的第二代码文件的相似性程度满足预设条件。

作为一个例子,在步骤104中,对一个样本数据中的每一代码文件,可以通过比较相似性度量参数,从预设代码库中找到与该代码文件最相似的代码文件,当二者的相似程度大于或等于预设阈值时,可以将样本数据中的该代码文件作为第一代码文件,将预设代码库中与该代码文件最相似的代码文件作为对应的第二代码文件。也就是说,上述预设条件包括:与第一代码文件对应的第二代码文件是预设代码库中与该第一代码文件最相似的代码文件,且相似程度大于或等于预设阈值。当然,在其他例子中,上述预设条件可以不同,例如,上述预设条件可以包括:与第一代码文件对应的第二代码文件是预设代码库中与该第一代码文件最相似的代码文件,本说明书对此不作限制。

预设代码库中可以既包含隐私标签已知的隐私代码文件又可以包含隐私标签已知的非隐私代码文件。这样一来,在步骤104中,当样本数据为正样本时,可以将样本数据中的代码文件与预设代码库中的隐私代码文件进行比较,以筛选出多个第一代码文件及对应的多个第二代码文件;当样本数据为负样本时,可以将样本数据中的代码文件与预设代码库中的非隐私代码文件进行比较,以筛选出多个第一代码文件及对应的多个第二代码文件。或者,预设代码库可以包括两个子库,其中一个子库(可称为第一子库)中存储有隐私代码文件,另一子库(可称为第二子库)中存储有非隐私代码文件,此时,在步骤104中,当样本数据为正样本时,可以将样本数据中的代码文件与第一子库中的隐私代码文件进行比较,以筛选出多个第一代码文件及对应的多个第二代码文件;当样本数据为负样本时,可以将样本数据中的代码文件与第二子库中的非隐私代码文件进行比较,以筛选出多个第一代码文件及对应的多个第二代码文件。

当然,在步骤104之前,本说明书实施例提供机器学习方法还可以包括:确定所述样本数据和所述预设代码库中的代码文件的相似性度量参数。具体的,可以先确定出样本数据中的各代码文件的相似性度量参数,以及预设代码库中的各代码文件的相似性度量参数并存储。其中,一个代码文件的相似性度量参数可以是该代码文件的近似哈希(simhash)值,当然也可以是其他能够度量该代码文件的相似性的参数。

具体而言,可以对步骤101中获取批量样本数据中的各样本数据执行步骤104及下述步骤106,以确定出各样本数据对应的目标参数,从而可以在下述步骤108中,将所述批量样本数据中各样本数据对应的目标参数及样本数据的标签作为输入,训练目标模型。

可以理解,之所以将一个样本数据中的一批代码文件分别与预设代码库中的代码文件进行比较,是因为代码文件所有者(代码开发公司)常常存在从整体代码仓库中抽取部分代码(比如一个目录),以检测它们是否属于隐私代码的需求。所以需要拿局部代码去和整个代码库比较,具体比较代码的相似性、代码文件结构的相似性(子树的编辑距离)、以及代码文件的路径中关键词的语义相似性中的至少一个。其中,代码的相似性比较在步骤104中实现,代码文件的结构相似比较以及代码文件的路径中的关键词的语义相似性比较,将在下述步骤106中实现。

步骤106、基于所述多个第一代码文件和所述多个第二代码文件,确定所述样本数据对应的目标参数。

目标参数可以包括结构相似性参数和词向量参数中的至少一种。其中,结构相似性参数表示所述多个第一代码文件形成的文件结构树与所述多个第二代码文件形成的文件结构树的相似性。词向量参数包括至少一个第一词向量和至少一个第二词向量,所述第一词向量为所述第一代码文件的路径中的关键词的词向量,所述第二词向量为所述第二代码文件的路径中的关键词的词向量。

下面通过几种实施方式对目标参数的确定过程进行说明。

第一种实施方式

目标参数包括结构性相似参数,步骤106可以包括:基于所述多个第一代码文件的路径,构建第一文件结构树;基于所述多个第二代码文件的路径,构建第二文件结构树;基于所述第一文件结构树和所述第二文件结构树,确定所述样本数据对应的结构相似性参数。

可选地,在构建第一文件结构树和第二文件结构树之后,在确定这两个文件结构树的结构相似性参数之前,步骤106还可以包括:剪去所述第一文件结构树中的孤立节点,得到剩余节点构成的第一子树;剪去所述第二文件结构树中的孤立节点,得到剩余节点构成的第二子树;其中,孤立节点是指既不存在叶子结点也不存在父节点的节点,它是孤立存在的。在此基础上,在步骤106中,可以基于所述第一子树和所述第二子树,确定所述样本数据对应的结构相似性参数。

两棵树的结构相似性参数可以用两棵树的编辑距离表示。两棵树之间的编辑距离,是指从一棵树变换到另一棵树的最小操作量,这里的操作可以是插入节点、删除节点以及更改节点中的至少一种。因此,一个样本数据对应的结构相似性参数,可以是该样本数据对应的第一子树和第二子树之间的编辑距离。

应理解,对于一棵文件结构树而言,在删除其中的孤立节点之后,剩余的子树的数量可能是一个,也可能是多个,如果剩余的子树为多个,则在确定这棵文件结构树与另一棵文件结构树的编辑距离时,计算的是这棵文件结构树的所有剩余子树与另一棵文件结构树的所有子树之间的编辑距离。

第二种实施方式

目标参数包括词向量参数,步骤106可以包括:提取从样本数据中筛选出的所述多个第一代码文件的路径中的关键词;确定所述多个第一代码文件的路径中的关键词的词向量,得到至少一个第一词向量;提取从预设代码库中筛选出的所述多个第二代码文件的路径中的关键词;确定所述多个第二代码文件的路径中的关键词的词向量,得到至少一个第二词向量。

举例来说,对于一个项目(project)来说,它的一个代码文件的路径可能是:sofa-hessian/src/main/java/com/alipay/hessian/classnamefilter.java。这时候可以将sofa-hessian、hessian作为关键词提取出来。这两个关键词在其他项目的代码文件中出现的频率不高,因此可以很好地表征这个项目。

在上述第二种实施方式中,可以基于词频-逆文本频率指数算法(termfrequency-inversedocumentfrequency,tf-idf),提取所述多个第一代码文件和所述多个第二代码文件的路径中的关键词。以及,可以基于已知的、未来出现的新的词向量转换模型确定提取出的关键词的词向量(embedding)。其中,已知的词向量转换模型包括但不限于word2vec、bert和graph2vec中的任一种,word2vec可以包括连续词袋模型(continuousbag-of-wordsmodel,cbow)和skim-gram中的任一种。

第三种实施方式

目标参数包括结构相似性参数和词向量参数,不难理解,该实施方式是上述第一种实施方式和第二种实施方式的结合,具体内容可以参照上述两种实施方式,此处不做重复描述。

步骤108、将所述样本数据对应的目标参数及所述样本数据的标签作为输入,训练目标模型。

其中,目标模型用于确定待检测的一批代码文件与隐私代码文件的相似性度量参数。在一个例子中,该相似性度量参数越大,说明待检测的一批代码文件与隐私代码文件越相似,反之,待检测的一批代码文件与非隐私代码文件越相似。

在步骤108中,可以将所述批量样本数据中的各样本数据对应的目标参数及样本数据的标签作为输入,训练目标模型。目标模型具体可以是随机森林、xgboost等模型。

可以理解,当目标参数包括结构性相似参数时,训练出的目标模型,可以用于从结构相似性方面,确定待检测的一批代码文件与隐私代码文件的相似性度量参数;当目标参数包括词向量参数时,训练出的目标模型,可以用于从代码文件路径中的关键词的语义方面,确定待检测的一批代码文件与隐私代码文件的相似性度量参数;当目标参数既包括结构相似性参数又包括词向量参数时,则训练出的目标模型,可以用于从结构相似性和代码文件路径中的关键词的语义相似性两方面,确定待检测的一批代码文件与隐私代码文件的相似性度量参数。

本说明书实施例提供的机器学习方法,首先,将代码文件作为普通文本来处理,通过比较代码文件的相似性度量参数的选取内容相近的、隐私标签已知的代码文件,这种方式速度快、扩展性好,而且可以避免相关技术中针对每一类代码文件构建解析器进行解析时,可能造成的解析失败的问题;其次,通过比较代码文件的结构相似性参数和词向量参数中的至少一种,从代码文件的目录结构和目录关键词中的至少一个角度来确定一批代码文件与隐私代码文件的相似性,这种方式相比于深入剖析代码结构来说,更轻量化、执行速度更快,可以更好地满足隐私代码文件批量外发场景中的实时检测要求。总之,通过本方法,可以极大地提升隐私代码的检测效率。

此外,对于一些开源组件来说,其代码文件一般具有特定的目录结构,通过本机器学习方法,可以训练出能够针对性识别这类代码文件的目标模型,从而减少对开源代码产生的误识别,提高隐私代码检测的准确性和有效性。

图2通过一个更为详细的实施例,描述了本说明书提供的一种确定隐私代码的机器学习方法。在该实施例中,目标参数包括结构性相似参数和词向量参数。如图2所示,该方法可以包括如下步骤:

步骤211、对预设代码库进行清洗。

预设代码库中的代码文件的隐私性已知。

步骤212、确定预设代码库中的各代码文件的相似性度量参数。

步骤213、存储预设代码库中的各代码文件的相似性度量参数和路径。

步骤221、对样本数据库进行清洗,得到一批样本数据。然后,对各样本数据分别执行一次步骤222、步骤223、步骤224、步骤225、步骤226、步骤214、步骤215、步骤216、步骤217、步骤231和步骤232。

步骤222、确定样本数据中的代码文件的相似性度量参数。

步骤223、对比样本数据中的代码文件和预设代码库中的代码文件的相似性度量参数,以从该样本数据中筛选出多个第一代码文件。

步骤214、对比样本数据中的代码文件和预设代码库中的代码文件的相似性度量参数,以从预设代码库中筛选出对应的多个第二代码文件。

在步骤223和步骤214中,对于一个样本数据,其中的一个第一代码文件对应预设代码库中的一个第二代码文件,且第一代码文件与对应的第二代码文件的相似程度满足预设条件。

步骤215、提取样本数据对应的多个第二代码文件的路径中的关键词。

步骤216、确定样本数据对应的多个第二代码文件路径中的关键词的词向量。

步骤217、根据样本数据对应的多个第二代码文件的路径,构建第二文件结构树。

步骤224、根据样本数据对应的多个第一代码文件的路径,构建第一文件结构树。

步骤231、剪去第一文件结构树中的孤立节点,得到第一子树;剪去第二文件结构树中的孤立节点,得到第二子树。

步骤232、确定第一子树和第二子树的结构相似性参数。

步骤225、提取样本数据对应的多个第一代码文件的路径中的关键词。

步骤226、确定样本数据对应的多个第一代码文件路径中关键词的词向量。

最后,将步骤216得到的各样本数据对应的多个第二代码文件路径中关键词的词向量,步骤232中得到的各样本数据对应的结构相似性参数,步骤226中得到的各样本数据对应的多个第一代码文件路径中关键词的词向量,以及样本数据的标签作为输入,训练目标模型2。

本说明书实施例提供的机器学习方法,首先,将代码文件作为普通文本来处理,通过比较代码文件的相似性度量参数的选取内容相近的、隐私标签已知的代码文件,这种方式速度快、扩展性好;其次,通过比较代码文件的结构相似性参数和词向量参数,从代码文件的目录结构和目录关键词两个角度来确定一批代码文件与隐私代码文件的相似性,这种方式相比于深入剖析代码结构来说,更轻量化、执行速度更快,可以更好地满足隐私代码文件批量外发场景中的实时检测要求。总之,通过本方法,可以极大地提升隐私代码的检测效率。

可选地,如图3所示,本说明书实施例提供的一种用于确定隐私代码的机器学习方法,在训练得到目标模型之后,还可以包括如下步骤,以应用训练出的目标模型识别一批待检测代码文件中是否包含隐私代码。

步骤110、获取一批待检测代码文件。

这一批待检测代码文件即为待检测的、隐私性未知的一批代码文件。例如,代码开发公司打包后准备外发的一批代码文件。

步骤112、基于代码文件的相似性度量参数,从所述一批待检测代码文件中筛选出多个第三代码文件,并从所述预设代码库中筛选出多个第四代码文件,其中,一个第三代码文件对应一个第四代码文件,且第三代码文件与对应的第四代码文件的相似程度满足所述预设条件。

具体而言,对所述一批待检测代码文件中的各待检测代码文件,可以通过比较相似性度量参数,从预设代码库中找到与该待检代码文件最相似的代码文件,当二者的相似程度大于或等于预设阈值时,可以将该待检测代码文件作为第三代码文件,将预设代码库中与该待检代码文件最相似的代码文件作为对应的第四代码文件。

其中,一个代码文件的相似性度量参数可以是该代码文件的近似哈希值,当然也可以是其他能够度量该代码文件的相似性的参数。

步骤114、基于所述多个第三代码文件和所述多个第四代码文件,确定所述一批待检测代码文件对应的目标参数。

如前文所述,训练目标模型时所采用的样本数据对应的目标参数可以包括:结构相似性参数和词向量参数中的至少一种。

因此,当训练目标模型时所采用的样本数据对应的目标参数包括结构性相似参数时,所述一批待检测代码文件对应的目标参数包括目标结构性相似参数,其中,所述目标结构相似性参数表示所述多个第三代码文件形成的文件结构树与所述多个第四代码文件形成的文件结构树的相似性。当训练目标模型时所采用的样本数据对应的目标参数包括词向量参数时,所述一批待检测代码文件对应的目标参数包括目标词向量参数,其中,所述目标词向量参数包括至少一个第三词向量和至少一个第四词向量,所述第三词向量为所述第三代码文件的路径中的关键词的词向量,所述第四词向量为所述第四代码文件的路径中的关键词的词向量。下面通过几种实施方式对确定所述一批待检测代码文件对应的目标参数的过程进行说明。

第一种实施方式

如果训练目标模型时所采用的样本数据对应的目标参数包括结构性相似参数,则所述一批待检测代码文件对应的目标参数包括目标结构性相似参数,相应的,步骤114可以包括:基于所述多个第三代码文件的路径,构建第三文件结构树;基于所述多个第四代码文件的路径,构建第四文件结构树;基于所述第三文件结构树和所述第四文件结构树,确定所述一批待检测代码文件对应的目标结构相似性参数。

可选地,在构建完第三文件结构树和第四文件结构树之后,在确定所述一批待检测代码文件对应的目标结构相似性参数之前,步骤114还可以包括:剪去所述第三文件结构树中的孤立节点,得到剩余节点构成的第三子树;剪去所述第四文件结构树中的孤立节点,得到剩余节点构成的第四子树。相应的,基于所述第三子树和所述第四子树,确定所述一批待检测代码文件对应的目标结构相似性参数。

两棵树的结构相似性参数可以用两棵树的编辑距离表示。两棵树之间的编辑距离,是指从一棵树变换到另一棵树的最小操作量,这里的操作可以是插入节点、删除节点以及更改节点中的至少一种。因此,所述一批待检测代码文件对应的结构相似性参数,可以是这一批待检测代码文件对应的第三子树和第四子树之间的编辑距离。

第二种实施方式

如果训练目标模型时所采用的样本数据对应的目标参数包括词向量参数,则所述一批待检测代码文件对应的目标参数包括目标词向量参数,相应的,步骤114可以包括:提取所述多个第三代码文件的路径中的关键词;确定所述多个第三代码文件的路径中的关键词的词向量,得到至少一个所述第三词向量;提取所述多个第四代码文件的路径中的关键词;确定所述多个第四代码文件的路径中的关键词的词向量,得到至少一个所述第四词向量。

具体而言,可以基于tf-idf算法,提取所述多个第三代码文件的路径中的关键词,以及基于tf-idf算法,提取所述多个第四代码文件的路径中的关键词。可以基于词向量转换模型确定提取出的关键词的词向量(embedding)。其中,词向量转换模型包括但不限于word2vec、bert和graph2vec中的任一种,word2vec又可以包括cbow和skim-gram中的任一种。

第三种实施方式

如果训练目标模型时所采用的样本数据对应的目标参数包括结构相似性参数和词向量参数,则所述一批待检测代码文件对应的目标参数包括目标结构相似参数和目标词向量参数。不难理解,第三种实施方式是第一种和第二种实施方式的结合,目标结构相似参数和目标词向量参数具体确定方式请参照第一种实施方式和第二种实施方式,此处不再重复描述。

步骤116、将所述一批待检测代码文件对应的目标参数输入所述目标模型,确定所述一批待检测代码文件与隐私代码文件的相似性度量参数。

步骤118、基于所述一批待检测代码文件与隐私代码文件的相似性度量参数,确定所述一批待检测代码文件中是否存在隐私代码文件。

在一个例子中,该相似性度量参数越大,说明一批待检测代码文件与隐私代码文件越相似,反之,一批待检测代码文件与非隐私代码文件越相似。

本说明书实施例提供的机器学习方法,在训练出目标模型之后,可以进一步利用目标模型确定一批待检测代码文件中是否包含隐私代码文件。在该方法中,首先将待检测代码文件作为普通文本来处理,通过比较相似性度量参数选取与待检测代码文件内容相近的、隐私标签已知的代码文件,作为确定这批待检代码文件对应的目标参数的依据,这种方式速度快、扩展性好;其次,通过比较代码文件的结构相似性参数和词向量参数中的至少一种,以从代码文件的目录结构和目录关键词中的至少一个角度,确定一批待检测代码文件与隐私代码文件的相似性,这种方式相比于深入剖析代码结构来说,更轻量化、执行速度更快,可以更好地满足隐私代码文件批量外发场景中的实时检测要求。总之,通过本方法,可以极大地提升隐私代码的检测效率。

此外,对于一些开源组件来说,其代码文件一般具有特定的目录结构,通过本机器学习方法,可以更有针对性的识别这类代码文件,从而减少对开源代码产生的误识别,提高隐私代码检测的准确性和有效性。

下面对本说明书实施例提供的一种基于机器学习的隐私代码确定方法进行说明,该方法可以看作是对上文中通过机器学习得到的目标模型的应用。如图4所示,该方法可以包括如下步骤:

步骤402、获取一批待检测代码文件。

这一批待检测代码文件即为待检测的、隐私性未知的一批代码文件。例如,代码开发公司打包后准备外发的一批代码文件。

步骤404、基于代码文件的相似性度量参数,从所述一批待检测代码文件中筛选出多个第三代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第四代码文件,其中,一个第三代码文件对应一个第四代码文件,且第三代码文件与对应的第四代码文件的相似程度满足所述预设条件。

具体而言,对所述一批待检测代码文件中的各待检测代码文件,可以通过比较相似性度量参数,从预设代码库中找到与该待检测代码文件最相似的代码文件,当二者的相似程度大于或等于预设阈值时,可以将该待检测代码文件作为第三代码文件,将预设代码库中与该待检测代码文件最相似的代码文件作为对应的第四代码文件。

一个代码文件的相似性度量参数可以是该代码文件的近似哈希值,当然也可以是其他能够度量该代码文件的相似性的参数。

步骤406、基于所述多个第三代码文件和所述多个第四代码文件,确定所述一批待检测代码文件对应的目标参数。

如前文所述,训练目标模型时所采用的样本数据对应的目标参数可以包括:结构相似性参数和词向量参数中的至少一种。

因此,当训练目标模型时所采用的样本数据对应的目标参数包括结构性相似参数时,所述一批待检测代码文件对应的目标参数包括目标结构性相似参数,其中,所述目标结构相似性参数表示所述多个第三代码文件形成的文件结构树与所述多个第四代码文件形成的文件结构树的相似性。当训练目标模型时所采用的样本数据对应的目标参数包括词向量参数时,所述一批待检测代码文件对应的目标参数包括目标词向量参数,其中,所述目标词向量参数包括至少一个第三词向量和至少一个第四词向量,所述第三词向量为所述第三代码文件的路径中的关键词的词向量,所述第四词向量为所述第四代码文件的路径中的关键词的词向量。下面通过几种实施方式对确定所述一批待检测代码文件对应的目标参数的过程进行说明。

第一种实施方式

如果训练目标模型时所采用的样本数据对应的目标参数包括结构性相似参数,则所述一批待检测代码文件对应的目标参数包括目标结构性相似参数,相应的,步骤406可以包括:基于所述多个第三代码文件的路径,构建第三文件结构树;基于所述多个第四代码文件的路径,构建第四文件结构树;基于所述第三文件结构树和所述第四文件结构树,确定所述一批待检测代码文件对应的目标结构相似性参数。

可选地,在构建完第三文件结构树和第四文件结构树之后,在确定所述一批待检测代码文件对应的目标结构相似性参数之前,步骤406还可以包括:剪去所述第三文件结构树中的孤立节点,得到剩余节点构成的第三子树;剪去所述第四文件结构树中的孤立节点,得到剩余节点构成的第四子树。相应的,基于所述第三子树和所述第四子树,确定所述一批待检测代码文件对应的目标结构相似性参数。

第二种实施方式

如果训练目标模型时所采用的样本数据对应的目标参数包括词向量参数,相应的,则所述一批待检测代码文件对应的目标参数包括目标词向量参数,相应的步骤406可以包括:提取所述多个第三代码文件的路径中的关键词;确定所述多个第三代码文件的路径中的关键词的词向量,得到至少一个所述第三词向量;提取所述多个第四代码文件的路径中的关键词;确定所述多个第四代码文件的路径中的关键词的词向量,得到至少一个所述第四词向量。

具体而言,可以基于tf-idf算法,提取所述多个第三代码文件的路径中的关键词,以及基于tf-idf算法,提取所述多个第四代码文件的路径中的关键词。可以基于词向量转换模型确定提取出的关键词的词向量(embedding)。其中,词向量转换模型包括但不限于word2vec、bert和graph2vec中的任一种,word2vec又可以包括cbow和skim-gram中的任一种。

第三种实施方式

如果训练目标模型时所采用的样本数据对应的目标参数包括结构相似性参数和词向量参数,则所述一批待检测代码文件对应的目标参数包括目标结构相似参数和目标词向量参数。不难理解,第三种实施方式是第一种和第二种实施方式的结合,目标结构相似参数和目标词向量参数具体确定方式请参照第一种实施方式和第二种实施方式,此处不再重复描述。

步骤408、将所述一批待检测代码文件对应的目标参数输入目标模型,确定所述一批待检测代码文件与隐私代码文件的相似性度量参数。

其中,所述目标模型由本说明书实施例中的机器学习方法训练得到,具体训练过程请参照上文,此处做不做重复描述。

步骤410、基于所述一批待检测代码文件与隐私代码文件的相似性度量参数,确定所述一批待检测代码文件中是否存在隐私代码文件。

在一个例子中,该相似性度量参数越大,说明一批待检测代码文件与隐私代码文件越相似,反之,一批待检测代码文件与非隐私代码文件越相似。

本说明书实施例提供的基于机器学习的隐私代码确定方法,首先将待检测代码文件作为普通文本来处理,通过比较相似性度量参数选取与待检测代码文件内容相近的、隐私标签已知的代码文件,作为确定这批待检代码文件对应的目标参数的依据,这种方式速度快、扩展性好;其次,通过比较代码文件的结构相似性参数和词向量参数中的至少一种,以从代码文件的目录结构和目录关键词中的至少一个角度,确定一批待检测代码文件与隐私代码文件的相似性,这种方式相比于深入剖析代码结构来说,更轻量化、执行速度更快,可以更好地满足隐私代码文件批量外发场景中的实时检测要求。总之,通过本方法,可以极大地提升隐私代码的检测效率。

此外,对于一些开源组件来说,其代码文件一般具有特定的目录结构,通过本方法,可以更有针对性的识别这类代码文件,从而减少对开源代码产生的误识别,提高隐私代码检测的准确性和有效性。

以上是对本说明书提供的方法实施例的说明,下面对本说明书提供的电子设备进行介绍。

图5是本说明书的一个实施例提供的电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成基于机器学习的隐私代码确定装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

获取批量样本数据,其中,所述批量样本数据中包含正样本数据和负样本数据,正样本数据中包含隐私代码文件,负样本数据中不包含隐私代码文件;

基于代码文件的相似性度量参数,从所述样本数据中筛选出多个第一代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第二代码文件,其中,一个第一代码文件对应一个第二代码文件,且第一代码文件与对应的第二代码文件的相似程度满足预设条件;

基于所述多个第一代码文件和所述多个第二代码文件,确定所述样本数据对应的目标参数,其中,所述目标参数包括结构相似性参数和词向量参数中的至少一种,所述结构相似性参数表示所述多个第一代码文件形成的文件结构树与所述多个第二代码文件形成的文件结构树的相似性,所述词向量参数包括至少一个第一词向量和至少一个第二词向量,所述第一词向量为所述第一代码文件的路径中关键词的词向量,所述第二词向量为所述第二代码文件的路径中关键词的词向量;

将所述样本数据对应的目标参数及所述样本数据的标签作为输入,训练目标模型,所述目标模型用于确定待检测的一批代码文件与隐私代码文件的相似性度量参数。

上述如本说明书图1至图3任一附图所示实施例揭示的用于确定隐私代码的机器学习方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field—programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书一个或多个实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书一个或多个实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图1至图3中任一实施例提供的机器学习方法,本说明书在此不再赘述。

图6是本说明书的一个实施例提供的另一电子设备的结构示意图。该电子设备与图5所示的电子设备的区别在于,处理器,执行存储器所存放的程序,并具体用于执行以下操作:

获取一批待检测代码文件;

基于代码文件的相似性度量参数,从所述一批待检测代码文件中筛选出多个第三代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第四代码文件,其中,一个第三代码文件对应一个第四代码文件,且第三代码文件与对应的第四代码文件的相似程度满足所述预设条件;

基于所述多个第三代码文件和所述多个第四代码文件,确定所述一批待检测代码文件对应的目标参数;

将所述一批待检测代码文件对应的目标参数输入目标模型,确定所述一批待检测代码文件与隐私代码文件的相似性度量参数,其中,所述目标模型由本说明书实施例提供的机器学习方法训练得到;

基于所述一批待检测代码文件与隐私代码文件的相似性度量参数,确定所述一批待检测代码文件中是否存在隐私代码文件。

当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下操作:

获取批量样本数据,其中,所述批量样本数据中包含正样本数据和负样本数据,正样本数据中包含隐私代码文件,负样本数据中不包含隐私代码文件;

基于代码文件的相似性度量参数,从所述样本数据中筛选出多个第一代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第二代码文件,其中,一个第一代码文件对应一个第二代码文件,且第一代码文件与对应的第二代码文件的相似程度满足预设条件;

基于所述多个第一代码文件和所述多个第二代码文件,确定所述样本数据对应的目标参数,其中,所述目标参数包括结构相似性参数和词向量参数中的至少一种,所述结构相似性参数表示所述多个第一代码文件形成的文件结构树与所述多个第二代码文件形成的文件结构树的相似性,所述词向量参数包括至少一个第一词向量和至少一个第二词向量,所述第一词向量为所述第一代码文件的路径中关键词的词向量,所述第二词向量为所述第二代码文件的路径中关键词的词向量;

将所述样本数据对应的目标参数及所述样本数据的标签作为输入,训练目标模型,所述目标模型用于确定待检测的一批代码文件与隐私代码文件的相似性度量参数。

本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图4所示实施例的方法,并具体用于执行以下操作:

获取一批待检测代码文件;

基于代码文件的相似性度量参数,从所述一批待检测代码文件中筛选出多个第三代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第四代码文件,其中,一个第三代码文件对应一个第四代码文件,且第三代码文件与对应的第四代码文件的相似程度满足所述预设条件;

基于所述多个第三代码文件和所述多个第四代码文件,确定所述一批待检测代码文件对应的目标参数;

将所述一批待检测代码文件对应的目标参数输入目标模型,确定所述一批待检测代码文件与隐私代码文件的相似性度量参数,其中,所述目标模型由本说明书实施例提供的机器学习方法训练得到;

基于所述一批待检测代码文件与隐私代码文件的相似性度量参数,确定所述一批待检测代码文件中是否存在隐私代码文件。

下面对本说明书提供的基于机器学习的隐私代码确定装置进行说明。

如图7所示,本说明书的一个实施例提供了一种基于机器学习的隐私代码确定装置,在一种软件实施方式中,该基于机器学习的隐私代码确定装置700可包括:第一获取模块701、第一筛选模块702、第一确定模块703和训练模块704。

第一获取模块701,用于获取批量样本数据,其中,所述批量样本数据中包含正样本数据和负样本数据,正样本数据中包含隐私代码文件,负样本数据中不包含隐私代码文件。

第一筛选模块702,用于基于代码文件的相似性度量参数,从所述样本数据中筛选出多个第一代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第二代码文件。

预设代码库中的代码文件的隐私性标签已知,当预设代码库中的代码文件为隐私文件时,它的隐私标签与正样本数据的标签一致,当预设代码库中的代码文件为非隐私文件时,它的隐私标签与负样本数据的标签一致。从样本数据中筛选出的一个第一代码文件对应从预设代码库中筛选出的一个第二代码文件,也即步骤104中筛选出的多个第一代码文件与多个第二代码文件一一对应,且第一代码文件与对应的第二代码文件的相似性程度满足预设条件。

第一确定模块703,用于基于所述多个第一代码文件和所述多个第二代码文件,确定所述样本数据对应的目标参数。

目标参数可以包括结构相似性参数和词向量参数中的至少一种。其中,结构相似性参数表示所述多个第一代码文件形成的文件结构树与所述多个第二代码文件形成的文件结构树的相似性。词向量参数包括至少一个第一词向量和至少一个第二词向量,所述第一词向量为所述第一代码文件的路径中的关键词的词向量,所述第二词向量为所述第二代码文件的路径中的关键词的词向量。

第一种实施方式

目标参数包括结构性相似参数,第一确定模块703可用于:基于所述多个第一代码文件的路径,构建第一文件结构树;基于所述多个第二代码文件的路径,构建第二文件结构树;基于所述第一文件结构树和所述第二文件结构树,确定所述样本数据对应的结构相似性参数。

可选地,在构建第一文件结构树和第二文件结构树之后,在确定这两个文件结构树的结构相似性参数之前,第一确定模块703还可用于:剪去所述第一文件结构树中的孤立节点,得到剩余节点构成的第一子树;剪去所述第二文件结构树中的孤立节点,得到剩余节点构成的第二子树。在此基础上,在第一确定模块703中,可以基于所述第一子树和所述第二子树,确定所述样本数据对应的结构相似性参数。

第二种实施方式中

目标参数包括词向量参数,第一确定模块703可用于:提取从样本数据中筛选出的所述多个第一代码文件的路径中的关键词;确定所述多个第一代码文件的路径中的关键词的词向量,得到至少一个第一词向量;提取从预设代码库中筛选出的所述多个第二代码文件的路径中的关键词;确定所述多个第二代码文件的路径中的关键词的词向量,得到至少一个第二词向量。

第三种实施方式

目标参数包括结构相似性参数和词向量参数,不难理解,该实施方式是上述第一种实施方式和第二种实施方式的结合,具体内容可以参照上述两种实施方式,此处不做重复描述。

训练模块704,用于将所述样本数据对应的目标参数及所述样本数据的标签作为输入,训练目标模型;其中,目标模型用于确定待检测的一批代码文件与隐私代码文件的相似性度量参数。

图7所示的实施例提供的一种机器学习装置700,首先,将代码文件作为普通文本来处理,通过比较代码文件的相似性度量参数的选取内容相近的、隐私标签已知的代码文件,这种方式速度快、扩展性好,而且可以避免相关技术中针对每一类代码文件构建解析器进行解析时,可能造成的解析失败的问题;其次,通过比较代码文件的结构相似性参数和词向量参数中的至少一种,从代码文件的目录结构和目录关键词中的至少一个角度来确定一批代码文件与隐私代码文件的相似性,这种方式相比于深入剖析代码结构来说,更轻量化、执行速度更快,可以更好地满足隐私代码文件批量外发场景中的实时检测要求。总之,通过本方法,可以极大地提升隐私代码的检测效率。

需要说明的是,用于确定隐私代码的机器学习装置700能够实现图1的方法实施例的方法,具体可参考图1所示实施例的基于机器学习的隐私代码确定方法,不再赘述。

可选地,如图8所示,图7所示的装置700还可以包括:第二获取模块705、第二筛选模块706、第三确定模块707、第四确定模块708和隐私代码确定模块709。

第二获取模块705,用于获取一批待检测代码文件。

第二筛选模块706,用于基于代码文件的相似性度量参数,从所述一批待检测代码文件中筛选出多个第三代码文件,并从所述预设代码库中筛选出多个第四代码文件,其中,一个第三代码文件对应一个第四代码文件,且第三代码文件与对应的第四代码文件的相似程度满足所述预设条件。

第三确定模块707,用于基于所述多个第三代码文件和所述多个第四代码文件,确定所述一批待检测代码文件对应的目标参数。

如前文所述,训练目标模型时所采用的样本数据对应的目标参数可以包括:结构相似性参数和词向量参数中的至少一种。

因此,当训练目标模型时所采用的样本数据对应的目标参数包括结构性相似参数时,所述一批待检测代码文件对应的目标参数包括目标结构性相似参数,其中,所述目标结构相似性参数表示所述多个第三代码文件形成的文件结构树与所述多个第四代码文件形成的文件结构树的相似性。当训练目标模型时所采用的样本数据对应的目标参数包括词向量参数时,所述一批待检测代码文件对应的目标参数包括目标词向量参数,其中,所述目标词向量参数包括至少一个第三词向量和至少一个第四词向量,所述第三词向量为所述第三代码文件的路径中的关键词的词向量,所述第四词向量为所述第四代码文件的路径中的关键词的词向量。下面通过几种实施方式对确定所述一批待检测代码文件对应的目标参数的过程进行说明。

第一种实施方式

训练目标模型时所采用的样本数据对应的目标参数包括结构性相似参数,相应的,所述一批待检测代码文件对应的目标参数包括目标结构性相似参数,第三确定模块707具体可用于:基于所述多个第三代码文件的路径,构建第三文件结构树;基于所述多个第四代码文件的路径,构建第四文件结构树;基于所述第三文件结构树和所述第四文件结构树,确定所述一批待检测代码文件对应的目标结构相似性参数。

可选地,在构建完第三文件结构树和第四文件结构树之后,在确定所述一批待检测代码文件对应的目标结构相似性参数之前,第三确定模块707还可用于:剪去所述第三文件结构树中的孤立节点,得到剩余节点构成的第三子树;剪去所述第四文件结构树中的孤立节点,得到剩余节点构成的第四子树。相应的,第三确定模块707具体可用于:基于所述第三子树和所述第四子树,确定所述一批待检测代码文件对应的目标结构相似性参数。

第二种实施方式

训练目标模型时所采用的样本数据对应的目标参数包括词向量参数,相应的,所述一批待检测代码文件对应的目标参数包括目标词向量参数,第三确定模块707具体可用于:提取所述多个第三代码文件的路径中的关键词;确定所述多个第三代码文件的路径中的关键词的词向量,得到至少一个所述第三词向量;提取所述多个第四代码文件的路径中的关键词;确定所述多个第四代码文件的路径中的关键词的词向量,得到至少一个所述第四词向量。

第三种实施方式

训练目标模型时所采用的样本数据对应的目标参数包括结构相似性参数和词向量参数,相应的,所述一批待检测代码文件对应的目标参数包括目标结构相似参数和目标词向量参数。不难理解,第三种实施方式是第一种和第二种实施方式的结合,目标结构相似参数和目标词向量参数具体确定方式请参照第一种实施方式和第二种实施方式,此处不再重复描述。

第四确定模块708,用于将所述一批待检测代码文件对应的目标参数输入所述目标模型,确定所述一批待检测代码文件与隐私代码文件的相似性度量参数,其中,所述目标模型由图7所示的实施例提供的机器学习装置700训练得到。

隐私代码确定模块709,用于基于所述一批待检测代码文件与隐私代码文件的相似性度量参数,确定所述一批待检测代码文件中是否存在隐私代码文件。

在一个例子中,该相似性度量参数越大,说明一批待检测代码文件与隐私代码文件越相似,反之,一批待检测代码文件与非隐私代码文件越相似。

图8所示的实施例提供的机器学习装置700,在训练出目标模型之后,可以进一步利用目标模型确定一批待检测代码文件中是否包含隐私代码文件。在该方法中,首先将待检测代码文件作为普通文本来处理,通过比较相似性度量参数选取与待检测代码文件内容相近的、隐私标签已知的代码文件,作为确定这批待检代码文件对应的目标参数的依据,这种方式速度快、扩展性好;其次,通过比较代码文件的结构相似性参数和词向量参数中的至少一种,以从代码文件的目录结构和目录关键词中的至少一个角度,确定一批待检测代码文件与隐私代码文件的相似性,这种方式相比于深入剖析代码结构来说,更轻量化、执行速度更快,可以更好地满足隐私代码文件批量外发场景中的实时检测要求。总之,通过本方法,可以极大地提升隐私代码的检测效率。

如图9所示,本说明书实施例还提供了一种基于机器学习的隐私代码确定装置900,在一种软件实施方式中,装置900可以包括:获取模块901、筛选模块902、第一参数确定模块903、第二参数确定模块904和隐私代码确定模块905。

获取模块901,用于获取一批待检测代码文件。

筛选模块902,用于基于代码文件的相似性度量参数,从所述一批待检测代码文件中筛选出多个第三代码文件,并从代码文件的隐私标签已知的预设代码库中筛选出多个第四代码文件,其中,一个第三代码文件对应一个第四代码文件,且第三代码文件与对应的第四代码文件的相似程度满足所述预设条件。

第一参数确定模块903,用于基于所述多个第三代码文件和所述多个第四代码文件,确定所述一批待检测代码文件对应的目标参数。

如前文所述,训练目标模型时所采用的样本数据对应的目标参数可以包括:结构相似性参数和词向量参数中的至少一种。

因此,当训练目标模型时所采用的样本数据对应的目标参数包括结构性相似参数时,所述一批待检测代码文件对应的目标参数包括目标结构性相似参数,其中,所述目标结构相似性参数表示所述多个第三代码文件形成的文件结构树与所述多个第四代码文件形成的文件结构树的相似性。当训练目标模型时所采用的样本数据对应的目标参数包括词向量参数时,所述一批待检测代码文件对应的目标参数包括目标词向量参数,其中,所述目标词向量参数包括至少一个第三词向量和至少一个第四词向量,所述第三词向量为所述第三代码文件的路径中的关键词的词向量,所述第四词向量为所述第四代码文件的路径中的关键词的词向量。确定所述一批待检测代码文件对应的目标参数的过程请参照其他实施例,此处不再重复描述。

第二参数确定模块904,用于将将所述一批待检测代码文件对应的目标参数输入目标模型,确定所述一批待检测代码文件与隐私代码文件的相似性度量参数,其中,所述目标模型由本说明书实施例中的机器学习方法训练得到,具体训练过程请参照上文,此处做不做重复描述。

隐私代码确定模块905,用于基于所述一批待检测代码文件与隐私代码文件的相似性度量参数,确定所述一批待检测代码文件中是否存在隐私代码文件。

图9所示的实施例提供的一种基于机器学习的隐私代码确定装置,首先将待检测代码文件作为普通文本来处理,通过比较相似性度量参数选取与待检测代码文件内容相近的、隐私标签已知的代码文件,作为确定这批待检代码文件对应的目标参数的依据,这种方式速度快、扩展性好;其次,通过比较代码文件的结构相似性参数和词向量参数中的至少一种,以从代码文件的目录结构和目录关键词中的至少一个角度,确定一批待检测代码文件与隐私代码文件的相似性,这种方式相比于深入剖析代码结构来说,更轻量化、执行速度更快,可以更好地满足隐私代码文件批量外发场景中的实时检测要求。总之,通过本方法,可以极大地提升隐私代码的检测效率。

此外,对于一些开源组件来说,其代码文件一般具有特定的目录结构,通过本方法,可以更有针对性的识别这类代码文件,从而减少对开源代码产生的误识别,提高隐私代码检测的准确性和有效性。

需要说明的是,基于机器学习的隐私代码确定装置900能够实现图4的方法实施例的方法,具体可参考图4所示实施例的基于机器学习的隐私代码确定方法,不再赘述。

上述对本说明书特定实施例进行了描述,其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制时,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1