[发明专利]一种基于深度神经网络的代码片段推荐方法与装置有效
申请号: | 201911334527.7 | 申请日: | 2019-12-23 |
公开(公告)号: | CN111142850B | 公开(公告)日: | 2021-05-25 |
发明(设计)人: | 李伟湋;艾磊;邵宜超;黄志球 | 申请(专利权)人: | 南京航空航天大学 |
主分类号: | G06F8/20 | 分类号: | G06F8/20;G06F8/41;G06N3/04;G06N3/08 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 孟红梅 |
地址: | 210016 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 深度 神经网络 代码 片段 推荐 方法 装置 | ||
1.一种基于深度神经网络的代码推荐方法,其特征在于,包括如下步骤:
(1)从收集的代码片段中提取代码元素,并从注释文档中提取第一行作为描述信息,将代码元素与描述信息共同嵌入到向量空间中进行模型训练;所提取的代码元素包含方法名、参数与返回值、逻辑信息以及代码语句四个方面;
通过全连接层将方法名、参数与返回值、逻辑信息以及代码语句的嵌入向量串联,得到代码片段的向量表示;使用余弦相似度度量代码片段向量与描述向量的相似性;
模型训练时,将每个训练实例构造为三元组C,D+,D-:对于每个代码段C,都有一个正确的描述D+和的错误描述D-;在对C,D+,D-三元组进行训练时,模型预测C,D+和C,D-对的余弦相似度,并最大程度地降低排名损失:
其中θ表示模型参数,P表示训练数据集,ε表示常数余量;c,d+和d-分别是C,D+和D-的嵌入向量;
(2)对于用户希望从其搜索代码段的给定代码库,提取其中每个方法的代码元素,使用经过训练的模型计算代码向量;
(3)当用户查询到达时,计算出查询的向量表示,返回与查询向量接近的向量对应代码片段。
2.根据权利要求1所述的基于深度神经网络的代码推荐方法,其特征在于,所述代码元素中的参数与返回值的嵌入方法是:根据代码段中参数与返回值的类型及各类型对应的数量采取独热编码将其嵌入为向量,其中参数与返回值在嵌入过程中使用不同的向量维度,通过多层感知机MLP进行模型训练。
3.根据权利要求1所述的基于深度神经网络的代码推荐方法,其特征在于,所述代码元素中的逻辑信息的嵌入方法是:根据代码段中是否使用了循环,将其表示为不同的向量,通过多层感知机MLP进行模型训练。
4.根据权利要求1所述的基于深度神经网络的代码推荐方法,其特征在于,所述代码元素中方法名和代码语句采用独热编码嵌入为向量,通过循环神经网络BiLSTM进行模型训练。
5.根据权利要求4所述的基于深度神经网络的代码推荐方法,其特征在于,根据如下公式计算两个代码语句的相似度:
其中,LineSimilarity(CLi,CLj)表示代码语句CLi和CLj之间的相似度;qtn是第n的词牌Tokenn在CLi中出现的次数;tn是Tokenn出现在CLj中的次数;ql是CLi的长度;dl是CLj的长度;avgdl是代码数据库中代码语句的平均长度;N为CLi中词牌的总数量;b、k1、k2是调整因子;
当代码语句相似度高于给定阈值时可将代码语句视为相同,即嵌入为同样的向量。
6.一种基于深度神经网络的代码推荐装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述计算机程序被加载至处理器时实现根据权利要求1-5任一项所述的一种基于深度神经网络的代码推荐方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911334527.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种回火监控的方法及系统
- 下一篇:一种基于隐私数据进行模型训练的方法及系统