Page 134 - 《软件学报》2026年第2期
P. 134
李重 等: 基于语义重排序的代码注释生成方法 613
进行重排序可以更有效地利用不同方法优势, 从而生成质量更优的代码注释.
因此, 综合而言, SRBCS 相对于现有代码注释生成方法有较大优势, 并具有更好的实践价值.
RQ2: SRBCS 是否能够有效对基于信息检索的方法和基于深度学习的方法进行集成?
该研究问题旨在回答使用 SRBCS 对基于信息检索的方法和基于深度学习的方法进行集成是否能够实现优于
单独使用这两种方法时的性能. 为了验证这个问题的结果, 将 SRBCS 与基于词法检索的方法、基于语义检索的方
法以及基于 CodeT5 的方法进行了对比实验. 实验的结果见表 3.
表 3 SRBCS 与基于信息检索的方法和基于深度学习的方法的性能比较 (%)
JCSD PCSD
比较方法
BLEU ROUGE-L METEOR BLEU ROUGE-L METEOR
词法检索 46.13 53.65 29.07 35.45 46.10 20.82
语义检索 47.18 55.27 30.12 35.72 47.48 21.61
CodeT5 48.44 59.74 29.83 39.17 54.27 25.22
SRBCS 49.25 60.19 31.61 39.26 54.28 25.47
从表 3 的实验结果可以看出, SRBCS 在 JCSD 和 PCSD 两个数据集上所取得的 BLEU 分数、ROUGE-L 分数
和 METEOR 分数均优于基于词法检索的方法、基于语义检索的方法和基于 CodeT5 的方法. 以 METEOR 分数为
例, 在 JSCD 数据集上, SRBCS 对应的 METEOR 分数比基于词法检索的方法、基于语义检索的方法和基于
CodeT5 的方法分别高 8.73%、4.95% 和 5.97%; 在 PCSD 数据集上, SRBCS 对应的 METEOR 分数比基于词法检
索的方法、基于语义检索的方法和基于 CodeT5 的方法分别高 22.33%、17.86% 和 1.00%. 这一实验结果表明
SRBCS 可以有效集成不同代码注释生成方法的优势, 实现更高质量的代码注释生成.
此外, 从表 3 的实验结果中注意到: 在 PCSD 数据集上, SRBCS 相较于基于 CodeT5 的方法的提升相对较小.
我们推测这是由基于信息检索的两类方法在 PCSD 数据集上较弱的性能所导致的. 在 PCSD 数据集上, 基于词法
检索的方法的 BLEU 分数、ROUGE-L 分数和 METEOR 分数分别比基于 CodeT5 的方法低 3.72%, 8.17% 和
4.40%; 而基于语义检索的方法的 BLEU 分数、ROUGE-L 分数和 METEOR 分数则分别比基于 CodeT5 的方法低
3.45%, 6.79% 和 3.61%. 这意味着基于信息检索的方法所生成的代码注释很难对语义重排序过程产生影响, 换言
之语义重排序模型主要被基于 CodeT5 的方法所生成的代码注释主导. 然而尽管如此, SRBCS 依然从基于信息检
索的方法所生成的代码注释中选择出了有用的注释对基于 CodeT5 的方法生成的潜在低质注释进行了替换, 使得
SRBCS 实现了优于基于 CodeT5 的方法的性能.
综上, SRBCS 可以有效发挥基于信息检索的代码注释生成方法和基于深度学习的代码注释生成方法各自在
代码注释生成任务上的优势, 并有效对这些方法进行集成, 从而实现更高质量的代码注释生成.
RQ3: SRBCS 生成的代码注释对于开发人员而言是否更为有效?
在 RQ2 中, 我们通过 BLEU、ROUGE-L 和 METEOR 这 3 个性能指标证明了 SRBCS 的有效性. 在本研究问
题中, 将进一步通过用户调研的方式对 SRBCS 的有效性进行更深入的研究. 具体而言, 我们在置信水平为 99% 且
置信区间为 5% 的条件下对 JCSD 数据集和 PCSD 数据集进行采样, 得到 648 个样本用于用户调研. 对于这 648
个样本, 分别使用 SRBCS 和各基线方法生成代码的注释. 然后, 基于所生成代码注释为每个样本构建了 18 个问题
对, 每个问题对均由代码片段和各方法生成的注释组成. 随后, 我们将所有问题对分发给 4 位受访者 (2 位计算机
专业的博士生和 2 位企业工程师). 对于每个问题对, 受访者将依据李克特 5 分量表给出他们对规则“代码注释可
以准确描述代码片段功能”的认同度 (1 分表示强烈不同意, 5 分表示强烈同意). 为了保证客观的评估, 受访者将不
被告知各问题对中的注释是由何种方法所生成. 需要说明的是, SRBCS 对 3 种方法 (词法检索、语义检索和
CodeT5) 所生成代码注释进行重排序得到输出结果, 因此其所生成代码注释与这 3 种方法生成的代码注释存在重
复. 为了消除重复问题对给用户调研结果的干扰, 对于具有相同代码注释的问题对, 仅保留其中一个用于用户调
研, 其余问题对则赋予相同的调研评分. 具体来说, 约有 8.26% 的问题对为重复问题对, 从而被去除.
图 5 展示了各方法所生成代码注释的平均得分, 图中 x 轴表示各个受访者, y 轴表示各方法生成代码注释的平
均得分. 从图中可以看出, 4 位受访者一致认为 SRBCS 所生成的代码注释可以更准确地反映代码片段功能, 这进

