Page 39 - 《软件学报》2021年第11期
P. 39
陶传奇 等:编程现场上下文深度感知的代码行推荐 3365
4.3 基于源码数据质量评估的程序语句推荐有效性验证
为了验证源码数据质量评估是否能够对代码行推荐结果起到积极作用,本节利用经过开源源码数据质量
评估方法评估过的源码数据,并按照第 2.1 节测定的阈值,构建得到源码质量评估方法评定为具有较高质量的
Java method 数据集.使用该数据集训练一个新的、基于高质量源码数据集的代码行推荐模型,通过对比其与上
文基于原始源码数据集的模型的性能,来验证源码数据质量评估方法是否能够在一定程度上改进代码行推荐
工作.
为了更好地进行对比,本文设计了 3 组对比实验,分别是:(1) 在 4 个等级源码处理程度中,对比数据质量评
估前后 Precision 的差异;(2) 在不同上文代码行数 n,设置 1~5,对比数据质量评估前后的 Precision;(3) 对比数据
质量评估前后 MRR 的差异.为了控制变量,在进行实验时,将 k 值设置为 10.用于测试的实例数共 1 000 个.
4.3.1 不同源码处理方式下的推荐结果对比
图 9 是 Precision 指标在 4 个等级上对应使用数据质量评估方法评估前后变化对比.从图中我们可以发现,
在准确率这个指标上,对源码 4 个等级的统一化处理中,数据质量评估后对比数据质量评估前都有一定程度的
改进.相对于第 3 级的处理中提高的 0.08,初始等级、第 1 级和第 2 级的处理对分别提高 0.02,0.03 和 0.06.总的
来说:随着源码统一化程度的提高,数据质量评估后数据对比评估前 Precision 提高越大.这说明本文的数据评估
方法确实能够在一定程度上影响推荐结果,因此,数据的统一化处理程度和数据质量评估都是本文方法的前期
核心部分.本文的数据质量评估方法是传统的数据统一化处理方法的重要补充,同时也进一步验证了本文设计
的数据统一化处理方法确实是比较有效的.
Top-10
Precision(100%)
level 3
0.66
0.58
level 2 0.61
0.55
0.32
level 1
0.29
0.19
level 0
0.17
0 0.2 0.4 0.6 0.8
After Before
Fig.9 Precision comparison of recommendation results before and after data quality assessment
图 9 数据质量评估前后推荐结果准确率对比
4.3.2 不同代码上下文行数下的推荐结果对比
由图 10 可知,在进行数据质量评估前后,都是在上下文代码行数 n 为 3 左右时,Precision 已经达到一个比较
理想的程度;之后,Precision 提高值没有很大的提升.
通过对比发现,在几个不同代码行上文行数情况下,对比数据质量评估之前,在 Precision 指标上都有一定程
度上的提升.这说明本文所提出的开源源码数据质量评估方法能够在一定程度上获取到代码行上下文之间联
系更加紧密的 Java 方法块.这有助于利用深度学习模型析取代码行的相关上下文因子,为精准推荐提供基础.