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
   31   32   33   34   35   36   37   38   39   40   41