一种基于多方法集成学习的自承认技术债务检测分类方法技术

技术编号:25948635 阅读:21 留言:0更新日期:2020-10-17 03:40
本发明专利技术涉及一种基于多方法集成学习的自承认技术检测分类方法,该方法包括五个步骤:对特征词进行预处理;选取前k个最有用的特征来训练分类器;使用朴素贝叶斯多项式和线性Logistic回归两种方法训练相应的子分类器;以及通过子分类器投票规则对预测结果集成预测,得到精确度、召回率,综合精确度和召回率最终计算出F1值作为后续的评估标准;最终通过聚类的方法对实验过程中经常出现并且具有高信息增益值的特征进行聚类,进而将检测到的技术债务进行分类。

【技术实现步骤摘要】
一种基于多方法集成学习的自承认技术债务检测分类方法
本专利技术属于软件开发
,具体涉及一种基于多方法集成学习的自承认债务分类检测的方法。
技术介绍
文献“HuangQ,ShihabE,XiaX,etal.Identifyingself-admittedtechnicaldebtinopensourceprojectsusingtextmining[J].EmpiricalSoftwareEngineering,2017.”公开了一种使用集成分类器自动检测自承认技术债务的方法。该方法使用来自不同软件项目的源代码注释,对待检测的注释来进行分析。该方法首先对源文件进行预处理,并利用特征选择筛选特征,利用朴素贝叶斯多项式(BayesMultinomial)训练每个分类器,最终由多个分类器组成的集成分类器按照投票规则进行预测,以确定语句是否存在自承认技术债务。该方法经验证,结果较基于文本模式的方法和NLP分类器方法有了较大改善,具有出色的运行性能。但由于分类器训练方法单一,个别分类器精确度较低,导致最终所得结果不太准确。自承认技术债务(SATD)是一个术语,被提出来表达软件开发过程中有意引入的债务,通常是使项目能在短期内开发的更迅速,而代价是在未来需要进行维护,为了帮助减轻维护SATD的代价,本专利技术研究的重点是准确检测SATD。但是到目前为止一些方法强烈依赖于手工检测,还有很多高级方法采用单一的自然语言检测方式来自动识别SATD,然而,手工检测的方法效率低弊端明显,单一自然语言检测的方式分类器性能低,灵活性差,虽然先前的检测也有着较好的结果,但是SATD在项目中的多样性以及语义变化等特征都为准确检测SATD带来了很大的挑战。因此为了提高SATD检测的准确性以及灵活性,本专利技术提出了一种多方法集成学习的SATD检测方法,以8个开源的项目为数据集,先对注释文本进行预处理,利用特征选择方法提取特征,然后使用BayesMultinomial和SimpleLogistic方法集成训练分类器,最后集成子分类器形成集成分类器,根据投票规则得到带注释的分类标签,准确的识别自承认技术债务。最终我们将实验结果同三种实验基线(基于模式、单一方法集成学习、NLP)进行对比,且结果表明本文提出方法的SATD检测方法精确度高,召回率明显提升,能够达到更好的检测效果,明显优于先前的检测方法。
技术实现思路
要解决的技术问题研究软件开发过程中的自承认技术债务检测问题的关键技术难点在于:自承认技术债务本质是源代码级的,但是一般需要通过检测源代码注释并把句子分解为特征词来分析,在训练分类器时,训练模型单一,结果误差较大。本专利技术关注多方法的集成学习来检测自承认技术债务,专利技术中首先对特征词进行预处理。去掉停用词、标点符号,只取有效词汇进行特征选择,滤除无效特征减小噪声。此外考虑单词的相近性,例如:happy,happiness,happier等具有相同词干的词,采用porter将其统一至词干;然后选取前k个最有用的特征来训练分类器。预处理后的特征本专利技术选取前k个最有用的特征用于训练;其次使用朴素贝叶斯多项式(BayesMultinomial)和线性Logistic回归(SimpleLogistic)两种方法训练相应的子分类器,使每次预测的F1值达到最好,在预测尽可能多的自承认技术债务的同时,尽可能提高预测的准确性。最后使用子分类器投票的规则对专利技术中子分类器训练的预测结果进行集成预测,确定每一个过程中最终集成分类器的预测结果。技术方案一种基于多方法集成学习的自承认技术债务检测分类方法,其特征在于步骤如下:步骤1:对特征词进行预处理使用启发式的规则处理原始注释数据:(1)、删除编译器自动生成的带有固定格式的许可证描述类注释;(2)、将多行注释合并为一句;(3)、删除存在于注释语句中的代码;(4)、将不含有保留字的Javadoc删除,保留含有保留字的注释语句;步骤2:选取前k个最有用的特征来训练分类器在对源项目注释进行文本预处理后,本专利技术使用向量空间模型VSM来处理已经被划分为特征的单词;在此模型中,用单词向量表示每一句注释,可以将划分出的单词特征视为维度,将每一句注释视为高维空间中的数据点;本专利技术使用HashMap来作为VSM模型的映射,其中字符型标识为划分出的特征,双精度型数值为词频,即特征在当前注释中出现的次数,并且将次数经过了标准化处理;采用信息增益这种使用广泛的特征选择方法来选择有用的特征:令注释数据集表示为C={(C1,L1),(C2,L2),...,(CN,LN)},Ci代表第i条注释,Li代表了该条注释的分类标签,即是(t)否存在自承认技术债务;还需令Ci={w1,w2,…,wn},其中n代表注释Ci中的特征个数,wi代表了该句注释中的第i个特征;对于一个特征w和一条注释Ci,它们之间存在4种可能的关系:●(w,t):注释Ci包含特征w,并且该句注释中存在自承认技术债务(i.e.,t)●注释Ci包含特征w,但该句注释中不存在自承认技术债务(i.e.,)●注释Ci不包含特征w,但该句注释中存在自承认技术债务(i.e.,t)●注释Ci不含特征w,且该句注释中不存在自承认技术债务(i.e.,)基于上述4种可能的关系,特征w和标签t的信息增益计算如下:其中,p(w′,t′)表示特征w′出现在具有标签t′的注释中的概率,p(w′)表示特征w′出现在注释中的概率,p(t′)表示注释具有标签t′的概率;在使用信息增益的方法计算每一个特征对应的信息增益值后,将特征按照信息增益值的大小,从大到小排序;分数越高,则说明特征在预测分类标签时越重要;本专利技术选择信息增益值在前k%的特征,并舍弃其他特征;步骤3:使用朴素贝叶斯多项式和线性Logistic回归训练子分类器(1):NativeBayesMultinomial本专利技术将六个分类器,即2号、3号、4号、5号、6号、8号分类器设置为多项式朴素贝叶斯分类器NBM,使用NBM方法进行训练;令注释集为Ci={w1,w2,...,wn},分类标签为Li,可得:在式(3)上应用贝叶斯定理,可得:通过式(4)来标识注释的分类标签;(2):SimpleLogistic本实验将两个分类器,即1号、7号分类器设置为线性逻辑回归分类器SimpleLogistic;令注释数据集表示为C={(C1,L1),(C2,L2),...,(CN,LN)},其中Ci代表第i条注释,Li代表了该条注释的分类标签,即是否存在自承认技术债务;除此之外,还需令Ci表示为Ci={w1,w2,...,wn},其中n代表注释Ci中的特征个数,wi代表了该句注释中的第i个特征;根据线性逻辑回归定理,可得:z=θ1w1+θ2w2+…+θnwn+θ0=θTCi(5)将其带入sigmoid函数,函数表示如下:根据本文档来自技高网
...

【技术保护点】
1.一种基于多方法集成学习的自承认技术债务检测分类方法,其特征在于步骤如下:/n步骤1:对特征词进行预处理/n使用启发式的规则处理原始注释数据:/n(1)、删除编译器自动生成的带有固定格式的许可证描述类注释;/n(2)、将多行注释合并为一句;/n(3)、删除存在于注释语句中的代码;/n(4)、将不含有保留字的Javadoc删除,保留含有保留字的注释语句;/n步骤2:选取前k个最有用的特征来训练分类器/n在对源项目注释进行文本预处理后,本专利技术使用向量空间模型VSM来处理已经被划分为特征的单词;在此模型中,用单词向量表示每一句注释,可以将划分出的单词特征视为维度,将每一句注释视为高维空间中的数据点;本专利技术使用HashMap来作为VSM模型的映射,其中字符型标识为划分出的特征,双精度型数值为词频,即特征在当前注释中出现的次数,并且将次数经过了标准化处理;/n采用信息增益这种使用广泛的特征选择方法来选择有用的特征:令注释数据集表示为C={(C

【技术特征摘要】
1.一种基于多方法集成学习的自承认技术债务检测分类方法,其特征在于步骤如下:
步骤1:对特征词进行预处理
使用启发式的规则处理原始注释数据:
(1)、删除编译器自动生成的带有固定格式的许可证描述类注释;
(2)、将多行注释合并为一句;
(3)、删除存在于注释语句中的代码;
(4)、将不含有保留字的Javadoc删除,保留含有保留字的注释语句;
步骤2:选取前k个最有用的特征来训练分类器
在对源项目注释进行文本预处理后,本发明使用向量空间模型VSM来处理已经被划分为特征的单词;在此模型中,用单词向量表示每一句注释,可以将划分出的单词特征视为维度,将每一句注释视为高维空间中的数据点;本发明使用HashMap来作为VSM模型的映射,其中字符型标识为划分出的特征,双精度型数值为词频,即特征在当前注释中出现的次数,并且将次数经过了标准化处理;
采用信息增益这种使用广泛的特征选择方法来选择有用的特征:令注释数据集表示为C={(C1,L1),(C2,L2),...,(CN,LN)},Ci代表第i条注释,Li代表了该条注释的分类标签,即是(t)否存在自承认技术债务;还需令Ci={w1,w2,…,wn},其中n代表注释Ci中的特征个数,wi代表了该句注释中的第i个特征;对于一个特征w和一条注释Ci,它们之间存在4种可能的关系:
·(w,t):注释Ci包含特征w,并且该句注释中存在自承认技术债务(i.e.,t)
·注释Ci包含特征w,但该句注释中不存在自承认技术债务
·注释Ci不包含特征w,但该句注释中存在自承认技术债务(i.e.,t)
·注释Ci不含特征w,且该句注释中不存在自承认技术债务
基于上述4种可能的关系,特征w和标签t的信息增益计算如下:



其中,p(w′,t′)表示特征w′出现在具有标签t′的注释中的概率,p(w′)表示特征w′出现在注释中的概率,p(t′)表示注释具有标签t′的概率;
在使用信息增益的方法计算每一个特征对应的信息增益值后,将特征按照...

【专利技术属性】
技术研发人员:殷茗徐悦然田嘉毅朱奎宇马怀宇张小港薛禹坤吴瑜
申请(专利权)人:西北工业大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1