CN114612211A - 一种启发式自引入技术债务数据标注及训练方法和系统 - Google Patents

一种启发式自引入技术债务数据标注及训练方法和系统 Download PDF

Info

Publication number
CN114612211A
CN114612211A CN202111654306.5A CN202111654306A CN114612211A CN 114612211 A CN114612211 A CN 114612211A CN 202111654306 A CN202111654306 A CN 202111654306A CN 114612211 A CN114612211 A CN 114612211A
Authority
CN
China
Prior art keywords
training
annotation
code
classification
software
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.)
Withdrawn
Application number
CN202111654306.5A
Other languages
English (en)
Inventor
曲豫宾
李芳�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Paitao Network Technology Co ltd
Original Assignee
Jiangsu Paitao Network Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jiangsu Paitao Network Technology Co ltd filed Critical Jiangsu Paitao Network Technology Co ltd
Priority to CN202111654306.5A priority Critical patent/CN114612211A/zh
Publication of CN114612211A publication Critical patent/CN114612211A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/03Credit; Loans; Processing thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/906Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Technology Law (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Development Economics (AREA)
  • Computing Systems (AREA)
  • Strategic Management (AREA)
  • Mathematical Physics (AREA)
  • General Business, Economics & Management (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种启发式自引入技术债务数据标注及训练方法和系统,通过基于注释信息,选择一个开源软件项目的注释信息进行标注得到代码注释关键词、构建训练数据集,并通过训练数据集对预训练模型进行训练及微调,获得分类模型;利用分类模型对所述待标注软件项目的代码注释进行分类预测,当预测分类结果为有引入技术债务时,获得模糊分类结果,判断两个分类结果是否匹配,当匹配成功时,将待标注软件项目的代码注释标注为有引入技术债务存入训练数据集持续对分类模型训练,不断迭代完成所有数据集的标注。解决现有代码标注为纯人工进行,存在费时费力且影响模型训练效率的技术问题。达到自动标注,大幅提高标注及模型训练效率的技术效果。

Description

一种启发式自引入技术债务数据标注及训练方法和系统
技术领域
本申请涉及软件产品质量保障技术领域,尤其涉及一种启发式自引入技术债务数据标注及训练方法和系统。
背景技术
区块链技术具有较高的研发门槛,大部分的应用系统都需要借助开源的框架来实现自己的业务逻辑。开源代码仓库GitHub中存在大量这样的开源框架。这些基于区块链技术的开源软件系统大部分还处于试验阶段。这就要求区块链应用开发者能够快速跟进新框架,并针对框架中潜在的缺陷或者兼容性等问题要做出及时的响应。自引入技术债务可以用来在软件系统指示潜存的框架缺陷等。软件质量保障团队的任务就是从大量的软件代码中识别出自引入技术债务。目前针对自引入技术债务的发现有多种技术手段,比如模式识别、卷积神经网络、文本挖掘等等。采用深度学习的技术来探测自引入技术债务遇到的最大问题就是数据集的问题。要训练一个可用的面向区块链软件系统的自引入技术债务探测模型,必须要解决数据集的快速创建以及模型的训练部署问题。短时间内即可以从开源代码仓库GitHub中获取百万行级别的代码,但是如果针对这些代码全部进行人工标注是一件极为费时费力的工作。
发现上述技术至少存在如下技术问题:
现有技术中代码标注为纯人工进行,存在费时费力且影响模型训练效率的技术问题。
发明内容
本申请的目的是提供一种启发式自引入技术债务数据标注及训练方法和系统,用以解决现有技术中代码标注为纯人工进行,存在费时费力且影响模型训练效率的技术问题。达到了采用自动化的标注方法,大幅度减少了构建自引入技术债务数据集的人工成本,提升了构建效率,同时相比现有的有监督学习的标注训练方法标注训练效率大比例提升,相比现有的半监督学习方法,模型训练复杂度为原来的一半,复杂度大幅降低,弥补了软件工程领域自引入技术债务标注数据集的不足的技术效果。
鉴于上述问题,本申请实施例提供了一种启发式自引入技术债务数据标注及训练方法和系统。
第一方面,本申请提供了一种启发式自引入技术债务数据标注及训练方法,所述方法应用于区块链软件系统中,所述方法包括:从开源代码仓库GitHub爬取基于区块链的软件系统源代码,所述软件系统源代码为标注star满足预设要求的系统源代码; 通过语法分析器从所述软件系统源代码中提取注释,获得注释信息;基于所述注释信息,选择一个开源软件项目的注释信息进行标注,基于标注为有引入技术债务的注释信息得到代码注释关键词;根据标注信息构建训练数据集,并通过所述训练数据集对预训练模型进行训练及微调,获得分类模型;获得待标注软件项目,利用所述分类模型对所述待标注软件项目的代码注释进行分类预测,得到预测分类结果;当所述预测分类结果为有引入技术债务时,获得模糊分类结果,并判断所述模糊分类结果与所述预测分类结果是否匹配,当匹配成功时,将所述待标注软件项目的代码注释标注为有引入技术债务存入所述训练数据集进行更新,利用更新的所述训练数据集进行分类模型的训练,持续迭代,完成所有待标注数据集的标注。
另一方面,本申请还提供了一种启发式自引入技术债务数据标注及训练系统,用于执行如第一方面所述的一种启发式自引入技术债务数据标注及训练方法,所述系统包括:
第一执行单元,所述第一执行单元用于从开源代码仓库GitHub爬取基于区块链的软件系统源代码,所述软件系统源代码为标注star满足预设要求的系统源代码;
第一获得单元,所述第一获得单元用于通过语法分析器从所述软件系统源代码中提取注释,获得注释信息;
第一标注单元,所述第一标注单元用于基于所述注释信息,选择一个开源软件项目的注释信息进行标注,基于标注为有引入技术债务的注释信息得到代码注释关键词;
第一训练单元,所述第一训练单元用于根据标注信息构建训练数据集,并通过所述训练数据集对预训练模型进行训练及微调,获得分类模型;
第一预测单元,所述第一预测单元用于获得待标注软件项目,利用所述分类模型对所述待标注软件项目的代码注释进行分类预测,得到预测分类结果;
第二执行单元,所述第二执行单元用于当所述预测分类结果为有引入技术债务时,获得模糊分类结果,并判断所述模糊分类结果与所述预测分类结果是否匹配;
第三执行单元,所述第三执行单元用于当匹配成功时,将所述待标注软件项目的代码注释标注为有引入技术债务存入所述训练数据集进行更新,利用更新的所述训练数据集进行分类模型的训练,持续迭代,完成所有待标注数据集的标注。
第三方面,本申请还提供了一种启发式自引入技术债务数据标注及训练系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现上述第一方面所述方法的步骤。
第四方面,本申请一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述方法的步骤。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
1.通过获得代码注释关键词;根据标注信息构建训练数据集,获得分类模型;利用分类模型对待标注软件项目的代码注释进行分类预测,得到预测分类结果;当预测分类结果为有引入技术债务时,获得模糊分类结果,并判断所述模糊分类结果与所述预测分类结果是否匹配,当匹配成功时,将待标注软件项目的代码注释标注为有引入技术债务存入所述训练数据集进行更新,利用更新的所述训练数据集进行分类模型的训练,持续迭代,完成所有待标注数据集的标注。达到了采用自动化的标注方法,大幅度减少了构建自引入技术债务数据集的人工成本,提升了构建效率,同时相比现有的有监督学习的标注训练方法标注训练效率大比例提升,相比现有的半监督学习方法,模型训练复杂度为原来的一半,复杂度大幅降低,弥补了软件工程领域自引入技术债务标注数据集的不足的技术效果。
2.通过结合半监督学习的思路,用于自引入技术债务数据标注的方法,使用预训练模型提升在仅有少部分数据情况下分类器的精度,利用模式匹配等策略来扩充数据集,实现快速扩充标注数据集,提升分类器精度功能的技术效果。
3.通过预训练模型与启发式的模糊匹配策略的联合校验过程,提高了标注的可靠性。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例的一种启发式自引入技术债务数据标注及训练方法的流程示意图;
图2为本申请实施例中另一种启发式自引入技术债务数据标注及训练方法的流程示意图;
图3为本申请实施例中启发式模糊匹配分类的流程示意图;
图4为本申请实施例中分类模型与启发式模糊匹配分类联合校验的流程示意图;
图5为本申请实施例一种启发式自引入技术债务数据标注及训练系统的结构示意图;
图6为本申请实施例示例性电子设备的结构示意图。
附图标记说明:第一执行单元11,第一获得单元12,第一标注单元13,第一训练单元14,第一预测单元15,第二执行单元16,第三执行单元17,总线300,接收器301,处理器302,发送器303,存储器304,总线接口305。
具体实施方式
本申请实施例通过提供一种启发式自引入技术债务数据标注及训练方法和系统,解决了现有技术中代码标注为纯人工进行,存在费时费力且影响模型训练效率的技术问题。
下面,将参考附图对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。基于本申请的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部。
本申请提供的技术方案总体思路如下:
从开源代码仓库GitHub爬取基于区块链的软件系统源代码,所述软件系统源代码为标注star满足预设要求的系统源代码; 通过语法分析器从所述软件系统源代码中提取注释,获得注释信息;基于所述注释信息,选择一个开源软件项目的注释信息进行标注,基于标注为有引入技术债务的注释信息得到代码注释关键词;根据标注信息构建训练数据集,并通过所述训练数据集对预训练模型进行训练及微调,获得分类模型;获得待标注软件项目,利用所述分类模型对所述待标注软件项目的代码注释进行分类预测,得到预测分类结果;当所述预测分类结果为有引入技术债务时,获得模糊分类结果,并判断所述模糊分类结果与所述预测分类结果是否匹配,当匹配成功时,将所述待标注软件项目的代码注释标注为有引入技术债务存入所述训练数据集进行更新,利用更新的所述训练数据集进行分类模型的训练,持续迭代,完成所有待标注数据集的标注。达到了采用自动化的标注方法,大幅度减少了构建自引入技术债务数据集的人工成本,提升了构建效率,同时相比现有的有监督学习的标注训练方法标注训练效率大比例提升,相比现有的半监督学习方法,模型训练复杂度为原来的一半,复杂度大幅降低,弥补了软件工程领域自引入技术债务标注数据集的不足的技术效果。
在介绍了本申请基本原理后,下面将结合说明书附图来具体介绍本申请的各种非限制性的实施方式。
实施例一
请参阅附图1,本申请实施例提供了一种启发式自引入技术债务数据标注及训练方法,所述方法应用于区块链软件系统中,所述方法包括:
具体而言,本申请为面向区块链软件系统的启发式自引入技术债务数据标注及训练方法,区块链技术为采用去中心化的方式来存储数据,使用加密算法来保障数据的安全性,其成功的应用包括比特币,以太坊,智能合约等。这些具有金融属性的产品获得了极高的估值,在交易平台引起了投资者的追捧。引入技术债务可以用来在软件系统指示潜存的框架缺陷等。软件质量保障团队的任务就是从大量的软件代码中识别出自引入技术债务。自引入技术债务这个术语描述的是一种折中方案。在软件开发过程中,程序员要求在固定的时间节点内完成代码的里程碑,要向测试团队交付待上线的软件产品。由于需求的变动,程序员对新的研发框架不熟悉,或者交付时间缩短等各种意外情况的存在,程序员必须要提交可以运行的软件产品,而且要保证该软件产品是可以正常运行的,那么程序员极有可能在代码中引入次优方案,或者仅仅是标注了待完成的工作,并没有完成软件产品。交付的产品仅仅能保证上线测试,测试的同时在完成相应的软件开发。这种次优方案就被称为自引入技术债务。这种技术债务是由程序员主动引入的,提醒自己最终要偿还这些债务,这种技术债务的特征在于熟练程序员往往会通过添加代码注释的方式来指示哪些代码存在技术债务。另外还存在的软件缺陷,不是由程序员引入的技术债务,最终只能是通过软件运行的错误日志来发现,无法通过代码注释来提前发现。
步骤S100:从开源代码仓库GitHub爬取基于区块链的软件系统源代码,所述软件系统源代码为标注star满足预设要求的系统源代码;
具体而言,请参考图2,从开源代码仓库GitHub爬取标注star最高的若干基于区块链技术的软件系统源代码。在该步骤中本申请选择开源代码仓库GitHub来作为数据来源。这是因为GitHub提供了大量的开源代码,而且由于这些软件项目还在不断的演化过程中,分类模型也可以获得不断的演化。本申请要解决的问题是区块链技术软件系统相关的自引入技术债务的分类问题,因此在GitHub中以“blockchain”为关键字进行搜索,可以获取大量的反馈结果。这些返回的软件项目中,选择程序员标注star最高的多个软件项目,这是因为star最高的软件项目表示了行业届对该项目的认可。综合这些标准,选择了最流行的六个项目,分别是bitcoin、Ethereum、diem、solidity、fabric、chia等。这些项目分别涵盖了耳熟能详的比特币,以太坊,以及chia币等加密货币项目,也涵盖了包括开发智能合约的编程语言的solidity项目,这些流行开源项目的选择为建立自引入技术债务分类模型打下了坚实的基础。
步骤S200:通过语法分析器从所述软件系统源代码中提取注释,获得注释信息;
具体而言,采用开源的srcML或者自己编写的语法分析器从源代码中提取注释,包括单行注释,后者多行注释。前述选择的最流行的六个软件项目中涉及的编程语言分别由C++,python,Go语言,Rust语言,以及Java语言等。开源的语法分析器srcML可以从C++,Java语言的软件项目中提取出代码注释,但是剩余的那些编程语言所开发的项目无法直接采用srcML来进行解析,本申请通过开发的能够从python,Go,Rust等项目中提取代码注释的工具软件,构建了初步待标注原始数据集。
步骤S300:基于所述注释信息,选择一个开源软件项目的注释信息进行标注,基于标注为有引入技术债务的注释信息得到代码注释关键词;
具体而言,选择其中一个开源软件项目进行标注,标注的类型包括无引入技术债务以及有引入技术债务两种类型,共标注数据集的容量在五千条左右,同时记录该选择的软件系统中与自引入技术债务标签相关性最高的若干关键词,将该项目软件系列关键词在本地做持久化存储。从而完成部分数据集标注的工作。选择其中一个软件项目来进行部分标注,可以选择solidity和chia项目进行标注,选择其中总和大约在五千条左右的数据进行人工标注。在标注的同时,筛选出于自引入技术债务相关的关键词,在初次标注的过程中,筛选的关键词列表;其中选择关键词的依据是这些词能够体现出代码注释的自引入技术债务特性,同时这些词的出现是非技术债务不需要用到的,也就是说这些词对于确定代码注释为自引入技术债务由较强的标定作用。
步骤S400:根据标注信息构建训练数据集,并通过所述训练数据集对预训练模型进行训练及微调,获得分类模型;
具体而言,采用预训练模型对标注的数据集进行训练,训练方法为多次十折交叉验证法,将微调后的预训练模型做本地持久化存储。本申请预训练模型采用的是Google提出的,基于变换器的双向编码器表示技术BERT。这个技术目前已经广泛应用于自然语言处理任务上,其优点在于具有较强的泛化能力,作为初始的训练模型具有较强的精度,但是该模型并没有学习到领域知识,无法应用到特定领域里面去,因此需要结合特定的领域对模型进行微调。使用BERT分类模型在初步训练的分类模型中进行训练兵进行微调,得到初步的分类模型,把该模型持久化存储在本机以待后面步骤的使用。
步骤S500:获得待标注软件项目,利用所述分类模型对所述待标注软件项目的代码注释进行分类预测,得到预测分类结果;
具体而言,加载前面训练微调后区块链软件系统的预训练模型,即所述分类模型,利用分类模型对选择的新的带标注软件项目的代码注释进行分类预测,得到预测分类结果,预测分类结果为预测是否为有引入技术债务。
步骤S600:当所述预测分类结果为有引入技术债务时,获得模糊分类结果,并判断所述模糊分类结果与所述预测分类结果是否匹配;
步骤S700:当匹配成功时,将所述待标注软件项目的代码注释标注为有引入技术债务存入所述训练数据集进行更新,利用更新的所述训练数据集进行分类模型的训练,持续迭代,完成所有待标注数据集的标注。
进一步的,所述方法还包括:获得所有标注信息;将所有标注信息存入所述训练数据集中;利用更新后的所述训练数据集对所述分类模型进行训练,获得更新分类模型;基于所述更新分类模型获得软件代码,确定测试信息。
具体而言,如果分类结果为有引入技术债务,将该代码注释与前面获取的自引入技术债务标签相关性最高的若干关键词即代码注释关键词进行模糊匹配,如果能够匹配得上,则将该条代码注释标注为有技术债务并存入训练数据集,否则交由领域专家重新进行手工标注。利用添加了新的训练数据的训练数据集对分类模型继续进行训练,更新分类模型,利用更新的分类模型,重新从剩余待标注的软件项目中选择新的项目,同样利用更新的分类模型对新选的项目的代码注释进行预测分类,同时利用代码注释关键词进行启发式模糊分类匹配,判断分类结果一致时,继续加入训练数据集中更新,不断重复迭代,直到将所有软件项目都完成标注,同时也完成了分类模型的不断优化,确定最终的分类模型。通过自动化标注或者领域专家的标注完成对未标注项目的数据标注工作,这样可以完成在短时间内容快速的扩充已标注数据集。数据集标注完成以后则使用预训练模型重新基于标注数据进行模型训练,完成测试以后存储该训练模型;将该模型进行分发部署,在软件工程师完成代码提交以后,代码版本跟踪系统调用该分类模型给项目经理弹出提示对话框,由项目经理分配相应的测试资源,如测试团队、测试工具、测试环境等,去进行软件测试。
进一步的,所述获得模糊分类结果,并判断所述模糊分类结果与所述预测分类结果是否匹配,包括:将所述待标注软件项目的代码注释与所述代码注释关键词进行启发式模糊匹配分类,获得模糊分类结果;将所述预测分类结果与所述模糊分类结果进行比较,当两个分类结果一致时,则匹配成功。
具体而言,利用预训练模型即分类模型与启发式的模糊匹配策略的联合校验过程,该联合校验的过程如图4所示:选择剩余待标注的软件项目中的代码注释,从剩余的多个未标注的项目包括,bitcoin、Ethereum、diem、fabric等,选择待标注的代码注释。使用训练好的分类模型对待标注项目进行分类预测,预测的结果标记为A即预测分类结果;使用启发式的策略进行模糊匹配,预测的结果标记为B即模糊分类结果。其中,
Figure 411617DEST_PATH_IMAGE001
Figure 859916DEST_PATH_IMAGE002
。判断标注结果A与B是否相等,如果预测分类结果A与模糊分类结果B结果相等,比如都是自引入技术债务类型的预测结果,那么就把该样例添加到已标注数据集即训练数据集中;如果A与B结果不相等,那么就弹出提示,要求领域专家手工标注该样例。
进一步的,当所述预测分类结果为无技术债务时,所述方法包括:将所述待标注软件项目的代码注释与所述代码注释关键词进行启发式模糊匹配分类,获得模糊匹配结果;当所述模糊匹配结果为无匹配关键词时,将所述待标注软件项目的代码注释标注为无技术债务存入所述训练数据集中。
具体而言,如果预测分类结果为无技术债务,将该待标注软件项目的代码注释与前面获取的自引入技术债务标签相关性最高的若干关键词即代码注释关键词进行模糊匹配,如果确认无法匹配到相关的关键词,则将该条代码注释标注为无技术债务并存入训练数据集,否则交由领域专家重新进行手工标注。
进一步的,所述将所述待标注软件项目的代码注释与所述代码注释关键词进行启发式模糊匹配分类,包括:加载所述代码注释关键词的关键词列表;对所述关键词列表进行数据预处理,获取关键词词根;从所述关键词词根中选择词根,并判断选择词根是否存在于所述待标注软件项目的代码注释中;当所述选择词根在所述待标注软件项目的代码注释中,则模糊分类结果为自引入技术债务。
进一步的,所述判断选择词根是否存在于所述待标注软件项目的代码注释中之后,所述方法还包括:当所述选择词根不在所述待标注软件项目的代码注释中,重新选择词根迭代进行判断,直到完成所有词根的比较匹配;当所有词根都不在所述待标注软件项目的代码注释中时,所述模糊分类结果为非自引入技术债务。
具体而言,本申请中启发式的模糊匹配分类过程请参考图3所示,将代码注释关键词加载到内存中去,代码注释关键词的关键词列表是可以随着软件项目的演化而不断升级的,这个列表保证了启发式分类的准确性,因为随着数据量的增大,可能会存在关键词增减的情况,所以关键词列表必须是可以动态变化的。
获取关键词列表中所有关键词的词根,为的是能够尽量减少词形对模糊判断的影响,关键词列表获取词根以后的结果为如下示例:["todo","current","future","error","however","but","now","bug","not correctly","segfault","would","should","incorrect","duplicate","not set","not exist","never","issue","fail","temporary","cause","invalid", "illegal","false positive","fail", "removed","not okay","untrue","won't","exception", "unsupport","workaround","non optimize","fatal", "be optimize","not reachable"]
迭代每个词根,将词根与代码注释进行比较,如果词根属于代码注释文本的一部分,则标注该条代码注释为自引入技术债务类型;如果该词根不属于注释文本的一部分,则循环迭代进入下一个词根进行判断,直到判断结束为止。如果每个词根都不包含在代码注释里面,则标注该条代码注释为非自引入技术债务类型。比如,对于代码注释,“error willbe re-thrown, since there is no low-level catch clause”来讲,该注释表示了代码运行过程中将会抛出错误,根据关键词列表中的error关键词我们即可以快速定位到该代码注释,并将其标注为自引入技术债务类型;比如对于代码注释,“a contract thatcannot receive ether”,该行注释仅仅是说明了该合约无法收到以太币,所有的关键词都没有出现在代码注释中,因此可以标注为非自引入技术债务类型。
通过实施本申请后,最终构建的启发式模糊匹配关键词达到六十余个,初始手工标注数据集样例的数目为四千多条,最终标注数据集的样例数目为将近十三万条,相比现有的有监督学习的标注训练方法本申请标注训练效率提升了二十多倍,相比现有的半监督学习方法,模型训练复杂度为原来的1/2,数据标注训练效率提升了至少一倍以上,因此本申请提供的方法弥补了软件工程领域自引入技术债务标注数据集的不足;同时采用自动化的标注方法,大幅度减少了构建自引入技术债务数据集的人工成本,提升了构建效率。解决了现有技术中代码标注为纯人工进行,存在费时费力且影响模型训练效率的技术问题。
实施例二
基于与前述实施例中一种启发式自引入技术债务数据标注及训练方法,同样发明构思,本发明还提供了一种启发式自引入技术债务数据标注及训练系统,请参阅附图5,所述系统包括:
第一执行单元11,所述第一执行单元11用于从开源代码仓库GitHub爬取基于区块链的软件系统源代码,所述软件系统源代码为标注star满足预设要求的系统源代码;
第一获得单元12,所述第一获得单元12用于通过语法分析器从所述软件系统源代码中提取注释,获得注释信息;
第一标注单元13,所述第一标注单元13用于基于所述注释信息,选择一个开源软件项目的注释信息进行标注,基于标注为有引入技术债务的注释信息得到代码注释关键词;
第一训练单元14,所述第一训练单元14用于根据标注信息构建训练数据集,并通过所述训练数据集对预训练模型进行训练及微调,获得分类模型;
第一预测单元15,所述第一预测单元15用于获得待标注软件项目,利用所述分类模型对所述待标注软件项目的代码注释进行分类预测,得到预测分类结果;
第二执行单元16,所述第二执行单元16用于当所述预测分类结果为有引入技术债务时,获得模糊分类结果,并判断所述模糊分类结果与所述预测分类结果是否匹配;
第三执行单元17,所述第三执行单元17用于当匹配成功时,将所述待标注软件项目的代码注释标注为有引入技术债务存入所述训练数据集进行更新,利用更新的所述训练数据集进行分类模型的训练,持续迭代,完成所有待标注数据集的标注。
进一步的,所述系统还包括:
第二获得单元,所述第二获得单元用于将所述待标注软件项目的代码注释与所述代码注释关键词进行启发式模糊匹配分类,获得模糊分类结果;
第一匹配单元,所述第一匹配单元用于将所述预测分类结果与所述模糊分类结果进行比较,当两个分类结果一致时,则匹配成功。
进一步的,所述系统还包括:
第三获得单元,所述第三获得单元用于将所述待标注软件项目的代码注释与所述代码注释关键词进行启发式模糊匹配分类,获得模糊匹配结果;
第四执行单元,所述第四执行单元用于当所述模糊匹配结果为无匹配关键词时,将所述待标注软件项目的代码注释标注为无技术债务存入所述训练数据集中。
进一步的,所述系统还包括:
第一加载单元,所述第一加载单元用于加载所述代码注释关键词的关键词列表;
第五执行单元,所述第五执行单元用于对所述关键词列表进行数据预处理,获取关键词词根;
第六执行单元,所述第六执行单元用于从所述关键词词根中选择词根,并判断选择词根是否存在于所述待标注软件项目的代码注释中;
第七执行单元,所述第七执行单元用于当所述选择词根在所述待标注软件项目的代码注释中,则模糊分类结果为自引入技术债务。
进一步的,所述系统还包括:
第八执行单元,所述第八执行单元用于当所述选择词根不在所述待标注软件项目的代码注释中,重新选择词根迭代进行判断,直到完成所有词根的比较匹配;
第九执行单元,所述第九执行单元用于当所有词根都不在所述待标注软件项目的代码注释中时,所述模糊分类结果为非自引入技术债务。
进一步的,所述系统还包括:
第四获得单元,所述第四获得单元用于获得所有标注信息;
第一存储单元,所述第一存储单元用于将所有标注信息存入所述训练数据集中;
第五获得单元,所述第五获得单元用于利用更新后的所述训练数据集对所述分类模型进行训练,获得更新分类模型;
第一确定单元,所述第一确定单元用于基于所述更新分类模型获得软件代码,确定测试信息。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是预期他实施例的不同之处,前述图1实施例一中的一种启发式自引入技术债务数据标注及训练方法和具体实例同样适用于本实施例的一种启发式自引入技术债务数据标注及训练系统,通过前述对一种启发式自引入技术债务数据标注及训练方法的详细描述,本领域技术人员可以清楚的知道本实施例中一种启发式自引入技术债务数据标注及训练系统,所以为了说明书的简洁,在此不再详述。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
示例性电子设备
下面参考图6来描述本申请实施例的电子设备。
图6图示了根据本申请实施例的电子设备的结构示意图。
基于与前述实施例中一种启发式自引入技术债务数据标注及训练方法的发明构思,本发明还提供一种启发式自引入技术债务数据标注及训练系统,其上存储有计算机程序,该程序被处理器执行时实现前文所述一种启发式自引入技术债务数据标注及训练方法的任一方法的步骤。
其中,在图6中,总线架构(用总线300来代表),总线300可以包括任意数量的互联的总线和桥,总线300将包括由处理器302代表的一个或多个处理器和存储器304代表的存储器的各种电路链接在一起。总线300还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口305在总线300和接收器301和发送器303之间提供接口。接收器301和发送器303可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。
处理器302负责管理总线300和通常的处理,而存储器304可以被用于存储处理器302在执行操作时所使用的数据。
综上,本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请提供了一种启发式自引入技术债务数据标注及训练方法和系统,通过从开源代码仓库GitHub爬取基于区块链的软件系统源代码,所述软件系统源代码为标注star满足预设要求的系统源代码; 通过语法分析器从所述软件系统源代码中提取注释,获得注释信息;基于所述注释信息,选择一个开源软件项目的注释信息进行标注,基于标注为有引入技术债务的注释信息得到代码注释关键词;根据标注信息构建训练数据集,并通过所述训练数据集对预训练模型进行训练及微调,获得分类模型;获得待标注软件项目,利用所述分类模型对所述待标注软件项目的代码注释进行分类预测,得到预测分类结果;当所述预测分类结果为有引入技术债务时,获得模糊分类结果,并判断所述模糊分类结果与所述预测分类结果是否匹配,当匹配成功时,将所述待标注软件项目的代码注释标注为有引入技术债务存入所述训练数据集进行更新,利用更新的所述训练数据集进行分类模型的训练,持续迭代,完成所有待标注数据集的标注。解决了现有技术中代码标注为纯人工进行,存在费时费力且影响模型训练效率的技术问题。达到了采用自动化的标注方法,大幅度减少了构建自引入技术债务数据集的人工成本,提升了构建效率,同时相比现有的有监督学习的标注训练方法标注训练效率大比例提升,相比现有的半监督学习方法,模型训练复杂度为原来的一半,复杂度大幅降低,弥补了软件工程领域自引入技术债务标注数据集的不足的技术效果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全软件实施例、完全硬件实施例、或结合软件和硬件方面实施例的形式。此外,本申请为可以在一个或多个包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。而所述的计算机可用存储介质包括但不限于:U盘、移动硬盘、只读存储器(Read-0nly Memory,简称ROM)、随机存取存储器(Random AccessMemory,简称RAM)、磁盘存储器、只读光盘(Compact Disc Read-Only Memory,简称CD-ROM)、光学存储器等各种可以存储程序代码的介质。
本发明是参照本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (9)

1.一种启发式自引入技术债务数据标注及训练方法,其特征在于,所述方法应用于区块链软件系统中,所述方法包括:
从开源代码仓库GitHub爬取基于区块链的软件系统源代码,所述软件系统源代码为标注star满足预设要求的系统源代码;
通过语法分析器从所述软件系统源代码中提取注释,获得注释信息;
基于所述注释信息,选择一个开源软件项目的注释信息进行标注,基于标注为有引入技术债务的注释信息得到代码注释关键词;
根据标注信息构建训练数据集,并通过所述训练数据集对预训练模型进行训练及微调,获得分类模型;
获得待标注软件项目,利用所述分类模型对所述待标注软件项目的代码注释进行分类预测,得到预测分类结果;
当所述预测分类结果为有引入技术债务时,获得模糊分类结果,并判断所述模糊分类结果与所述预测分类结果是否匹配;
当匹配成功时,将所述待标注软件项目的代码注释标注为有引入技术债务存入所述训练数据集进行更新,利用更新的所述训练数据集进行分类模型的训练,持续迭代,完成所有待标注数据集的标注。
2.如权利要求1所述的方法,其特征在于,所述获得模糊分类结果,并判断所述模糊分类结果与所述预测分类结果是否匹配,包括:
将所述待标注软件项目的代码注释与所述代码注释关键词进行启发式模糊匹配分类,获得模糊分类结果;
将所述预测分类结果与所述模糊分类结果进行比较,当两个分类结果一致时,则匹配成功。
3.如权利要求1所述的方法,其特征在于,当所述预测分类结果为无技术债务时,所述方法包括:
将所述待标注软件项目的代码注释与所述代码注释关键词进行启发式模糊匹配分类,获得模糊匹配结果;
当所述模糊匹配结果为无匹配关键词时,将所述待标注软件项目的代码注释标注为无技术债务存入所述训练数据集中。
4.如权利要求2或3所述的方法,其特征在于,所述将所述待标注软件项目的代码注释与所述代码注释关键词进行启发式模糊匹配分类,包括:
加载所述代码注释关键词的关键词列表;
对所述关键词列表进行数据预处理,获取关键词词根;
从所述关键词词根中选择词根,并判断选择词根是否存在于所述待标注软件项目的代码注释中;
当所述选择词根在所述待标注软件项目的代码注释中,则模糊分类结果为自引入技术债务。
5.如权利要求4所述的方法,其特征在于,所述判断选择词根是否存在于所述待标注软件项目的代码注释中之后,所述方法还包括:
当所述选择词根不在所述待标注软件项目的代码注释中,重新选择词根迭代进行判断,直到完成所有词根的比较匹配;
当所有词根都不在所述待标注软件项目的代码注释中时,所述模糊分类结果为非自引入技术债务。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
获得所有标注信息;
将所有标注信息存入所述训练数据集中;
利用更新后的所述训练数据集对所述分类模型进行训练,获得更新分类模型;
基于所述更新分类模型获得软件代码,确定测试信息。
7.一种启发式自引入技术债务数据标注及训练系统,其特征在于,所述系统包括:
第一执行单元,所述第一执行单元用于从开源代码仓库GitHub爬取基于区块链的软件系统源代码,所述软件系统源代码为标注star满足预设要求的系统源代码;
第一获得单元,所述第一获得单元用于通过语法分析器从所述软件系统源代码中提取注释,获得注释信息;
第一标注单元,所述第一标注单元用于基于所述注释信息,选择一个开源软件项目的注释信息进行标注,基于标注为有引入技术债务的注释信息得到代码注释关键词;
第一训练单元,所述第一训练单元用于根据标注信息构建训练数据集,并通过所述训练数据集对预训练模型进行训练及微调,获得分类模型;
第一预测单元,所述第一预测单元用于获得待标注软件项目,利用所述分类模型对所述待标注软件项目的代码注释进行分类预测,得到预测分类结果;
第二执行单元,所述第二执行单元用于当所述预测分类结果为有引入技术债务时,获得模糊分类结果,并判断所述模糊分类结果与所述预测分类结果是否匹配;
第三执行单元,所述第三执行单元用于当匹配成功时,将所述待标注软件项目的代码注释标注为有引入技术债务存入所述训练数据集进行更新,利用更新的所述训练数据集进行分类模型的训练,持续迭代,完成所有待标注数据集的标注。
8.一种启发式自引入技术债务数据标注及训练系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-6任一项所述方法的步骤。
9.一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-6任一项所述方法的步骤。
CN202111654306.5A 2021-12-31 2021-12-31 一种启发式自引入技术债务数据标注及训练方法和系统 Withdrawn CN114612211A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111654306.5A CN114612211A (zh) 2021-12-31 2021-12-31 一种启发式自引入技术债务数据标注及训练方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111654306.5A CN114612211A (zh) 2021-12-31 2021-12-31 一种启发式自引入技术债务数据标注及训练方法和系统

Publications (1)

Publication Number Publication Date
CN114612211A true CN114612211A (zh) 2022-06-10

Family

ID=81857963

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111654306.5A Withdrawn CN114612211A (zh) 2021-12-31 2021-12-31 一种启发式自引入技术债务数据标注及训练方法和系统

Country Status (1)

Country Link
CN (1) CN114612211A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116862401A (zh) * 2023-06-07 2023-10-10 北京智德广迅科技有限公司 一种基于大数据平台的软件开发系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116862401A (zh) * 2023-06-07 2023-10-10 北京智德广迅科技有限公司 一种基于大数据平台的软件开发系统

Similar Documents

Publication Publication Date Title
US11157272B2 (en) Automatic identification of appropriate code reviewers using machine learning
US11604628B2 (en) Generation and/or recommendation of tools for automating aspects of computer programming
Dwivedi et al. Software design pattern recognition using machine learning techniques
EP3699753A1 (en) Systems and methods for virtual programming by artificial intelligence
CN101165688A (zh) 知识系统中资源之间的时间关联方法和系统
US20230409464A1 (en) Development pipeline integrated ongoing learning for assisted code remediation
Fazayeli et al. Towards auto-labelling issue reports for pull-based software development using text mining approach
Shams Developing machine learning products better and faster at startups
Meziane et al. Artificial intelligence applications for improved software engineering development: New prospects: New Prospects
CN114612211A (zh) 一种启发式自引入技术债务数据标注及训练方法和系统
Njomou et al. MSR4ML: Reconstructing artifact traceability in machine learning repositories
KR102506778B1 (ko) 계약서 리스크 분석 방법 및 장치
Popova et al. Discovering unbounded synchronization conditions in artifact-centric process models
Prasad et al. Comparative Evaluation of Machine Learning Development Lifecycle Tools
Navaei et al. Machine Learning in Software Development Life Cycle: A Comprehensive Review.
KR102406961B1 (ko) 자가 지도학습을 통한 데이터 특성 학습 방법 및 가짜 정보 판별 방법
WO2022221927A1 (en) A method for improved code generation by artificially intelligent agents
US11194966B1 (en) Management of concepts and intents in conversational systems
Wang et al. Using workflow patterns to model and validate service requirements
Zhang et al. Composite‐Level Conflict Detection in UML Model Versioning
Godbole et al. Exploring the Nexus Between Process Complexity and Intelligent Automation
Grumbach et al. A Case-Based Approach for Workflow Flexibility by Deviation
Tangkawarow et al. Modeling Business Rule Parallelism by Introducing Inclusive and Complex Gateways in Semantics of Business Vocabulary and Rules.
Nadim et al. Utilizing source code syntax patterns to detect bug inducing commits using machine learning models
Ezekiel Adaptation of business rules in business workflow systems

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20220610

WW01 Invention patent application withdrawn after publication