Page 195 - 《软件学报》2026年第2期
P. 195
674 软件学报 2026 年第 37 卷第 2 期
还对 DHCS 的多个变体进行了比较, 以回答 RQ2 和 RQ3.
● DHCS w/o msp: DHCS 的变体 1. 不使用自监督训练, 即掩蔽子函数预测任务.
● DHCS w/o twc: DHCS 的变体 2. 不使用主题感知复制机制 (topic-aware copy mechanism, TWC), 在解码过程
中, 解码器不直接从子函数的主题中提取 token.
● DHCS w/o msp&twc: DHCS 的变体 3. 同时去除了主题感知复制机制和掩蔽子函数预测任务, 因此, 该变体
退化为一个分层结构的代码注释生成模型.
● DHCS w/o subfunc: DHCS 的变体 4. 不使用子函数增强 (subfunction enhancement), 因此, 该变体退化为一个
类似 CodeT5 的代码注释生成模型.
5.6 实验结果
5.6.1 主要结果
为了回答 RQ1, 将 DHCS 模型与 9 种最先进的 baseline 方法进行比较, 结果如表 3 所示.
表 3 DHCS 与 baseline 模型在 Python、Java 和 Go 数据集上的主要实验结果 (%)
BLEU-4 METEOR ROUGE-L
方法
Python Java Go Python Java Go Python Java Go
NeuralCodeSum 10.79 7.81 9.90 10.47 6.68 9.74 17.78 15.44 19.79
RoBERTa 10.37 10.98 13.53 8.11 10.17 13.82 17.10 23.40 30.12
CodeBERT 14.87 12.77 14.89 13.65 11.47 14.44 28.09 25.75 32.60
UniXcoder 17.22 15.61 15.81 15.19 13.48 15.84 30.51 30.18 34.79
CodeT5 17.69 16.22 17.28 17.19 14.93 17.04 34.03 32.00 36.75
GPT-3.5-turbo 15.56 13.15 12.51 16.87 15.84 16.82 27.17 22.84 22.89
CodeT5+ 17.76 15.07 12.29 17.35 15.01 12.49 22.80 22.19 19.17
StarCoder 16.90 17.25 14.75 17.27 17.53 14.43 17.29 22.97 17.92
EACS 18.10 16.38 17.28 17.09 16.50 17.36 34.70 35.54 37.20
DHCS 18.62 18.59 18.05 17.63 16.60 17.92 34.99 35.69 37.42
从表 3 中可以看出, 在所有 baseline 中, NeuralCodeSum 表现最差, 因为本研究的模型与上述 baseline 一样, 依
赖于预训练的编程语言模型. 利用这样的模型能够充分利用编程语言中固有的有价值的语义知识, 从而实现更优
的性能. 与本文方案以及大多数 baseline 模型 (如 CodeBERT、UniXcoder、CodeT5 和 CodeT5+) 相比, RoBERTa
的表现较差. 这一差异可以归因于 RoBERTa 是一个在自然语言语料库上预训练的语言模型, 而其他 baseline 模型
则是在大规模编程语言语料库上预训练的. 还可以看到, EACS 的表现优于其他 baseline 方法, 而 DHCS 在 3 个数
据集上都取得了 BLEU-4、METEOR 和 ROUGE-L 分数上的最佳表现. 与其他方法相比, GPT-3.5-turbo 的表现较
差, 甚至不如 CodeT5 和 UniXcoder. StarCoder 的表现稍好于 GPT-3.5-turbo, 但仍然逊色于本文方法. 这一差异大
致归因于两个因素. 首先, GPT-3.5-turbo 采用的是无监督方法进行代码注释生成, 因此缺乏针对特定数据集的训
练. 其次, GPT-3.5-turbo 和 StarCoder 在理解代码注释生成任务中的函数调用时遇到了困难. 与 EACS 相比,
DHCS 在 Python 数据集上, 分别在 BLEU-4、METEOR 和 ROUGE-L 上取得了 0.52、0.36 和 0.29 的提升; 在 Java
数据集上, DHCS 在所有 3 个指标上比 CodeT5 分别提高了 2.21、0.1 和 0.15; 在 Go 数据集上, 得分分别提高了
0.77、0.56 和 0.22. 值得注意的是, 我们通过对 CodeT5 和 DHCS 之间的成对样本 Wilcoxon 符号秩检验计算得出
p 值. 在 Python 数据集上, BLEU-4 指标的 p 值低于 0.04, METEOR 指标的 p 值低于 0.01; 在 Java 数据集上, p 值均
低于 0.01; 在 Go 数据集上 p 值约为 0.02. 这表明这些改进在统计学上具有显著性, 这些提升证明了 DHCS 的有效
性. 表明目标函数中的子函数调用能够补充额外的信息, 从而提高代码注释的性能.
5.6.2 人工评估
本研究在 3 个数据集上进行了人类评估, 结果如图 4、图 5 所示. 图中蓝线为 Python 数据集上的评估结果; 橙
线为 Java 数据集上的评估结果; 绿线为 Go 数据集上的评估结果. 参与此次评估的所有人员都具有丰富的领域知
识, 至少拥有 5 年的软件工程专业背景和研究经验.

