基于LDA主题模型的软件缺陷分派方法

基于LDA主题模型的软件缺陷分派方法


2024年5月15日发(作者:以太网控制器感叹号)

第37卷 

第21期 

、,01-37 

计算机工程 

2011年11月 

November 201 1 

NO.21 

Computer Engineering 

软件技术与数据库・ 文章编号:100o_3428(2ol1)21—_0046—_o3 文献标识码:A 中图分类号:TP311 

基于LDA主题模型的软件缺陷分派方法 

黄小亮 ,郁抒思 ,关佶红 

(1.复旦大学计算机科学技术学院,上海200433;2.同济大学计算机科学与技术系,上海20180g) 

摘要:传统的基于向量空间模型的软件缺陷分派方法,由于存在特征空间维度高、数据稀疏且包含噪音等问题,分派准确率较低。为此, 

提出一种基于隐含狄利克雷分配(LDA)主题模型的软件缺陷分派方法,将缺陷报告从原始的高维文本单词空间映射到低维语义主题空间, 

在新的低维主题空间上进行分派。实验结果表明,在使用SVM和KNN分类器时,该方法的分派准确率较高。 

关健诃:软件缺陷分派;隐含狄利克雷分配模型;马尔可夫链蒙特卡洛方法;吉布斯采样;文本分类;向量空问模型 

Software Bug Triage Method Based 0n LDA Topic Model 

HUANG Xiao-liang ,YU Shu-si ,GUAN Ji-hongz 

(1.School of Computer Science,Fudan University,Shanghai 200433,China; 

2.Department of Computer Science,Tongji University,Shanghai 201 804,China) 

[Abstract]In traditional Vector Space Model(VSM)based software bug triage,the high dimensionality feature space are sparse and noise 

containing.Inspired by these characteristics,this paper proposes a software bug triage method based on Latent Dirichlet Allocation(LDA)topic 

mode1.It maps the bug report to he ttopic space,and makes triage in the new low dimension topic space.Experimental results show that,the method 

works well on bug triaging,with SVM and KNN classifiers. 

[Key wordsl software bug triage;Latent Diifchlet Allocation(LDA model;Markov—Chain Monte Carlo(MCMC)method;Gibbs sampling;text 

classiifcation;Vector Space ModeI(VSM) 

DOI:10.3969/j.issn.1000—3428.2011.21.016 

1概述 

大规模的开源软件,如Eclipse和Firefox等,随着规模 

的增大和版本的更新,会有大量的缺陷(bug)被发现和提交。 

由于数量很大,将这些新的缺陷分给合适的开发人员去解 

决,需要大量的人力和时间。软件缺陷分派的目的,就是利 

用缺陷跟踪系统(如Bugzilla)中已解决缺陷的历史信息(包括 

2软件缺陷报告与软件缺陷分派 

2.1软件缺陷报告 

在大型的软件系统中都会有专门的缺陷跟踪系统,以维 

护整个软件系统中缺陷的基本信息和修复情况。缺陷报告是 

记录单个缺陷信息和状态的文本。以Eclipse为例,一个典型 

的缺陷报告中包含缺陷报告编号、出现缺陷的平台、软件版 

本、缺陷状态(是否修复等)、被分派给谁等信息,还有详细 

参与解决缺陷的人员信息),对新提交的缺陷进行自动分派。 

缺陷的自动分派能帮助系统开发与维护人员将宝贵的时间专 

注于缺陷的修复。 

缺陷分派最常用的方法是将每一个缺陷报告看成一个文 

档,提取缺陷文本描述信息,然后用向量空间模型(Vector 

Space Model,VSM)表示软件缺陷,从而将缺陷分派转换成文 

本分类问题来处理。相比于普通的文本分类问题,缺陷分派 

描述缺陷的description信息。同时,每个缺陷报告还有一个 

对应的活动Et志来保存缺陷报告中信息的修改记录(如状态 

的改变等)。在基于文本分类的缺陷分派方法中,缺陷报告是 

主要信息来源。 

可用信息少,而类别多(每个开发人员相当于一个类别),因 

此分派效果普遍较差,分派准确率低。文献[1]直接将缺陷报 

告表示为单词的集合,使用朴素贝叶斯方法分类,取得了约 

30%的准确率。缺陷分派最后的类别是开发者,可以有多个, 

2.2基于向量空间模型的软件缺陷分派 

使用基于文本分类的方法来进行缺陷分派时,基本方法 

是使用description信息作为文本,修复缺陷的人作为文本的 

类别标签,然后用TF—IDF(Term Frequency—Inverse Document 

Frequency)构建向量空间模型,将每个缺陷报告表示成单词 

空间上的一个向量,再使用分类方法对新的缺陷报告进行分 

文献[2]扩展了文献【1】的方法,根据新缺陷分到每个类的概 

率,取概率最高的k个类(开发人员)组成一个推荐列表,在 

k=5时使分派给推荐列表的准确率达到60%左右。此外,文 

类,将其分派给类别对应的开发者。 

向量空间模型利用训练集合中的所有单词来组成一个高 

维空间,每个不同的单词就是空间里的一个维度,每一个文 

档则对应空间里面的一个向量。用description里面的文本信 

息来构建向量时,先要把文本分解成一个个的单词。因为文 

基金项目:国家自然科学基金资助项目(60873040) 

献【3】还使用隐含语义分析(Latent Semantic Analysis,LSA)来 

将缺陷报告的文本从单词空间映射到“隐含”语义空间,进 

行降维和去噪,然后在新的语义空间上进行分派。 

为提高分派效果,本文提出一种基于隐含狄利克雷分配 

(Latent Dirichlet Allocation,LDA)14]主题模型的方法,即将缺 

陷报告文档从高维的单词空间映射到低维的主题空间,然后 

进行缺陷分派。 

作者简介:黄小亮(1985一),男,硕士研究生,主研方向:数据挖 

掘,文本分类;郁抒思,博士研究生;关佶红,教授、博士生导师 

收稿日期:201 I一04—26 E—mail:huangxl@fudan.edu.cn 

第37卷第21期 黄小亮,郁抒思,关估红:基于LDA主题模型的软件缺陷分派方法 47 

本中有很多合成词,所以需要把这样的词分解开,判断的标 

准是小写字母后面跟着大写字母。同时还要剔除停用词和统 

大小写,并使用提取词干的方法将不同时态的单词统一起 

来。停用词是指那些出现次数非常多,不具有区分意义的 

词,比如of、the等,通常由一个列表提供。 

确定文档向量在各个维度上的权值时,通常采用TF—IDF 

方法,其基本思想是,某个单词在一篇文章里面出现的次数 

越高,同时在其他文章里面出现的次数越少,则该单词具有 

越好的区别能力。其中,词频指给定的文档d当中单词W出 

现的次数,为了防止偏向长文件,通常会除以文件总单词 

数。而文档频率则是指整个集合D中,包含W的文档个数。 

对于给定的词W ,它在文本 中的ty初f 值可表示为: 

= ㈩ 

df,=lb (2) 

其中,n 表示单词w 在文本 中出现的次数;IDI表示集合 

当中包含的总文件数;I{d: ∈d}l表示集合当中包含单词 

W 的文件的总数,在求对数的时候,可以选用任意的底数, 

本文使用2作为底数。然后就可以得到词W 的TF—IDF值: 

af,

J ,,xidf ̄ (3) 

通过计算文档中每个单词的TF—IDF值,就可以得到文 

档最后的向量表示。 

3基于LDA主题模型的软件缺陷分派 

3.1 LDA模型 

LDA是一种对文本建模的方法,它将文档表示成一个由 

文档、主题和词组成的3层概率模型,常被用来做主题分 

析 。LDA模型建立在文档是“词袋”(bag—of-word)的假设 

之上,该假设忽略了单词之间的顺序关系,是可交换的,因 

此,在给定某些参数的情况下,这些单词在文档中就是独立 

同分布的。通过LDA建模,可以将文本映射到主题空间上, 

从而对其进行主题分类和判断相似度等操作。 

在构建模型时,LDA假设 和 分别先验地服从参数 

为 , 的狄利克雷分布。狄利克雷分布是一种描述多维变量 

概率分布的分布,常用作概率模型中的先验假设, ,∥是预 

设的参数,是一个表示多维变量相互之间权重关系的向量。 

如图1所示,主题在每个文档d上有一个概率分布 ,单词 

在每个主题Z上有概率分布 。 

图1 LDA模型 

在对文本构建LDA模型时,一种推导模型的参数的方 

法是使用吉布斯采样(Gibbs Sampling)的马尔可夫链蒙特卡 

洛(Markov—Chain Monte Carlo,MCMC)方法 J。该方法对每个 

位置上的单词(将所有文档连成串)分配一个主题,并以此为 

状态空间来构建马尔科夫链,通过Gibbs采样来更新节点状 

态(单词的主题),收敛到稳定状态后再用统计规律计算出数 

据集上LDA模型概率分布的近似。在构建模型时,MCMC 

方法通常假设模型中的狄利克雷分布是对称狄利克雷分布, 

即口, 中的每个分量都取相同值,于是a, 退化为实数帅 

采样的具体过程为: 

(1)初始化:为每个位置i上的单词W 随机分配一个主题。 

(2)更新状态:对于每一个单词 ,通过计算在i以外的 

其他所有单词的主题Z. 已知的情况下,W 属于每一个主题 

的后验概率p(z ,,w)来将当前单词分配给最可能的 

主题。 

(3)迭代步骤(2)足够多次,使每个单词的主题收敛到稳定 

状态。 

1+疗 j一1+ 

w) z ,r—

一 

n 

d-1 4-TO ̄ 

( )

其中,第1个比值表示W 属于主题 的比例;第2个比值表 

示文档d中被赋予主题 的单词所占的比例;T和 分别表 

示主题数和不同单词的总数;d是位置i所在的文档;n 表 

示W分配给z的次数; 表示所有单词分配给Z的总次数; 

为文档d中的单词分配给Z的次数;n ,是d包含的单词总 

数。经过多次采样迭代后,就能得到每个单词的主题分配情 

况,同时也就知道了各个文档中每个主题出现的次数。然 

后,就可以得出LDA模型中的概率分布。 

+疗 

z"r ( ) 

w 

【b) 

其中, 。就是文档 在主题空间模型中,主题Z对应维度 

上的权重。 

3.2软件缺陷分派 

基于LDA主题模型的缺陷分派方法利用LDA模型来发 

现当中隐含的主题信息,通过对缺陷报告建立LDA模型, 

将每个缺陷报告映射为主题空间里面的一个向量,然后在使 

用基于向量的分类器来对新的缺陷报告进行分派。图2显示 

了该方法的框架结构,从缺陷跟踪系统中得到缺陷报告后, 

先提取修复者和缺陷描述部分的信息,然后采用与2.2 中 

相同的方式进行预处理,再在上面构建LDA模型,得到缺 

陷报告在主题空间上的向量表示。 

图2基于LDA模型的缺陷分派框架结构 

对于一个新的缺陷报告 ,同样使用Gibbs采样的迭代 

方法来估计其在主题上的分布。因为训练集中的单词的主题 

已经稳定,所以迭代时,只需要考虑新文档 里面的单词。 

但是在计算条件概率以更新状态的时候,需要将训练集和新 

文档中合并起来考虑。 

p(z l

i 

 w)

一 

 : 兰 

 ’

塑二 ± 

} 

{7)

其中,亓 和矗 分别表示全部集合(训练集+新文档)中,单词 

48 计算机工程 2011年11月5日 

w分配给主题z的次数和所有单词分配给主题z的总次数。 

然后,利用公式: 

… : 

t~1 +K 

(8) 

就可以计算出 在主题空间上的向量表示了。 

4实验及结果分析 

实验选取了Eclipse的缺陷跟踪系统中编号l~4 000的缺 

陷报告作为样本,除去没有解决的和开发者出现次数小于 

l0的部分,剩下2 746个样本,开发者数为44,单词向量总 

维度为5 828。使用Gibbs采样获取LDA模型参数时, 

50/T,fl=200/V,T和 分别表示主题数和词表长度,迭代次 

数为300。原始方法用单词的DF值来选择特征,因为前面去 

除停用词时已经去掉了DF最高的那些词,所以这里去掉DF 

值较小而保留DF最大的k维特征,来和相同维度(30,50,80, 

l()(】,150,200,300,400,50O)上基于LDA的方法作对比。分 

类方法采用支持向量机(Support Vector Machine,SVM)和K一 

最近邻(K—Nearest Neighbor,KNN),取 为5,10,20,30,40, 

50,60,7O时准确率的最优值。在测试时,采用10一folder交叉 

验证,即将数据分成10份,每次取9份做训练集,剩下的为 

测试集,取平均准确率作为衡量结果的标准,定义为: 

准确率= 

因为TF-IDF方法在数据达到在500维时,使用SVM 

分类器得到的分类效果仍处于上升趋势,继续测试700维、 

1 000维和l 500维的情况,得到的准确率分别为37.54%、 

37.29%和36.78%。到1 500维时,剔除掉的单词最大DF为 

10,不足样本数的0.5%,而且准确率也已经开始有所降低, 

因此,TF—IDF在SVM上的最高准确率为37.54%。2种方法 

在不同维度上的准确率对比如图3、图4所示。 

实验结果表明,LDA的效果明显好于TF—IDF的原始方 

法。在使用SVM分类时,TF.IDF在700维上达到最好效果 

37.54%,LDA在150维时的准确率则为39.45%。在低维度 

上,LDA的优势更明显,维度同样为50时,LDA就能够得 

到38.07%的准确率,比TF—IDF高出13.89%。在使用KNN 

分类时,相比于原始的TF—IDF,LDA方法的准确率在各个 

维度上也都有所提高。 

图3 SVM缺陷分派准确率比较 

图4 KNN缺陷分派准确率比较 

使用LDA将bug的描述映射到主题空间后,能够将同一 

主题下的相关词聚集到同一个维度上,这样在原来的空问上 

没有体现出来的相关性就得到了利用,从而克服了缺陷报告 

里描述文本较短、构成的向量空间过于稀疏、不利于衡量距 

离的缺点。观察图3和图4中的曲线可以发现,当使用LDA 

时,分派效果随着维度的增加先升后降,这是因为选择的主 

题太少会导致区分性不够,而主题太多以后,一些单词之间 

的相似关系没有得到充分利用。 

5结束语 

本文提出了一种基于LDA主题模型的软件缺陷分派方 

法,将问题从原始的单词空间转换到主题空间上解决。实验 

结果证明,该方法能够在降低维度的同时,提高缺陷分派的 

准确率。在软件缺陷分派问题中,缺陷跟踪系统中的历史数 

据隐含了开发人员相互合作的复杂网络。在今后的工作中, 

将利用这些信息,结合复杂网络中的社区挖掘算法,将软件 

缺陷分派给相关的小组,从较粗的粒度上缩小选择范围,再 

在小组内进一步通过自动或人工的方式对软件缺陷进行分 

派,从而从整体上提高软件缺陷分派的效果。 

参考文献 

flI】Cubranic D,Murphy G C.Automatic Bug Triage Using Text 

Categorization[C]//Proc.of the 16th International Conference on 

Software Engineering and Knowledge Engineering.Edinburgh, 

UK:【S.n.],2004. 

【2]Anvik J,Hiew L,Murphy G C.Who Should Fix This Bug?[C]// 

Proc.of the 28th International Conf.on Software Engineering. 

Shanghai,China:[S.n.】,2006. 

【3]Ahsan S N,Ferzund J,Wotawa E Automatic Software Bug Triage 

System(BTS)Based on Latent Semantic Indexing and Support 

Vector Machine[C]HProc.of the 4th International Conference on 

Software Engineering Advances.Porto,Portugal:[S.n.],2009. 

[41 Blei D M,Ng A Jordan M I.Latent Dirichlet Allocation[J]. 

Journal ofMachine Learning Research,2003,3:993—1022. 

【51石 晶,李万龙.基于LDA模型的主题词抽取方法[Jll计算机 

工程,2010,36(19):8l_83. 

【6]Giffiths T L,Steyvers M.Finding Scientiifc Topics[J].Proc.of 

National Academy of Science,2004,101(S1):5228—5235. 

编辑顾姣健 


发布者:admin,转转请注明出处:http://www.yc00.com/xitong/1715771965a2669309.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信