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  所生成的代码注释可以更准确地反映代码片段功能, 这进
   129   130   131   132   133   134   135   136   137   138   139