[发明专利]一种基于树形神经网络的代码推荐方法有效
| 申请号: | 202010185481.3 | 申请日: | 2020-03-17 |
| 公开(公告)号: | CN111459491B | 公开(公告)日: | 2021-11-05 |
| 发明(设计)人: | 陶传奇;林锴;黄志球 | 申请(专利权)人: | 南京航空航天大学 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41;G06N3/04;G06N3/08 |
| 代理公司: | 江苏圣典律师事务所 32237 | 代理人: | 贺翔 |
| 地址: | 210016 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 树形 神经网络 代码 推荐 方法 | ||
1.一种基于树形神经网络的代码推荐方法,其特征在于,包括步骤如下:
步骤1)对由代码块构成的数据集进行预处理,随机从代码块中选取待推荐代码行,以待推荐代码行序列作为标签,待推荐代码行上文代码及其相关注释信息作为属性构建训练集;
步骤2)对训练集中每个样本的待推荐代码行上文代码部分进行处理,将其解析成抽象语法树,提取根节点到待推荐代码行的路径信息,并调整抽象语法树和样本的注释信息;
步骤3)训练由transformer模型改进得到的AST-Transformer模型,将抽象语法树、注释信息以及根节点到推荐点的路径信息作为输入,推荐代码行序列作为输出;
步骤4)提取用户已编写代码及其相关注释信息,利用上述步骤3)中得到的训练好的AST-transformer模型结合beam search搜索算法来预测下一行可能的代码;
所述步骤1)具体包括:
11)从数据集中过滤掉所有行数小于等于5行的代码块;
12)对代码进行词法分析形成词序列,计算代码块之间的相似度检测重复代码,并将重复的代码去除;
13)从代码块中随机选取一行作为待推荐代码行,待推荐代码行上文代码以及和待推荐代码行相关的注释信息作为输入特征,以上文代码,注释信息,待推荐代码行三元组形式作为一个样本构造训练集;
所述步骤2)具体包括:
21)对步骤13)得到的待推荐代码行上文代码解析形成抽象语法树,利用驼峰检测和子词嵌入的方式将每一个节点值表示成向量形式,得到向量表征的抽象语法树;
22)对训练集中每个样本对应的注释信息,使用word2vec词嵌入方式将每个词表示成向量形式,得到注释信息对应的向量序列;
23)从步骤21)中的抽象语法树中提取得到根节点到待推荐代码行的路径信息;
所述步骤3)中的AST-Transformer模型具体包括:
31)AST-Transformer编码器部分,其包含两部分,一个是树形编码器接收上述步骤21)得到的向量表征的抽象语法树;一个是普通编码器使用注释信息对应的向量序列作为输入;
32)AST-Transformer解码器部分,其包含两个子层:注释解码器子层以注释信息对应编码器输出的两种线性变换作为key和value,query则由解码器已得到的输出得到;抽象语法树对应的编码器子层以树型编码器输出的两种线性变换作为key和value,以注释解码器子层的输出作为query;AST-Transformer还以根节点到推荐点的向量表示作为解码器部分的第一个输入。
2.根据权利要求1所述的基于树形神经网络的代码推荐方法,其特征在于,所述步骤4)具体包括:
41)选取用户已编写的信息作为上文代码信息,利用步骤2)和步骤31)方法得到向量形式的抽象语法树;若当前位置上一行为注释,则选取该注释为注释信息;若当前位置对应的函数存在注释,则以该注释作为注释信息,利用步骤32)方法得到向量序列;
42)以步骤41)得到的向量形式的抽象语法树和向量序列作为已训练的AST-Transformer的输入,通过beam search搜索算法得到推荐的代码行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010185481.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:硬件木马检测与定位方法及系统
- 下一篇:一种无人机实时轨迹预测方法





