[发明专利]一种基于联合嵌入模型的代码推荐方法在审
申请号: | 202110251408.6 | 申请日: | 2021-03-08 |
公开(公告)号: | CN112860879A | 公开(公告)日: | 2021-05-28 |
发明(设计)人: | 文万志;王仕强;王楚越;周杰;郭逸飞;赵甜;程实 | 申请(专利权)人: | 南通大学 |
主分类号: | G06F16/335 | 分类号: | G06F16/335;G06F16/31;G06F8/71 |
代理公司: | 北京科家知识产权代理事务所(普通合伙) 11427 | 代理人: | 宫建华 |
地址: | 226019 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 联合 嵌入 模型 代码 推荐 方法 | ||
1.一种基于联合嵌入模型的代码推荐方法,其特征在于,包括如下步骤:
S1、从GitHub帖子的评论中提取对问题的补充性问题;
S2、将问题,补充性问题用来训练sequence-to-sequence模型,并保存为问题提升模型;
S3、从GitHub上收集带有注释的Java开源项目数据集,并对其预处理;
S4、建立联合嵌入模型,将数据集进行向量化处理;
S5、从GitHub中收集至少有20个stars的Java开源项目来构建代码库,然后将所有的代码段嵌入到向量中;
S6、将查询问题输入到问题提升模型中,然后将得到的结果输入到联合嵌入模型中进行向量化;
S7、计算查询问题的向量和代码向量的相似度得分来推荐Top-k代码段。
2.根据权利要求1所述的基于联合嵌入模型的代码推荐方法,其特征在于,步骤S1中,所述补充性问题的定义为:在一篇文章的评论中的问题,该问题是给定帖子的缺失信息,从GitHub帖子的评论中提取对问题的补充性问题。
3.根据权利要求1所述的基于联合嵌入模型的代码推荐方法,其特征在于,步骤S2中,sequence-to-sequence模型的主流是编码器-解码器架构,编码器是一个两层双向LSTM网络,解码器是一个单层LSTM网络,在训练时,解码器将前一个词嵌入向量和前一个状态作为输入,并将其连接生成LSTM网络输入。
4.根据权利要求1所述的基于联合嵌入模型的代码推荐方法,其特征在于,步骤S3的具体步骤为:首先注释选取第一句话,在收集了注释代码片段的语料库之后,提取方法名、API序列、token和注释元组,其中,
方法名提取:对于每个Java方法,提取它的名称并将其解析为tokens序列;
API序列提取:使用Eclipse JDT编译器解析AST并遍历AST来提取API序列,API序列如下所示:对于每个构造函数调用new C(),生成C.new并将其添加到API序列中;对于每个方法调用o.m(),其中o是类C的一个实例,生成C.m并将其附加到API序列;对于while(s1){s2;}这样的循环语句,生成一个序列a1-a2,其中a1和a2分别是从语句s1和s2中提取的API序列;
token提取:要从Java方法提取tokens,要标记化方法体,使用camel case分类每个token并删除重复的token,同时删除停止词和Java关键词;
注释提取:使用Eclipse JDT编译器从Java方法解析AST,并从AST提取JavaDoc注释。
5.根据权利要求1所述的基于联合嵌入模型的代码推荐方法,其特征在于,步骤S4包括如下步骤:
S4.1、建立联合嵌入模型:联合嵌入,将异构数据联合嵌入/关联到统一向量空间,使得语义上相似的概念在相同的空间附近占据;
S4.2、训练联合嵌入模型:使用大量带有文档注释的Java方法段作为训练语料库,在训练时,将每个训练实例构造为C,D+,D-:对于每个代码片段C,有一个正确描述D+,和一个错误描述D-,每训练一组C,D+,D-,都会预测C,D+,C,D-的余弦相似性并最小化theranking loss,目的就是让代码片段与其正确描述之间的余弦相似性上升,而代码片段与其错误描述之间的余弦相似性下降。
6.根据权利要求5所述的基于联合嵌入模型的代码推荐方法,其特征在于,所述联合嵌入模型分为三个部分:
(1)将源代码嵌入向量的代码嵌入网络:提取源代码方法名、API序列和token三个方面的信息,每一个单独嵌入成向量,然后组合成一个表示整个代码的向量;
(2)描述嵌入网络:使用RNN将自然语言描述嵌入到向量中;
(3)衡量代码和描述之间的相似度。
7.根据权利要求1所述的基于联合嵌入模型的代码推荐方法,其特征在于,步骤S5的具体步骤为:从GitHub中收集至少有20个stars的Java开源项目来构建代码库,然后通过联合嵌入模型以离线的方式将代码库中的所有代码段嵌入到向量中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南通大学,未经南通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110251408.6/1.html,转载请声明来源钻瓜专利网。