Page 215 - 《软件学报》2021年第7期
P. 215
陈翔 等:代码注释自动生成方法综述 2133
用,代码注释质量的评估更具研究挑战性,从理论上来讲,并不存在完美的代码注释.针对同一段代码,不同开发
人员可能会写出不同的代码注释,并且这些代码注释之间可能会存在较大的差异性.在已有的研究工作中,主要
考虑了两种评估方式.第 1 种评估方式是雇用有经验的开发人员进行人工评估,这是论文分析的 3 类方法均会
使用的评估方式.第 2 种评估方式是使用来自机器翻译领域的评测指标来辅助评估,这是第 3 类方法经常使用
的评估方式.
6.1 人工评估的方法
好的代码注释需要满足如下特征 [85,86] :(1) 准确性.从代码注释包含的内容来看,代码注释应能正确体现代
码的实现目的和主要功能.(2) 流畅性.由于代码注释是基于自然语言来描述的,因此需要没有语法错误,书写流
畅,以方便开发人员的阅读和理解.(3) 一致性.代码注释应遵守标准的样式/格式,以方便代码阅读.在已有的人
工评估方法中,研究人员基本上围绕这些特征加以展开.
在人工评估时,研究人员一般会邀请经验丰富的开发人员(通常要求具有至少 5 年的编程经验)或计算机专
业的硕士研究生或博士研究生来阅读自动生成的代码注释,并从给定的维度来进行打分,每一项得分通常被设
置为从 1~5,其中,1 表示最差,5 表示最好.除此之外,也有研究人员将得分设置为从 1~3 或从 1~4.但在人工评估
的过程中,不同开发人员之间的打分会存在较大的差异,一些开发人员认为质量很好的代码注释,可能在另一个
开发人员眼里被认为质量不好,这与参与人员的编程经验、对项目所处领域的熟悉程度、人员个性、认真态度
等均有关.因此,如何克服评分专家之间的主观差异性成为研究人员关注的焦点.例如,可以考虑金字塔方法
(pyramid method) [87] 来缓解这种主观性.除此之外,虽然人工评估方法的代价较高,但在当前的研究工作中,这种
评估方法仍不可或缺.
6.2 自动评估的方法
这些评测指标主要来自机器翻译和文本总结等研究领域,可以评估候选文本(即基于代码注释自动方法而
生成)和参考文本(即基于手工方式而生成)的相似度.
(1) BLEU 指标 [88] :其全称是 bilingual evaluation understudy.该指标是最早用于评估机器翻译的评测指标.
用于比较候选文本和参考文本里 n 元词组(n-gram)的重合程度.其中,BLEU-1/2/3/4 分别对应一元词组、二元词
组、三元词组和四元词组的重合程度.其中,BLEU-1 可以用于衡量单词翻译的准确性,而随着 n 的取值增大,
BLEU 指标则可以进一步衡量文本的流畅性.不难看出,BLEU 指标的取值越高,即 n 元词组的重合程度越高,则
认为候选文本的质量也越高.
但 BLEU 指标更偏重查准率,而忽略了查全率(即参考文本中未在候选文本中出现的 n 元词组).虽然可以通
过引入长度惩罚因子(brevity penalty)来惩罚候选文本过短的问题,但从整体上来看,BLEU 评测指标更偏向于较
短的候选文本.
(2) METEOR 指标 [89] :其全称是 metric for evaluation of translation with explicit ordering.其使用 WordNet 等
知识源来扩充同义词集,同时考虑了单词的词形.在评价句子流畅度时,使用了 chunk(即候选文本和参考文本能
够对齐的,并且空间排列上连续的单词形成一个 chunk)的概念,chunk 的数目越少,意味着每个 chunk 的平均长度
越长,即候选文本和参考文本的语序越一致.
(3) ROUGE 指标 [90] :其全称是 recall-oriented understudy for gisting evaluation.与 BLEU 指标相似,但 BLEU
指标面向的是查准率,而 ROGUE 指标面向的是查全率.该指标在文本摘要研究中被经常使用,又可以细分为
ROUGE-N 和 ROUGE-L.其中,ROUGE-N 指标以 n 元词组为基本单元,计算两个句子之间 n 元词组的重合率.而
ROUGE-L 指标与 ROUGE-N 指标相似,但是针对的是最长公共子序列(longest common subsequence)的重合率.
(4) CIDER 指标 [91] :其全称是 consensus-based image description evaluation.一般用于图像字幕生成问题.该
评测指标可以认为是 BLEU 指标和向量空间模型的集合.其将每个句子视为文档,然后计算出 n 元词组的 tf-idf
值,通过余弦夹角计算出候选文本和参考文本之间的相似度.最后,基于不同长度的 n 元词组计算出平均取值,并
作为最终结果.