[发明专利]一种基于深度学习的克隆代码语义检测方法有效
申请号: | 202011205774.X | 申请日: | 2020-11-02 |
公开(公告)号: | CN112215013B | 公开(公告)日: | 2022-04-19 |
发明(设计)人: | 成肖云;王建荣;王赞;贾勇哲;马国宁 | 申请(专利权)人: | 天津大学;天津泰凡科技有限公司 |
主分类号: | G06F40/30 | 分类号: | G06F40/30;G06F40/284;G06N3/04 |
代理公司: | 天津市北洋有限责任专利代理事务所 12201 | 代理人: | 李素兰 |
地址: | 300072*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 深度 学习 克隆 代码 语义 检测 方法 | ||
1.一种基于深度学习的语义克隆检测方法,其特征在于,该方法具体包括以下流程:
步骤1、确定语义克隆检测任务中代码表示的TPE的基本单元,TPE的生成过程为:首先将输入语料库中的每个代码截断为Token序列,使用获得的Token初始化词汇表vocab包括对所有出现在语料库中的二元组Token进行合并,然后对当前语料库中的所有Token二元组进行统计,对二元组Token进行排序和标记,然后利用在语料库中迭代组合频率最高的Token来识别新的基本单元,并将新获得的单元添加到词汇表中,新生成的语料库由新添加的二元组Token组成,TPE将二元组Token视为新的Token,上述过程迭代地进行,通过不断地迭代查找频率更高的Token组合来更新词汇表;在获得最终的词汇表后,利用向后最大匹配方法,根据得到的词汇表将代码语句分割成TPE;
根据选取的语料库利用TPE算法得到不同语言的TPE的基本单元;
步骤2、建立适用于代码克隆检测的神经网络模型,利用Skip-Gram模型对步骤1获得的TPE的基本单元进行预训练,生成相应的TPE单元—词向量表示格式的词汇表;将词汇表中这一系列离散的序列,转换为连续的向量表示,实现并训练了一个标准的BiLSTM模型;将BiLSTM模型学习到的TPE的基本单元的向量表示放入一个矩阵中,乘以一个权重矩阵得到一个固定维度的向量,通过不断学习更新权重矩阵把握每个TPE的基本单元向量在整个句子中所占的权重,从而得到整个代码方法的向量表示;具体公式如下:
其中,v表示矢量参数,T表示矩阵的转置,向量中的每个元素代表每个序列节点的重要性,表示BiLSTM的隐层输出,st表示的显著性,at表示注意力权重t位置元素在整个序列的权重参数,hCODE表示最终的代码向量表示;j表示迭代参数,t表示当前位置;
步骤3、设计Siamese架构进行克隆对/非克隆对的分类检测,具体包括:给出两个代码块转换的两个向量作为输入,通过采用Skip-Gram模型进行预训练,得到每一个代码块的向量表示,再利用向量间欧几里得距离的计算方式计算两个输出向量距离的差异作为分类的特征,向量间欧几里得距离相近的为克隆对,由此获得了最终的克隆/非克隆预测。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津大学;天津泰凡科技有限公司,未经天津大学;天津泰凡科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011205774.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种农业机械翻土装置
- 下一篇:轴承滚子球基面分区研磨设备