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

李重 等: 基于语义重排序的代码注释生成方法                                                           609


                 这些指标也被广泛用于之前的研究工作              [16,31] . 具体如下.
                    (1) BLEU. BLEU  通过度量生成注释    (候选项) 与真实注释      (参考项) 之间的连续     N-grams 精度来评估模型生成
                 注释的质量:

                                                                      
                                                               N
                                                              ∑       
                                                                      
                                                 BLEU = BP·exp    w n logp n                      (2)
                                                                      
                                                               n=1
                 其中,  p n  是候选项与参考项之间匹配的        N-grams 的精度得分,  w 1  到  w N  表示权重  (总和为  1).  BP 为长度惩罚, 当候
                                                      r
                                                           r
                                                                            c
                 选项的长度比参考项大时         BP = 1, 否则  BP = e 1− c , 其中   表示参考项的长度,   表示候选项的长度. 在本文实验中,
                 我们遵循现有工作, 采用       Google 的  BLEU  计算实现, 对最高   4  词  (4-grams) 使用加一拉普拉斯平滑法计算       BLEU
                 分数.
                    (2) ROUGE-L. ROUGE  指标被广泛应用于评估自动文本摘要系统, 其拥有                4  种变体: ROUGE-N, ROUGE-L,
                 ROUGE-W  和  ROUGE-S, 其中  ROUGE-L  在代码注释生成任务中最为广泛使用. ROUGE-L          使用最长公共子序列计
                 算  F                 m 的参考项,                                X  的  ROUGE-L  分数为:
                     分数. 令   X  表示长度为           Y  表示长度为   n 的参考项, 则  Y  相较于
                                                                              2
                                           LCS (X,Y)   LCS (X,Y)          (1+β )RP
                                       R =        , P =        , ROUGE-L =                            (3)
                                                                               2
                                              m           n                R+β P
                 其中,  β 表示超参数, 在实验中保持其默认值          1.2.
                    (3) METEOR. METEOR  计算候选项相较于参考项的精确率和召回率的调和平均数:

                                                      (       )      P·R
                                                              β
                                             METEOR = 1−γ ·frag ·                                     (4)
                                                                α· P+(1−α)·R
                 其中,   P 和  R 分别表示候选项相较于参考项的单字精确率和召回率,               frag 表示碎片分数.   α, β 和  γ 为惩罚参数, 在本
                 文实验评估中保持了其默认值          α = 0.9, β = 3.0 和  γ = 0.5.
                  3.3   基线方法
                    为了系统地对      SRBCS  进行评估, 将  SRBCS  与  14  种代码注释生成方法进行了比较. 这         14  种代码注释生成方
                 法包含   2  种基于信息检索的方法       (词法检索和语义检索)、5        种基于深度学习的方法         (SiT、Script、AST-Trans、
                 CodeBERT  和  CodeT5) 和  4  种基于集成的方法  (Re2Com、Recons、EditSum  和  DECOM). 这些方法的具体描述
                 如下.
                    (1) 词法检索. 对基于词法检索的代码注释生成方法, 主要考虑使用                  BM25  算法  [27] 这一在代码注释生成领域中
                 广泛使用的信息检索方法来检索相似方法               [12−15,28] . BM25  算法通过对代码中词元间的相似度进行计算来为目标源
                 代码检索相似代码, 并使用检索到的相似代码的注释作为目标源代码的注释. 需要指出的是, 我们考虑作为基线方
                 法的基于词法检索的方法与          SRBCS  中所使用的基于词法检索的方法一致            (详见第   2.3  节).
                    (2) 语义检索. 对于基于语义检索的代码注释生成方法, 主要考虑使用余弦相似度来度量代码间的语义相似
                 度, 从而检索相似代码以生成目标源代码注释. 在提取代码语义时, 与                    SRBCS  中的基于语义检索的方法保持一致,
                 使用  Hugging Face [25] 提供的  Flax  模型来提取代码语义.
                    (3) SiT [39] . SiT  利用多视图结构来编码源代码输入. 更具体地, 它根据抽象语法树关系、控制流和数据依赖关
                 系将源代码构造为       3  个邻接矩阵, 并将这    3  个邻接矩阵相加作为源代码的邻接关系输入到               Transformer 模型中. 同
                 时, SiT  还提出结构制导的自注意力机制对          Transformer 模型进行了扩展, 以使其更好地理解代码中的结构化语义,
                 从而生成与源代码语义相似度更高的注释.
                    (4) Script [40] . Script 在  SiT  模型的基础上进一步对  Transformer 模型中的编码器进行了扩展. 它额外设计了一
                 个编码器用于处理通过抽象语法树获取到的不同代码中不同词元的相对位置信息. 随后, Script 将经过处理的位置
                 信息与带结构制导的自注意力机制的编码器输出信息进行融合, 以生成代码注释.
                    (5) AST-Trans  [41] . AST-Trans 提出了一种全新的抽象语法树编码方法. 该方法应用树结构注意力机制为相关
                 节点动态分配权重. 同时, 在计算自注意力过程中, 它还利用抽象语法树的父子节点关系和兄弟节点关系对无关节
                 点进行了去除.
   125   126   127   128   129   130   131   132   133   134   135