CN112286799B - 结合句嵌入和粒子群优化算法的软件缺陷定位方法 - Google Patents
结合句嵌入和粒子群优化算法的软件缺陷定位方法 Download PDFInfo
- Publication number
- CN112286799B CN112286799B CN202011118127.5A CN202011118127A CN112286799B CN 112286799 B CN112286799 B CN 112286799B CN 202011118127 A CN202011118127 A CN 202011118127A CN 112286799 B CN112286799 B CN 112286799B
- Authority
- CN
- China
- Prior art keywords
- source code
- defect
- word
- code file
- sentence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000007547 defect Effects 0.000 title claims abstract description 139
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000005457 optimization Methods 0.000 title claims abstract description 25
- 239000002245 particle Substances 0.000 title claims abstract description 25
- 230000008439 repair process Effects 0.000 claims abstract description 18
- 238000005516 engineering process Methods 0.000 claims abstract description 10
- 238000004364 calculation method Methods 0.000 claims abstract description 7
- 238000001914 filtration Methods 0.000 claims abstract description 5
- 239000013598 vector Substances 0.000 claims description 33
- 230000006870 function Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 6
- 239000011159 matrix material Substances 0.000 claims description 4
- 238000012549 training Methods 0.000 claims description 4
- 238000000354 decomposition reaction Methods 0.000 claims description 2
- 238000011156 evaluation Methods 0.000 claims description 2
- 230000004807 localization Effects 0.000 description 5
- 206010000117 Abnormal behaviour Diseases 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000010835 comparative analysis Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/211—Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种结合句嵌入和粒子群优化算法的软件缺陷定位方法。本发明提出使用句嵌入技术构建软件缺陷报告与源代码文件之间的相似度计算模型,同时计算平滑逆频率分数、表面词汇相似度分数、缺陷修复记录分数、缺陷修复频率分数以及协同过滤分数,最后用粒子群优化算法计算出五种分数的线性组合权重,从而获得缺陷报告与所有源代码文件的最终积分。本发明利用句嵌入技术(SIF)获取软件缺陷报告与源代码文件之间的语义信息,使得相似度的计算更加合理;本发明使用粒子群优化算法优化线性权重得到最优综合分值能够提高软件缺陷定位的准确性。
Description
技术领域
本发明涉及软件维护领域,尤其涉及一种结合句嵌入和粒子群优化算法的软件缺陷定位方法。
背景技术
软件缺陷指的是软件或程序在运行的过程中出现了异常行为,这些行为可能会破坏软件或程序的正常运行,甚至出现崩溃现象。在软件开发中,缺陷是不可避免的,缺陷管理与求解是软件维护中一项十分重要的活动。为了有效的管理和维护软件缺陷,许多公司或组织采用缺陷追踪系统(如Bugzilla和JIRA)来收集终端用户、软件测试者或开发者提交的缺陷报告。通常,一个缺陷报告中会包含缺陷相关信息,主要涉及软件在特定场景下出现的异常的行为,能够有效地帮助开发者理解软件缺陷并进行修复。
缺陷定位是缺陷修复过程中一个重要环节。通常,开发者需要审查缺陷报告并根据缺陷报告中的描述信息重现揭露的缺陷,从而定位软件中可能出现缺陷的位置。然而,人工地审查缺陷报告,可能会花费大量时间和精力。其主要原因在于开发人员可能需要检查大量的源代码文件以找到目标缺陷。通过自动化技术定位缺陷可能出现的位置,能够加快缺陷定位的过程,帮助开发者提高软件维护的效率,降低软件维护代价。当前,许多研究者尝试借助缺陷报告中的缺陷信息,通过对源程序进行对比分析,找到可能出现缺陷的位置。但是由于缺陷报告中的文本信息与源代码文件中的单词之间存在词汇差异,增加了缺陷定位的难度。
近来,许多研究聚焦在通过缺陷报告来实现软件缺陷定位,通过利用软件缺陷报告的摘要和描述信息来找到相关源代码文件。现有的基于缺陷报告的软件缺陷定位方法可以分为两类:第一类是基于信息检索(Information Retrieval)的方法,这些方法计算给定的软件缺陷报告与源代码文件内容之间的文本相似度并对源代码文件进行排序,找到最相似的源代码文件。第二类,就是基于机器学习或深度学习方法进行软件缺陷定位,这些方法首先利用数据(缺陷报告和源代码文件)来训练模型,然后再利用训练完成的模型来匹配缺陷报告与源代码文件的主题或计算缺陷报告-源代码对的相似度以进行排序推荐。
发明内容
为了克服现有技术的不足,本发明提供一种结合句嵌入和粒子群优化算法的软件缺陷定位方法,可有效解决上述问题。
本发明具体采用的技术方案如下:
步骤(1)给定n个软件缺陷报告集合R=(R1,R2,…,Rn),将其中每个缺陷报告表示成Ri=<reportId,description,summary>,i=1,2…,n,其中reportId表示缺陷报告编号,description表示缺陷报告的详细描述信息,summary表示缺陷报告的摘要信息;
步骤(2)给定m个源代码文件集合S=(S1,S2,…,Sm),利用JDT解析每一个源代码文件,将每一个源代码文件处理成Sj=<className,method,property,comment>形式,j=1,2,…,m,其中className表示源代码文件的类名,method表示每个源代码文件的方法集合,property表示源代码文件的属性名集合,comment表示源代码文件的注释集合;
步骤(3)对每一个缺陷报告Ri和源代码文件Sj进行预处理:
首先对Ri中的description和summary以及Sj中的所有元素进行提取,然后用空格对Ri和Sj中提取的信息初步区分成单词,并删除其中的符号;
然后基于停用词列表移除其中的停用词,将初步区分后单词中的组合词再次进行分离,得到最终的单词集合;
最后将单词集合中的每个单词转为原型;
经过预处理后,每个缺陷报告为Ri=<reportId,preDescription,preSummary>,每个源代码文件为Sj=<preClassName,preMehtod,preProperty,preComment>;
步骤(4)将经过预处理后所有的缺陷报告和所有的源代码文件组成一个语料库Q=(R1,R2…,Rn,S1,S2,…,Sm),并用l表示语料库中包含的单词个数,然后将每个缺陷报告与每个源代码文件组对,即pair=<Ri,Sj>;
步骤(5)构建平滑逆频率(Smooth Inverse Frequency,SIF)模型:
首先使用GloVe词嵌入技术对语料库Q中的单词进行训练,得到每个单词Wk(k=1,2,…,l)的词向量然后计算每个单词的权重ω(Wk);在此基础上分别计算Ri和Sj对应的句向量/>和/>最后计算每一组句向量/>之间的余弦相似度作为平滑逆频率模型的分数值SIFScore;
步骤(6)计算表面词汇相似度分数:
首先利用TF-IDF(Term Frequency-Inverse Document Frequency)计算每一个Ri和Sj在语料库中第k(k=1,2,…,l)个单词的权重tfidfi,k和tfidfj,k,从而Ri的句向量表示为Sj的句向量表示为/>
然后计算每一组句向量对之间的余弦相似度作为VSMScore;
步骤(7)计算缺陷的修复历史记录分数RScore:
由于源代码的更改历史记录有助于预测易错文件,所以最近经常被修改的源代码文件比过去长时间未被修改或从未被修改的文件更可能产生软件缺陷,令SR_month为最新的修复时间,R_month为当前软件缺陷报告的创建时间,缺陷的修复历史记录分数定义为:
步骤(8)计算缺陷修复频率分数:
一个源代码文件如果经常被修复,那么这个文件可能是容易发生故障的文件,将软件缺陷报告提交之前源代码文件被修复的次数记为FScore,考虑到FScore的取值不在0到1之间,采用线性归一化处理;
步骤(9)计算协同过滤分数CFScore:
如果一个缺陷报告和另外一个缺陷报告相似,那么可能是由相同的源代码文件导致的;BRSi(BR,BS)为第i条记录Ri创建之前的所有已修复的软件缺陷报告BR以及对应的源代码文件BS的集合,若Sj∈BS,则对应存在缺陷报告Pk∈BR;软件缺陷报告Ri与源代码文件Sj的协同过滤分数CFScore定义为Ri与Rk的相似度;
步骤(10)有了多个不同层面的缺陷报告与源代码文件的分数,将他们进行线性组合形成一个最终得分,然后根据每个缺陷报告相关的最终得分,对源代码文件进行排序,其中线性组合公式如下所示:
finalScoree=α1*SIFScore+α2*VSMScore+α3*RScrore+
α4*FScore+α5*CFScore
其中,α1、α2、α3、α4、α5为线性权重。
步骤(11)利用粒子群优化算法优化5个分数的线性权重α1、α2、α3、α4、α5,优化的具体步骤如下:
首先确定粒子群优化算法的适应度函数ObjectFun=MAP+MRR,其中MAP是广泛用于信息检索的标准度量,即平均准确率,MRR是每个软件缺陷报告的第一个正确定位的缺陷源代码文件的排名倒数累加的平均值;
然后设置种群数量P,随机初始化每个个体的速度Vi=(vi1,vi2,…,vid)和位置Xi=(xi1,xi2,…,xid),其中d=5为需要优化的权重的个数,并根据适应度函数确定每个个体的当前最优位置pbesti和种群的全局最优位置gbest;
之后,在第t次迭代时,更新每个粒子的速度和位置,并更新每个个体的当前最优位置gbesti和种群的全局最优位置gbest;
重复执行上述操作,直至达到最大迭代次数MaxIter,设定为1000,获得最优的权重组合α1,α2,α3,α4,α5;
步骤(12)根据得到的最优权重α1,α2,α3,α4,α5计算目标缺陷报告和所有的源代码文件的finalScore并进行排序,finalScore最高的源代码文件最可能是导致该缺陷出现的源代码文件。
本发明提出使用句嵌入技术构建软件缺陷报告与源代码文件之间的相似度计算模型,同时计算平滑逆频率分数、表面词汇相似度分数、缺陷修复记录分数、缺陷修复频率分数以及协同过滤分数,最后用粒子群优化算法计算出五种分数的线性组合权重,从而获得缺陷报告与所有源代码文件的最终积分。相比于传统的软件缺陷定位方法,本发明具有如下收益:
1、利用句嵌入技术(SIF)获取软件缺陷报告与源代码文件之间的语义信息,使得相似度的计算更加合理;
2、使用粒子群优化算法优化线性权重得到最优综合分值能够提高软件缺陷定位的准确性。
附图说明
图1为本发明结合句嵌入技术和粒子群优化算法的缺陷定位方法的流程图;
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。
为叙述方便,定义相关符号如下:
S:源代码文件集合。
r:缺陷报告集合。
Q:源代码文件和缺陷报告组成的语料库。
pair:软件缺陷报告与源代码文件对组成的集合。
第i个个体在t时刻的速度。
第i个个体在t时刻的位置。
P:初始种群大小。
MacIter:迭代次数大小。
c1和c2:学习因子。
w:线性权重。
数据源获取:本实验所用的原始数据来自由Ye整理的公开数据集。该数据集是从三个开源项目Tomcat、JDT和SWT中提取的,并根据相关操作获取相应的源代码文件。每个缺陷报告由以下几部分组成:缺陷报告编号、缺陷报告的详细描述信息、缺陷报告的摘要信息以及缺陷报告所对应的源代码文件等等。
以下结合附图1,对本发明专利提供的结合一种句嵌入和粒子群优化算法的软件缺陷报告定位方法进行详细说明,包括以下步骤:
步骤(1)给定n个软件缺陷报告集合R=(R1,R2,…,Rn),将其中每个缺陷报告表示成Ri=<reportId,description,summary>,i=1,2…,n,其中reportId表示缺陷报告编号,description表示缺陷报告的详细描述信息,summary表示缺陷报告的摘要信息;
步骤(2)给定m个源代码文件集合S=(S1,S2,…,Sm),利用JDT解析每一个源代码文件,将每一个源代码文件处理成Sj=<className,method,property,comment>形式,j=1,2,…,m,其中className表示源代码文件的类名,method表示每个源代码文件的方法集合,property表示源代码文件的属性名集合,comment表示源代码文件的注释集合;
步骤(3)对每一个缺陷报告Ri和源代码文件Sj进行预处理:
首先对Ri中的description和summary以及Sj中的所有元素进行提取,然后用空格对Ri和Sj中提取的信息初步区分成单词,并删除其中的符号;
然后基于停用词列表移除其中的停用词,并将组合词进行分离,最后将每个单词转为原型;经过预处理后每个缺陷报告表示为Ri=<reportId,preDescription,preSummary>,每个源代码文件表示为Sj=<preClassName,preMehtod,perProperty,preComment>;
步骤(4)将所有的缺陷报告和所有的源代码文件组成一个语料库Q=(R1,R2…,Rn,S1,S2,…,Sm),并用l表示语料库中包含的单词个数,然后将每个缺陷报告与每个源代码文件组成对,即pair=<Ri,Sj>;
步骤(5)构建平滑逆频率(Smooth Inverse Frequency,SIF)模型:
5-1.使用GloVe词嵌入技术对语料库中的单词进行训练,得到每个单词Wk(k=1,2,…,l)的词向量其中GloVe是一个基于全局词频统计的词表征工具,它可以把一个单词表示成一个由实数组成的向量,这些向量能捕捉单词之间一些语义特性,比如相似性、类比性等;
5-2.计算每个单词Wk的权重ω(Wk):
其中,α为常数,通常设置为0.0001,p(Wk)表示单词Wk出现的概率;
5-3.句向量计算,分别计算Ri和Sj对应的句向量和/>并去除非信息噪音(最大主成分),以/>为例:
其中,为去除最大主成分前的句向量,|Ri|表示Ri中包含的单词个数,μ为/>经过奇异值分解得到的特征矩阵,μT为μ的转置矩阵,/>为/>的最大主成分向量;
5-4.计算每一组句向量之间的余弦相似度作为SIFScore:
步骤(6)计算表面词汇相似度分数:
6-1.利用TF-IDF(Term Frequency-Inverse Document Frequency)计算语料库中每一个Ri和Sj中第k(k=1,2,…,l)个单词的权重tfidfi,k和tfidfj,k:
其中,tfi,k和tfj,k分别表示Ri和Sj中第k个单词的频率,dfk表示包含第k个单词的文档(测试报告或者源代码文件)的数量;从而Ri的句向量表示为Sj的句向量表示为/>Ri句向量中的权重值为0时,说明该权重对应的单词不属于该Ri;同理Sj句向量中的权重值为0时,说明该权重对应的单词不属于该Sj;
6-2.计算每一组句向量之间的余弦相似度作为VSMScore:
步骤(7)计算缺陷的修复历史记录分数RScore:由于源代码的更改历史记录有助于预测易错文件,所以最近经常被修改的源代码文件比过去长时间未被修改或从未被修改的文件更可能产生软件缺陷,令SR_month为最新的修复时间,R_month为当前软件缺陷报告的创建时间,缺陷的修复历史记录分数定义为:
步骤(8)计算缺陷修复频率分数:一个源代码文件如果经常被修复,那么这个文件可能是容易发生故障的文件,将软件缺陷报告提交之前源代码文件被修复的次数记为FScore,考虑到FScore的取值不在0到1之间,采用线性归一化处理;
步骤(9)计算协同过滤分数CFScore:如果一个缺陷报告和另外一个缺陷报告相似,那么可能是由相同的源代码文件导致的;BRSi(BR,BS)为第i条记录Ri创建之前的所有已修复的软件缺陷报告BR以及对应的源代码文件BS的集合,若Sj∈BS,则对应存在缺陷报告Rk∈BR,软件缺陷报告Ri与Sj的协同过滤分数CFScore定义为Ri与Rk的相似度:
其中,和/>分别表示Ri和Rk经过SIF计算出的句向量;
步骤(10)有了多个不同层面的缺陷报告与源代码文件的分数,将他们进行线性组合形成一个最终得分,然后根据每个缺陷报告相关的最终得分,对源代码文件进行排序,其中线性组合公式如下所示:
finalScore=α1*SIFScore+α2*VSMScore+α3*RScrore+α4*FScore+α5*CFScore 公式10
步骤(11)利用粒子群优化算法优化五个分数的线性权重α1、α2、α3、α4、α5,优化的具体步骤如下:
11-1.确定粒子群优化算法的适应度函数,使用两个评估指标:
ObjectFun=MAP+MRR 公式11
其中MAP是广泛用于信息检索的标准度量,即平均准确率;MRR是每个软件缺陷报告的第一个正确定位的缺陷源代码文件的排名倒数累加的平均值;
11-2.设置种群数量P(P=20),随机初始化每个个体的速度Vi=(vi1,vi2,…,vid)和位置Xi=(xi1,xi2,…,xid),其中d=5为需要优化的权重的个数;根据适应度函数确定每个个体的当前最优位置pbesti和种群的全局最优位置gbest;
11-3.在第t+1次迭代时,更新每个粒子的速度和位置,公式如下:
其中w为惯性权重w∈0.1,0.9,c1和c2是学习因子,通常设置为2,rand1和rand2为两个随机值,在[0,1]范围内取值;
11-4.计算每个个体的适应度函数值,并更新每个个体的当前最优位置pbesti和种群的全局最优位置gbest;
11-5.重复执行上述操作,直至达到最大迭代次数MaxIter,设定为1000;最后,获得最优的权重组合α1,α2,α3,α4,α5;
步骤(12)根据得到的最优权重α1,α2,α3,α4,α5计算目标缺陷报告和项目中所有的源代码文件的finalScore并进行排序,得分最高的源代码文件最可能是导致该缺陷出现的源代码文件。
Claims (5)
1.结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于包括如下步骤:
步骤(1)给定n个软件缺陷报告集合R=(R1,R2,...,Rn),将其中每个缺陷报告表示成Ri=<reportId,description,summary>,i=1,2...,n,其中reportId表示缺陷报告编号,description表示缺陷报告的详细描述信息,summary表示缺陷报告的摘要信息;
步骤(2)给定m个源代码文件集合S=(S1,S2,...,Sm),利用JDT解析每一个源代码文件,将每一个源代码文件处理成Sj=<className,method,property,comment>形式,j=1,2,...,m,其中className表示源代码文件的类名,method表示每个源代码文件的方法集合,property表示源代码文件的属性名集合,comment表示源代码文件的注释集合;
步骤(3)对每一个缺陷报告Ri和源代码文件Sj进行预处理;
步骤(4)将经过预处理后所有的缺陷报告和所有的源代码文件组成一个语料库Q=(R1,R2...,Rn,S1,S2,...,Sm),并用l表示语料库中包含的单词个数,然后将每个缺陷报告与每个源代码文件组对,即pair=<Ri,Sj>;
步骤(5)构建平滑逆频率模型,得到平滑逆频率模型的分数值SIFScore;
首先使用GloVe词嵌入技术对语料库Q中的单词进行训练,得到每个单词Wk,k=1,2,...,l的词向量
然后计算每个单词的权重ω(Wk);在此基础上分别计算Ri和Sj对应的句向量和/>
最后计算每一组句向量之间的余弦相似度作为平滑逆频率模型的分数值SIFScore;
步骤(6)计算表面词汇相似度分数VSMScore;
步骤(7)计算缺陷的修复历史记录分数RScore;
步骤(8)计算缺陷修复频率分数:将软件缺陷报告提交之前源代码文件被修复的次数记为FScore;
步骤(9)计算协同过滤分数CFScore;
步骤(10)将多个不同层面的缺陷报告与源代码文件的分数进行线性组合形成一个最终得分;
finalScore=α1*SIFScore+α2*VSMScore+α3*RScrore+α4*FScore+α5*CFScore 公式10
步骤(11)利用粒子群优化算法优化5个分数的线性权重;
步骤(12)根据得到的最优权重计算目标缺陷报告和所有的源代码文件的finalScore并进行排序,finalScore最高的源代码文件最可能是导致该缺陷出现的源代码文件;
步骤(6)具体实现如下:
首先利用TF-IDF计算每一个Ri和Sj在语料库中第k个单词的权重tfidfi,k和tfidfj,k,从而Ri的句向量表示为 Sj的句向量表示为/>
然后计算每一组句向量对之间的余弦相似度作为VSMScore;
步骤(7)具体实现如下
令SR_month为最新的修复时间,R_month为当前软件缺陷报告的创建时间,缺陷的修复历史记录分数定义为:
步骤(9)具体实现如下:
设BRSi(BR,BS)为第i条记录Ri创建之前的所有已修复的软件缺陷报告BR以及对应的源代码文件BS的集合,若Sj∈BS,则对应存在缺陷报告Rk∈BR,软件缺陷报告Ri与Sj的协同过滤分数CFScore定义为Ri与Rk的相似度:
其中,和/>分别表示Ri和Rk经过SIF计算出的句向量。
2.根据权利要求1所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(3)具体实现如下:
首先对Ri中的description和summary以及Sj中的所有元素进行提取,然后用空格对Ri和Sj中提取的信息初步区分成单词,并删除其中的符号;
然后基于停用词列表移除其中的停用词,将初步区分后单词中的组合词再次进行分离,得到最终的单词集合;
最后将单词集合中的每个单词转为原型。
3.根据权利要求1所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(11)具体优化实现如下:
11-1.确定粒子群优化算法的适应度函数,使用两个评估指标:
ObjectFun=MAP+MRR 公式11
其中MAP是广泛用于信息检索的标准度量,即平均准确率;MRR是每个软件缺陷报告的第一个正确定位的缺陷源代码文件的排名倒数累加的平均值;
11-2.设置种群数量P,P=20,随机初始化每个个体的速度Vi=(vi1,vi2,…,vid)和位置Xi=(xi1,xi2,…,xid),其中d=5为需要优化的权重的个数;根据适应度函数确定每个个体的当前最优位置pbesti和种群的全局最优位置gbest;
11-3.在第t+1次迭代时,更新每个粒子的速度和位置,公式如下:
其中w为惯性权重w∈[0.1,0.9],c1和c2是学习因子,设置为2,rand1和rand2为两个随机值,在[0,1]范围内取值;
11-4.计算每个个体的适应度函数值,并更新每个个体的当前最优位置pbesti和种群的全局最优位置gbest;
11-5.重复执行步骤11-1到步骤11-4,直至达到最大迭代次数MaxIter,设定为1000;最后获得最优的权重组合α1,α2,α3,α4,α5。
4.根据权利要求3所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(5)具体实现如下:
5-1.使用GloVe词嵌入技术对语料库中的单词进行训练,得到每个单词Wk,k=1,2,...,l的词向量
5-2.计算每个单词Wk的权重ω(Wk):
其中,α为常数,设置为0.0001,p(Wk)表示单词Wk出现的概率;
5-3.句向量计算,分别计算Ri和Sj对应的句向量和/>并去除最大主成分,/>的实现形式如下:
其中,为去除最大主成分前的句向量,|Ri|表示Ri中包含的单词个数,μ为/>经过奇异值分解得到的特征矩阵,μT为μ的转置矩阵,/>为/>的最大主成分向量;
5-4.计算每一组句向量之间的余弦相似度作为SIFScore:
5.根据权利要求4所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(6)具体实现如下:
6-1.利用TF-IDF计算语料库中每一个Ri和Sj中第k,k=1,2,...,l个单词的权重tfidfi,k和tfidfj,k:
tfidfi或j,k=tfi或j,k*idfk 公式5
其中,tfi,k和tfj,k分别表示Ri和Sj中第k个单词的频率,dfk表示包含第k个单词的文档的数量;从而Ri的句向量表示为 Sj的句向量表示为 Ri句向量中的权重值为0时,说明该权重对应的单词不属于该Ri;同理Sj句向量中的权重值为0时,说明该权重对应的单词不属于该Sj;
6-2.计算每一组句向量之间的余弦相似度作为VSMScore:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011118127.5A CN112286799B (zh) | 2020-10-19 | 2020-10-19 | 结合句嵌入和粒子群优化算法的软件缺陷定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011118127.5A CN112286799B (zh) | 2020-10-19 | 2020-10-19 | 结合句嵌入和粒子群优化算法的软件缺陷定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112286799A CN112286799A (zh) | 2021-01-29 |
CN112286799B true CN112286799B (zh) | 2024-03-12 |
Family
ID=74496484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011118127.5A Active CN112286799B (zh) | 2020-10-19 | 2020-10-19 | 结合句嵌入和粒子群优化算法的软件缺陷定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112286799B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051156B (zh) * | 2021-03-16 | 2022-03-11 | 广东工业大学 | 一种基于区块链溯源与信息检索的软件缺陷定位方法 |
CN113997319B (zh) * | 2021-11-22 | 2023-09-01 | 北京云迹科技股份有限公司 | 一种硬件检测的方法、机器人、服务器和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159822A (zh) * | 2015-08-12 | 2015-12-16 | 南京航空航天大学 | 一种基于文本词性和程序调用关系的软件缺陷定位方法 |
CN110109835A (zh) * | 2019-05-05 | 2019-08-09 | 重庆大学 | 一种基于深度神经网络的软件缺陷定位方法 |
CN111177010A (zh) * | 2019-12-31 | 2020-05-19 | 杭州电子科技大学 | 一种软件缺陷严重程度识别方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100191731A1 (en) * | 2009-01-23 | 2010-07-29 | Vasile Rus | Methods and systems for automatic clustering of defect reports |
EP3392780A3 (en) * | 2017-04-19 | 2018-11-07 | Tata Consultancy Services Limited | Systems and methods for classification of software defect reports |
CN112000802A (zh) * | 2020-07-24 | 2020-11-27 | 南京航空航天大学 | 基于相似度集成的软件缺陷定位方法 |
CN115617689A (zh) * | 2022-11-01 | 2023-01-17 | 南通大学 | 一种基于cnn模型和领域特征的软件缺陷定位方法 |
-
2020
- 2020-10-19 CN CN202011118127.5A patent/CN112286799B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159822A (zh) * | 2015-08-12 | 2015-12-16 | 南京航空航天大学 | 一种基于文本词性和程序调用关系的软件缺陷定位方法 |
CN110109835A (zh) * | 2019-05-05 | 2019-08-09 | 重庆大学 | 一种基于深度神经网络的软件缺陷定位方法 |
CN111177010A (zh) * | 2019-12-31 | 2020-05-19 | 杭州电子科技大学 | 一种软件缺陷严重程度识别方法 |
Non-Patent Citations (4)
Title |
---|
A New Model for Software Defect Prediction Using Particle Swarm;He Can, Xing Jianchun, Zhu Ruide, Li Juelong, Yang Qiliang, Xie Liqiang;2013 25th Chinese Control and Decision Conference;4106-4110 * |
Word and Sentence Embedding Tools to Measure Semantic Similarity of Gene Ontology Terms by Their Definitions;Dat Duong, Wasi Uddin Ahmad, Eleazar Eskin, Kai-Wei Chang, and Jingyi Jessica Li;Journal of Computational Biology;第26卷(第1期);38-52 * |
基于深度学习和元启发式算法的软件缺陷识别与定位;郭世明;中国优秀硕士学位论文全文数据库;第信息科技辑卷(第01期);全文 * |
基于缺陷报告和源代码的相似缺陷识别方法;董美含;中国优秀硕士学位论文全文数据库;信息科技辑(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112286799A (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Le et al. | Log-based anomaly detection without log parsing | |
US20210382878A1 (en) | Systems and methods for generating a contextually and conversationally correct response to a query | |
CN106649557B (zh) | 一种缺陷报告与邮件列表语义关联挖掘方法 | |
Liu et al. | Has this bug been reported? | |
CN112286799B (zh) | 结合句嵌入和粒子群优化算法的软件缺陷定位方法 | |
CN113656805B (zh) | 一种面向多源漏洞信息的事件图谱自动构建方法及系统 | |
CN111899090B (zh) | 企业关联风险预警方法及系统 | |
CN110109678B (zh) | 一种代码审计规则库生成方法、装置、设备及介质 | |
CN110008309A (zh) | 一种短语挖掘方法及装置 | |
CN112181490B (zh) | 功能点评估法中功能类别的识别方法、装置、设备及介质 | |
JP5682448B2 (ja) | 因果単語対抽出装置、因果単語対抽出方法および因果単語対抽出用プログラム | |
CN108228788A (zh) | 办事指南自动提取并关联的方法及电子设备 | |
CN114491034B (zh) | 一种文本分类方法及智能设备 | |
CN111104159A (zh) | 一种基于程序分析和神经网络的注释定位方法 | |
CN112069833B (zh) | 日志分析方法、日志分析装置及电子设备 | |
Wu et al. | An intelligent duplicate bug report detection method based on technical term extraction | |
CN116894495A (zh) | 用注释增强机器学习管道的方法、计算机可读介质和系统 | |
CN112115362B (zh) | 一种基于相似代码识别的编程信息推荐方法及装置 | |
CN116578700A (zh) | 日志分类方法、日志分类装置、设备及介质 | |
CN115617689A (zh) | 一种基于cnn模型和领域特征的软件缺陷定位方法 | |
CN114202038B (zh) | 一种基于dbm深度学习的众包缺陷分类方法 | |
Tian et al. | Adapting word embeddings to traceability recovery | |
CN113971403A (zh) | 一种考虑文本语义信息的实体识别方法及系统 | |
CN113722421A (zh) | 一种合同审计方法和系统,及计算机可读存储介质 | |
CN111538843B (zh) | 游戏领域的知识图谱关系匹配方法、模型构建方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |