CN110516722B - 一种基于主动学习的需求与代码之间可追踪性的自动生成方法 - Google Patents
一种基于主动学习的需求与代码之间可追踪性的自动生成方法 Download PDFInfo
- Publication number
- CN110516722B CN110516722B CN201910752552.0A CN201910752552A CN110516722B CN 110516722 B CN110516722 B CN 110516722B CN 201910752552 A CN201910752552 A CN 201910752552A CN 110516722 B CN110516722 B CN 110516722B
- Authority
- CN
- China
- Prior art keywords
- training set
- samples
- classifier
- sample
- active learning
- 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.)
- Active
Links
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种基于主动学***衡技术平衡训练集中数据;利用随机森林分类算法在训练集上训练出分类器;通过分类器将追踪链自动的分类为有效和无效;实现了在减少追踪链标记数量的同时,可以保持较高的追踪链创建的准确性,本发明给出了文本预处理的过程及训练分类器所需的特征,同时也给出了如何运用主动学习的方法训练分类器。
Description
技术领域
本发明属于软件工程技术领域,尤其涉及一种基于主动学习的需求与代码之间可追踪性的自动生成方法。
背景技术
软件的可追性生成(Traceability Link Recovery)是指在源制品S(例如,需求)和目标制品T(例如,代码)之间建立关系,软件可追性支持的活动包括变更影响分析、依赖影响分析、程序分析、测试用例覆盖、需求覆盖等。软件的可追性生成通常需要人在S×T条可能的追踪链(Possible traceability links)中识别出有效的(Valid)追踪链(即,两个制品之间存在关联)。一个大型的项目可能存在成百上千的可能的追踪链,因此,人工的去识别追踪链的有效性是十分困难的。为了应对这一挑战,众多的研究团队通过信息检索,即IR技术,进行可追踪性的自动生成。虽然经过多年的研究,基于IR的方法准确性依然不是很高。
因此,一些团队开始提出使用机器学习的方法进行可追性的自动生成。他们利用项目中已经存在追踪链训练分类器。然后,通过分类器把可能的追踪链分类为有效和无效(Invalid)(即,两个制品之间不存在关联)。
目前比较成熟的基于机器学习进行可追踪性生成的研究主要有:Cleland-Huang等人提出了一种概率分类器,该分类器针对非功能需求的一组指示词进行训练,随后用于建立需求和代码之间的关联关系。Mills等人利用IR相关特征训练出分类器,随后用于识别每条追踪链的有效性。虽然上述方法明显优于传统的基于IR的方法,但它们都依赖于项目中已存在的大量追踪链,需要大量的去标记用于训练的追踪链。
发明内容
本发明的目的是提供一种基于主动学习的需求与代码之间可追踪性的自动生成方法,解决了在减少追踪链标记数量的同时,可以保持较高的追踪链创建的准确性的技术问题。
为实现上述目的,本发明采用如下技术方案:
一种基于主动学习的需求与代码之间可追踪性的自动生成方法,包括如下步骤:
步骤1:建立服务器集群,在服务器集群中建立文本提取模块、文本预处理模块、训练集生成模块、特征提取模块、数据平衡模块、分类器模块和标识模块;
步骤2:文本提取模块从需求和代码中提取文本;
步骤3:文本预处理模块采用信息检索中的文本预处理方法对文本进行预处理;
步骤4:训练集生成模块分析需求和代码间可能存在的追踪链,将每一条追踪链均视为样本,训练模块标记并选取一部分追踪链作为初始训练样本,然后,通过主动学习的方法选择新的样本标识后加入初始的训练集,生成完整的训练集;
步骤5:在特征提取模块中预设一组可以表现追踪链的有效性的特征,特征包括信息检索特征和查询质量特征;
步骤6:数据平衡模块对完整训练集中的样本进行再平衡,使训练集中的有效追踪链与无效追踪链之间的数量得到更平衡的表示;
步骤7:分类器模块采用RandomForest算法在完整训练集上训练出一个可以预测追踪链有效性的分类器;
步骤8:标识模块根据步骤7中得出的分类器对所有追踪链进行分类,标识出有效追踪链和无效追踪链。
优选的,在执行步骤2时,所述文本预处理方法包括标识符拆分、特殊字段与停用词消除以及词性还原和词根获取。
优选的,在执行步骤6时,使用少数类过采样技术对所述完整训练集中的样本进行数据的再平衡。
优选的,在执行步骤4时,采用基于池的主动学习方法,根据已标记的样本生成分类器,再根据分类器的反馈自动从样本池中选择样本进行标记,所述样本池为未标记的样本集合。
本发明所述的一种基于主动学习的需求与代码之间可追踪性的自动生成方法,在减少追踪链标记数量的同时,可以保持较高的追踪链创建的准确性,本发明给出了文本预处理过程及训练分类器所需的特征,同时也给出了如何运用主动学习的方法训练分类器,相对于传统的基于机器学习的方法,本发明的需要更少的人工参与,并且其准确性要优于基于IR的方法。
附图说明
图1是本发明的数据预处理流程图;
图2是本发明的基于主动学习的方法的流程图;
图3是基于流的主动学习的流程图;
图4是本发明的基于池的主动学习的流程图;
图5是本发明的“插值”示例的示意图。
具体实施方式
如图1-图5所示的一种基于主动学习的需求与代码之间可追踪性的自动生成方法,包括如下步骤:
步骤1:建立服务器集群,在服务器集群中建立文本提取模块、文本预处理模块、训练集生成模块、特征提取模块、数据平衡模块、分类器模块和标识模块;
步骤2:文本提取模块从需求和代码中提取文本;
对于代码中的每个类,文本提取模块抽取一个包含类名、函数名、注释的文档;
对于每条需求,文本提取模块抽取一个包含题目和内容的文档;对于有结构的需求抽取其前置条件、主要流程、以及分支流程,对于无结构的需求直接引入所有文本信息。
步骤3:文本预处理模块采用信息检索中的文本预处理方法对文本进行预处理;
对所有文本都使用IR技术进行预处理,包括标识符拆分、特殊字段与停用词消除以及词性还原和词根获取。
步骤4:训练集生成模块分析需求和代码间可能存在的追踪链,将每一条追踪链均视为样本,训练模块标记并选取一部分追踪链作为初始训练样本,然后,通过主动学习的方法选择新的样本标识后加入初始的训练集,生成完整的训练集;
使用scikit-learn提供的算法随机选择样本建立初始训练集;
主动学习的方法需要设置初始的训练集,初始训练集的大小需要人为的设置,本实施例将初始的训练集大小设置为总的可能的追踪链条数的6%,然后,使用scikit-learn算法随机选择出6%的样本建立初始训练集。
主动学习允许专家迭代地标记未标记的样本,并且可以在每次迭代过程中改进分类器。对于样本集D={x1,x2,…,xn},首先,随机选择少量样本进行标记以初始化一个标记样本集合。本实施例用Dl表示该标记的样本集合,那么未标记的样本集合Du=D\Dl。主动学习***通常可以分为两部分:学习引擎和选择引擎。在每次迭代时,学习引擎在Dl上训练分类器。然后,选择引擎从Du中选择样本xi,对xi进行标记后提交给学习引擎。学习引擎和选择引擎交替工作,分类器的准确性逐步提高。当满足终止条件时,迭代将停止。
目前,主动学习大致分为两种类型:基于流和基于池。基于流的主动学习(如图3所示),未标记的样本按顺序一个接一个地提供给选择引擎,选择引擎决定是否标记当前提供的样本。基于流的方法通过设置阈值来选择要标记的样本。不同的任务需要设置不同的阈值,因此将其用作一般方法是很困难的。
与基于流的方法相比,基于池的方法(如图4所示)不需要设置阈值,而是根据已标记的样本生成的分类器的反馈自动从样本池(未标记的样本集)中选择样本交给专家标记。为了提高方法的适用性,本发明选择不需要设置阈值的基于池的样本选择策略,根据基于池的样本选择策略又选择6%的新的样本加入初始的训练集中,训练集的样本的数量变为总的可能的追踪链的数量12%。
步骤5:在特征提取模块中预设一组可以表现追踪链的有效性的特征,特征包括信息检索特征和查询质量特征;
信息检索特征用于计算两个制品之间的相似度,相似程度部分反映了可能的追踪链的有效性,例如,给定两个制品集S1和S2,以及制品d1和d2,其中,d1∈S1和d2∈S2。应用IR引擎两次。首先,使用d1作为查询,并使用S2中的制品作为语料库。IR结果列表中的d2排名作为第一个特征。然后使用d2作为查询,S1中的制品作为语料库,重复上面的过程。IR结果列表中d1的排名为第二个特征。考虑这两个方向的原因主要是因为之前的工作表明查询方向的选择会影响查询结果。
由于IR的准确性受到查询质量的影响,本实施例的第二个特征集是关于查询质量的查询质量特征,虽然两个IR排名特征提供了文本相似性的信息,但先前的研究表明查询的质量高度影响IR的结果。例如,如果d1用作查询的质量很差,虽然IR的排名表示d1和d2是关联的,但实际上它们并没有。
为了克服这个潜在问题,本实施例为每个可能的链接生成8个不同的查询质量特征指标,完整的查询质量特征指标见表1;
8个查询质量特征指标就是本发明训练分类器用的特征。
表1
步骤6:数据平衡模块对完整训练集中的样本进行再平衡,使训练集中的有效追踪链与无效追踪链之间的数量得到更平衡的表示;
本实施例对来自5个***的7个项目进行统计(统计结果如图2所示),发现有效的追踪链的数量远小于无效追踪链的数量(比例大约为1:11)。这种数据的不平衡可能会使得少数类样本难以识别。为了解决这个问题,本发明对训练集数据进行再平衡,从而使多数类和少数类更平衡的表示。本繁忙使用不同的再平衡技术和分类算法结合,求出最适合的再平衡技术。
本发明选择的再平衡技术是:
SMOTE技术(Synthetic Minority Oversampling Technique)。
SMOTE的执行过程如下:设训练集的一个少数类的样本数为T,那么SMOTE算法将为这个少数类合成NT个新样本。这里要求N必须是正整数,如果给定的N<1那么算法将“认为”少数类的样本数T=NT,并将强制N=1。
考虑该少数类的一个样本i,其特征向量为xi,i∈{1,...,T}:
步骤S1:首先从该少数类的全部T个样本中找到样本xi的k个近邻(例如用欧氏距离),记为xi(near),near∈{1,...,k};
步骤S2:然后从这k个近邻中随机选择一个样本xi(nn),再生成一个0到1之间的随机数ζ1,从而合成一个新样本xi1:
xi1=x1+ζ1·(xi(nn)-xi);
步骤S3:将步骤S2重复进行N次,从而可以合成N个新样本:xinew,new∈1,...,N。那么,对全部的T个少数类样本进行上述操作,便可为该少数类合成NT个新样本。
如果样本的特征维数是2维,那么每个样本都可以用二维平面上的一个点来表示。SMOTE算法所合成出的一个新样本xi1相当于是表示样本xi的点和表示样本xi(nn)的点之间所连线段上的一个点。所以说该算法是基于“插值”来合成新样本(如图5所示)。
步骤7:分类器模块采用RandomForest算法在完整训练集上训练出一个可以预测追踪链有效性的分类器;
RandomForset的执行过程如下:
步骤A1:从原始训练集中使用Bootstraping方法随机有放回采样选出m个样本,共进行n_tree次采样,生成n_tree个训练集。
步骤A2:对于n_tree个训练集,我们分别训练n_tree个决策树模型。
步骤A3:对于单个决策树模型,假设训练样本特征的个数为n,那么每次***时根据信息增益/信息增益比/基尼指数选择最好的特征进行***。
步骤A4:每棵树都一直这样***下去,直到该节点的所有训练样本都属于同一类。在决策树的***过程中不需要剪枝。
步骤A5:将生成的多棵决策树组成随机森林。对于分类问题,按多棵树分类器投票决定最终分类结果;对于回归问题,由多棵树预测值的均值决定最终预测结果。
步骤8:标识模块根据步骤7中得出的分类器对所有追踪链进行分类,标识出有效追踪链和无效追踪链。
优选的,在执行步骤2时,所述文本预处理方法包括标识符拆分、特殊字段与停用词消除以及词性还原和词根获取。
优选的,在执行步骤6时,使用少数类过采样技术对所述完整训练集中的样本进行数据的再平衡。
优选的,在执行步骤4时,采用基于池的主动学习方法,根据已标记的样本生成分类器,再根据分类器的反馈自动从样本池中选择样本进行标记,所述样本池为未标记的样本集合。
本发明所述的一种基于主动学习的需求与代码之间可追踪性的自动生成方法,在减少追踪链标记数量的同时,可以保持较高的追踪链创建的准确性,本发明给出了文本预处理过程及训练分类器所需的特征,同时也给出了如何运用主动学习的方法训练分类器,相对于传统的基于机器学习的方法,本发明的需要更少的人工参与,并且其准确性要优于基于IR的方法。
Claims (4)
1.一种基于主动学习的需求与代码之间可追踪性的自动生成方法,其特征在于:包括如下步骤:
步骤1:建立服务器集群,在服务器集群中建立文本提取模块、文本预处理模块、训练集生成模块、特征提取模块、数据平衡模块、分类器模块和标识模块;
步骤2:文本提取模块从需求和代码中提取文本;
步骤3:文本预处理模块采用信息检索中的文本预处理方法对文本进行预处理;
步骤4:训练集生成模块分析预处理后的文本中的需求和代码间存在的追踪链,将每一条追踪链均视为样本,训练集生成模块标记并选取一部分追踪链作为初始训练样本,建立初始的训练集,然后,通过主动学习的方法选择新的样本标识后加入初始的训练集,生成完整的训练集;
使用scikit-learn提供的算法随机选择样本建立初始训练集;
主动学习的方法需要设置初始的训练集,初始训练集的大小需要人为的设置;将初始的训练集大小设置为总的可能的追踪链条数的6%,然后,使用scikit-learn算法随机选择出6%的样本建立初始训练集;
主动学习允许专家迭代地标记未标记的样本,并且在每次迭代过程中改进分类器;对于样本集D={x1,x2,…,xn},首先,随机选择少量样本进行标记以初始化一个标记样本集合;用Dl表示该标记的样本集合,那么未标记的样本集合Du=D\Dl;主动学习分为两部分:学习引擎和选择引擎;在每次迭代时,学习引擎在Dl上训练分类器;然后,选择引擎从Du中选择样本xi,对xi进行标记后提交给学习引擎;学习引擎和选择引擎交替工作,分类器的准确性逐步提高;当满足终止条件时,迭代将停止;
主动学习分为两种类型:基于流和基于池;采用基于池的主动学习方法,不需要设置阈值,根据已标记的样本生成的分类器的反馈自动从样本池,即未标记的样本集中选择样本交给专家标记;选择不需要设置阈值的基于池的样本选择策略,根据基于池的样本选择策略又选择6%的新的样本加入初始的训练集中,训练集的样本的数量变为总的可能的追踪链的数量12%;
步骤5:在特征提取模块中预设一组可以表现追踪链的有效性的特征,特征包括信息检索特征和查询质量特征;
步骤6:数据平衡模块对完整训练集中的样本进行再平衡,使训练集中的有效追踪链与无效追踪链之间的数量得到更平衡的表示;
步骤7:分类器模块采用RandomForest算法在完整训练集上训练出一个可以预测追踪链有效性的分类器;
步骤8:标识模块根据步骤7中得出的分类器对所有追踪链进行分类,标识出有效追踪链和无效追踪链。
2.如权利要求1所述的一种基于主动学习的需求与代码之间可追踪性的自动生成方法,其特征在于:在执行步骤2时,所述文本预处理方法包括标识符拆分、特殊字段与停用词消除以及词性还原和词根获取。
3.如权利要求1所述的一种基于主动学***衡。
4.如权利要求1所述的一种基于主动学习的需求与代码之间可追踪性的自动生成方法,其特征在于:在执行步骤4时,采用基于池的主动学习方法,根据已标记的样本生成分类器,再根据分类器的反馈自动从样本池中选择样本进行标记,所述样本池为未标记的样本集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910752552.0A CN110516722B (zh) | 2019-08-15 | 2019-08-15 | 一种基于主动学习的需求与代码之间可追踪性的自动生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910752552.0A CN110516722B (zh) | 2019-08-15 | 2019-08-15 | 一种基于主动学习的需求与代码之间可追踪性的自动生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110516722A CN110516722A (zh) | 2019-11-29 |
CN110516722B true CN110516722B (zh) | 2023-08-22 |
Family
ID=68626024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910752552.0A Active CN110516722B (zh) | 2019-08-15 | 2019-08-15 | 一种基于主动学习的需求与代码之间可追踪性的自动生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110516722B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113378907B (zh) * | 2021-06-04 | 2024-01-09 | 南京大学 | 增强数据预处理过程的自动化软件可追踪性恢复方法 |
CN113469251B (zh) * | 2021-07-02 | 2024-07-26 | 南京邮电大学 | 不平衡数据的分类方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101438238A (zh) * | 2004-10-15 | 2009-05-20 | 伊塔斯公司 | 用于异常检测的方法和*** |
CN103890722A (zh) * | 2011-11-06 | 2014-06-25 | 国际商业机器公司 | 使用可追溯性链接强度以用于软件开发完整性监视 |
CN105718256A (zh) * | 2014-12-18 | 2016-06-29 | 通用汽车环球科技运作有限责任公司 | 用于通过本体模型的比较进行一致性检查的方法和装置 |
CN108459965A (zh) * | 2018-03-06 | 2018-08-28 | 南京大学 | 一种结合用户反馈和代码依赖的软件可追踪生成方法 |
-
2019
- 2019-08-15 CN CN201910752552.0A patent/CN110516722B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101438238A (zh) * | 2004-10-15 | 2009-05-20 | 伊塔斯公司 | 用于异常检测的方法和*** |
CN103890722A (zh) * | 2011-11-06 | 2014-06-25 | 国际商业机器公司 | 使用可追溯性链接强度以用于软件开发完整性监视 |
CN105718256A (zh) * | 2014-12-18 | 2016-06-29 | 通用汽车环球科技运作有限责任公司 | 用于通过本体模型的比较进行一致性检查的方法和装置 |
CN108459965A (zh) * | 2018-03-06 | 2018-08-28 | 南京大学 | 一种结合用户反馈和代码依赖的软件可追踪生成方法 |
Non-Patent Citations (1)
Title |
---|
通过代码模式改进基于IR的需求和代码之间追踪生成方法;杜天保等;《小型微型计算机***》;20190514;第5卷(第5期);第1107-1114页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110516722A (zh) | 2019-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107392118B (zh) | 基于多任务对抗生成网络的强化人脸属性识别方法及*** | |
Koetsier et al. | Kernel maximum likelihood hebbian learning | |
CN108875816A (zh) | 融合置信度准则和多样性准则的主动学习样本选择策略 | |
CN106709754A (zh) | 一种用基于文本挖掘的电力用户分群方法 | |
US20050100209A1 (en) | Self-optimizing classifier | |
CN107316049A (zh) | 一种基于半监督自训练的迁移学习分类方法 | |
CN109218223B (zh) | 一种基于主动学习的鲁棒性网络流量分类方法及*** | |
CN110516722B (zh) | 一种基于主动学习的需求与代码之间可追踪性的自动生成方法 | |
Zhong et al. | A comparative study of image classification algorithms for Foraminifera identification | |
CN106446011B (zh) | 数据处理的方法及装置 | |
CN108734159A (zh) | 一种图像中敏感信息的检测方法及*** | |
CN109726299B (zh) | 一种不完备专利自动标引方法 | |
CN113407644A (zh) | 一种基于深度学习算法的企业行业二级行业多标签分类器 | |
CN109191210A (zh) | 一种基于Adaboost算法的宽带目标用户识别方法 | |
CN114329031A (zh) | 一种基于图神经网络和深度哈希的细粒度鸟类图像检索方法 | |
Anderson et al. | Facial attractiveness classification using deep learning | |
CN112463894A (zh) | 一种基于条件互信息和交互信息的多标签特征选择方法 | |
Pereira et al. | Assessing active learning strategies to improve the quality control of the soybean seed vigor | |
CN114925759B (zh) | 一种区块链钓鱼行为账户的特征分析方法 | |
CN115936389A (zh) | 一种基于大数据技术的评审专家与评审材料的匹配方法 | |
CN111931874B (zh) | 基于深度学习和数据聚类的伴随式诱饵生成方法及装置 | |
Paczolay et al. | Wlab of university of szeged at lifeclef 2014 plant identification task | |
Wardak et al. | Noise presence detection in QR code images | |
McCool et al. | Feature learning via mixtures of dcnns for fine-grained plant classification | |
CN111967600A (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 |