Skip to main content
QUICK REVIEW

[论文解读] Retrieve and Refine: Exemplar-based Neural Comment Generation

Bolin Wei|arXiv (Cornell University)|Oct 23, 2019
Software Engineering Research参考文献 52被引用 6
一句话总结

该论文提出了一种新颖的基于实例的神经注释生成模型,该模型从代码库中检索语义相似的代码-注释对,并利用带有注意力机制和相似度门控的序列到序列模型进行精炼。该方法在大规模 Java 数据集上显著优于当前最先进方法,BLEU 得分为 43.78,METEOR 得分为 28.12。

ABSTRACT

Code comment generation is a crucial task in the field of automatic software development. Most previous neural comment generation systems used an encoder-decoder neural network and encoded only information from source code as input. Software reuse is common in software development. However, this feature has not been introduced to existing systems. Inspired by the traditional IR-based approaches, we propose to use the existing comments of similar source code as exemplars to guide the comment generation process. Based on an open source search engine, we first retrieve a similar code and treat its comment as an exemplar. Then we applied a seq2seq neural network to conduct an exemplar-based comment generation. We evaluate our approach on a large-scale Java corpus, and experimental results demonstrate that our model significantly outperforms the state-of-the-art methods.

研究动机与目标

  • 为解决现有神经注释生成模型生成注释过短、退化或质量低下的局限性,引入软件复用原则。
  • 通过利用语义相似代码的注释作为实例,提升注释生成的控制力与质量。
  • 通过使用真实世界代码注释作为动态模板,减少对手动模板设计的依赖。
  • 开发一种结合检索与神经精炼的方法,以生成更准确且上下文相关的注释。

提出的方法

  • 使用开源搜索引擎(Lucene)基于标记级相似度,从训练语料库中检索最相似的代码片段。
  • 将检索到的代码的注释视为实例,以指导生成过程。
  • 采用三编码器序列到序列模型,使用 LSTMs 将输入代码、相似代码和实例注释编码为上下文特征向量。
  • 通过非线性 Sigmoid 函数计算输入代码与相似代码之间的相似度得分 $ s $,用于调制注意力机制。
  • 为解码器使用门控初始隐藏状态:$ extbf{h}^x(1-s) + extbf{h}^y s $,其中 $ extbf{h}^x $ 和 $ extbf{h}^y $ 分别为输入代码和实例注释的最终隐藏状态。
  • 应用注意力机制,从输入代码和实例注释的词元中计算上下文向量,其权重由相似度得分 $ s $ 调节。

实验结果

研究问题

  • RQ1检索语义相似的代码并使用其注释作为实例,能否提升神经注释生成的质量?
  • RQ2与端到端序列到序列模型相比,基于实例的精炼方法在生成更长、更有意义的注释方面表现如何?
  • RQ3输入代码与相似代码之间的相似度得分在多大程度上影响生成注释的质量?
  • RQ4基于实例的生成能否减少退化输出,如重复词元或极短注释?

主要发现

  • 所提模型在 Java 数据集上达到 BLEU 得分 43.78 和 METEOR 得分 28.12,显著优于所有基线模型。
  • 与此前的 SOTA 方法 HAD 相比,该模型将 BLEU 提升了约 10 个百分点。
  • 该模型减少了退化输出:与 HAD(产生超过 70 个包含重复词元的预测)不同,该方法生成的注释更具多样性与连贯性。
  • 与原始序列到序列模型相比,该模型性能显著更优,证实实例是提升生成质量的关键因素。
  • 建议未来工作进行人工评估,因为当前指标(BLEU、METEOR)可能无法完全反映注释在实际软件开发中的实用性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。