[发明专利]一种基于神经网络语言模型的重复代码检测方法有效

专利信息
申请号: 201710464437.4 申请日: 2017-06-19
公开(公告)号: CN107273294B 公开(公告)日: 2020-07-28
发明(设计)人: 屈鸿;符明晟;涂强;刘洋军;张亦洲;王一文;高榕;陈珊 申请(专利权)人: 电子科技大学
主分类号: G06F11/36 分类号: G06F11/36;G06N3/02
代理公司: 成都弘毅天承知识产权代理有限公司 51230 代理人: 徐金琼;刘东
地址: 611731 四川省成*** 国省代码: 四川;51
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 神经网络 语言 模型 重复 代码 检测 方法
【权利要求书】:

1.一种基于神经网络语言模型的重复代码检测方法,其特征在于,包括以下步骤:

步骤1:将所有的代码中的每个代码转换为相应的CFG图;

步骤2:抽取每个CFG图中每一个结点的根子图;

步骤3:将所有根子图采用向量表示;

步骤4:将根子图的向量表示输入到深度图核函数中学习,得到所有CFG图两两间的相似度;

步骤5:将CFG图两两间的相似度输入到AP关联聚类算法中进行CFG图的聚类得到多个聚类簇,在同一个聚类簇中的CFG图所对应的代码即为重复代码;

所述步骤2的步骤如下:

步骤21:给定CFG图中每一个结点v要抽取的根子图的度d,若d=0,表示并不需要抽取根子图,否则转到步骤22;

步骤22:利用广度优先搜索算法获得结点v的所有邻居结点;

步骤23:对于结点v的每一个邻居结点v'n,获取其度为d-1的邻居子图,并将邻居子图保存在一个列表中,其中,d度邻居子图指的是与结点v距离为d的结点所构成的子图,与根节点距离为d的结点并不需要都出现在根节点的d度邻居子图中,即根节点的d度邻居子图可以有多个;

步骤24:获取结点v的度为d-1的邻居子图,将其与中相同的邻居子图进行连接,即得到了所需要的根子图

所述步骤3的步骤如下:

步骤31:利用随机值为所有的根子图初始化一个向量表示

步骤32:利用改进的Skip Gram模型对根子图的初始化向量表示进行更新,输出所有根子图最终的向量表示具体步骤如下:

步骤321:将结点为v的d度邻居子图的上下文sgcont定义为:以结点v的邻居结点为根节点,由所有邻居结点的度为d-1,d,d+1的邻居子图所构成的集合;

步骤322:使用固定长度的滑动窗口技术,在根子图的辐射状上下文进行滑动,进行固定长度选取;

步骤323:将Skip Gram模型中不同窗口间的投影层与输出层间的权值设置为共享,将步骤322选取的一固定长度上下文输入到Skip Gram模型中进行学习,得到本次循环的向量表示;

步骤324:若达到给定的循环终止次数,则停止循环,输出所有根子图的最终向量表示否则跳转到步骤322,执行下一次循环。

2.根据权利要求1所述的一种基于神经网络语言模型的重复代码检测方法,其特征在于:所述步骤323的具体步骤为:

步骤3231:将输入层中输入的上下文输入到投影层中,投影层是一个恒等投影,并不需要对输入层数据做任何处理;

步骤3232:将投影层的数据通过目标函数调整后输入到输出层中,输出层对应一棵二叉树,它是以根子图集合中出现过的根子图当叶子结点,以根子图在所有根子图中出现的次数当权值构造出来的Huffman树,再由输出层输出本次循环的向量表示;目标函数通常取为:给定v结点的根子图的初始化向量表示最大化初始化向量表示的上下文sgcont中每一个邻居子图的概率使用负采样方法来近似这一概率分布。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201710464437.4/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top