Page 224 - 《软件学报》2021年第7期
P. 224

软件学报 ISSN 1000-9825, CODEN RUXUEW                                       E-mail: jos@iscas.ac.cn
                 Journal of Software,2021,32(7):21422165 [doi: 10.13328/j.cnki.jos.006270]   http://www.jos.org.cn
                 ©中国科学院软件研究所版权所有.                                                         Tel: +86-10-62562563


                                                                       
                 基于指针生成网络的代码注释自动生成模型

                      1,2
                                                                 1,2
                                                1,2
                                                         3
                               1,2
                                        1,2
                 牛长安 ,   葛季栋 ,   唐   泽 ,   李传艺 ,   周   宇 ,   骆   斌
                 1
                 (计算机软件新技术国家重点实验室(南京大学),江苏  南京  210023)
                 2
                 (南京大学  软件学院,江苏  南京   210093)
                 3 (南京航空航天大学  计算机科学与技术学院,江苏  南京  211106)
                 通讯作者:  李传艺, E-mail: lcy@nju.edu.cn

                 摘   要:  代码注释在软件质量保障中发挥着重要的作用,它可以提升代码的可读性,使代码更易理解、重用和维
                 护.但是出于各种各样的原因,有时开发者并没有添加必要的注释,使得在软件维护的过程中,往往需要花费大量的
                 时间来理解代码,大大降低了软件维护的效率.近年来,多项工作利用机器学习技术自动生成代码注释,这些方法从
                 代码中提取出语义和结构化信息后,输入序列到序列的神经网络模型生成相应的注释,均取得了不错的效果.然而,
                 当前最好的代码注释生成模型 Hybrid-DeepCom 仍然存在两方面的不足.一是其在预处理时可能破坏代码结构导致
                 不同实例的输入信息不一致,使得模型学习效果欠佳;二是由于序列到序列模型的限制,其无法在注释中生成词库之
                 外的单词(out-of-vocabulary word,简称 OOV word).例如在源代码中出现次数极少的变量名、方法名等标识符通常
                 都为 OOV 词,缺少了它们,注释将难以理解.为解决上述问题,提出了一种新的代码注释生成模型 CodePtr.一方面,通
                 过添加完整的源代码编码器解决代码结构被破坏的问题;另一方面,引入指针生成网络(pointer-generator network)模
                 块,在解码的每一步实现生成词和复制词两种模式的自动切换,特别是遇到在输入中出现次数极少的标识符时模型
                 可以直接将其复制到输出中,以此解决无法生成 OOV 词的问题.最后,在大型数据集上通过实验对比了 CodePtr 和
                 Hybrid-DeepCom模型,结果表明,当词库大小为30 000时,CodePtr的各项翻译效果指标平均提升6%,同时,处理OOV
                 词的效果提升近 50%,充分说明了 CodePtr 模型的有效性.
                 关键词:  软件质量保障;代码注释生成;神经网络;out-of-vocabulary word;指针生成网络
                 中图法分类号: TP311


                 中文引用格式:  牛长安,葛季栋,唐泽,李传艺,周宇,骆斌.基于指针生成网络的代码注释自动生成模型.软件学报,2021,32(7):
                 21422165. http://www.jos.org.cn/1000-9825/6270.htm
                 英文引用格式: Niu CA, Ge JD, Tang Z, Li CY, Zhou Y, Luo B. Automatic generation of source code comments model based on
                 pointer-generator network. Ruan Jian Xue Bao/Journal of Software, 2021,32(7):21422165 (in Chinese). http://www.jos.org.cn/
                 1000-9825/6270.htm

                 Automatic Generation of Source Code Comments Model Based on Pointer-generator Network
                                                    1,2
                                         1,2
                            1,2
                                                                             3
                                                                  1,2
                 NIU Chang-An ,  GE Ji-Dong ,   TANG Ze ,   LI Chuan-Yi ,   ZHOU Yu ,   LUO Bin 1,2
                 1
                 (State Key Laboratory for Novel Software Technology (Nanjing University), Nanjing 210023, China)
                 2
                 (Software Institute, Nanjing University, Nanjing 210093, China)

                     基金项目:  国家自然科学基金(61802167, 61972197, 61802095);  江苏省自然科学基金(BK20201250);  华为-南京大学下一代
                 程序设计创新实验室合作协议子项目
                     Foundation item: National Natural Science Foundation of China (61802167, 61972197, 61802095); Natural Science Foundation of
                 Jiangsu Province, China (BK20201250); Cooperation Fund of Huawei-NJU Creative Laboratory for the Next Programming
                     本文由“面向非确定性的软件质量保障方法与技术”专题特约编辑陈俊洁副教授、汤恩义副教授、何啸副教授以及马晓星教
                 授推荐.
                     收稿时间: 2020-09-15;  修改时间: 2020-10-26;  采用时间: 2020-12-14; jos 在线出版时间: 2021-01-22
   219   220   221   222   223   224   225   226   227   228   229