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 的编码器架构更适合实现层次结构.

