CN114816497A - 基于bert预训练模型的链接生成方法 - Google Patents
基于bert预训练模型的链接生成方法 Download PDFInfo
- Publication number
- CN114816497A CN114816497A CN202210402091.6A CN202210402091A CN114816497A CN 114816497 A CN114816497 A CN 114816497A CN 202210402091 A CN202210402091 A CN 202210402091A CN 114816497 A CN114816497 A CN 114816497A
- Authority
- CN
- China
- Prior art keywords
- link
- model
- code
- cls
- defect report
- 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.)
- Granted
Links
- 238000012549 training Methods 0.000 title claims abstract description 67
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000007547 defect Effects 0.000 claims abstract description 92
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 26
- 238000013528 artificial neural network Methods 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 10
- 238000005516 engineering process Methods 0.000 claims abstract description 8
- 238000007781 pre-processing Methods 0.000 claims abstract description 8
- 230000000694 effects Effects 0.000 claims abstract description 7
- 239000013598 vector Substances 0.000 claims description 68
- 230000002776 aggregation Effects 0.000 claims description 56
- 238000004220 aggregation Methods 0.000 claims description 56
- 230000008569 process Effects 0.000 claims description 26
- 238000013145 classification model Methods 0.000 claims description 18
- 230000004913 activation Effects 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 11
- 238000011176 pooling Methods 0.000 claims description 10
- 230000018109 developmental process Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 claims description 5
- 238000011084 recovery Methods 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000012216 screening Methods 0.000 claims description 2
- 230000011218 segmentation Effects 0.000 claims description 2
- 238000006116 polymerization reaction Methods 0.000 claims 2
- 239000000284 extract Substances 0.000 abstract description 4
- 238000013480 data collection Methods 0.000 abstract description 3
- 238000010801 machine learning Methods 0.000 abstract description 3
- 238000001514 detection method Methods 0.000 abstract description 2
- 238000013135 deep learning Methods 0.000 description 3
- 238000003058 natural language processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- AYNSTGCNKVUQIL-UHFFFAOYSA-N C(CCCCCCCCCCC)C=1C=CC(=C(C=1)C1=NC(=CC(=C1)N(CCN(C)C)C)C1=C(C=CC(=C1)CCCCCCCCCCCC)OC)OC Chemical compound C(CCCCCCCCCCC)C=1C=CC(=C(C=1)C1=NC(=CC(=C1)N(CCN(C)C)C)C1=C(C=CC(=C1)CCCCCCCCCCCC)OC)OC AYNSTGCNKVUQIL-UHFFFAOYSA-N 0.000 description 1
- 102100021753 Cardiolipin synthase (CMP-forming) Human genes 0.000 description 1
- 101000895518 Homo sapiens Cardiolipin synthase (CMP-forming) Proteins 0.000 description 1
- 101100326696 Rattus norvegicus Capn8 gene Proteins 0.000 description 1
- 101100495263 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CDC24 gene Proteins 0.000 description 1
- 101100385368 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CSG2 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 101150115304 cls-2 gene Proteins 0.000 description 1
- 101150058580 cls-3 gene Proteins 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/906—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于软件缺陷检测技术领域,公开了一种基于BERT预训练模型的链接生成方法。该链接生成方法利用当下表现出色的BERT模型以实现缺陷报告和代码提交之间的自动链接,采用一系列有效的预处理技术和方法完成数据收集和处理工作,选取经过预训练的CodeBERT模型进行微调,更好的提取缺陷报告和代码提交中的语义信息,使得模型在熟练数据较少的情况下也能有较好的效果,提高链接生成的准确率;最后通过卷积神经网络完成二分类工作,确定缺陷报告与代码提交之间的链接关系。本发明通过使用预训练模型,以解决神经网络和机器学习训练数据不足的问题,使得自动链接工作能够有效地应用于中小型软件项目中,同时加快了训练速度,提高了链接跟踪的效率和准确率。
Description
技术领域
本发明属于软件缺陷检测技术领域,涉及一种基于BERT预训练模型的链接生成方法。
背景技术
在软件开发过程中,通常使用缺陷报告来跟踪软件开发中的各种问题及进行相关讨论,随后开发者针对缺陷报告中所报告的问题对现有软件进行修改,并及时进行代码提交以保证软件质量和软件正常使用。在软件开发过程中通过缺陷报告和代码提交建立用户和开发人员之间的交流,而缺陷报告和代码提交之间的链接可以加强软件的跟踪性,使得软件开发中各个组件紧密连接,从而维护好产品在开发过程中的可查询性,方便代码检查和功能测试,在软件工程中缺陷预测、bug定位等任务中具有重要价值。
缺陷报告和代码提交之间的链接通常需要开发人员通过在代码提交日志中手动添加包含issue标识符(如Apache大型开源项目)等方式进行链接,然而,在实践中由于链接工作是非强制性的,因而,在软件开发过程中丢失了大量的链接。
手工恢复缺陷报告和代码提交之间的链接是一项工作量巨大且容易出错的困难工作,因而研究人员提出了许多自动化链接技术,包括基于启发式方法的技术和基于深度学习的技术。
Sun等人提出一种基于文件相关性的方法FRLink方法来恢复缺陷报告和代码提交之间的链接。该方法利用代码提交中包括代码更改细节的非源文档文件,基于缺陷报告和代码提交及相关文档的文本相似性进行分类,从缺陷报告和代码提交中提取代码特征和文本特征,使用提取的特征和信息检索技术来确定两者之间的相似性,基于训练数据集学习阈值,最后根据相似度和阈值之间的大小关系以确定是否进行链接,然而,该方法主要依赖于文本相似性特征,缺乏捕获缺陷报告和代码提交之间语义关联的能力,同时简单将代码特征与文本特征以同等权重对待,忽略了两者之间的重要性关系,同时在相关文件较少以及代码术语较少的缺陷报告和代码提交之间难以建立关联。
Ruan等人提出一种基于深度学习的方法DeepLink来恢复缺陷报告和代码提交之间的链接。该方法加强了对缺陷报告和代码提交的语义理解能力,使用词嵌入技术和循环神经网络开发了一个神经网络架构来学习缺陷报告和代码提交中自然语言和编程语言的语义表示以及两者之间的语义关联,但是该方法存在训练数据不足以及神经网络速度慢等技术问题,对数据集的质量和规模有较高的要求,难以在训练数据量小的项目以及中小型项目上使用。
目前的自动化链接技术为恢复缺陷报告和代码提交之间的链接方面提供了良好的研究基础,但当前对于链接的跟踪方法仍存在进步空间,先前研究存在较多的问题,主要体现在:
基于启发式的方法主要根据元数据匹配等信息制定启发式规则,在链接生成过程中准确度较低;基于深度学习的方法主要依赖于文本相似性信息,缺乏对代码语义信息的理解能力。此外,这些技术存在训练样本不足(尤其是正确链接样本数量不足)、深度神经网络速度太慢等问题,在链接跟踪实践过程中的使用条件苛刻,在语义理解能力上仍有可提升空间。
发明内容
本发明的目的在于提出一种基于BERT预训练模型的链接生成方法,通过提高对缺陷报告和代码提交的语义理解能力以提高链接的准确率,同时模型能在训练数据较少的情况下也有很好的效果并且提高运行效率,保证了软件质量和软件的可追溯性,降低了软件维护成本。
本发明为了实现上述目的,采用如下技术方案:
基于BERT预训练模型的链接生成方法,包括如下步骤:
步骤1.收集缺陷跟踪系统中的缺陷报告和版本控制仓库中的代码提交,按照开发者手动创建的链接来构建正确链接集和错误链接集;
对正确链接集和错误链接集中的链接对应的缺陷报告和代码提交中的信息进行提取并进行预处理,得到缺陷报告中的文本和代码数据以及代码提交中的文本和代码数据;
对正确链接集和错误链接集中的链接,分别添加分类标签1和0,将正确链接集和错误链接集组成链接数据集,其中添加分类标签后的链接作为链接数据集中的链接样本;
步骤2.对于每个链接样本对应的缺陷报告和代码提交,将提取的文本数据和代码数据两两组合并分别输入到四个预训练模型中对预训练模型进行微调;
经过微调后的每个预训练模型,均能够根据该预训练模型的两个输入的相似程度或匹配程度,得到相应的CLS聚合向量以表征输入之间的关系;
每个链接样本输入到微调后的预训练模型中均会得到一组CLS聚合向量,每组CLS聚合向量包含四个CLS聚合向量,各个CLS聚合向量分别由一个微调后的预训练模型得到;
将各组CLS聚合向量与对应的分类标签组合,形成聚合向量数据集;
步骤3.将步骤2得到的聚合向量数据集中各组CLS聚合向量输入到卷积神经网络中进行卷积和池化操作以提取特征,再输入到全连接层训练,得到卷积神经网络分类模型;
步骤4.对于给定的缺陷报告s和代码提交m,将它们输入到经过由微调后的预训练模型以及训练好的卷积神经网络分类模型组成的整体模型中,进而确定缺陷报告s和代码提交m之间是否进行链接,从而实现缺失链接的自动恢复。
本发明具有如下优点:
如上所述,本发明述及了一种基于BERT预训练模型的链接生成方法,该链接生成方法通过使用BERT预训练模型,以更好的提取缺陷报告和代码提交中的文本和代码语义信息,从而提高了对缺陷报告和代码提交的语义理解能力,提高了链接的准确率;此外,本发明方法通过选用预训练模型,使得模型能够在训练数据较少的情况下,也能有很好的效果并且提高运行效率,进而保证了软件质量以及软件的可追溯性,降低了软件维护成本。本发明很好地解决了神经网络和机器学习训练数据不足的问题,使得自动链接工作能够有效地应用于中小型软件项目中,同时加快了训练速度,提高了链接跟踪的效率和准确率。
附图说明
图1为本发明实施例中基于BERT预训练模型的链接生成方法的流程框图;
图2为本发明实施例中基于BERT预训练模型的链接生成方法的模型结构图;
图3为本发明实施例中卷积神经网络的结构示意图;
图4为本发明实施例中卷积核与各个CLS聚合向量进行卷积操作的示意图。
具体实施方式
软件演化过程中,缺陷报告和代码提交分别反映了软件的使用情况和开发情况,均包含丰富的软件演化信息,而两者之间的链接则连接了两个活动,广泛应用于缺陷预测、提交分析、功能定位等软件维护过程中,本发明通过加强对缺陷报告和代码提交中文本和代码中语义信息的理解,弥合了文本信息与代码信息之间的语义鸿沟,使其能够在较小的数据集或小型项目上出色的完成链接生成任务,以保证软件的可维护性和可追溯性。
基于此,本发明提出一种基于BERT预训练模型的链接生成方法,利用BERT模型以实现缺陷报告和代码提交之间的自动链接,采用一系列有效的预处理技术和方法完成数据收集和处理工作,选取经过预训练的CodeBERT模型进行微调,更好的提取缺陷报告和代码提交中的语义信息,使得模型在熟练数据较少的情况下也能有较好的效果,提高链接生成的准确率;最后通过卷积神经网络完成二分类工作,确定缺陷报告与代码提交之间的链接关系。
下面结合附图以及具体实施方式对本发明作进一步详细说明:
如图1和图2所示,基于BERT预训练模型的链接生成方法,包括如下步骤:
步骤1.数据收集及处理。
收集缺陷跟踪系统(如Bugzilla和JIRA等)中的缺陷报告(issue)和版本控制仓库(如Git和SVN等)中的代码提交(commit)信息。
按照开发者手动创建的链接来构建正确链接集和错误链接集。
对正确链接集和错误链接集中的链接所对应的缺陷报告和代码提交中的信息进行提取并进行预处理,得到缺陷报告中的文本和代码数据以及代码提交中的文本和代码数据。
对正确链接集和错误链接集中的链接分别添加分类标签1和0,正确链接集和错误链接集中所有链接一起组成链接数据集,用于后续训练模型(codebert微调和CNN分类))。
步骤1.1.根据Stars数、Commits提交频率及项目开发时间信息筛选出版本控制仓库为Git,缺陷跟踪系统为JIRA,且具有高活跃度的成熟软件系统。
步骤1.2.数据过滤,过滤缺陷跟踪系统中无效的缺陷报告,如特征报告、重复缺陷报告以及没有关闭的缺陷报告(这部分缺陷报告没用、甚至可能造成噪声)等。
步骤1.3.构建正确链接集LST和错误链接集LSF,作为后续训练模型的链接数据集。
对于缺陷报告s和代码提交m,<s,m>即为两者之间的链接。
a).正确链接集的构建:根据代码提交信息描述中是否包含缺陷报告标识符及编号方式,将开发者手动完成的链接,加入到正确链接集LST中。
b).错误链接集的构建:对于每个代码提交m,根据提交日期,选取在该代码提交m提交日期前后7天内的缺陷报告s加入集合S中;选取在代码提交的提交时间前后7天内的所有缺陷报告,这些缺陷报告与给定的代码提交组成潜在链接。
对于集合S中每个缺陷报告s,将其与代码提交m组成潜在链接<s,m>。
若链接<s,m>不在正确链接集LST中,但是存在一个缺陷报告s1与该代码提交m的链接<s1,m>在正确链接集LST中,则认为该链接<s,m>为错误链接,加入错误链接集LSF中。
步骤1.4.对步骤1.3中收集的正确链接集和错误链接集中的链接所对应的缺陷报告和代码提交中的信息进行提取以及预处理,提取以及预处理过程包括:
对缺陷报告中的标题、描述进行拼接,组成issue text文本数据;
将缺陷报告描述中的代码提取为issue code代码数据;
将代码提交信息中的描述信息标记为commit text文本数据;
将代码提交信息中的代码更改信息标记为commit code代码数据;
并对缺陷报告和代码提交中的issue text文本数据和commit text文本数据删除超链接信息、移除标签,删除代码信息,并采用分词、提取词干和去除停用词技术进行处理。
步骤1.5.将正确链接集和错误链接集中的链接分别添加分类标签1和0,并作为链接数据集中的链接样本;其中错误链接样本与正确链接样本数量相等,以构建平衡的链接数据集。
步骤2.微调预训练模型。
对于每个链接样本所对应的缺陷报告和代码提交,将提取的文本数据和代码数据两两组合并分别输入到四个预训练模型中对四个预训练模型进行微调。本步骤利用目前在自然语言处理(Natural Language Processing,NLP)领域具有出色表现的BERT作为底层语言模型,该模型使用预训练和微调的方式来进行训练,以完成下游任务。根据下游任务进行微调后的预训练模型,将根据两个输入的相似程度或匹配程度输出相应的CLS聚合向量。
步骤2.1.选用微软提供的CodeBERT模型作为预训练模型。该模型使用基于多层Transformer的神经架构构建而成,在大量自然语言和编程语言上进行训练得到预训练模型,能够捕捉自然语言和编程语言之间的语义连接,有效对自然语言和编程语言进行处理。
步骤2.2.为了充分利用缺陷报告和代码提交中的信息,将每个链接样本所对应的缺陷报告和代码提交中的文本数据和代码数据两两组合,即分别将issue text-committext对、issue code-commit code对、commit code-issue text对、issue text-commitcode对作为四个CodeBERT模型的输入,分别对四个CodeBERT模型进行微调,通过对原预训练模型的参数进行更新,使微调后得到的CodeBERT模型更符合下游任务,微调后的每个CodeBERT模型可以将两个文本/代码片段作为输入,输出[CLS]的向量表示作为聚合序列表示以及每个token的向量表示。
步骤2.3.将每个链接样本输入微调后的CodeBERT模型后,均会得到一组CLS聚合向量,每组CLS聚合向量包括四个CLS聚合向量。
各个CLS聚合向量分别是由一个微调后的CodeBERT模型输出得到的,这四个CLS聚合向量分别定义为聚合向量CLS1、CLS2、CLS3、CLS4,每个聚合向量的维度为d。
将由每个链接样本所对应的缺陷报告和代码提交得到的一组CLS聚合向量与对应的分类标签进行组合,得到用于卷积神经网络分类模型训练的聚合向量数据集。
本发明使用预训练模型以解决神经网络和机器学习训练数据不足的问题,使得自动链接能够有效地应用于中小型软件项目中,同时加快训练速度,提高链接跟踪的效率和准确率。
步骤3.卷积神经网络分类模型训练。
将步骤2得到的聚合向量数据集输入到卷积神经网络用于训练分类模型,聚合向量数据集中每组CLS聚合向量都是由四个CLS聚合向量进行拼接。
卷积神经网络分类模型训练首先需要对分类模型中的参数进行初始化,主要包括前向传播和反向传播两个阶段,其中,前向传播过程如图3所示,将各组CLS聚合向量输入到卷积神经网络中进行卷积和池化操作以提取特征,再输入全连接层训练分类模型。
步骤3.1.初始化卷积神经网络的权重参数,包括卷积层和全连接层中的权重参数。
步骤3.2.卷积神经网络的前向传播过程,具体包括:
步骤3.2.1.卷积层的前向传播过程:对于聚合向量数据集中各组CLS聚合向量,分别以多个相同尺寸的卷积核进行卷积操作,然后通过激活函数RELU得到输出的特征图。
其中,卷积核的高度为1,宽度与CLS聚合向量的维度d相同。
步骤3.2.2.池化层的前向传播过程:对步骤3.2.1激活处理后的对应每组CLS聚合向量的结果分别进行最大池化操作,然后将池化后的结果进行级联,得到用于分类的特征向量;
步骤3.2.3.全连接的前向传播过程:将步骤3.2.2中的特征向量输入到全连接层进行分类,通过Softmax激活函数完成二分类;其中,Softmax激活函数的计算公式如下:
其中xi为神经网络中第i个节点的输出值,C为分类类别数量,此处为二分类,则C=2。
本实施例中以六个卷积核为例,对本实施例中卷积运算的过程作进一步详细说明(每个卷积核的大小为1*d,实际上不止六个卷积核,此处只是示例说明):
如图4所示,对于一组CLS聚合向量,使用每个1*d的卷积核进行卷积操作,并经过RELU激活函数进行激活处理,一组CLS聚合向量与每个卷积核进行卷积操作后会得到一个4*1的特征图,从而得到6个4*1的特征图,然后进行最大池化操作,选出每个特征图中最大的特征,并级联拼成特征向量输入全连接层以完成二分类。
步骤3.3.卷积神经网络的反向传播过程。
根据神经网络输出的结果进行反向传播过程,求出神经网络的输出结果与期望值之间的误差,当误差等于或小于预设的阈值时,即得到最终的卷积神经网络分类模型。
否则,将误差一层层返回,对全连接层和卷积层的参数进行权重更新。
步骤4.对于给定的缺陷报告s和代码提交m,输入到最终训练好的分类模型中,确定缺陷报告s和代码提交m之间是否进行链接,实现缺失链接的自动恢复。
对于给定的缺陷报告s和代码提交m,将其输入到经过微调后的CodeBERT模型及训练好的卷积神经网络分类模型组成的整体模型中,并进行自动化链接的过程如下:
CodeBERT模型将根据输入相似程度或匹配程度输出相应的CLS聚合向量。
对于潜在链接<s,m>,得到一组CLS聚合向量。
取该组CLS聚合向量中多个CLS聚合向量传入训练好的神经网络分类模型进行处理。
在经过卷积层、RELU激活函数、池化层后,经过全连接层进行二分类,以确定给定的缺陷报告s和代码提交m之间是否应该进行链接,实现缺失链接的自动恢复。
本发明通过缺陷报告和代码提交之间多个聚合向量挖掘缺陷报告和代码提交之间的文本和代码关联关系,并借助卷积神经网络对聚合向量提取有效信息以完成进一步分类。
当然,以上说明仅仅为本发明的较佳实施例,本发明并不限于列举上述实施例,应当说明的是,任何熟悉本领域的技术人员在本说明书的教导下,所做出的所有等同替代、明显变形形式,均落在本说明书的实质范围之内,理应受到本发明的保护。
Claims (5)
1.基于BERT预训练模型的链接生成方法,其特征在于,包括如下步骤:
步骤1.收集缺陷跟踪系统中的缺陷报告和版本控制仓库中的代码提交,按照开发者手动创建的链接来构建正确链接集和错误链接集;
对正确链接集和错误链接集中的链接对应的缺陷报告和代码提交中的信息进行提取并进行预处理,得到缺陷报告中的文本和代码数据以及代码提交中的文本和代码数据;
对正确链接集和错误链接集中的链接,分别添加分类标签1和0,将正确链接集和错误链接集组成链接数据集,其中添加分类标签后的链接作为链接数据集中的链接样本;
步骤2.对于每个链接样本对应的缺陷报告和代码提交,将提取的文本数据和代码数据两两组合并分别输入到四个预训练模型中对预训练模型进行微调;
经过微调后的每个预训练模型,均能够根据该预训练模型的两个输入的相似程度或匹配程度,得到相应的CLS聚合向量以表征输入之间的关系;
每个链接样本输入到微调后的预训练模型中均会得到一组CLS聚合向量,每组CLS聚合向量包含四个CLS聚合向量,各个CLS聚合向量分别由一个微调后的预训练模型得到;
将各组CLS聚合向量与对应的分类标签组合,形成聚合向量数据集;
步骤3.将步骤2得到的聚合向量数据集中各组CLS聚合向量输入到卷积神经网络中进行卷积和池化操作以提取特征,再输入到全连接层训练,得到卷积神经网络分类模型;
步骤4.对于给定的缺陷报告s和代码提交m,将它们输入到经过由微调后的预训练模型以及训练好的卷积神经网络分类模型组成的整体模型中,进而确定缺陷报告s和代码提交m之间是否进行链接,从而实现缺失链接的自动恢复。
2.根据权利要求1所述的基于BERT预训练模型的链接生成方法,其特征在于,
所述步骤1具体为:
步骤1.1.根据Stars数、Commits提交频率及项目开发时间信息筛选出版本控制仓库为Git,缺陷跟踪系统为JIRA,且具有高活跃度的成熟软件系统;
步骤1.2.过滤掉缺陷跟踪系统中无效的缺陷报告;
步骤1.3.构建正确链接集LST和错误链接集LSF,作为后续训练模型的链接数据集;
对于缺陷报告s和代码提交m,<s,m>即为两者之间的链接;
a).正确链接集的构建:根据代码提交信息描述中是否包含缺陷报告标识符及编号方式,将开发者手动完成的链接加入到正确链接集LST中;
b).错误链接集的构建:对于每个代码提交m,根据提交日期,选取在该代码提交m提交日期前后7天内的缺陷报告s加入集合S中;
对于集合S中的每个缺陷报告s,将其与代码提交m组成潜在链接<s,m>;
若链接<s,m>不在正确链接集LST中,但存在一个缺陷报告s1与代码提交m的链接<s1,m>在正确链接集LST中,则认为该链接<s,m>为错误链接,加入错误链接集LSF中;
步骤1.4.对正确链接集LST和错误链接集LSF中的链接所对应的缺陷报告和代码提交中的信息进行提取并进行预处理,提取以及预处理过程如下:
对缺陷报告中的标题、描述进行拼接,组成issue text文本数据;
将缺陷报告描述中的代码提取为issue code代码数据;
将代码提交信息中的描述信息标记为commit text文本数据;
将代码提交信息中的代码更改信息标记为commit code代码数据;
对缺陷报告和代码提交中的issue text文本数据和commit text文本数据删除超链接信息、移除标签,删除代码信息,并采用分词、提取词干和去除停用词技术进行处理;
步骤1.5.将正确链接集和错误链接集中的链接分别添加分类标签1和0,并作为链接数据集中的链接样本;其中错误链接样本与正确链接样本数量相等,以构建平衡的链接数据集。
3.根据权利要求2所述的基于BERT预训练模型的链接生成方法,其特征在于,
所述步骤2具体为:
步骤2.1.选用CodeBERT模型作为预训练模型;
步骤2.2.将从每个链接样本所对应的缺陷报告和代码提交信息中提取到的文本数据和代码数据两两组合作为预训练模型的输入,分别对四个CodeBERT模型进行微调;
经过微调后的每个CodeBERT模型均能够根据给定该CodeBERT模型的两个输入的相似程度或匹配程度得到相应的CLS聚合向量以表征输入之间的关系;
步骤2.3.将每个链接样本输入微调后的CodeBERT模型中,均会得到一组CLS聚合向量;其中,每组CLS聚合向量包括四个CLS聚合向量;
各个CLS聚合向量分别是由一个微调后的CodeBERT模型输出得到;
将由每个链接样本所对应的缺陷报告和代码提交得到的一组CLS聚合向量与对应的分类标签进行组合,得到用于卷积神经网络分类模型训练的聚合向量数据集。
4.根据权利要求3所述的基于BERT预训练模型的链接生成方法,其特征在于,
所述步骤3具体为:
步骤3.1.初始化卷积神经网络的权重参数,包括卷积层和全连接层的权重参数;
步骤3.2.卷积神经网络的前向传播过程;
步骤3.2.1.卷积层的前向传播过程:对于聚合向量数据集中各组CLS聚合向量,分别以多个相同尺寸的卷积核进行卷积操作,然后通过激活函数RELU得到输出的特征图;
其中,卷积核的高度为1,宽度与CLS聚合向量的维度d相同;
步骤3.2.2.池化层的前向传播过程:对步骤3.2.1激活处理后的对应每组CLS聚合向量的结果分别进行最大池化操作,将池化后的结果进行级联,得到用于分类的特征向量;
步骤3.2.3.全连接的前向传播过程:将步骤3.2.2中的特征向量输入到全连接层进行分类,通过Softmax激活函数完成二分类;其中,Softmax激活函数的计算公式如下:
其中xi为神经网络中第i个节点的输出值,C为分类类别数量,此处为二分类,C=2;
步骤3.3.卷积神经网络的反向传播过程;
根据神经网络输出的结果进行反向传播过程,求出神经网络的输出结果与期望值之间的误差;当误差等于或小于预设阈值时,得到训练好的神经网络分类模型;
否则,将误差一层层返回,对全连接层和卷积层的参数进行权重更新。
5.根据权利要求4所述的基于BERT预训练模型的链接生成方法,其特征在于,
所述步骤4具体为:
对于给定的缺陷报告s和代码提交m,将其输入到由微调后的CodeBERT模型及训练好的卷积神经网络分类模型组成的整体模型中,并进行自动化链接的过程如下:
CodeBERT模型将根据输入相似程度或匹配程度输出相应的CLS聚合向量;
对于潜在链接<s,m>,得到一组CLS聚合向量;
取该组CLS聚合向量中多个CLS聚合向量传入训练好的神经网络分类模型进行处理;
在经过卷积层、RELU激活函数、池化层后,经过全连接层进行二分类,以确定给定的缺陷报告s和代码提交m之间是否应该进行链接,实现缺失链接的自动恢复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210402091.6A CN114816497B (zh) | 2022-04-18 | 2022-04-18 | 基于bert预训练模型的链接生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210402091.6A CN114816497B (zh) | 2022-04-18 | 2022-04-18 | 基于bert预训练模型的链接生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114816497A true CN114816497A (zh) | 2022-07-29 |
CN114816497B CN114816497B (zh) | 2023-11-28 |
Family
ID=82536466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210402091.6A Active CN114816497B (zh) | 2022-04-18 | 2022-04-18 | 基于bert预训练模型的链接生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816497B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116225453A (zh) * | 2023-03-16 | 2023-06-06 | 电子科技大学 | 一种增量式需求跟踪性链接恢复方法 |
CN116719514A (zh) * | 2023-08-08 | 2023-09-08 | 安徽思高智能科技有限公司 | 一种基于bert的rpa代码自动生成方法及装置 |
CN116775871A (zh) * | 2023-06-15 | 2023-09-19 | 南京航空航天大学 | 基于seBERT预训练模型的深度学习软件缺陷报告分类方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176905A (zh) * | 2013-04-12 | 2013-06-26 | 北京邮电大学 | 一种缺陷关联方法及装置 |
CN109413496A (zh) * | 2018-10-31 | 2019-03-01 | 杭州东方通信软件技术有限公司 | 一种故障自检测方法和系统 |
CN109597747A (zh) * | 2017-09-30 | 2019-04-09 | 南京大学 | 一种基于多目标优化算法nsga-ⅱ推荐跨项目关联缺陷报告的方法 |
CN111427775A (zh) * | 2020-03-12 | 2020-07-17 | 扬州大学 | 一种基于Bert模型的方法层次缺陷定位方法 |
CN112398223A (zh) * | 2020-11-12 | 2021-02-23 | 国网江苏省电力有限公司信息通信分公司 | 一种配电自动化缺陷管理系统及方法 |
CN112699018A (zh) * | 2020-10-23 | 2021-04-23 | 西安交通大学 | 基于软件缺陷关联分析的软件缺陷定位方法 |
US20210304387A1 (en) * | 2020-03-31 | 2021-09-30 | Disney Enterprises, Inc. | Automated Pixel Error Detection Using an Inpainting Neural Network |
-
2022
- 2022-04-18 CN CN202210402091.6A patent/CN114816497B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176905A (zh) * | 2013-04-12 | 2013-06-26 | 北京邮电大学 | 一种缺陷关联方法及装置 |
CN109597747A (zh) * | 2017-09-30 | 2019-04-09 | 南京大学 | 一种基于多目标优化算法nsga-ⅱ推荐跨项目关联缺陷报告的方法 |
CN109413496A (zh) * | 2018-10-31 | 2019-03-01 | 杭州东方通信软件技术有限公司 | 一种故障自检测方法和系统 |
CN111427775A (zh) * | 2020-03-12 | 2020-07-17 | 扬州大学 | 一种基于Bert模型的方法层次缺陷定位方法 |
US20210304387A1 (en) * | 2020-03-31 | 2021-09-30 | Disney Enterprises, Inc. | Automated Pixel Error Detection Using an Inpainting Neural Network |
CN112699018A (zh) * | 2020-10-23 | 2021-04-23 | 西安交通大学 | 基于软件缺陷关联分析的软件缺陷定位方法 |
CN112398223A (zh) * | 2020-11-12 | 2021-02-23 | 国网江苏省电力有限公司信息通信分公司 | 一种配电自动化缺陷管理系统及方法 |
Non-Patent Citations (2)
Title |
---|
ZHENGLIANG LI 等: ""Laprob: A Label propagation-Based software bug localization method"", 《INFORMATION AND SOFTWARE TECHNOLOGY》, vol. 130, pages 1 - 10 * |
王克朝 等: ""软件错误自动定位关键科学问题及研究进展"", 《计算机学报》, pages 2262 - 2278 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116225453A (zh) * | 2023-03-16 | 2023-06-06 | 电子科技大学 | 一种增量式需求跟踪性链接恢复方法 |
CN116225453B (zh) * | 2023-03-16 | 2023-11-10 | 电子科技大学 | 一种增量式需求跟踪性链接恢复方法 |
CN116775871A (zh) * | 2023-06-15 | 2023-09-19 | 南京航空航天大学 | 基于seBERT预训练模型的深度学习软件缺陷报告分类方法 |
CN116719514A (zh) * | 2023-08-08 | 2023-09-08 | 安徽思高智能科技有限公司 | 一种基于bert的rpa代码自动生成方法及装置 |
CN116719514B (zh) * | 2023-08-08 | 2023-10-20 | 安徽思高智能科技有限公司 | 一种基于bert的rpa代码自动生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114816497B (zh) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114816497B (zh) | 基于bert预训练模型的链接生成方法 | |
CN112214610B (zh) | 一种基于跨度和知识增强的实体关系联合抽取方法 | |
CN112215013B (zh) | 一种基于深度学习的克隆代码语义检测方法 | |
CN110826303A (zh) | 一种基于弱监督学习的联合信息抽取方法 | |
CN111062397A (zh) | 一种智能票据处理系统 | |
CN110188195B (zh) | 一种基于深度学习的文本意图识别方法、装置及设备 | |
CN109471793A (zh) | 一种基于深度学习的网页自动化测试缺陷定位方法 | |
CN109857457B (zh) | 一种在双曲空间中学习源代码中的函数层次嵌入表示方法 | |
CN112711953A (zh) | 一种基于注意力机制和gcn的文本多标签分类方法和系统 | |
CN112051986B (zh) | 基于开源知识的代码搜索推荐装置及方法 | |
CN112463424A (zh) | 一种基于图的端到端程序修复方法 | |
CN111582506A (zh) | 基于全局和局部标记关系的偏多标记学习方法 | |
CN107066548A (zh) | 一种双维度分类提取网页链接的方法 | |
CN115510180A (zh) | 一种面向多领域的复杂事件要素抽取方法 | |
CN113378024B (zh) | 一种基于深度学习面向公检法领域的相关事件识别方法 | |
CN113268370B (zh) | 一种根因告警分析方法、系统、设备及存储介质 | |
CN110866172B (zh) | 一种面向区块链系统的数据分析方法 | |
CN116401289A (zh) | 一种基于多源信息结合的可追溯性链接自动恢复方法 | |
CN116186506A (zh) | 基于bert预训练模型的可访问性问题报告的自动识别方法 | |
CN111460160B (zh) | 一种基于强化学习的流式文本数据的事件聚类方法 | |
CN114840717A (zh) | 面向图数据的挖掘方法、装置、电子设备及可读存储介质 | |
CN112698833B (zh) | 一种基于局部和全局特征的特征依恋代码味道检测方法 | |
CN111651960A (zh) | 一种从合同简体迁移到繁体的光学字符联合训练及识别方法 | |
CN115268994B (zh) | 一种基于tbcnn和多头自注意力机制的代码特征提取方法 | |
CN114153970A (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 |