论文部分内容阅读
随着现代计算机软件及开源社区的快速发展,软件维护与管理成为影响软件开发效率和质量的关键因素。如何从大量开源代码库中学习知识,从而提高软件开发效率和质量实现软件自动化,是当前软件工程领域的重要科学课题。目前巳有很多研究将自然语言处理技术应用到程序语言分析上并取得了一定效果,但依然面临一些困难和挑战:(1)现有方法虽然考虑了代码分词所产生的词素序列或抽象语法树等特征,但忽略了代码的控制流等图结构特征。(2)现有深度学习模型无法推断出代码不同部分对模型结果的贡献。(3)现有模型没有很好地处理代码的开放式词汇以及在代码摘要生成时候容易出现词汇外单词。
针对以上所述困难和挑战,本文重点研究了代码表示学习、代码片段检索以及代码摘要生成等关键技术,提出了一系列自动化工具,旨在为软件开发者提供高性能自动化工具,提升软件开发效率和友好性。本文主要工作与贡献如下:
1.针对传统方法在代码表示上只考虑了代码分词所产生的词素序列或代码抽象语法树进行表征,而忽略了代码的控制流图等图结构信息。本文调研了不同模态对代码表示的性能影响,同时提出一种多模态学习方法将代码所呈现的不同模态特征(包括代码的非结构化和结构化特征)融合到一个表示向量中,从而使得代码表示更加全面。通过在一个真实C语言数据上,设计代码片段检索和代码摘要生成等两个实际任务并展开充分的实验,结果验证了多模态表示学习在代码表示上性能有一定提升。
2.针对传统代码片段检索方法无法体现各模态贡献度的不同,本文提出了一种基于注意力机制的多模态网络MMAN用于代码片段检索。通过在一个真实C语言数据上展开充分的实验,并和传统基线方法进行对比,结果验证了基于注意力机制的MMAN模型对代码片段检索性能有所提升,同时通过可视化不同模态所贡献的权重为MMAN提供了一个可解释性。
3.针对传统代码摘要生成方法忽略控制流图、代码学习过程中噪声过多等问题,本文引入了一种别名感知的代码摘要生成范式,通过别名分析技术大幅度降低词汇量,并提出一种基于深度强化学习的复制一生成器网络MMRCN,实现了代码自动摘要生成, 实验结果验证了通过在一个真实C语言数据上展开充分的实验,并和传统基线方法进行对比,结果验证了MMRCN模型对代码摘要生成性能有所提升。
针对以上所述困难和挑战,本文重点研究了代码表示学习、代码片段检索以及代码摘要生成等关键技术,提出了一系列自动化工具,旨在为软件开发者提供高性能自动化工具,提升软件开发效率和友好性。本文主要工作与贡献如下:
1.针对传统方法在代码表示上只考虑了代码分词所产生的词素序列或代码抽象语法树进行表征,而忽略了代码的控制流图等图结构信息。本文调研了不同模态对代码表示的性能影响,同时提出一种多模态学习方法将代码所呈现的不同模态特征(包括代码的非结构化和结构化特征)融合到一个表示向量中,从而使得代码表示更加全面。通过在一个真实C语言数据上,设计代码片段检索和代码摘要生成等两个实际任务并展开充分的实验,结果验证了多模态表示学习在代码表示上性能有一定提升。
2.针对传统代码片段检索方法无法体现各模态贡献度的不同,本文提出了一种基于注意力机制的多模态网络MMAN用于代码片段检索。通过在一个真实C语言数据上展开充分的实验,并和传统基线方法进行对比,结果验证了基于注意力机制的MMAN模型对代码片段检索性能有所提升,同时通过可视化不同模态所贡献的权重为MMAN提供了一个可解释性。
3.针对传统代码摘要生成方法忽略控制流图、代码学习过程中噪声过多等问题,本文引入了一种别名感知的代码摘要生成范式,通过别名分析技术大幅度降低词汇量,并提出一种基于深度强化学习的复制一生成器网络MMRCN,实现了代码自动摘要生成, 实验结果验证了通过在一个真实C语言数据上展开充分的实验,并和传统基线方法进行对比,结果验证了MMRCN模型对代码摘要生成性能有所提升。