发明内容
基于现有技术存在的问题,本发明提出了使用Bugzilla管理系统中的Bug报告信息作为知识库,使用粗糙集特征提取方法对文本矩阵进行特征提取,将提取的特征作为迁移学习的最终知识库,用于识别Android Bug报告的严重程度。本发明公开了一种基于迁移学习和特征提取的Bug报告严重程度识别方法,包括以下步骤:
S1:采集Bugzilla存储库中的Bug报告,将向量化表示的Bug报告信息作为迁移学习的知识库,对Bug报告信息进行分词、去停用词、词干化处理生成文本矩阵处理,采用TF*IDF对文本矩阵进行加权处理,将文本矩阵向量化表示;
S2:将向量化表示的Bugzilla Bug报告信息作为识别Android Bug报告的严重程度的知识库;
S3:使用粗糙集特征提取方法对文本矩阵进行特征提取,将提取的特征作为迁移学习的知识库,用于识别Android Bug报告的严重程度;
S4:建立分类器并对该分类器进行训练:分别用朴素贝叶斯NB、随机树RT、决策树J48、支持向量机SVM、K近邻KNN等五种分类算法对训练集进行建模,选取实验效果正确率Accuracy最高的分类算法对训练集进行建模输出;
S5:将Bug报告输入至分类器进行严重程度的预测。
进一步的,S1中具体采用如下方式:
S11:将Bug报告的文本描述信息处理成单个的词;
S12:将文本信息经过分词处理后会得到单个的词集合,通过去停用词将对bug报告严重程度没有帮助的单个词移除;
S13:将词集合单个词的复数、动词时态去掉,只保留词根;
S14:将词集合生成文本矩阵:其中词集合中词的个数为所有Bug报告中不同单词的个数,即文本矩阵的列数;训练集中含有的Bug报告数目即文本矩阵的行数,矩阵中行列的交汇处即矩阵该行Bug报告含有该列对应单词的词频。
S15:对文本矩阵用TF*IDF进行加权处理获得稀疏矩阵;
S16:采用粗糙集约减方法对稀疏矩阵进行约简去噪处理得到小规模高质量的训练集。
进一步的,S16中粗糙集约减方法如下定义:
定义1对于一个Bugzilla存储库KV=(U,C∪D,V,f),U表示从Bugzilla存储库中所选的Bug报告,C表示所选Bug报告中所有不同词的集合,
是C的一个特征子集,决策属性集合D是Bug报告的严重程度标签,V的值标示关键词出现的次数,f表示信息函数,对于任意的
IND(B)可以用下式表示;
其中,a(x)表示目标x的特征a的值,当(x,y)∈IND(B)时,x和y被认为是关于B不可分割的。关于B的不可分割关系定义为[x]B;
定义2对于任何
和属性集合
X可以根据知识B的下近似值和上近似值来近似求得,关于知识B的上近似值和下近似值如下所示,
定义3给定一个决策系统KV,决策属性D的C-正区域是所有来自U的集合,当
时,决策系统的B-正区域定义为,
定义4度量属性a的重要程度可以表示为概率分类的质量,如下所示,
定义5给定一个决策系统KV=(U,C∪D,V,f),
是条件属性集合的一个子集,a(
且
)是任意一个属性,属性a在B中的相对决策D的重要度,如下式所示:
由于采用了上述技术方案,本发明提供的一种基于迁移学习和特征提取的Bug报告严重程度识别方法,通过将向量化表示的Bugzilla Bug报告信息作为知识库;并使用粗糙集特征提取方法对向量化表示的文本矩阵进行特征提取,将提取的特征作为迁移学习的最终知识库,用于识别Android Bug报告的严重程度。通过上述方法可以实现Android Bug报告管理系统中Bug报告严重程度的自动预测,节省了Bug报告严重程度预测所需的时间成本和人力成本,提升了工作效率。
具体实施方式
为使本发明的技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述:
如图1所示的一种基于迁移学习和特征提取的Bug报告严重程度识别方法,包括以下步骤:
S1:采集Bug报告存储库中的原始数据集并提取训练集对训练集进行优化处理:按照分词、去停用词、词干化、生成文本矩阵、TF-IDF加权、粗糙集理论约简处理的顺序对训练集进行逐步优化;所述TF-IDF是一种用于信息检索与数据挖掘的常用加权技术,TF意思是词频(Term Frequency),IDF意思是逆文本频率指数(Inverse Document Frequency);TF表示词条在文档d中出现的频率,IDF的主要思想是:如果包含词条t的文档越少,IDF越大,则说明词条具有很好的类别区分能力。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到;某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF*IDF,因此TF*IDF倾向于过滤掉常见的词语,保留重要的词语:定义如下:
分母之所以要加1,是为了避免分母为0;
S2:将优化后的训练集作为Android Bug报告管理系统中Bug报告严重程度预测的训练集;
S3:建立分类器并对该分类器进行训练:分别用NB、RT、J48、SVM、KNN五种分类算法对训练集进行建模,选取实验效果正确率Accuracy最高的分类算法对训练集进行建模输出;所述分类器是数据挖掘中对样本进行分类的方法的统称,是数据挖掘的一种非常重要的方法;分类的概念是在已有数据的基础上学会一个分类函数或构造出一个分类模型,即我们通常所说的分类器,该函数或模型能够把数据库中的数据纪录映射到给定类别中的某一个,从而可以应用于数据预测;所述Accuracy计算公式为:
其中:贝叶斯分类器是各种分类器中分类错误概率最小或者在预先给定代价的情况下平均风险最小的分类器。它的设计方法是一种最基本的统计分类方法。其分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。
随机树是由随机过程形成的树或树状,该算法既能处理分类问题,又能处理回归问题。随机树是树预测器的集合。
决策树是一种基本的分类与回归方法,决策树模式呈树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一个类别。学习时利用训练数据,根据损失函数最小化的原则建立决策树模型;预测时,对新的数据,利用决策树模型进行分类。
支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。
KNN的基本思想是:输入没有标签(标注数据的类别),即没有经过分类的新数据,首先提取新数据的特征并与测试集中的每一个数据特征进行比较;然后从测试集中提取K个最邻近(最类似)的数据特征标签,统计这K个最邻近数据中出现次数最多的分类,将其作为新的数据类别。
S4:将Bug报告输入至分类器进行严重程度的预测。
S1中具体采用如下方式:
S11:将Bug报告的文本描述信息处理成单个的词;
S12:将文本信息经过分词处理后会得到单个的词集合,通过去停用词将对bug报告严重程度没有帮助的单个词移除;
S13:将词集合单个词的复数、动词时态去掉,只保留词根;
S14:将词集合生成文本矩阵:其中词集合中词的个数为所有Bug报告中不同单词的个数,即文本矩阵的列数;训练集中含有的Bug报告数目即文本矩阵的行数,矩阵中行列的交汇处即矩阵该行Bug报告含有该列对应单词的词频。
S15:对文本矩阵进行加权处理获得稀疏矩阵;所述稀疏矩阵,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律;
S16:采用粗糙集理论对稀疏矩阵进行约简去噪处理得到满足设定规格的训练集;用词作特征时,如果不做约简去噪处理,训练集中会包含许多对分类无用的噪音词条,很容易出现上万维、甚至几十万维的情况,这么多的维度对计算来说是个灾难;即使计算资源足够,无疑也是对资源的浪费,因为真正对分类起作用的词,可能只是所有词中的一少部分其余都为噪音。采用粗糙集理论对原数据集进行处理,找到一个约简后的特征集合。通过约简去噪处理,一些和任务无关或是冗余的特征被删除,从而提高数据处理的效率。约简后的数据集规模小质量高,能够代替原数据集进行分类,分类结果与未经约简的数据集结果相同甚至优于原数据集的分类效果;
所述S16中进一步的,S16中粗糙集理论具有如下定义:
定义1对于一个Bugzilla存储库KV=(U,C∪D,V,f),U表示从Bugzilla存储库中所选的Bug报告,C表示所选Bug报告中所有不同词的集合,
是C的一个特征子集,决策属性集合D是Bug报告的严重程度标签,V的值标示关键词出现的次数,f表示信息函数,对于任意的
IND(B)可以用下式表示;
其中,a(x)表示目标x的特征a的值,当(x,y)∈IND(B)时,x和y被认为是关于B不可分割的。关于B的不可分割关系定义为[x]B;
定义2对于任何
和属性集合
X可以根据知识B的下近似值和上近似值来近似求得,关于知识B的上近似值和下近似值如下所示,
定义3给定一个决策系统KV,决策属性D的C-正区域是所有来自U的集合,当
时,决策系统的B-正区域定义为,
定义4度量属性a的重要程度可以表示为概率分类的质量,如下所示,
定义5给定一个决策系统KV=(U,C∪D,V,f),
是条件属性集合的一个子集,a(
且
)是任意一个属性,属性a在B中的相对决策D的重要度,如下式所示:
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。