CN112286799A - 结合句嵌入和粒子群优化算法的软件缺陷定位方法 - Google Patents

结合句嵌入和粒子群优化算法的软件缺陷定位方法 Download PDF

Info

Publication number
CN112286799A
CN112286799A CN202011118127.5A CN202011118127A CN112286799A CN 112286799 A CN112286799 A CN 112286799A CN 202011118127 A CN202011118127 A CN 202011118127A CN 112286799 A CN112286799 A CN 112286799A
Authority
CN
China
Prior art keywords
source code
defect
word
sentence
optimization algorithm
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.)
Granted
Application number
CN202011118127.5A
Other languages
English (en)
Other versions
CN112286799B (zh
Inventor
陈信
俞东进
范旭麟
郭世明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Dianzi University
Original Assignee
Hangzhou Dianzi University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Dianzi University filed Critical Hangzhou Dianzi University
Priority to CN202011118127.5A priority Critical patent/CN112286799B/zh
Publication of CN112286799A publication Critical patent/CN112286799A/zh
Application granted granted Critical
Publication of CN112286799B publication Critical patent/CN112286799B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/211Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial 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)的词向量
Figure BDA0002731074890000032
;然后计算每个单词的权重ω(Wk);在此基础上分别计算Ri和Sj对应的句向量
Figure BDA0002731074890000033
Figure BDA0002731074890000038
最后计算每一组句向量
Figure BDA0002731074890000034
之间的余弦相似度作为平滑逆频率模型的分数值SIFScore;
步骤(6)计算表面词汇相似度分数:
首先利用TF-IDF(Term Frequency-Inverse Document Frequency)计算每一个Ri和Sj在语料库中第k(k=1,2,...,l)个单词的权重tfidfi,k和tfidfj,k,从而Ri的句向量表示为
Figure BDA0002731074890000035
Sj的句向量表示为
Figure BDA0002731074890000036
然后计算每一组句向量对
Figure BDA0002731074890000037
之间的余弦相似度作为VSMScore;
步骤(7)计算缺陷的修复历史记录分数RScore:
由于源代码的更改历史记录有助于预测易错文件,所以最近经常被修改的源代码文件比过去长时间未被修改或从未被修改的文件更可能产生软件缺陷,令SR_month为最新的修复时间,R_month为当前软件缺陷报告的创建时间,缺陷的修复历史记录分数定义为:
Figure BDA0002731074890000031
步骤(8)计算缺陷修复频率分数:
一个源代码文件如果经常被修复,那么这个文件可能是容易发生故障的文件,将软件缺陷报告提交之前源代码文件被修复的次数记为FScore,考虑到FScore的取值不在0到1之间,采用线性归一化处理;
步骤(9)计算协同过滤分数CFScore:
如果一个缺陷报告和另外一个缺陷报告相似,那么可能是由相同的源代码文件导致的;BRSi(BR,BS)为第i条记录Ri创建之前的所有已修复的软件缺陷报告BR以及对应的源代码文件BS的集合,若Sj∈BS,则对应存在缺陷报告Rk∈BR;软件缺陷报告Ri与源代码文件Sj的协同过滤分数CFScore定义为Ri与Rk的相似度;
步骤(10)有了多个不同层面的缺陷报告与源代码文件的分数,将他们进行线性组合形成一个最终得分,然后根据每个缺陷报告相关的最终得分,对源代码文件进行排序,其中线性组合公式如下所示:
finalScore=α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,随机初始化每个个体的速度Vj=(vi1,vi2,…,vid)和位置Xi=(xi1,xi2,…,xid),其中d=5为需要优化的权重的个数,并根据适应度函数确定每个个体的当前最优位置pbesti和种群的全局最优位置gbest;
之后,在第t次迭代时,更新每个粒子的速度和位置,并更新每个个体的当前最优位置pbesti和种群的全局最优位置gbest;
重复执行上述操作,直至达到最大迭代次数MaxIter,设定为1000,获得最优的权重组合α1,α2,α3,α4,α5
步骤(12)根据得到的最优权重α1,α2,α3,α4,α5计算目标缺陷报告和所有的源代码文件的finalScore并进行排序,finalScore最高的源代码文件最可能是导致该缺陷出现的源代码文件。
本发明提出使用句嵌入技术构建软件缺陷报告与源代码文件之间的相似度计算模型,同时计算平滑逆频率分数、表面词汇相似度分数、缺陷修复记录分数、缺陷修复频率分数以及协同过滤分数,最后用粒子群优化算法计算出五种分数的线性组合权重,从而获得缺陷报告与所有源代码文件的最终积分。相比于传统的软件缺陷定位方法,本发明具有如下收益:
1、利用句嵌入技术(SIF)获取软件缺陷报告与源代码文件之间的语义信息,使得相似度的计算更加合理;
2、使用粒子群优化算法优化线性权重得到最优综合分值能够提高软件缺陷定位的准确性。
附图说明
图1为本发明结合句嵌入技术和粒子群优化算法的缺陷定位方法的流程图;
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。
为叙述方便,定义相关符号如下:
S:源代码文件集合。
R:缺陷报告集合。
Q:源代码文件和缺陷报告组成的语料库。
pair:软件缺陷报告与源代码文件对组成的集合。
Figure BDA0002731074890000051
第i个个体在t时刻的速度。
Figure BDA0002731074890000052
第i个个体在t时刻的位置。
P:初始种群大小。
MaxIter:迭代次数大小。
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解析每一个源代码文件,将每一个源代码文件处理成Si=<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)模型:
5-1.使用GloVe词嵌入技术对语料库中的单词进行训练,得到每个单词Wk(k=1,2,...,l)的词向量
Figure BDA0002731074890000067
其中GloVe是一个基于全局词频统计的词表征工具,它可以把一个单词表示成一个由实数组成的向量,这些向量能捕捉单词之间一些语义特性,比如相似性、类比性等;
5-2.计算每个单词Wk的权重ω(Wk):
Figure BDA0002731074890000061
其中,α为常数,通常设置为0.0001,p(Wk)表示单词Wk出现的概率;
5-3.句向量计算,分别计算Ri和Sj对应的句向量VRi
Figure BDA0002731074890000068
并去除非信息噪音(最大主成分),以
Figure BDA0002731074890000066
为例:
Figure BDA0002731074890000062
Figure BDA0002731074890000063
其中,
Figure BDA0002731074890000064
为去除最大主成分前的句向量,|Ri|表示Ri中包含的单词个数,μ为
Figure BDA0002731074890000065
经过奇异值分解得到的特征矩阵,μT为μ的转置矩阵,
Figure BDA00027310748900000711
Figure BDA0002731074890000076
的最大主成分向量;
5-4.计算每一组句向量
Figure BDA0002731074890000077
之间的余弦相似度作为SIFScore:
Figure BDA0002731074890000071
步骤(6)计算表面词汇相似度分数:
6-1.利用TF-IDF(Term Frequency-Inverse Document Frequency)计算语料库中每一个Ri和Sj中第k(k=1,2,...,l)个单词的权重tfidfi,k和tfidfj,k
tfidfi或j,k=tfi或j,k*idfk 公式5
Figure BDA0002731074890000072
其中,tfi,k和tfj,k分别表示Ri和Sj中第k个单词的频率,dfk表示包含第k个单词的文档(测试报告或者源代码文件)的数量;从而Ri的句向量表示为
Figure BDA0002731074890000078
Sj的句向量表示为
Figure BDA0002731074890000079
Ri句向量中的权重值为0时,说明该权重对应的单词不属于该Ri;同理Sj句向量中的权重值为0时,说明该权重对应的单词不属于该Si
6-2.计算每一组句向量
Figure BDA00027310748900000710
之间的余弦相似度作为VSMScore:
Figure BDA0002731074890000073
步骤(7)计算缺陷的修复历史记录分数RScore:由于源代码的更改历史记录有助于预测易错文件,所以最近经常被修改的源代码文件比过去长时间未被修改或从未被修改的文件更可能产生软件缺陷,令SR_month为最新的修复时间,R_month为当前软件缺陷报告的创建时间,缺陷的修复历史记录分数定义为:
Figure BDA0002731074890000074
步骤(8)计算缺陷修复频率分数:一个源代码文件如果经常被修复,那么这个文件可能是容易发生故障的文件,将软件缺陷报告提交之前源代码文件被修复的次数记为FScore,考虑到FScore的取值不在0到1之间,采用线性归一化处理;
步骤(9)计算协同过滤分数CFScore:如果一个缺陷报告和另外一个缺陷报告相似,那么可能是由相同的源代码文件导致的;BRSi(BR,BS)为第i条记录Ri创建之前的所有已修复的软件缺陷报告BR以及对应的源代码文件BS的集合,若Sj∈BS,则对应存在缺陷报告Rk∈BR,软件缺陷报告Ri与Sj的协同过滤分数CFScore定义为Ri与Rk的相似度:
Figure BDA0002731074890000081
其中,
Figure BDA0002731074890000083
Figure BDA0002731074890000084
分别表示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次迭代时,更新每个粒子的速度和位置,公式如下:
Figure BDA0002731074890000082
Figure BDA0002731074890000091
其中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 (10)

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解析每一个源代码文件,将每一个源代码文件处理成Si=<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)构建平滑逆频率模型:
步骤(6)计算表面词汇相似度分数:
步骤(7)计算缺陷的修复历史记录分数RScore:
步骤(8)计算缺陷修复频率分数:将软件缺陷报告提交之前源代码文件被修复的次数记为FScore;
步骤(9)计算协同过滤分数CFScore:
步骤(10)将多个不同层面的缺陷报告与源代码文件的分数进行线性组合形成一个最终得分,然后根据每个缺陷报告相关的最终得分,对源代码文件进行排序;
步骤(11)利用粒子群优化算法优化5个分数的线性权重;
步骤(12)根据得到的最优权重计算目标缺陷报告和所有的源代码文件的finalScore并进行排序,finalScore最高的源代码文件最可能是导致该缺陷出现的源代码文件。
2.根据权利要求1所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(3)具体实现如下:
首先对Ri中的description和summary以及Sj中的所有元素进行提取,然后用空格对Ri和Sj中提取的信息初步区分成单词,并删除其中的符号;
然后基于停用词列表移除其中的停用词,将初步区分后单词中的组合词再次进行分离,得到最终的单词集合;
最后将单词集合中的每个单词转为原型。
3.根据权利要求1或2所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(5)具体实现如下:
首先使用GloVe词嵌入技术对语料库Q中的单词进行训练,得到每个单词Wk(k=1,2,...,l)的词向量
Figure FDA0002731074880000021
然后计算每个单词的权重ω(Wk);在此基础上分别计算Ri和Sj对应的句向量
Figure FDA0002731074880000022
Figure FDA0002731074880000023
最后计算每一组句向量
Figure FDA0002731074880000024
之间的余弦相似度作为平滑逆频率模型的分数值SIFScore。
4.根据权利要求3所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(6)具体实现如下:
首先利用TF-IDF计算每一个Ri和Sj在语料库中第k个单词的权重tfidfi,k和tfidfj,k,从而Ri的句向量表示为
Figure FDA0002731074880000025
Sj的句向量表示为
Figure FDA0002731074880000026
然后计算每一组句向量对
Figure FDA0002731074880000027
之间的余弦相似度作为VSMScore。
5.根据权利要求4所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(7)具体实现如下
令SR_month为最新的修复时间,R_month为当前软件缺陷报告的创建时间,缺陷的修复历史记录分数定义为:
Figure FDA0002731074880000028
6.根据权利要求5所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(9)具体实现如下:
设BRSi(BR,BS)为第i条记录Ri创建之前的所有已修复的软件缺陷报告BR以及对应的源代码文件BS的集合,若Sj∈BS,则对应存在缺陷报告Rk∈BR,软件缺陷报告Ri与Sj的协同过滤分数CFScore定义为Ri与Rk的相似度:
Figure FDA0002731074880000031
其中,
Figure FDA0002731074880000032
Figure FDA0002731074880000033
分别表示Ri和Rk经过SIF计算出的句向量。
7.根据权利要求6所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(9)所述的进行线性组合具体实现如下:
finalScore=α1*SIFScore+α2*VSMScore+α3*RScrore+α4*FScore+α5*CFScore 公式10。
8.根据权利要求7所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(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次迭代时,更新每个粒子的速度和位置,公式如下:
Figure FDA0002731074880000034
Figure FDA0002731074880000035
其中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
9.根据权利要求3或4或5或6或7或8所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(5)具体实现如下:
5-1.使用GloVe词嵌入技术对语料库中的单词进行训练,得到每个单词Wk(k=1,2,...,l)的词向量
Figure FDA00027310748800000416
5-2.计算每个单词Wk的权重ω(Wk):
Figure FDA0002731074880000041
其中,α为常数,设置为0.0001,p(Wk)表示单词Wk出现的概率;
5-3.句向量计算,分别计算Ri和Sj对应的句向量
Figure FDA0002731074880000042
Figure FDA0002731074880000043
并去除最大主成分,
Figure FDA0002731074880000044
的实现形式如下:
Figure FDA0002731074880000045
Figure FDA0002731074880000046
其中,
Figure FDA0002731074880000047
为去除最大主成分前的句向量,|Ri|表示Ri中包含的单词个数,μ为
Figure FDA0002731074880000048
经过奇异值分解得到的特征矩阵,μT为μ的转置矩阵,
Figure FDA0002731074880000049
Figure FDA00027310748800000410
的最大主成分向量;
5-4.计算每一组句向量
Figure FDA00027310748800000411
之间的余弦相似度作为SIFScore:
Figure FDA00027310748800000412
10.根据权利要求9所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(6)具体实现如下:
6-1.利用TF-IDF计算语料库中每一个Ri和Sj中第k(k=1,2,...,l)个单词的权重tfidfi,k和tfidfj,k
tfidfi或j,k=tfi或j,k*idfk 公式5
Figure FDA00027310748800000413
其中,tfi,k和tfj,k分别表示Ri和Sj中第k个单词的频率,dfk表示包含第k个单词的文档(测试报告或者源代码文件)的数量;从而Ri的句向量表示为
Figure FDA00027310748800000414
Sj的句向量表示为
Figure FDA00027310748800000415
Figure FDA0002731074880000051
Ri句向量中的权重值为0时,说明该权重对应的单词不属于该Ri;同理Sj句向量中的权重值为0时,说明该权重对应的单词不属于该Sj
6-2.计算每一组句向量
Figure FDA0002731074880000052
之间的余弦相似度作为VSMScore:
Figure FDA0002731074880000053
CN202011118127.5A 2020-10-19 2020-10-19 结合句嵌入和粒子群优化算法的软件缺陷定位方法 Active CN112286799B (zh)

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 true CN112286799A (zh) 2021-01-29
CN112286799B 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113051156A (zh) * 2021-03-16 2021-06-29 广东工业大学 一种基于区块链溯源与信息检索的软件缺陷定位方法
CN113997319A (zh) * 2021-11-22 2022-02-01 北京云迹科技有限公司 一种硬件检测的方法、机器人、服务器和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
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
CN105159822A (zh) * 2015-08-12 2015-12-16 南京航空航天大学 一种基于文本词性和程序调用关系的软件缺陷定位方法
US20180307904A1 (en) * 2017-04-19 2018-10-25 Tata Consultancy Services Limited Systems and methods for classification of software defect reports
CN110109835A (zh) * 2019-05-05 2019-08-09 重庆大学 一种基于深度神经网络的软件缺陷定位方法
CN111177010A (zh) * 2019-12-31 2020-05-19 杭州电子科技大学 一种软件缺陷严重程度识别方法
CN112000802A (zh) * 2020-07-24 2020-11-27 南京航空航天大学 基于相似度集成的软件缺陷定位方法
CN115617689A (zh) * 2022-11-01 2023-01-17 南通大学 一种基于cnn模型和领域特征的软件缺陷定位方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
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
CN105159822A (zh) * 2015-08-12 2015-12-16 南京航空航天大学 一种基于文本词性和程序调用关系的软件缺陷定位方法
US20180307904A1 (en) * 2017-04-19 2018-10-25 Tata Consultancy Services Limited Systems and methods for classification of software defect reports
CN110109835A (zh) * 2019-05-05 2019-08-09 重庆大学 一种基于深度神经网络的软件缺陷定位方法
CN111177010A (zh) * 2019-12-31 2020-05-19 杭州电子科技大学 一种软件缺陷严重程度识别方法
CN112000802A (zh) * 2020-07-24 2020-11-27 南京航空航天大学 基于相似度集成的软件缺陷定位方法
CN115617689A (zh) * 2022-11-01 2023-01-17 南通大学 一种基于cnn模型和领域特征的软件缺陷定位方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
DAT DUONG, WASI UDDIN AHMAD, ELEAZAR ESKIN, KAI-WEI CHANG, AND JINGYI JESSICA LI: "Word and Sentence Embedding Tools to Measure Semantic Similarity of Gene Ontology Terms by Their Definitions", JOURNAL OF COMPUTATIONAL BIOLOGY, vol. 26, no. 1, pages 38 - 52 *
HE CAN, XING JIANCHUN, ZHU RUIDE, LI JUELONG, YANG QILIANG, XIE LIQIANG: "A New Model for Software Defect Prediction Using Particle Swarm", 2013 25TH CHINESE CONTROL AND DECISION CONFERENCE, pages 4106 - 4110 *
SHIMING GUO, XIN CHEN, DONGJIN YU: "Defect Report Severity Prediction Based on Genetic Algorithms and Convolutional Neural Network", 2020 INTERNATIONAL SYMPOSIUM ON THEORETICAL ASPECTS OF SOFTWARE ENGINEERING, pages 17 - 24 *
刘广亮: "基于软件Bug报告的缺陷代码定位研究", 中国优秀硕士学位论文全文数据库, no. 01 *
董美含: "基于缺陷报告和源代码的相似缺陷识别方法", 中国优秀硕士学位论文全文数据库, no. 01 *
郭世明: "基于深度学习和元启发式算法的软件缺陷识别与定位", 中国优秀硕士学位论文全文数据库, no. 04 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113051156A (zh) * 2021-03-16 2021-06-29 广东工业大学 一种基于区块链溯源与信息检索的软件缺陷定位方法
CN113051156B (zh) * 2021-03-16 2022-03-11 广东工业大学 一种基于区块链溯源与信息检索的软件缺陷定位方法
CN113997319A (zh) * 2021-11-22 2022-02-01 北京云迹科技有限公司 一种硬件检测的方法、机器人、服务器和存储介质
CN113997319B (zh) * 2021-11-22 2023-09-01 北京云迹科技股份有限公司 一种硬件检测的方法、机器人、服务器和存储介质

Also Published As

Publication number Publication date
CN112286799B (zh) 2024-03-12

Similar Documents

Publication Publication Date Title
CN110442760B (zh) 一种问答检索系统的同义词挖掘方法及装置
CN109189942B (zh) 一种专利数据知识图谱的构建方法及装置
CN111177365B (zh) 一种基于图模型的无监督自动文摘提取方法
CN106649260B (zh) 基于评论文本挖掘的产品特征结构树构建方法
CN107229668B (zh) 一种基于关键词匹配的正文抽取方法
CN104881458B (zh) 一种网页主题的标注方法和装置
CN103995876A (zh) 一种基于卡方统计和smo算法的文本分类方法
CN106649557B (zh) 一种缺陷报告与邮件列表语义关联挖掘方法
Afzal et al. Rule based Autonomous Citation Mining with TIERL.
CN112181490B (zh) 功能点评估法中功能类别的识别方法、装置、设备及介质
CN112286799A (zh) 结合句嵌入和粒子群优化算法的软件缺陷定位方法
CN113407721A (zh) 检测日志序列异常的方法、装置及计算机存储介质
CN110705272A (zh) 一种面向汽车发动机故障诊断的命名实体识别方法
CN111090994A (zh) 一种面向中文网络论坛文本的事件地点归属省份识别方法
CN114491034B (zh) 一种文本分类方法及智能设备
CN103425748B (zh) 一种文档资源建议词的挖掘方法和装置
CN111597423B (zh) 一种文本分类模型可解释性方法的性能评价方法及装置
CN107480126B (zh) 一种工程材料类别智能识别方法
CN113742396A (zh) 一种对象学习行为模式的挖掘方法及装置
CN112115362B (zh) 一种基于相似代码识别的编程信息推荐方法及装置
CN114756617A (zh) 一种工程档案结构化数据提取方法、系统、设备和存介质
CN111341404B (zh) 一种基于ernie模型的电子病历数据组解析方法及系统
CN111274404B (zh) 一种基于人机协同的小样本实体多领域分类方法
CN113468339A (zh) 基于知识图谱的标签提取方法、系统、电子设备及介质
CN113971403A (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