Page 36 - 《软件学报》2021年第11期
P. 36
3362 Journal of Software 软件学报 Vol.32, No.11, November 2021
应的 MRR 值分别为 0.052 8、0.129 5、0.274 3 和 0.298 6.在对 API 和数据类型进行统一化处理后,MRR 值分
别提升了 0.076 7 和 0.144 8.Level3 比 Level2 提升了 0.024 3.这也说明,在进行了数据类型级别的数据处理之后,
方法在指标上呈现出较好结果.继续对数据集进行处理,虽然也还是能够对方法效果进行优化,但是指标的提高
不明显.图 7 直观地反映了 2 个不同度量指标在 4 个等级上的变化趋势.
Top-10 代码行
0.7
0.6 0.550 0.580
Precision&MRR(100%) 0.4 0.290 0.274 0.299
0.5
0.3
0.2
0.170
0.1
0.053 0.129
0
level 0 level 1 level 2 level 3
Precision MRR
Fig.7 Variation trends on two metrics at different processing levels
图 7 不同处理等级在两个度量指标上的变化趋势
对问题 1 的回答:编程现场上下文深度感知的代码行推荐方法的准确率和 MRR 会被数据集的处理程度影
响,并且方法的性能随着数据集的处理程度的变高而提升.而且,不同程度的处理对方法性能影响也是不同的.
第 1 等级是一个比较重要的处理步骤,在方法推荐结果的准确率和 MRR 两个指标上都有明显提升.第 3 等级的
统一化处理之后,方法性能最好.但是考虑到对数据集进行处理的程度越高,也意味着开发人员即使得到推荐结
果时,他所需要修改的地方也很多,因此本文保留具有 Java 结构特征的一些字符.
4.2.2 对问题 2 的回答
问题 2 在我们的第 2 个实验中被测试,该实验的内容是将本文提出的代码行上下文深度感知的方法和具有
类似的功能的方法进行比较.
本文选择两个相似的代码行补全的代表性方法与本方法进行对比,分别是利用 PHOG 模型 [21] 和 RNN 模
型 [22] 来进行代码行补全的方法,衡量指标采用平均 BLEU 得分.
表 5 是 PHOG、RNN 和 DA4CLR 这 3 种方法在推荐结果数分别为 1,5 和 10 时对应的 BLEU 平均得分.
从表中可以看出,本文的代码行推荐方法在 Top1 时得分比较高,高于 RNN 模型 0.13.但是随着推荐项数量增多,
这种情况开始改变,当推荐项数为 5 和 10 时,其平均得分和 RNN 的得分差距已经开始逐渐减小.这说明我们的
方法中推荐正确的推荐项出现在推荐结果列表中比较靠前的位置,而如果前面位置没有正确的推荐项,则整个
推荐列表中没有推荐正确的项.根本原因是二次排序造成的,二次排序充分利用了编程现场任务信息来捕捉开
发者意图,进而能够识别推荐列表中和当前任务更加相似的推荐项,将其推荐给开发人员.本文所提方法和
PHOG 方法在 BLEU 得分指标类似,但是在 top1 和 top5 略有优势,说明本文的方法能够比较好的学习到程序语
句上下文信息,进而有足够的信息进行程序语句生成.而比较而言,PHOG 模型和 RNN 模型利用的信息不够充
分,因此效果较差.总的来说,本文的方法在平均 BLEU 得分指标上对比于 PHOG 和 RNN 仍然有一定的优势.
Table 5 BLEU scores for three relevant methods with different Top-K
表 5 3 种相关方法在不同 Top-K 时 BLEU 得分
Top-K
方法
Top1 Top5 Top10
PHOG 0.365 5 0.412 5 0.461 2
RNN 0.253 9 0.331 3 0.371 7
DA4CLR 0.386 5 0.428 6 0.454 1