Page 328 - 《软件学报》2025年第8期
P. 328
赵衔麟 等: 面向代码注释生成任务的注释质量评价研究 3751
3.1 节的梳理中可以看出, 目前在准确性/相关性、简洁性、自然性/流畅性等维度都有可供参考的较为明确的评价
指标. 注释的完整性需要视具体的场景而定, 难以统一评价. 此外, 注释的有用性/信息量体现了注释对于开发者理
解代码的帮助程度, 是格外重要的一项维度. 为了丰富对这一维度的评价, 除了参考现有的指标 c_coeff 外, 本文作
者还进一步提出了一个指标 mesia (mean supplementary information amount) 以评价注释提供额外信息的程度 [94] .
最终, 本文选取了相关性、简洁性、自然性、有用性这 4 个维度共 8 个指标进行注释质量评价, 如表 5 所示. 下面
详细介绍各指标的具体情况.
表 5 本文使用的注释质量评价指标
评价维度 相关性 简洁性 自然性 有用性
现有文献的指标 lexical_tfidf [81,82] comment_len [21,86] flesch_ease [86,88] -
本文设计的指标 lexical_w2v conciseness grammar_error coefficient, mesia
3.2.1 相关性评价指标
本文采用的相关性指标是如下两个计算代码与注释相似度的指标. 代码与注释的相似度与注释的相关性有较
强的关联, 能够部分反映注释的相关性.
(1) lexical_tfidf
该指标是 Corazza 等人 [81,82] 提出的, 其将代码和注释表示成 TF-IDF 向量并计算二者的余弦相似度. lexical_tfidf
指标越高表明代码和注释在词汇分布上越相似. 其具体计算方式如下.
首先, 将语料库中的 N 对代码和注释中的所有词按驼峰命名法和蛇形命名法进行切分, 得到大小为 M 的词汇
表. 对于第 i 对代码和注释, 设注释的 M 维 TF-IDF 向量为 com i com i 的第 j 维对应词汇 w 在该注释中出现的次数
,
num w , 语料库中包含 w com i_j 可以通过如下计算得到:
为 的代码和注释总数为 docNum w . 则
num w
t f = (2)
len
( )
2N
id f = log (3)
docNum w +1
com i_ j = t f ×id f (4)
由此可得注释的 M 维 TF-IDF 向量, 代码的 M 维 TF-IDF 向量 code i 可以按同样方式得到. 由此, 第 i 对代码
和注释的 lexical_tfidf 指标结果可计算如下:
T
com code i
i
lexical_tfidf = (5)
|com i |·|code i |
(2) lexical_w2v
lexical_tfidf 基于词频分布表示代码和注释, 无法体现出词汇语义间的关联, 例如代码中含有“remove”而注释
中使用了“delete”, 二者的关联无法被识别. 为此, 本文对 lexical_tfidf 指标进行了调整, 进一步使用词嵌入 (Word2Vec)
进行代码和注释的向量表征, 提出了 lexical_w2v 指标. 其可以为语料库中的词语训练出具有语义关联的词向量.
具体来说, lexical_w2v 指标采用了经典的词向量模型——CBOW 模型 [95] 将代码和注释中的所有词汇都映射为向
量. 设 comW2v i 为注释中所有词汇的词向量平均值, codeW2v i 为代码中所有词汇的词向量平均值, 则:
T
comW2v codeW2v i
i
lexical_w2v = (6)
|comW2v i |·|codeW2v i |
3.2.2 简洁性评价指标
(1) comment_len
参考 Khamis 等人 [86] 和 Steidl 等人 [21] 的工作, 本文也将注释长度纳入简洁性评价指标. 记注释的词数为
wordNum, 则:
comment_len = wordNum (7)

