Page 133 - 《软件学报》2025年第9期
P. 133
4044 软件学报 2025 年第 36 卷第 9 期
∗T
ˆ t ij = p ·q ∗ (12)
b i d j
其中, ˆ t ij 为相关性评分, 表示开发人员与 bug 潜在的相关性. 具体来讲, ˆ t ij 类似于原始数据集中的标注数据 , 一个
t ij
未解决的 bug b i 将被分配给与 b i 具有最高相关性的开发人员 . 为了能够从正样本和负样本中捕获相关性特征,
d j
CBT-MF 引入了 BPR [38] 作为预测时的损失函数:
∑
( )
L BPR = −logσ ˆ t i,j − ˆ t k,j +λ||Ξ|| 2 (13)
2
S
{
}
其中, σ(·) 是 Sigmoid 函数, 而三元组集 S = (i, j,k) | t i,j = {1,2},t k,j = 3 表示了成对的训练数据, 包括为开发人员 d j
提供的一个正采样、原始 bug b i 及一个负采样 bug , λ 为防止过拟合控制参数.
b k Ξ 表示所有可训练的模型参数,
此时, 训练图神经网络的主要目标就是最小化 ˆ t i,j 和 ˆ t k,j 之间的距离, 即:
argminL (14)
BPR
Λ
其中, Λ 为网络参数. 这里采用 Adam [54] 对预测模型进行优化, 并更新模型参数. 当然, 对于一批随机抽样的三元组
{ } { }
1
2
2
1
(b i ,t ij ,d j ) ∈ S , 经过 l 次卷积后, 在已完成 p , p ,..., p l 和 q ,q ,...,q l 表示的情况下, 也可以利用损失函数的梯
b i b i b i d j d j d j
度更新模型参数.
4 实验分析
为了全面评估本文提出的 CBT-MF 方法性能, 实验主要关注了以下 3 个研究问题 (RQ).
● RQ1: 与其他已有的主流 bug 分派方法相比, CBT-MF 对 bug 分派的性能表现如何?
● RQ2: CBT-MF 是否能够缓解由于 bug 数据分布不均衡性和文本数据模态单一对 bug 分派性能产生的影响?
● RQ3: 在 CBT-MF 方法中, 关键的超参数是如何影响其对 bug 分派性能的?
4.1 数据与指标
本文基于领域内广泛使用的 3 个公开数据集: Google Chromium (GC)、Mozilla Core (MC) 及 Mozilla Firefox
(MF), 对 CBT-MF 进行上述 3 个研究问题的实验评估. 这 3 个数据集均有类似的 bug 报告记录, 包括 bug ID、摘
要、描述、开发者 (开发人员的 E-mail) 及 bug 状态, 这为本文研究提供了一致性的实验评估基础. 但是, 它们在数
据规模、开发者活跃度和数据质量等方面各具特色, 尤其是各数据集的 bug 报告质量层次不齐, 影响实验对比效
果, 故对所选数据集做了必要的预处理. 首先, 为了防止 bug 报告重复或修改变化对评估结果产生影响, 实验按照
不同的时间跨度筛选了状态为验证 (verified) 或修正 (fixed) 的 bug 报告记录, 得到的实验数据集基本特征如表 1
所示. 其次, 基于筛选后的 bug 报告记录 ID 和开发者字段构建 bug-开发人员二部图, 形成图模态数据, 表征“bug-
开发者”的修复关联关系. 随后, 根据 CBT-MF 方法必要向量的初始化需求, 将符合状态要求的 bug 报告去除其他
冗余属性后保留 bug 报告标题、描述、分派开发者这 3 项关键属性 (具体名称因跟踪系统而异), 作为 bug 报告文
本源, 形成文本模态数据, 即通过 bug 报告属性筛选完成噪声过滤; 最后, 按照第 2.2 节描述的过程, 经过对标点符
号、十六进代码及停用词过滤和大写字母转换, 对数据进一步清洗后进行 bug 语义表示. 最终, 将所选实验数据集
均以 8:1:1 的比例分为训练集、验证集及测试集, 且为了消除开发人员的流动性对评估结果的影响, 划分的测试集
时间跨度均控制在了 1 年以内.
表 1 实验数据集特征
特征 GC [55] MC [56] MF [57]
bug总数 383 104 314 388 162 307
开发者数 3 612 1 477 891
修复记录数 361 164 147 664 89 083
密度 (1E–4) 2.61 3.18 6.16
时间跨度 2008-08–2016-07 1998-04–2016-06 1999-07–2016-06

