1.基于XGBoost的自承认技术债务多分类方法,其特征在于包括如下步骤:步骤(1)从数据集中获取代码注释集合S=(S1,S2,...,Sn),n为所有类的代码注释数量,将其中每个样本表示成Si=
步骤(2)对每个样本Si中的comment进行预处理;
首先利用字符串全匹配和余弦相似度计算方法过滤掉原数据集中完全相同的样本;
然后,删除代码注释中包含的历史版本记录;
最后,删除代码注释中的噪音信息,所述噪音信息包含数字、标点、URL、源代码、停用词;将所有单词转换为小写字母形式;
经过处理后每个样本为Si=
步骤(3)对预处理后代码注释的文本信息进行数据增强;
采用EDA方法中随机交换和随机打乱策略对需求技术债务和缺陷技术债务的代码注释的文本信息进行增强;
步骤(4)使用卡方统计方法计算样本中每个特征的权重,并根据权重值对特征按从大到小进行排序,选择其中权重最大的s个特征;
步骤(5)使用countvectorizer方法将所有代码注释的文本信息表示成词频矩阵FMn×s,其中元素FM[i][j]表示第i个代码注释的文本信息中第j个单词的出现次数,其中i=1,
2,...,n,j=1,2,...,s;
步骤(7)构建基于XGBoost的分类器模型;
首先,根据词频矩阵FM,将代码注释集合中样本Si表示为Si=(xi,yi),xi={FM[i][1],FM[i][2],...,FM[i][s]},yi为对应的类标签;
然后,计算所有代码注释的预测值;
最后,采用加法的方式训练分类器模型,每次将目前最好的树模型加入到分类器模型中;
步骤(7)采用留一交叉验证方法训练分类器模型;
假设数据集中包含p个项目,选择其中p‑1个项目的代码注释作为训练集,剩余1个项目的代码注释作为测试集,并将训练集中设计技术债务的代码注释的标签用0表示,需求技术债务的代码注释的标签用1表示,缺陷技术债务的代码注释的标签用2表示;通过分类器模型的不断迭代和优化,最终获得训练好的分类器模型;
步骤(8)分类预测
对于新的代码注释,首先对代码注释的文本信息进行预处理,然后对预处理的代码注释的文本信息进行特征选择,最后按照选定的特征将每条代码注释的文本信息表示成向量,并将每个向量输入到分类器模型中进行预测,分类器模型通过计算输出每条代码注释对每个类的预测值,其中预测值最大的类标签为代码注释的预测标签。
2.根据权利要求1所述的基于XGBoost的自承认技术债务多分类方法,其特征在于:步骤(2)中还包括建立一个停用词表,该表不仅包含“the”、“an”、“for”、“a”单词,还将长度小于3或大于20的单词视为停用词,根据停用词表删除代码注释的文本信息中含有的停用词。
3.根据权利要求1所述的基于XGBoost的自承认技术债务多分类方法,其特征在于:步骤(3)中考虑到生成的样本可能对分类器产生负面影响,使用类间距去评估生成的样本,并选择与所有类中所有样本距离最大的样本。