Page 129 - 《软件学报》2025年第9期
P. 129

4040                                                       软件学报  2025  年第  36  卷第  9  期


                 如, 通过矩阵分解将每个用户和项目的            ID  投影为特征向量, 并在它们之间进行卷积来预测交互                [14] . 但在个别场景
                 下由于缺乏与特定属性或与          bug  修复相关的数据, 导致推荐系统会遇到冷启动和数据稀疏性的问题                    [18] , 致使推荐
                 系统无法识别出合适的开发人员予以推荐. 此外, 虽然                CF  通过卷积可以强制将用户和项目向量映射到一个彼此
                 观测到的范围, 但有时也难以挖掘二者的关系. 如              LightGCN  模型  [29]  表现出了较为突出的效率和性能, 但它的线性
                 特征不足以揭示用户和项目之间复杂的非线性关系. 为此, 最近的研究集中于利用深度学习技术来强化交互函数.
                 例如, NCF [30]  采用非线性神经网络作为交互函数, 捕获了用户和项目之间的非线性交互特征; CBCF                     [31]  采用内容增
                 强的  CF  将现有的  CBR [5,31] 和  CF  推荐器相结合, 提高了  bug  分派推荐质量. 再后来, 为了增强协同过滤向量表征
                 能力, 人们还投入了大量的精力来整合可用的项目或开发人员信息, 如项目内容                        [32,33] 、社会关系  [34]  、项目关系  [35]  、
                 用户评论   [36]  和外部知识图谱  [37]  等, 希望采用数据增强的方式来提高推荐效果.
                    早期的数据增强主要是对用户-项目矩阵进行数据推断                   [38] , 最近的研究主要围绕    GAN  等深度模型    [39]  来生成
                 新的数据. 后来, 在    GCF  的研究工作中出现了一些更为实用的数据增强技术. 例如, SGL                [40]  通过边缘缺失来生成结
                 构特征; UserSim [41]  采用监督式生成对抗网络的方式模拟用户. 在           GCF  中无论选择何种技术来解决数据稀疏性问
                 题, 他们均表明, GCF   作为一种面向相关性推荐的范式            [42,43] , 具有处理图形等非结构化多模态数据的绝对优势. 为
                 了实现更泛化的      bug  与开发人员数据增强, 已有研究利用          bug-开发人员之间的相关性揭示开发人员的专业能力,
                 以及在修复记录中的开发人员与            bug  的隐式关系. 例如, 通过计算     bug  b i  和已被开发人员  d j  修复的  bug  之间的语
                 义相似度, 实现    bug  b i  和开发人员  d j  的匹配  [14] . 然而, 在分析二者的相关性时, 完全丢弃 bug  报告文本数据而将重
                 心仅放在    bug  与开发者所形成的图数据上时, 也会丢失图结构不能表达的重要信息, 如开发者专业背景、能力、
                 兴趣及   bug  的严重程度等. 这使得最终的分派结果也会不尽人意. 因此, 在多模态机器学习技术兴起的浪潮下, 软
                 件维护领域许多研究已将多模态技术用于挖掘和处理来自                    bug  的多个模态数据信息. 例如, DeMoB      [44]  将  bug  报告
                 和源文件视为两种模态, 并通过动态的神经网络捕获两种语言之间的差异, 以提高                          bug  定位准确率. 此外, Wan  等
                 人  [45]  基于文本语义、语法树结构、控制流图等多模态信息的代码表征学习, 开发了一种综合性的多模态表示方
                 法来表示源代码的非结构化和结构化特性, 实现更全面的代码理解.
                    总结上述相关研究工作, 不难发现目前基于               bug  报告文本分类的方法受到       bug  数据不均衡性影响, 导致模型
                 在预测时偏向多数类, 对少数类的预测精度较低; 而基于相关性分析的方法多是以文本数据模态为主, 通过信息检
                 索的方式匹配, 这忽视了对开发者的建模; 基于协同推荐的                 bug  分派受到冷启动和数据稀疏性等问题的影响, 难以
                 直接应用于    bug  分派. 因此, 借鉴已有场景的解决方案, 本文创造性地将             bug  分派建模为二部图中的相关节点的匹
                 配问题, 并基于协同分派模型融合           bug  报告文本和   bug-开发者二部图模态数据, 强化         bug  和开发者的语义信息,
                 为  bug  节点集合与开发人员节点集合建立联系, 深入挖掘              bug-开发者的相关性, 最后借助协同推荐技术实现               bug
                 分派. 这有望开辟软件维护工作的新思路.

                 2   基本定义

                    本文提出的     CBT-MF  方法主要基于     bug  报告文本和   bug-开发人员二部图两种模态数据进行分析, 旨在挖掘
                 出  bug  和开发人员的相关性. 本节将先介绍          bug  分派的形式化定义, 以及表征         bug  与开发人员的向量等基础
                 概念.

                 2.1   bug  分派的定义
                    本文对分派过程中两个关键对象集合: bug                               D, 有如下定义:
                                                     集合   B 和开发人员集合
                                                                 {
                                          B = {b i | i = 1,2,...,n B },  D = d j | j = 1,2,...,n D }  (1)
                 其中,  n B  和  n D  分别表示  bug  和开发人员的数量.  b i  包含  bug  报告摘要、描述和开发人员   d j  唯一的  E-mail 地址等
                 信息;  d j  包含表示开发人员   ID  的  E-mail、性别、年龄及学历等信息. 此时, 可进一步将分派记录集              T  定义为:

                                                  {                       }
                                               T = t ij | i = 1,2,...,n B , j = 1,2,...,n D           (2)
                 其中, 元素  t ij  刻画了  bug   b i  和开发人员  d j  的相关性, 表示二者之间是否存在分派关系, 具体地:
   124   125   126   127   128   129   130   131   132   133   134