Page 185 - 《软件学报》2026年第2期
P. 185

664                                                        软件学报  2026  年第  37  卷第  2  期


                    本文的主要贡献总结如下.
                    ● 领域探索: 率先涉足依赖关系感知的代码注释研究领域, 为新的研究范式开辟了道路. 为支持这一方法, 精
                 心构建了   3  个新的真实世界数据集, 分别针对         Python、Java 和  Go  这  3  种编程语言.
                    ● 自监督任务: 提出了“掩码子函数预测”自监督任务, 并为子函数设计了主题感知复制机制, 两者都显著提升
                 了代码注释的性能.
                    ● 验证性研究: 通过大量实验和与最先进             baseline 方法的细致比较, 在代码注释生成任务中验证了模型的有
                 效性.






















                                                  图 1 一个代码注释的示例
                  2   相关工作


                    本节讨论了与文本摘要、代码摘要以及基于代码的自监督预训练相关的研究工作.
                  2.1   文本摘要

                    文本摘要是从源文本中提取主要内容和关键信息的过程, 同时保留其原始语义. 它可以让人们快速获取文本
                 中讨论的关键内容或主题. 文本摘要大致可分为两种主要类型: 提取式摘要和生成式摘要.
                    ● 提取式摘要方法专注于摘要的相关性和句子的冗余性. 已有一些基于图结构的方法被提出, 如                             TextRank [14] 、
                 LexPageRank  [15] 和  CoRank [16] . 这些方法将整个文本构建为一个拓扑图, 并为每个词分配重要性得分, 类似于
                 PageRank  算法; 然后, 从中提取得分较高的句子形成摘要. 随着深度学习技术的发展, Cao                  等人  [17] 使用  CNN  进行
                 文本分类; Singh  等人  [18] 使用  CNN  和  Bi-LSTM  提取文本特征; Nallapati 等人  [19] 采用  GRU  生成摘要.
                    ● 生成式摘要方法通过理解原文的语义重新生成摘要. 基于                   seq2seq  框架的神经网络在生成任务中展现出了
                 巨大的潜力. Gu    等人  [20] 提出了  CopyNet, 生成摘要的同时保留了源文本中的重要信息. See 等人           [21] 提出了一种指
                 针生成网络, 该网络可以根据词汇分布自动决定是从原文复制还是生成新词, 从而有效解决了罕见词                                (OOV) 问题.
                 Zhou  等人  [22] 在编码器中增加了选择性门控网络, 允许结合词级和语句级的隐藏状态. 随着预训练语言模型如
                 MASS [23] 、BART [24] 和  T5 [25] 的出现, Zhang  等人  [26] 结合预训练的  BERT  和  Transformer 提出了两阶段模型. Cao  等
                 人  [27] 通过增强注意力机制, 提出了注意力头掩码技术, 聚焦于文本中的重要内容.
                  2.2   代码摘要
                    代码摘要与文本摘要在本质上存在显著差异, 主要体现在它们独特的逻辑结构上. 与一般文本不同, 代码具有
                 特有的组织方式, 这使得它在语义和结构信息方面更加丰富、更加复杂.
                    近年来, 已经有多种网络结构被用来提取源代码的语义和结构信息以生成摘要. Iyer 等人                         [28] 提出了  Code-NN,
                 利用结合   LSTM  的注意力机制来捕捉语义信息. Allamanis 等人         [29] 提出了一种基于注意力的       CNN, 用于学习代码
   180   181   182   183   184   185   186   187   188   189   190