【技术实现步骤摘要】
基于多重源码表示和循环神经网络的代码注释生成方法
[0001]本专利技术属于代码注释生成的
,具体涉及一种基于多重源码表示和循环神经网络的代码注释生成方法,主要用于为用户输入的源代码片段生成对应的注释。
技术介绍
[0002]在软件工程领域,软件人员面对数目众多的大规模软件和复杂系统需要快速、准确地读懂代码,高效地完成软件变更和维护等任务。代码注释可以帮助开发和维护人员更快地读懂源代码,更好地理解代码背后的设计思想和代码的行为,大大节省开发人员和维护人员的宝贵时间,提高工作效率。鉴于此,代码注释在整个软件声明周期中起着非常重要的作用。
[0003]手工编写注释代价高、效率低,因此人们试图利用计算机自动地为代码生产注释。近年来,基于神经网络的代码注释技术成为自动代码注释研究的主流技术和软件工程领域的研究热点。目前,自动代码注释生成的准确性不高是急需解决的技术问题。
技术实现思路
[0004]本专利技术要解决的技术问题是提供一种基于多重源码表示和循环神经网络的代码注释生成方法,提高代码注释生成的准确 ...
【技术保护点】
【技术特征摘要】
1.一种基于多重源码表示和循环神经网络的代码注释生成方法,其特征在于,包括如下步骤:S1、收集Java代码注释对,构建语料库;S2、在序列化处理层,将语料库中的源代码转换为token序列、SBT序列和API序列;S3、在编码器层,使用双向GRU作为编码器,为token序列、SBT序列和API序列分别构建codeseq编码器、SBTseq编码器和APIseq编码器,学习源代码不同级别的信息;S4、在解码器层,使用单向GRU构建解码器,并利用teacher forcing策略训练模型;S5、在codeseq编码器、SBTseq编码器和APIseq编码器中的每个编码器后添加注意力层,将三个编码器输入和解码器输入的注意力矩阵链接起来并用一个全连接层学习如何组合每个输入的代码,最终输出代码注释。2.根据权利要求1所述的基于多重源码表示和循环神经网络的代码注释生成方法,其特征在于,步骤S1包括如下步骤:S1.1、在GitHub搜索并下载5颗star以上的开源项目,收集Java方法及其JavaDoc注释对;S1.2、删除不含有JavaDoc注释的Java方法并选择JavaDoc注释的首句话作为Java方法对应的注释;S1.3、过滤掉所有行数小于5行的Java代码及其注释对,并删除重复Java代码片段,构建语料库。3.根据权利要求1所述的基于多重源码表示和循环神经网络的代码注释生成方法,其特征在于,步骤S2包括如下步骤:S2.1、将Java代码的词元转换为token序列;S2.2、利用Eclipse JDK工具获得源代码的对应的AST(Abstract Syntax Tree),然后利用SBT算法来生成AST的遍历SBT序列;S2.3、利用Deep API方法提取源代码对应的API序列。4.根据权利要求1所述的基于多重源码表示和循环神经网络的代码注释生成方法,其特征在于,步骤S3包括的步骤为:在构建编码器层时使用联合编码器形式,将token序列、...
【专利技术属性】
技术研发人员:文万志,支宝,胡晨,楚加卫,王晨宇,陈义,祁佳篁,王楚越,胡彬,
申请(专利权)人:南通大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。