CN113900924A - 基于tan半朴素贝叶斯网络的软件缺陷预测方法和系统 - Google Patents
基于tan半朴素贝叶斯网络的软件缺陷预测方法和系统 Download PDFInfo
- Publication number
- CN113900924A CN113900924A CN202111038761.2A CN202111038761A CN113900924A CN 113900924 A CN113900924 A CN 113900924A CN 202111038761 A CN202111038761 A CN 202111038761A CN 113900924 A CN113900924 A CN 113900924A
- Authority
- CN
- China
- Prior art keywords
- classification
- word
- prediction
- node
- nodes
- 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
Links
- 230000007547 defect Effects 0.000 title claims abstract description 94
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012549 training Methods 0.000 claims abstract description 82
- 230000011218 segmentation Effects 0.000 claims abstract description 37
- 238000004364 calculation method Methods 0.000 claims description 47
- 238000004422 calculation algorithm Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 12
- 238000000605 extraction Methods 0.000 claims description 10
- 230000009466 transformation Effects 0.000 claims description 10
- 238000004140 cleaning Methods 0.000 claims description 5
- 238000005457 optimization Methods 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 5
- 150000001875 compounds Chemical class 0.000 claims description 4
- 230000006870 function Effects 0.000 description 18
- 238000010276 construction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 238000007476 Maximum Likelihood Methods 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000002790 cross-validation Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
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
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2415—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
- G06F18/24155—Bayesian classification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于TAN半朴素贝叶斯网络的软件缺陷预测方法和系统,包括:收集历史缺陷记录形成训练数据集;将训练数据集中历史项目汇总;对待预测文本进行分词得到分词集合;将分词集合中重复的分词进行归并处理,形成特征词集;计算特征词集中任意两个特征词之间的条件互信息值;以特征词集中每个特征词作为节点,互信息值为边构建无向图;选择任意节点作为根节点,由根节点向外的方向为节点之间的流转方向,依次递归设置无向图中节点间的流转方向,形成有向无环图;构建TAN半朴素贝叶斯网络并基于分词集合,计算并比较预测分类集中每一个分类的后验概率值,将后验概率值最大的分类作为最终的软件缺陷预测结果。
Description
技术领域
本发明涉及软件缺陷预测技术领域,具体地,涉及一种基于TAN半朴素贝叶斯网络的软件缺陷预测方法和系统。
背景技术
软件的应用领域十分广泛,在许多现代化大型装备系统中,由软件实现的关键功能越来越多。百万行代码以上规模软件系统中,百分之八十以上的功能都由软件实现。同时,软件占比越高,由于软件的缺陷所导致的问题也越来越严重。为了有效避免由于软件缺陷所导致的问题,需要从历史项目软件缺陷数据中分析并归纳出具有代表性特征的软件缺陷,使用机器学习等智能化方法对整理出的软件缺陷数据进行训练,对新研软件的需求进行软件缺陷预测。
对软件缺陷进行预测的智能化方法有很多,这些方法主要有机器学习、数据挖掘、模式识别。其中在自然语言文本分类方面采用的算法包括信念贝叶斯、全连接贝叶斯网络、朴素贝叶斯算法、支持向量机算法、神经网络等。其中,全连接贝叶斯网络的计算开销大,许多原本无关联的特征因素都被加入到预测结果中,导致预测结果准确性较低。而朴素贝叶斯算法由于其计算量和计算复杂度相对于其他算法而言实现起来较为简单而得到广泛的采纳。但同时,朴素贝叶斯也存在着一个问题,该算法假设各属性之间是相互独立的,这不符合软件缺陷预测问题中,特征值之间也存在关联关系的实际情况。因此,传统的朴素贝叶斯算法无法在软件缺陷预测问题中取得理想的软件缺陷分类效果。为此,许多研究人员尝试对特征条件独立性这一假设进行修改,允许一些特征之间存在关联关系,而不是完全的相互独立。以此来减少对完全联合概率的大量计算,同时也将实际问题中已存在的较强的特征之间的关联关系纳入到算法的概率计算当中。近年来比较常见的半朴素贝叶斯方法有ODE和TAN,其中ODE方法又可以分为SPODE和AODE,而AODE是对SPODE的改进。SPODE模型假设所有特征都依赖于同一个特征,通过交叉验证等方法来确定这个特征。AODE在SPODE的基础上,将那些具有足够训练数据支撑的SPODE集成起来作为最终结果。TAN则通过计算两两特征之间的互信息量,以特征为节点,互信息量为边生成一个图,再从图中找到一个最大带权生成树,将特征词作为输入,通过计算联合概率值而得到分类结果。
专利文献CN107391772A(申请号:CN201710832802.2)本发明公开了一种基于朴素贝叶斯的文本分类方法。然而该专利没有解决全连接贝叶斯网络分类预测模型空间开销大、计算性能差、预测精度低的问题。
专利文献CN106056164A(申请号:CN201610412995.1)公开了一种基于贝叶斯网络的分类预测方法。然而该专利没有解决朴素贝叶斯网络分类预测模型虽计算性能好,但依赖于所有特征间条件独立性假设,而该假设在现实任务中往往很难成立的问题。
专利文献CN108763096A(申请号:CN201810571352.0)公开了一种基于深度信念网络算法支持向量机DBN-SVM的软件缺陷预测方法。然而该专利没有解决计算特征间互信息量CMI时,仅仅考虑了特征词词频的重要性,而忽视了常用词作为特征词时对计算CMI造成影响和干扰的问题。
专利文献CN107133179A(申请号:CN201710417699.5)公开了一种基于贝叶斯网络的网站缺陷预测方法及其实现系统,所述方法建立HTML贝叶斯网络结构以及代码贝叶斯网络结构,并对所述HTML贝叶斯网络结构以及代码贝叶斯网络结构输入历史度量元状态值进行最大似然性估算学习,构成贝叶斯网络模型;将带测网页的度量元状态值带入贝叶斯网络模型,得到预测的缺陷情况;所述实现系统包含度量元采集模块、度量元处理模块、HTML贝叶斯网络模块以及代码贝叶斯网络模块,所述度量元采集模块对HTML及代码的各度量元进行采集,并由度量元处理模块转换成度量元状态值,输入到HTML贝叶斯网络模块以及代码贝叶斯网络模块中进行缺陷预测。然而该专利无法解决全连接贝叶斯网络分类预测模型空间开销大、计算性能差、预测精度低的问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于TAN半朴素贝叶斯网络的软件缺陷预测方法和系统。
根据本发明提供的基于TAN半朴素贝叶斯网络的软件缺陷预测方法,包括:
步骤1:收集历史项目中由软件功能描述、缺陷描述和缺陷类型信息构成的软件缺陷记录,通过数据整理、清洗和优化后进行格式化存储,形成用于软件缺陷预测的训练数据集;
步骤2:将训练数据集中历史项目的软件功能描述汇总后作为训练文本集,将训练数据集中所有缺陷类型汇总后作为预测分类集,同时将软件功能描述所关联的缺陷类型作为训练文本集中每个训练文本的分类标签;
步骤3:通过分词工具,对待预测的软件功能描述文本进行分词,将分词与预设停用词集进行比较,去掉待预测文本中无意义的词语,得到去噪的允许分词重复的分词集合;
步骤4:将分词集合中重复的分词进行归并处理,形成不允许分词重复的特征词集;
步骤5:基于训练文本集,计算特征词集中任意两个特征词之间的条件互信息值;
步骤6:以特征词集中每个特征词作为节点,任意两个特征词的互信息值为边构建无向图,通过最大带权生成树算法定义节点间的连接规则;
步骤7:基于无向图,选择任意节点作为根节点,由根节点向外的方向为节点之间的流转方向,依次递归设置无向图中节点间的流转方向,最终形成一个有向无环图;
步骤8:将分类标签作为有向无环图中所有节点的父节点,并设置由父节点向外方向作为节点之间的流转方向,最终构建出TAN半朴素贝叶斯网络;
步骤9:基于TAN半朴素贝叶斯网络和分词集合,计算并比较预测分类集中每一个分类的后验概率值,将后验概率值最大的分类作为最终的软件缺陷预测结果。
优选的,特征词集中任意两个特征词之间的条件互信息值的计算公式为:
式中,c表示预测分类集Y中的分类标签,后验概率P(wi,wj|c)、P(wi|c)和P(wj|c)的计算因子在常规的词频算子基础上,借鉴tf-idf关键词提取算法,增加逆分类频率算子,同时为了防止词频算子和拟分类频率算子出现0的情况,对这两个算子都进行拉普拉斯平滑变换处理,计算公式为:
|Dc|指训练文本集D中分类标签c下各文本的分词总数,如果某个分词重复出现则需要进行叠加计算;指训练文本集D在分类标签c下的所有文本中,特征词wi出现的次数累加之和;指训练文本集D在分类标签c下的所有文本中,特征词wj出现的次数累加之和;指训练文本集D在分类标签c下的所有文本中,特征词wi出现的次数和wj出现的次数累加之和;|B|指训练文本集D中所有分词的个数,如果某个分词重复出现则只记录一次;|Y|指预测分类集Y的分类总数;指预测分类集Y中包含特征词wi的分类数;指预测分类集Y中包含特征词wj的分类数;指预测分类集Y中既包含特征词wi又包含特征词wj的分类数。
优选的,预测结果的判断准则为:
基于贝叶斯定理和输入的分词集合x1,x2,...,xn,关于预测分类后验概率的计算公式为:
式中,由于对所有c∈Y的分类计算其后验概率P(c|x1,x2,...,xn),其分母∑kP(x1,x2,...,xn|Y=Yk)P(Yk)均一致,则推导出P(c|x1,x2,...,xn)仅正相关于分子部分P(c)P(x1,x2,...,xn|c),如下式所示:
P(c|x1,x2,...,xn)∝P(c)P(x1,x2,...,xn|c)…………(7)。
优选的,比较分类c的后验概率值简化为比较P(c)P(x1,x2,...,xn|c)的值,其中P(c)是分类c的先验概率;
基于已训练生成的TAN半朴素贝叶斯网络,依据马尔科夫链假设原理,贝叶斯网络中每一个节点在其父节点的值指定后,这个节点条件独立于其所有非父节点;同时依据head-to-head条件独立定理,节点值在未指定的情况下,其所有的父节点相互独立;
对后验概率P(x1,x2,...,xn|c)的计算方法进行简化,简化后的计算公式如下所示:
其中,px1,...,pxm是xi的分词父节点,分类标签c是xi的分类父节点。
优选的,后验概率P(xi|c,px1,...,pxm)的计算因子在常规的词频算子基础上,借鉴tf-idf关键词提取算法,增加逆分类频率算子,同时为了防止词频算子和拟分类频率算子出现0的情况,对这两个算子都进行拉普拉斯平滑变换处理,后验概率P(xi|c,px1,...,pxm)的计算公式如下所示:
式中,指挑选出训练文本集D分类标签c下,同时出现分词px1,...,pxm的各个文本,计算这些文本中所有的分词总数,如果某个分词重复出现则需要进行叠加计算;指挑选出训练文本集D分类标签c下,同时出现分词px1,...,pxm的各个文本,计算这些文本中分词xi出现的次数累加之和;|B|指训练文本集D中所有分词的个数,如果某个分词重复出现则只记录一次;|Y|指预测分类集Y的分类总数;指预测分类集Y中包含分词xi的分类数。
根据本发明提供的基于TAN半朴素贝叶斯网络的软件缺陷预测系统,包括:
模块M1:收集历史项目中由软件功能描述、缺陷描述和缺陷类型信息构成的软件缺陷记录,通过数据整理、清洗和优化后进行格式化存储,形成用于软件缺陷预测的训练数据集;
模块M2:将训练数据集中历史项目的软件功能描述汇总后作为训练文本集,将训练数据集中所有缺陷类型汇总后作为预测分类集,同时将软件功能描述所关联的缺陷类型作为训练文本集中每个训练文本的分类标签;
模块M3:通过分词工具,对待预测的软件功能描述文本进行分词,将分词与预设停用词集进行比较,去掉待预测文本中无意义的词语,得到去噪的允许分词重复的分词集合;
模块M4:将分词集合中重复的分词进行归并处理,形成不允许分词重复的特征词集;
模块M5:基于训练文本集,计算特征词集中任意两个特征词之间的条件互信息值;
模块M6:以特征词集中每个特征词作为节点,任意两个特征词的互信息值为边构建无向图,通过最大带权生成树算法定义节点间的连接规则;
模块M7:基于无向图,选择任意节点作为根节点,由根节点向外的方向为节点之间的流转方向,依次递归设置无向图中节点间的流转方向,最终形成一个有向无环图;
模块M8:将分类标签作为有向无环图中所有节点的父节点,并设置由父节点向外方向作为节点之间的流转方向,最终构建出TAN半朴素贝叶斯网络;
模块M9:基于TAN半朴素贝叶斯网络和分词集合,计算并比较预测分类集中每一个分类的后验概率值,将后验概率值最大的分类作为最终的软件缺陷预测结果。
优选的,特征词集中任意两个特征词之间的条件互信息值的计算公式为:
式中,c表示预测分类集Y中的分类标签,后验概率P(wi,wj|c)、P(wi|c)和P(wj|c)的计算因子在常规的词频算子基础上,借鉴tf-idf关键词提取算法,增加逆分类频率算子,同时为了防止词频算子和拟分类频率算子出现0的情况,对这两个算子都进行拉普拉斯平滑变换处理,计算公式为:
|Dc|指训练文本集D中分类标签c下各文本的分词总数,如果某个分词重复出现则需要进行叠加计算;指训练文本集D在分类标签c下的所有文本中,特征词wi出现的次数累加之和;指训练文本集D在分类标签c下的所有文本中,特征词wj出现的次数累加之和;指训练文本集D在分类标签c下的所有文本中,特征词wi出现的次数和wj出现的次数累加之和;|B|指训练文本集D中所有分词的个数,如果某个分词重复出现则只记录一次;|Y|指预测分类集Y的分类总数;指预测分类集Y中包含特征词wi的分类数;指预测分类集Y中包含特征词wj的分类数;指预测分类集Y中既包含特征词wi又包含特征词wj的分类数。
优选的,预测结果的判断准则为:
基于贝叶斯定理和输入的分词集合x1,x2,...,xn,关于预测分类后验概率的计算公式为:
式中,由于对所有c∈Y的分类计算其后验概率P(c|x1,x2,...,xn),其分母∑kP(x1,x2,...,xn|Y=Yk)P(Yk)均一致,则推导出P(c|x1,x2,...,xn)仅正相关于分子部分P(c)P(x1,x2,...,xn|c),如下式所示:
P(c|x1,x2,...,xn)∝P(c)P(x1,x2,...,xn|c)…………(7)。
优选的,比较分类c的后验概率值简化为比较P(c)P(x1,x2,...,xn|c)的值,其中P(c)是分类c的先验概率;
基于已训练生成的TAN半朴素贝叶斯网络,依据马尔科夫链假设原理,贝叶斯网络中每一个节点在其父节点的值指定后,这个节点条件独立于其所有非父节点;同时依据head-to-head条件独立定理,节点值在未指定的情况下,其所有的父节点相互独立;
对后验概率P(x1,x2,...,xn|c)的计算方法进行简化,简化后的计算公式如下所示:
其中,px1,...,pxm是xi的分词父节点,分类标签c是xi的分类父节点。
优选的,后验概率P(xi|c,px1,...,pxm)的计算因子在常规的词频算子基础上,借鉴tf-idf关键词提取算法,增加逆分类频率算子,同时为了防止词频算子和拟分类频率算子出现0的情况,对这两个算子都进行拉普拉斯平滑变换处理,后验概率P(xi|c,px1,...,pxm)的计算公式如下所示:
式中,指挑选出训练文本集D分类标签c下,同时出现分词px1,...,pxm的各个文本,计算这些文本中所有的分词总数,如果某个分词重复出现则需要进行叠加计算;指挑选出训练文本集D分类标签c下,同时出现分词px1,...,pxm的各个文本,计算这些文本中分词xi出现的次数累加之和;|B|指训练文本集D中所有分词的个数,如果某个分词重复出现则只记录一次;|Y|指预测分类集Y的分类总数;指预测分类集Y中包含分词xi的分类数。
与现有技术相比,本发明具有如下的有益效果:
(1)本发明基于TAN半朴素贝叶斯网络的软件缺陷预测模型,既不需要进行完全联合概率计算,又不至于彻底忽略了比较强的特征依赖关系,降低了预测模型的时空开销,提高了预测模型的预测性能;
(2)本发明通过在软件项目中进行软件缺陷预测技术的应用,可以协助软件开发人员和软件质量人员在软件生命周期模型的早期阶段(例如软件需求分析阶段),基于软件项目的功能描述等需求信息和TAN半朴素贝叶斯网络软件缺陷预测模型预测出软件可能存在的潜在缺陷及其分布情况,可极大的降低软件缺陷造成的危害和影响,以及修复软件缺陷所花费的人力成本;
(3)本发明通过基于TAN半朴素贝叶斯网络的软件缺陷预测这种智能化方法在各类软件项目中推广和应用,随着项目中软件缺陷数据的不断积累,软件缺陷预测模型可以自反馈的迭代补充先验数据,逐步优化TAN半朴素贝叶斯网络结构,从而进一步提高软件缺陷预测模型的预测性能。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为软件缺陷预测方法流程图;
图2为TAN半朴素贝叶斯网络构造过程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例:
如图1,根据本发明提供的一种基于TAN半朴素贝叶斯网络的软件缺陷预测方法,具体实现方式包括以下步骤:
步骤S1:收集历史项目中由软件功能描述、缺陷描述、缺陷类型等信息构成的软件缺陷记录,通过数据整理、清洗和优化后进行格式化存储,形成可用于软件缺陷预测的训练数据集。
步骤S2:将训练数据集中历史项目的软件功能描述作为训练文本集D,将训练数据集中所有缺陷类型汇总后作为预测分类集Y,同时将软件功能描述所关联的缺陷类型作为训练文本集D中每个训练文本的分类标签c。
具体包括以下步骤:
步骤S21:将训练数据集进行格式化处理,形成训练文本集D。训练文本集中每条文本包括软件功能描述和分类标签(即缺陷类型)两个属性。
步骤S22:根据软件功能描述和缺陷描述等信息,将缺陷类别归纳为接口数据缺陷、功能逻辑缺陷、功能组合缺陷和状态场景缺陷4大类。
步骤S23:基于已定义的缺陷类别,通过对缺陷发生的内在机理进行分析,定义出缺陷类型并作为预测分类集Y。具体的,缺陷类型如下表所示:
表1缺陷类型表
步骤S3:将准备进行软件缺陷预测的新研项目软件功能描述文本利用分词工具进行分词,形成一组分词。将这些分词与停用词集进行比较,去掉待预测文本中无意义的词语,得到去噪的允许分词重复的分词集合(x1,x2,x3,...,xn)。
步骤S4:将分词集合(x1,x2,x3,...,xn)中重复的分词进行归并处理,形成不允许分词重复的特征词集(w1,w2,w3,...,wn)。
步骤S5:基于训练文本集D,计算特征词集(w1,w2,w3,...,wn)中任意两个特征词之间的条件互信息值CMI,即相互依赖程度;
计算公式如下所示:
上式中,c表示预测分类集Y中的某一个分类标签(即缺陷类型),另外公式1中后验概率P(wi,wj|c)、P(wi|c)和P(wj|c)的计算因子在常规的词频算子基础上,借鉴tf-idf关键词提取算法,创新增加了逆分类频率算子。同时为了防止词频算子和拟分类频率算子出现0的情况,对这两个算子都进行拉普拉斯平滑变换处理,其计算公式分别如下所示:
在公式2、3、4中,|Dc|指训练文本集D中分类标签c下各文本的分词总数,需特别注意的是,如果某个分词重复出现则需要进行叠加计算;指训练文本集D在分类标签c下的所有文本中,特征词wi出现的次数累加之和;指训练文本集D在分类标签c下的所有文本中,特征词wj出现的次数累加之和;指训练文本集D在分类标签c下的所有文本中,特征词wi出现的次数和wj出现的次数累加之和;|B|指训练文本集D中所有分词的个数,需要注意的是,如果某个分词重复出现则只记录一次;|Y|指预测分类集Y的分类总数,即缺陷类型总数;指预测分类集Y中包含特征词wi的分类数;指预测分类集Y中包含特征词wj的分类数;指预测分类集Y中既包含特征词wi又包含特征词wj的分类数。
步骤S6:以特征词集(w1,w2,w3,...,wn)中每个特征词作为节点,任意两个特征词的互信息值CMI为边构建一张无向图,通过最大带权生成树算法定义节点间的连接规则。
这个规则需要满足以下三个条件:
①能够连接所有节点;
②使用最少数目的边;
③边长(即CMI值)总和最大。
因此,其最大带权生成树构造过程包括以下步骤:
步骤S61:定义一个节点对集合S,其初始值为空。
步骤S62:将互信息值CMI最大的两个特征词构成节点对纳入到集合S中。
步骤S63:从高到低依次将CMI值所涉及的两个特征词与集合S中的特征词进行比对,若两个特征词均在集合S中出现,则忽略;否则将两个特征词构成节点对纳入到集合S中,直到集合S中涵盖了所有特征词集(w1,w2,w3,...,wn)中的所有特征词。
步骤S64:将集合S中每个节点对依次建边后,则形成了最大带权生成树。
步骤S7:基于已构建的由特征词集(w1,w2,w3,...,wn)作为节点组成的无向图,选择任意节点作为根节点,由根节点向外的方向为节点之间的流转方向,依次递归设置无向图中节点间的流转方向,最终形成一个有向无环图DAG。
步骤S8:将分类标签c(即缺陷类型)作为有向无环图DAG中所有节点(即特征词)的父节点,并设置由父节点向外方向作为节点之间的流转方向,最终构建出TAN半朴素贝叶斯网络,构建过程如图2a~图2d。
步骤S9:基于已训练生成的TAN半朴素贝叶斯网络和由新研项目软件需求描述文本分词后构造的分词集合(x1,x2,x3,...,xn),计算并比较分类集Y中每一个分类c的后验概率值,后验概率值最大的分类(即缺陷类型)则为最终的软件缺陷预测结果。其预测结果的判断准则如下所示:
基于贝叶斯定理和输入的分词集合(x1,x2,x3,...,xn),关于预测分类c后验概率的计算公式如下所示:
在上式中,由于对所有c∈Y的分类计算其后验概率P(c|x1,x2,...,xn),其分母∑kP(x1,x2,...,xn|Y=Yk)P(Yk)均一致,则可推导出P(c|x1,x2,...,xn)仅正相关于分子部分P(c)P(x1,x2,...,xn|c),如下式所示:
P(c|x1,x2,...,xn)∝P(c)P(x1,x2,...,xn|c)…………(公式7)
因此,比较分类c的后验概率值可以简化为比较P(c)P(x1,x2,...,xn|c)的值,其中P(c)是分类c的先验概率,即训练文本集D中分类标签为c的文本数与训练文本集D中所有文本数的比值;基于已训练生成的TAN半朴素贝叶斯网络,依据马尔科夫链假设原理,贝叶斯网络中每一个节点在其父节点的值指定后,这个节点条件独立于其所有非父节点;同时依据head-to-head条件独立定理,节点值在未指定的情况下,其所有的父节点相互独立。可对后验概率P(x1,x2,...,xn|c)的计算方法进行简化,简化后的计算公式如下所示:
其中,px1,...,pxm是xi的分词父节点,分类标签c是xi的分类父节点,它们共同构成了xi的父节点。
另外,公式8中后验概率P(xi|c,px1,...,pxm)的计算因子在常规的词频算子基础上,借鉴tf-idf关键词提取算法,创新增加了逆分类频率算子。同时为了防止词频算子和拟分类频率算子出现0的情况,对这两个算子都进行拉普拉斯平滑变换处理,后验概率P(xi|c,px1,...,pxm)的计算公式如下所示:
在公式9中,指挑选出训练文本集D分类标签c下,同时出现分词px1,...,pxm的各个文本,计算这些文本中所有的分词总数,需特别注意的是,如果某个分词重复出现则需要进行叠加计算;指挑选出训练文本集D分类标签c下,同时出现分词px1,...,pxm的各个文本,计算这些文本中分词xi出现的次数累加之和;|B|指训练文本集D中所有分词的个数,需要注意的是,如果某个分词重复出现则只记录一次;|Y|指预测分类集Y的分类总数,即缺陷类型总数;指预测分类集Y中包含分词xi的分类数。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种基于TAN半朴素贝叶斯网络的软件缺陷预测方法,其特征在于,包括:
步骤1:收集历史项目中由软件功能描述、缺陷描述和缺陷类型信息构成的软件缺陷记录,通过数据整理、清洗和优化后进行格式化存储,形成用于软件缺陷预测的训练数据集;
步骤2:将训练数据集中历史项目的软件功能描述汇总后作为训练文本集,将训练数据集中所有缺陷类型汇总后作为预测分类集,同时将软件功能描述所关联的缺陷类型作为训练文本集中每个训练文本的分类标签;
步骤3:通过分词工具,对待预测的软件功能描述文本进行分词,将分词与预设停用词集进行比较,去掉待预测文本中无意义的词语,得到去噪的允许分词重复的分词集合;
步骤4:将分词集合中重复的分词进行归并处理,形成不允许分词重复的特征词集;
步骤5:基于训练文本集,计算特征词集中任意两个特征词之间的条件互信息值;
步骤6:以特征词集中每个特征词作为节点,任意两个特征词的互信息值为边构建无向图,通过最大带权生成树算法定义节点间的连接规则;
步骤7:基于无向图,选择任意节点作为根节点,由根节点向外的方向为节点之间的流转方向,依次递归设置无向图中节点间的流转方向,最终形成一个有向无环图;
步骤8:将分类标签作为有向无环图中所有节点的父节点,并设置由父节点向外方向作为节点之间的流转方向,最终构建出TAN半朴素贝叶斯网络;
步骤9:基于TAN半朴素贝叶斯网络和分词集合,计算并比较预测分类集中每一个分类的后验概率值,将后验概率值最大的分类作为最终的软件缺陷预测结果。
2.根据权利要求1所述的基于TAN半朴素贝叶斯网络的软件缺陷预测方法,其特征在于,特征词集中任意两个特征词之间的条件互信息值的计算公式为:
式中,c表示预测分类集Y中的分类标签,后验概率P(wi,wj|c)、P(wi|c)和P(wj|c)的计算因子在常规的词频算子基础上,借鉴tf-idf关键词提取算法,增加逆分类频率算子,同时为了防止词频算子和拟分类频率算子出现0的情况,对这两个算子都进行拉普拉斯平滑变换处理,计算公式为:
4.根据权利要求3所述的基于TAN半朴素贝叶斯网络的软件缺陷预测方法,其特征在于,比较分类c的后验概率值简化为比较P(c)P(x1,x2,...,xn|c)的值,其中P(c)是分类c的先验概率;
基于已训练生成的TAN半朴素贝叶斯网络,依据马尔科夫链假设原理,贝叶斯网络中每一个节点在其父节点的值指定后,这个节点条件独立于其所有非父节点;同时依据head-to-head条件独立定理,节点值在未指定的情况下,其所有的父节点相互独立;
对后验概率P(x1,x2,...,xn|c)的计算方法进行简化,简化后的计算公式如下所示:
其中,px1,...,pxm是xi的分词父节点,分类标签c是xi的分类父节点。
5.根据权利要求4所述的基于TAN半朴素贝叶斯网络的软件缺陷预测方法,其特征在于,后验概率P(xi|c,px1,...,pxm)的计算因子在常规的词频算子基础上,借鉴tf-idf关键词提取算法,增加逆分类频率算子,同时为了防止词频算子和拟分类频率算子出现0的情况,对这两个算子都进行拉普拉斯平滑变换处理,后验概率P(xi|c,px1,...,pxm)的计算公式如下所示:
6.一种基于TAN半朴素贝叶斯网络的软件缺陷预测系统,其特征在于,包括:
模块M1:收集历史项目中由软件功能描述、缺陷描述和缺陷类型信息构成的软件缺陷记录,通过数据整理、清洗和优化后进行格式化存储,形成用于软件缺陷预测的训练数据集;
模块M2:将训练数据集中历史项目的软件功能描述汇总后作为训练文本集,将训练数据集中所有缺陷类型汇总后作为预测分类集,同时将软件功能描述所关联的缺陷类型作为训练文本集中每个训练文本的分类标签;
模块M3:通过分词工具,对待预测的软件功能描述文本进行分词,将分词与预设停用词集进行比较,去掉待预测文本中无意义的词语,得到去噪的允许分词重复的分词集合;
模块M4:将分词集合中重复的分词进行归并处理,形成不允许分词重复的特征词集;
模块M5:基于训练文本集,计算特征词集中任意两个特征词之间的条件互信息值;
模块M6:以特征词集中每个特征词作为节点,任意两个特征词的互信息值为边构建无向图,通过最大带权生成树算法定义节点间的连接规则;
模块M7:基于无向图,选择任意节点作为根节点,由根节点向外的方向为节点之间的流转方向,依次递归设置无向图中节点间的流转方向,最终形成一个有向无环图;
模块M8:将分类标签作为有向无环图中所有节点的父节点,并设置由父节点向外方向作为节点之间的流转方向,最终构建出TAN半朴素贝叶斯网络;
模块M9:基于TAN半朴素贝叶斯网络和分词集合,计算并比较预测分类集中每一个分类的后验概率值,将后验概率值最大的分类作为最终的软件缺陷预测结果。
7.根据权利要求6所述的基于TAN半朴素贝叶斯网络的软件缺陷预测系统,其特征在于,特征词集中任意两个特征词之间的条件互信息值的计算公式为:
式中,c表示预测分类集Y中的分类标签,后验概率P(wi,wj|c)、P(wi|c)和P(wj|c)的计算因子在常规的词频算子基础上,借鉴tf-idf关键词提取算法,增加逆分类频率算子,同时为了防止词频算子和拟分类频率算子出现0的情况,对这两个算子都进行拉普拉斯平滑变换处理,计算公式为:
9.根据权利要求8所述的基于TAN半朴素贝叶斯网络的软件缺陷预测系统,其特征在于,比较分类c的后验概率值简化为比较P(c)P(x1,x2,...,xn|c)的值,其中P(c)是分类c的先验概率;
基于已训练生成的TAN半朴素贝叶斯网络,依据马尔科夫链假设原理,贝叶斯网络中每一个节点在其父节点的值指定后,这个节点条件独立于其所有非父节点;同时依据head-to-head条件独立定理,节点值在未指定的情况下,其所有的父节点相互独立;
对后验概率P(x1,x2,...,xn|c)的计算方法进行简化,简化后的计算公式如下所示:
其中,px1,...,pxm是xi的分词父节点,分类标签c是xi的分类父节点。
10.根据权利要求9所述的基于TAN半朴素贝叶斯网络的软件缺陷预测系统,其特征在于,后验概率P(xi|c,px1,...,pxm)的计算因子在常规的词频算子基础上,借鉴tf-idf关键词提取算法,增加逆分类频率算子,同时为了防止词频算子和拟分类频率算子出现0的情况,对这两个算子都进行拉普拉斯平滑变换处理,后验概率P(xi|c,px1,...,pxm)的计算公式如下所示:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111038761.2A CN113900924B (zh) | 2021-09-06 | 2021-09-06 | 基于tan半朴素贝叶斯网络的软件缺陷预测方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111038761.2A CN113900924B (zh) | 2021-09-06 | 2021-09-06 | 基于tan半朴素贝叶斯网络的软件缺陷预测方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113900924A true CN113900924A (zh) | 2022-01-07 |
CN113900924B CN113900924B (zh) | 2023-04-07 |
Family
ID=79188739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111038761.2A Active CN113900924B (zh) | 2021-09-06 | 2021-09-06 | 基于tan半朴素贝叶斯网络的软件缺陷预测方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113900924B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391772A (zh) * | 2017-09-15 | 2017-11-24 | 国网四川省电力公司眉山供电公司 | 一种基于朴素贝叶斯的文本分类方法 |
CN109299255A (zh) * | 2018-09-12 | 2019-02-01 | 东莞数汇大数据有限公司 | 基于朴素贝叶斯的案件文本分类方法、系统和存储介质 |
-
2021
- 2021-09-06 CN CN202111038761.2A patent/CN113900924B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391772A (zh) * | 2017-09-15 | 2017-11-24 | 国网四川省电力公司眉山供电公司 | 一种基于朴素贝叶斯的文本分类方法 |
CN109299255A (zh) * | 2018-09-12 | 2019-02-01 | 东莞数汇大数据有限公司 | 基于朴素贝叶斯的案件文本分类方法、系统和存储介质 |
Non-Patent Citations (1)
Title |
---|
王延飞: "APP缺陷问题评论分类方法研究", 《软件导刊》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113900924B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102173555B1 (ko) | 머신 러닝 기반 네트워크 모델 구축 방법 및 장치 | |
JP6743934B2 (ja) | 観測変数間の因果関係を推定するための方法、装置、およびシステム | |
CN108388651B (zh) | 一种基于图核和卷积神经网络的文本分类方法 | |
CN109933656B (zh) | 舆情极性预测方法、装置、计算机设备及存储介质 | |
CN112231477B (zh) | 一种基于改进胶囊网络的文本分类方法 | |
Halim et al. | On the efficient representation of datasets as graphs to mine maximal frequent itemsets | |
CN111125358A (zh) | 一种基于超图的文本分类方法 | |
CN110390017A (zh) | 基于注意力门控卷积网络的目标情感分析方法及系统 | |
CN104239553A (zh) | 一种基于Map-Reduce框架的实体识别方法 | |
CN114218389A (zh) | 一种基于图神经网络的化工制备领域长文本分类方法 | |
CN115577678B (zh) | 文档级事件因果关系识别方法、系统、介质、设备及终端 | |
CN111539444A (zh) | 一种修正式模式识别及统计建模的高斯混合模型方法 | |
JP2019086979A (ja) | 情報処理装置、情報処理方法及びプログラム | |
CN113742396A (zh) | 一种对象学习行为模式的挖掘方法及装置 | |
CN113900924B (zh) | 基于tan半朴素贝叶斯网络的软件缺陷预测方法和系统 | |
CN110502669B (zh) | 基于n边dfs子图轻量级无监督图表示学习的社交媒体数据分类方法及装置 | |
CN115268994B (zh) | 一种基于tbcnn和多头自注意力机制的代码特征提取方法 | |
Lin et al. | Efficient updating of sequential patterns with transaction insertion | |
CN113111136B (zh) | 一种基于ucl知识空间的实体消歧方法及装置 | |
CN111459927B (zh) | Cnn-lstm开发者项目推荐方法 | |
Yu et al. | Probabilistic joint models incorporating logic and learning via structured variational approximation for information extraction | |
Li | The Combination of CNN, RNN, and DNN for Relation Extraction | |
CN109447131B (zh) | 相似高维目标信息识别方法及系统 | |
CN117435246B (zh) | 一种基于马尔可夫链模型的代码克隆检测方法 | |
CN113011163B (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 |