CN115617689A - 一种基于cnn模型和领域特征的软件缺陷定位方法 - Google Patents
一种基于cnn模型和领域特征的软件缺陷定位方法 Download PDFInfo
- Publication number
- CN115617689A CN115617689A CN202211357801.4A CN202211357801A CN115617689A CN 115617689 A CN115617689 A CN 115617689A CN 202211357801 A CN202211357801 A CN 202211357801A CN 115617689 A CN115617689 A CN 115617689A
- Authority
- CN
- China
- Prior art keywords
- defect
- report
- source code
- extracting
- words
- 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.)
- Pending
Links
Images
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/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
-
- 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/216—Parsing using statistical methods
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Machine Translation (AREA)
Abstract
本发明提出了一种基于CNN模型和领域特征的软件缺陷定位方法,属于计算机技术领域。解决了缺陷定位方法不能充分使用代码结构和语义特征的问题。其技术方案为:包括以下步骤:S1、对数据集进行预处理;S2、通过Word2Vec生成词向量;S3、使用CNN网络分别提取词汇特征和代码结构特征,并通过MLP网络进行特征融合;S4、利用rVSM提取文本相似性;S5、从bug修复历史中提取4种类型的特征;S6、构造数据集,按比例划分训练集和测试集;S7、将步骤S2、步骤S3、步骤S4提取出的6种特征输入MLP网络;S8:通过softmax函数得到二分类结果。本发明的有益效果为:本发明采用学习统一的词汇语义和代码结构特征,同时融合文本相似性特征和缺陷修复历史从而提高缺陷定位的质量和可靠性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于CNN模型和领域特征的软件缺陷定位方法。
背景技术
随着软件开发规模的不断扩大,软件缺陷的出现不可避免。为了修复缺陷,软件维护人员需要详细阅读缺陷报告,根据对报告的理解,从源文件集合中找到与缺陷报告描述内容相关的代码实体。但是在实际项目开发过程中,源文件的数量通常在数千数量级以上,这为维护人员带来了巨大的工作量。因此,有必要研究一种自动的缺陷定位方法,减轻软件维护人员的工作量的同时,提高软件开发效率。
随着人工智能领域的发展,深度学习技术被尝试引入到缺陷定位域。但是这些方法在衡量相似度特征的时候,普遍只考虑精确的术语匹配及文本相似性,而忽略了深层次的语义相似性特征。其次程序语言表示的源代码文件相比自然语言表示的缺陷报告有着特有的结构信息,不应该将程序语言简单的当作自然语言处理,因此,需要探索一种能够从自然语言和编程语言的源代码中学习统一的特征的方法。
如何解决上述技术问题成为本发明面临的课题。
发明内容
本发明的目的在于提供一种基于CNN模型和领域特征的软件缺陷定位方法;该方法可以根据缺陷报告描述的内容标记出对应的缺陷文件,解决了缺陷定位方法不能够充分使用代码结构和语义特征的问题。
本发明的思想为:本发明提出一种基于CNN模型和领域特征的软件缺陷定位方法,即构建Siamese结构的CNN网络模型,提取词汇语义特征和代码结构特征,然后通过MLP网络学习特征的融合和降维;最后结合从缺陷修复历史中提取的四种相关特征,从而更准确的进行缺陷定位。
本发明是通过如下措施实现的:一种基于CNN模型和领域特征的软件缺陷定位方法,其中,包括以下步骤:
(1)搜集缺陷定位领域常用的项目作为原始数据集,对原始数据集的文本内容进行预处理,具体预处理操作包括如下步骤:
(1-1)对于缺陷报告,首先使用空格将错误报告分割为单词序列。然后剔除序列中出现的标点符号和标准的停止词,例如,a,The,得到只包含单词的输入序列;
(1-2)对于程序语言表示的源代码文件,采取和步骤(1-1)中相同的方法,每一个源代码文件都被表示为单词序列;
(1-3)单词序列中包含的复合单词,根据驼峰命名法分割成多个单词,例如“childAdded”被分割为child和added,使用Porter stemming方法将单词转换成它们的词根形式,例如,“delegating”,“delegate和“delegation”共享同样的词根“delegat”。
(2)预处理好的缺陷报告和源代码文件通过Word2Vec生成对应的词向量,具体包括如下步骤:
(2-1)遍历由单词序列组成的源代码文件和缺陷报告,构造单词语料库,根据语料库将单词序列转化为索引序列。
(2-2)使用gensim模块加载谷歌公司开源的预训练词向量模型,每一个单词都被表示成一个300维的向量。
(2-3)将单词索引序列构成的源代码文件和缺陷报告输入词嵌入模型得到单词对应的词嵌入向量;
(3)使用Siamese结构的CNN网络分别对缺陷报告和源代码文件提取词汇特征和代码结构特征,并通过MLP特征融合层进行特征融合和降维,具体包括如下步骤:
(3-1)对于程序语言表示的源代码文件先在词汇级别上进行一次卷积操作得到特征F1,第一次卷积之后的特征图输出作为第二次卷积的输入,第二次卷积操作对应于语句级别的卷积,得到特征F2;
(3-2)对于自然语言表示的缺陷报告,只在词汇级别上进行一次卷积操作得到特征F3;
(3-3)搭建MLP全连接层,将步骤(3-1)和步骤(3-2)分别提取出来的特征图F2和F3,送入MLP网络学习特征融合和降维。
(4)利用rVSM提取缺陷报告和源文件的文本相似性,具体包括如下步骤:
(4-1)对于未经预处理的缺陷报告和源代码文件使用TF-IDF计算所有单词的术语显著性权重;
(4-2)计算当前缺陷报告和每一个源文件之间的rVSM相似度分数。
(5)从缺陷修复历史中提取4种类型的特征,具体包括如下步骤:
(5-1)提取协同过滤分数:计算当前错误报告r的文本与在报告r之前修复的缺陷报告集合中所有缺陷报告摘要之间的文本相似性;
(5-2)提取类名相似度:搜索缺陷报告中出现的主类的名称,将名称长度作为类名相似度特征;
(5-3)提取缺陷修复时间:计算当前缺陷报告和最近一次修复的缺陷之间的时间差的倒数;
(5-4)提取缺陷修复频率:计算源文件在当前错误报告之前被修复的次数。
(6)构造数据集,按比例划分训练集、和测试集。
(7)将步骤(3)中提取的特征和步骤(4),步骤(5)提取出的共6种特征输入MLP网络;
(8)通过softmax函数得到二分类结果。
与现有技术相比,本发明的有益效果为:
1)本发明提出了一种Siamese结构的CNN模型,分别对缺陷报告和源代码文件提取特征,提取特征的过程可以线下进行,提高了模型的定位效率。
2)本发明采用的融合领域特征结合从缺陷修复历史挖掘的元特征,考虑到程序语言特有的结构信息,考虑到词汇特征空间中的相似度,将缺陷报告和源代码有效的关联起来。
3)本发明与以往简单的使用向量空间衡量词汇相似度的方法相比,没有将程序语言简单的当作自然语言处理,而是针对程序语言的结构设计CNN网络;与只考虑精确的术语匹配方法相比,结合缺陷历史修复特征进一步挖掘深层次的语义相似性,使最后的定位结果更加准确和可靠。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
图1为本发明提供的一种基于CNN模型和领域特征的软件缺陷定位方法的系统框架图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。当然,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例1
参见图1所示,本实施例提供了一种基于CNN模型和领域特征的软件缺陷定位方法,具体包括以下步骤:
(1)搜集缺陷定位领域常用的项目作为原始数据集,对原始数据集的文本内容进行预处理,具体预处理操作包括如下步骤:
(1-1)对于缺陷报告,首先使用空格将缺陷报告分割为单词序列,然后剔除序列中出现的标点符号和标准的停止词,例如,a,The;得到只包含单词的输入序列,其中i表示第i个缺陷报告,M表示控制序列的长度固定为M;
(1-3)单词序列中包含的复合单词,根据驼峰命名法分割成多个单词,例如“childAdded”被分割为child和added,使用Porter stemming方法将单词转换成它们的词根形式,例如,“delegating”,“delegate和“delegation”共享同样的词根“delegat”。
(2)预处理好的缺陷报告和源代码文件通过Word2Vec生成对应的词向量,具体包括如下步骤:
(2-1)遍历由单词序列组成的源代码文件和缺陷报告,构造单词语料库,根据单词在语料库中的位置,将单词序列转化为索引序列;
(2-2)使用gensim模块加载谷歌公司开源的预训练词向量模型;
(3)使用Siamese结构的CNN网络分别对缺陷报告和源代码文件提取词汇特征和代码结构特征,并通过MLP特征融合层进行特征融合和降维,具体包括如下步骤:
(3-1)设置卷积操作的卷积核尺寸大小为h×300,h表示一次卷积操作覆盖的单词个数,300是每一个单词的嵌入向量维度;对于程序语言表示的源代码文件先在词汇级别上进行一次卷积操作得到特征F1,第一次卷积之后的特征图输出作为第二次卷积的输入,第二次卷积操作对应于语句级别的卷积,得到特征F2;
(3-2)对于自然语言表示的缺陷报告,只在词汇级别上进行一次卷积操作得到特征F3;
(3-3)搭建MLP全连接层,将步骤(3-1)和步骤(3-2)分别提取出来的特征图F2和F3,送入MLP网络学习特征融合和降维。
(4)利用rVSM提取缺陷报告和源文件的文本相似性,具体包括如下步骤:
(4-1)对于原始的、未经预处理的缺陷报告和源代码文件,使用TF-IDF方法计算所有单词的术语显著性权重,每一个缺陷报告和源代码文件都被映射到一个向量空间,表示成单词权重向量;
(5)从缺陷修复历史中提取4种类型的特征,具体包括如下步骤:
(5-1)提取协同过滤分数:计算当前错误报告r的文本与在报告r之前修复的缺陷报告的集合中所有缺陷报告的摘要之间的文本相似性;
(5-2)提取类名相似度:搜索缺陷报告中出现的主类的名称,将名称长度作为类名相似度特征,如果没有出现类名则该特征值记作0;
(5-3)提取缺陷修复时间:计算当前缺陷报告和最近一次修复的缺陷之间的时间差,时间差取倒数作为该特征;
(5-4)提取缺陷修复频率:计算源文件在当前错误报告之前被修复的次数。
(6)构造数据集,按照8:2的比例,划分训练集、和测试集;
(7)将步骤3中提取的特征和步骤4,步骤5提取出的共6种特征进行拼接,再输入MLP网络进行回归预测;
(8)再将步骤7回归预测的结果通过softmax函数得到二分类预测,将预测结果进行排序得到模型最终预测结果,具体包括如下步骤:
(8-1)第一列表示预测为0的概率,表示模型预测当前源代码文件不是该缺陷报告所对应的概率。第二列表示预测为1的概率,表示模型预测当前源代码文件对应该缺陷报告的概率;
(8-2)取步骤(8-1)中第二列预测为1的概率,按照从大到小的顺序排序,得到模型的最终预测结果。
(9)在四个项目数据集上对本实施例方法和已有缺陷方法进行评估,同时使用来自缺陷定位研究领域的三个性能指标(即Accuracy@K、MAP、MRR)来自动评估模型的质量:
表1本实施例方法和其余方法的结果对照表
经实验表明,本实施例提出的基于CNN模型,同时融合文本相似特征和缺陷修复历史的缺陷定位方法相较于Baseline方法,能进行准确性更高可靠的缺陷定位。具体来说,本实施例方法考虑了代码结构特征,同时融合文本相似性特征和缺陷修复历史,可以在性能上超过这些Baseline方法。其中,对于Accuracy@1而言,本实施例方法在各软件项目上能提高17%~20%的性能;对于MAP而言,本实施例方法提高了8%~17%的性能;对于MRR而言,本实施例方法至少可以提高3%~11%的性能;实验结果表明了本实施例方法的有效性。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于CNN模型和领域特征的软件缺陷定位方法,特征在于,包括以下步骤:
1.1:对搜集到的开源数据集进行文本预处理;
1.2:通过Word2Vec生成对应的词向量;
1.3:使用Siamese结构的CNN网络分别对缺陷报告和源代码文件提取词汇特征和代码结构特征,并通过MLP特征融合层进行特征融合和降维;
1.4:利用rVSM提取bug报告和源文件的文本相似性;
1.5:从bug修复历史中提取4种类型的特征;
1.6:构造数据集,按比例划分训练集和测试集;
1.7:将步骤1.3中提取的特征向量和步骤1.4、步骤1.5提取出的4种特征输入MLP网络;
1.8:通过softmax函数得到二分类结果(0,1),预测哪些源代码文件是该缺陷报告对应的缺陷源代码文件。
2.根据权利要求1所述的基于CNN模型和领域特征的软件缺陷定位方法,其特征在于,所述步骤1.1预处理操作具体包括如下步骤:
2.3:单词序列中包含的复合单词,根据驼峰命名法分割成多个单词,使用Porterstemming方法将单词转换成它们的词根形式。
3.根据权利要求1所述的基于CNN模型和领域特征的软件缺陷定位方法,其特征在于,所述1.3具体包括如下步骤:
3.1:设置卷积操作的卷积核尺寸大小为h×300,对于程序语言表示的源代码文件先在词汇级别上进行一次卷积操作得到特征F1,第一次卷积之后的特征图输出作为第二次卷积的输入,第二次卷积操作对应于语句级别的卷积,得到特征F2;
3.2:对于自然语言表示的缺陷报告,只在词汇级别上进行一次卷积操作得到特征F3;
3.3:搭建MLP全连接层,将步骤3.1和步骤3.2分别提取出来的特征图F2和F3,送入MLP网络学习特征融合和降维。
5.根据权利要求1所述的基于CNN模型和领域特征的软件缺陷定位方法,其特征在于,所述步骤1.5具体包括如下步骤:
5.1:提取协同过滤分数:计算当前错误报告r的文本与在报告r之前修复的缺陷报告集合中所有缺陷报告摘要之间的文本相似性;
5.2:提取类名相似度:搜索缺陷报告中出现的主类的名称,将名称长度作为类名相似度特征;
5.3:提取缺陷修复时间:计算当前缺陷报告和最近一次修复的缺陷之间的时间差的倒数;
5.4:提取缺陷修复频率:计算源文件在当前错误报告之前被修复的次数。
6.根据权利要求1所述的基于CNN模型和领域特征的软件缺陷定位方法,其特征在于,所述步骤1.8具体包括如下步骤:
6.1:第一列表示预测为0的概率,表示模型预测当前源代码文件不是该缺陷报告所对应的概率,第二列表示预测为1的概率,表示模型预测当前源代码文件对应该缺陷报告的概率;
6.2:取步骤6.1中第二列预测为1的概率,按照从大到小的顺序排序,得到模型的最终预测结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211357801.4A CN115617689A (zh) | 2022-11-01 | 2022-11-01 | 一种基于cnn模型和领域特征的软件缺陷定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211357801.4A CN115617689A (zh) | 2022-11-01 | 2022-11-01 | 一种基于cnn模型和领域特征的软件缺陷定位方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115617689A true CN115617689A (zh) | 2023-01-17 |
Family
ID=84875599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211357801.4A Pending CN115617689A (zh) | 2022-11-01 | 2022-11-01 | 一种基于cnn模型和领域特征的软件缺陷定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115617689A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112286799A (zh) * | 2020-10-19 | 2021-01-29 | 杭州电子科技大学 | 结合句嵌入和粒子群优化算法的软件缺陷定位方法 |
-
2022
- 2022-11-01 CN CN202211357801.4A patent/CN115617689A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112286799A (zh) * | 2020-10-19 | 2021-01-29 | 杭州电子科技大学 | 结合句嵌入和粒子群优化算法的软件缺陷定位方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2019263758B2 (en) | Systems and methods for generating a contextually and conversationally correct response to a query | |
CN111427775B (zh) | 一种基于Bert模型的方法层次缺陷定位方法 | |
CN110334186B (zh) | 数据查询方法、装置、计算机设备及计算机可读存储介质 | |
CN111309607B (zh) | 一种代码方法级别的软件缺陷定位方法 | |
CN115357719B (zh) | 基于改进bert模型的电力审计文本分类方法及装置 | |
CN115547466B (zh) | 基于大数据的医疗机构登记评审系统及其方法 | |
CN116719520B (zh) | 代码生成方法及装置 | |
CN113254507B (zh) | 一种数据资产目录智能构建盘点方法 | |
CN114970508A (zh) | 基于数据多源融合的电力文本知识发现方法及设备 | |
CN113919366A (zh) | 一种面向电力变压器知识问答的语义匹配方法和装置 | |
Cheng et al. | A similarity integration method based information retrieval and word embedding in bug localization | |
CN115617689A (zh) | 一种基于cnn模型和领域特征的软件缺陷定位方法 | |
CN112286799B (zh) | 结合句嵌入和粒子群优化算法的软件缺陷定位方法 | |
CN112699018A (zh) | 基于软件缺陷关联分析的软件缺陷定位方法 | |
CN111881264A (zh) | 一种开放领域问答任务中长文本检索的方法和电子设备 | |
CN115936003A (zh) | 基于神经网络的软件功能点查重方法、装置、设备及介质 | |
CN111814457A (zh) | 一种电网工程合同文本生成方法 | |
WO2019246252A1 (en) | Systems and methods for identifying and linking events in structured proceedings | |
CN117574981B (zh) | 一种信息分析模型的训练方法及信息分析方法 | |
CN112181490B (zh) | 功能点评估法中功能类别的识别方法、装置、设备及介质 | |
Chao et al. | Research on Test Case Generation Method of Airborne Software Based on NLP | |
CN113191148B (zh) | 一种基于半监督学习和聚类的轨道交通实体识别方法 | |
CN117708102A (zh) | 一种数据标准智能匹配与检查的方法 | |
CN118095299A (zh) | 一种基于大数据的翻译测试识别评估分析方法及系统 | |
CN113743096A (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 |