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

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


                                                              L
                                                         R lcs =                                     (25)
                                                              m

                                                              L
                                                          P lcs =                                    (26)
                                                              n

                                                            (    )
                                                                2
                                                             1+β R lcs P lcs
                                                  ROUGE-L =                                          (27)
                                                                  2
                                                             R lcs +β P
                                                                    lcs
                 其中,   m 和  n 分别表示预测序列和参考序列的长度,         L 表示两序列的最长公共子序列的长度,            R lcs  和  P lcs  分别表示召
                 回率和精确率.
                    ROUGE-L  评估句子中单词顺序的序列对齐情况. 然而, 它的一个局限性在于, 仅计算最长公共子序列, 而忽略
                 了其他子序列可能的匹配, 这使得其评估结果可能不够全面.
                    值得注意的是, 尽管上述自动评估指标在代码注释生成任务中被广泛使用, 但它们确实存在固有的局限性. 例
                 如, BLEU  和类似的指标可能无法可靠地评估一个高              BLEU  得分的方法是否一定能比低得分的方法带来更好的系
                 统性能  [62] . 这些评估指标基于这样一个假设: 生成摘要与参考摘要之间的文本相似度越高, 质量就越高. 然而, 这
                 一假设忽略了两个关键因素. 首先, 参考摘要的质量可能较差或过时. 其次, 生成的摘要可能通过不同的措辞表达
                 相同的语义. 因此, 单纯依赖基于相似度的评估指标存在局限性                   [63] . 在未来的工作中, 将计划探索更多专门为代码
                 注释生成任务量身定制的更强大的评估指标.
                  5.3.2    人工评估指标
                    除了自动评估外, 本文还进行了额外的人工评估, 主要从以下                   5  个方面进行评分: 流畅性、语义准确性、信息
                 完整性、简洁性和风格与语域. 每个评估标准的详细描述如表                    2  所示.

                                                表 2 人工评估的      5  个参考指标

                                   指标                                 描述
                                   流畅性                     摘要表达是否自然、流畅且符合语法
                                 语义准确性              摘要是否正确理解了源代码的上下文, 并准确传达其意义
                                 信息完整性                     摘要是否包含了代码的所有重要信息
                                   简洁性                   摘要是否简明扼要地表达了代码的主要功能
                                 风格与语域              摘要是否考虑了源代码的风格, 并在表达做出了相应的调整

                    在人工评估过程中, 为确保评估的客观性和准确性, 评估人员在打分时只能看到生成的注释内容, 而无法知道
                 每个注释是由哪种方法生成的, 这样可以避免评估人员受到方法偏差的影响, 确保评估结果的公正性. 每个样本
                 由  3  位评估人员进行评分, 以提高评分的可靠性. 本文随机选取了每种方法生成的                     100  个注释, 请每位评估人员根
                 据  1–5  的评分尺度  (1  表示“强烈不同意”, 5  表示“强烈同意”) 对     5  个评估指标进行评分, 每个注释的最终得分是该
                 注释  3  位评估人员评分的平均值. 最后, 通过计算所有            100  个注释的平均得分, 得出每种方法的整体得分.
                    为了保证评估质量, 邀请的评估人员均是具有丰富编程经验的专家, 在数据统计时, 我们采用了去除极端分值
                 的处理方法, 进一步减少评估人员的主观偏差. 同时, 为了量化评估人员间的一致性, 我们采用了                         Conger’s 加权  Kappa
                 系数, 该系数适用于多名评估员对有序分类数据               (如  1–5  分) 的一致性评估. 我们对每个评估对象在上述           5  个指标
                 上的平均得分进行计算得到的           Kappa 值为  0.672, 根据  Landis 和  Koch  的一致性标准, 该值处于  0.61–0.80  之间, 表
                 明评估人员间具有高度的一致性.
                  5.4   实验配置
                    本研究基于     Huggingface 的  CodeT5 PyTorch  实现构建  DHCS  模型. 与单一编码器不同, DHCS  采用了一个分
                 层编码器, 其中子函数编码器和目标函数编码器共享相同的参数. 在预训练阶段, 首先使用基于代码的预训练模
                 型  (如  CodeT5-multi-sum) 初始化  DHCS  的所有编码器和解码器. CodeT5     采用传统的编码器-解码器架构, 而
                 UniXcoder 采用了一个   Transformer 编码器, 但通过与编码器、解码器配置兼容的掩码注意力矩阵保持灵活性. 为
                 了有效捕获目标函数与其调用的子函数之间的上下文层次关系, 选择分层编码器来进行表示学习. 与                                 UniXcoder
                 不同, CodeT5  的编码器架构更适合实现层次结构.
   188   189   190   191   192   193   194   195   196   197   198