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

专利信息
申请号: 201710426179.0 申请日: 2017-06-08
公开(公告)号: CN107220180B 公开(公告)日: 2020-08-04
发明(设计)人: 屈鸿;杨林川;涂强;张书州;王淼;颜志鹏;王一鸣 申请(专利权)人: 电子科技大学
主分类号: G06F11/36 分类号: G06F11/36;G06F16/35;G06N3/08
代理公司: 成都弘毅天承知识产权代理有限公司 51230 代理人: 徐金琼;刘东
地址: 611731 四川省成*** 国省代码: 四川;51
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 神经网络 语言 模型 代码 分类 方法
【权利要求书】:

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

步骤1:将代码转换为AST树;

步骤2:初始化AST树结点ci的向量vec(ci),所述结点ci中非叶子结点pk的向量为vec(pk)1,所述非叶子结点pk的孩子结点tx的向量为vec(tx),其中vec(pk)1∈vec(ci),vec(tx)∈vec(ci),其中i表示结点的序号,k表示非叶子结点的序号,x表示孩子结点的序号;

步骤3:利用所述孩子结点tx的向量vec(tx),得到所述非叶子结点pk的重构向量vec(pk)2

步骤4:利用AST_Node2Vec模型对所述结点向量vec(ci)进行学习,若不满足循环条件,则更新结点向量vec(ci),跳转到步骤3;若满足循环条件,则输出更新了结点向量vec(ci)的AST树和更新后的非叶子结点pk的重构向量vec(pk)2

利用AST_Node2Vec模型对所述结点向量vec(ci)进行学习的步骤如下:

S401:计算非叶子结点pk的向量vec(pk)1和重构向量vec(pk)2之间的差异值,计算公式如下为:

S402:对AST树中的结点进行负采样,得到Y个训练样例和Y个由训练样例产生的负样例,训练样例与负样例的损失函数的计算公式如下:

其中,d(y)表示第y个训练样例的差异值,表示第y个负样例的差异值,Δ表示设定的训练样例与负样例之间间距的最小值;

S403:对AST_Node2Vec模型的参数进行正则化,得到的目标函数公式如下:

其中,M表示矩阵Wl和Wr中元素的个数且λ表示为了平衡编码误差和正则化项的超参数;

S404:对所述目标函数使用随机梯度下降算法,使模型的参数得到调整,其中参数的更新公式如下:

其中,vec(ci)j表示结点向量vec(ci)中的元素,表示矩阵Wr中的元素,表示矩阵Wl中的元素,j表示维度;

步骤5:将更新了结点向量vec(ci)的AST树和更新后的非叶子结点pk的重构向量vec(pk)2作为基于树的卷积神经网络的输入,利用基于树的卷积神经网络完成对代码的分类。

2.根据权利要求1所述的一种基于神经网络语言模型的代码分类方法,其特征在于:所述步骤2中,AST树的结点向量vec(ci)的初始化的方法为给所述AST树中的结点分别分配一个随机值向量。

3.根据权利要求1所述的一种基于神经网络语言模型的代码分类方法,其特征在于:所述步骤3中,非叶子结点pk的重构向量vec(pk)2的计算步骤如下:

其中,n表示结点的个数,b表示大小为的偏置项;lx表示孩子结点的权重,a代表孩子结点下的叶子数,e代表非叶子结点pk下的叶子数;Wx表示孩子结点与非叶子结点pk间的连接矩阵且Nf表示向量的维度,Wl、Wr为参数矩阵。

4.根据权利要求1所述的一种基于神经网络语言模型的代码分类方法,其特征在于:利用所述基于树的卷积神经网络完成对代码的分类的具体步骤如下:

S501:将更新了结点向量vec(ci)的AST树和更新后的非叶子结点pk的重构向量vec(pk)2作为基于树的卷积神经网络中编码层的输入,利用所述非叶子结点pk的向量vec(pk)1和重构向量vec(pk)2计算非叶子结点pk的线性组合向量vec(pk),计算公式如下:

vec(pk)=Wcomb1·vec(pk)1+Wcomb2·vec(pk)2

其中,Wcomb1表示非叶子结点pk的向量vec(pk)l的权重,Wcomb2表示重构向量vec(pk)2的权重;

S502:将所述非叶子结点pk的向量vec(pk)1替换为所述线性组合向量vec(pk),其余叶子结点的向量不变,得到更新后的AST树;

S503:利用卷积层对更新后的AST树进行处理,即使特征探测器在AST树进行滑动,得到特征探测器输出H,计算公式如下:

其中,和均表示参数矩阵,表示的系数,表示的系数,表示的系数;depthi表示结点ci在窗口中的深度,depth表示窗口的深度;pti表示结点ci在所有兄弟结点中的位置,u表示结点ci的兄弟结点的个数;

S504:将卷积层输出的AST树输入到池化层进行处理;

S505:将池化层处理后的AST树输入到隐藏层进行处理;

S506:将隐藏层处理后的结果输入到输出层中,输出分类的结果。

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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