CN116401289A - 一种基于多源信息结合的可追溯性链接自动恢复方法 - Google Patents
一种基于多源信息结合的可追溯性链接自动恢复方法 Download PDFInfo
- Publication number
- CN116401289A CN116401289A CN202310254576.XA CN202310254576A CN116401289A CN 116401289 A CN116401289 A CN 116401289A CN 202310254576 A CN202310254576 A CN 202310254576A CN 116401289 A CN116401289 A CN 116401289A
- Authority
- CN
- China
- Prior art keywords
- code
- defect report
- text
- link
- representation
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000011084 recovery Methods 0.000 title claims abstract description 27
- 230000007547 defect Effects 0.000 claims abstract description 134
- 239000013598 vector Substances 0.000 claims abstract description 61
- 230000004927 fusion Effects 0.000 claims abstract description 15
- 238000012549 training Methods 0.000 claims abstract description 14
- 238000013139 quantization Methods 0.000 claims abstract description 3
- 239000011159 matrix material Substances 0.000 claims description 30
- 230000007246 mechanism Effects 0.000 claims description 17
- 230000006870 function Effects 0.000 claims description 13
- 238000011176 pooling Methods 0.000 claims description 10
- 238000010276 construction Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 9
- 238000005065 mining Methods 0.000 claims description 7
- 238000011161 development Methods 0.000 claims description 6
- 238000012847 principal component analysis method Methods 0.000 claims description 5
- 238000000605 extraction Methods 0.000 claims description 3
- 230000014509 gene expression Effects 0.000 claims description 3
- 238000010606 normalization Methods 0.000 claims description 3
- 230000010354 integration Effects 0.000 claims 4
- 238000012986 modification Methods 0.000 description 13
- 230000004048 modification Effects 0.000 description 13
- 230000018109 developmental process Effects 0.000 description 11
- 230000000694 effects Effects 0.000 description 4
- 238000012512 characterization method Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 230000008439 repair process Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000004807 localization Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/26—Visual data mining; Browsing structured data
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02W—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO WASTEWATER TREATMENT OR WASTE MANAGEMENT
- Y02W90/00—Enabling technologies or technologies with a potential or indirect contribution to greenhouse gas [GHG] emissions mitigation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Probability & Statistics with Applications (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computational Linguistics (AREA)
- Evolutionary Biology (AREA)
- Fuzzy Systems (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于多源信息结合的可追溯性链接自动恢复方法,包括步骤:S1,选取目标项目并获取缺陷报告数据和代码提交数据,并根据手动完成的链接构建目标数据集;S2,对缺陷报告中的元数据信息,完成对元数据信息的特征表示;对缺陷报告中的文本信息和代码信息,通过预训练模型获取向量化嵌入表示;S3,将得到的元数据特征向量x、文本特征向量y和代码特征向量z进行拼接,得到用于链接恢复的多源融合特征向量;S4,利用多源融合特征向量,通过全连接层完成二分类,确定缺陷报告与代码提交之间是否存在可追溯性链接。本发明能实现准确地挖掘并利用链接对中的信息;同时,仅需少量数据微调即可实现更准确的语义理解和代码理解。
Description
技术领域
本发明涉及智能软件工程领域,尤其涉及一种基于多源信息结合的可追溯性链接自动恢复方法。
背景技术
软件仓库中包含大量关于软件系统开发的数据,这些数据中蕴含丰富的软件更新和演化的信息。开发人员利用软件仓库数据开展各类软件维护任务以推进软件迭代,同时研究人员充分利用软件仓库数据以开展实证研究从而为软件工程开发实践提供宝贵的指导经验,帮助软件开发团队提高软件开发质量。
软件仓库中各类工件之间的可追溯性链接在软件维护过程中发挥着重要作用。其中缺陷报告(Issue)与代码提交(Commit)之间的可追溯性链接(即Issue-Commit链接)将代码与缺陷、功能等紧密关联,提高了开发人员对软件性能和软件状态的可观察性并加强了软件功能和模块的可追溯性。因而,缺陷报告与代码提交之间的可追溯性链接在各类软件维护任务中被广泛分析以用于为各类软件维护任务准备数据和构建软件维护模型(如,缺陷定位、缺陷分配、缺陷预测、功能定位等)。然而由于缺陷报告和代码提交被分别存储于缺陷跟踪系统(如JIRA、Bugzilla等)和版本控制系统(如SVN、Git等)中,两者之间的链接往往是由开发人员手动在代码提交日志中添加指定缺陷报告ID而构建的,这导致大量缺陷报告与代码提交之间的可追溯性链接由于开发人员疏忽等缘故在软件维护过程中被丢失。由于缺陷报告与代码提交之间是多对多的关系,即某一缺陷报告可能与多个代码提交修复,某一代码提交可能同时修复了多个缺陷报告,这也导致手工完成缺陷报告与代码提交之间的链接恢复不仅需要领域专家耗费大量精力且容易出错,这对各类软件维护任务的数据准备和模型构建造成了巨大的阻碍。
为了提高软件系统开发的可追溯性进而提高软件开发效率,已有许多自动化链接恢复方法被提出以生成缺陷报告与代码提交之间的可追溯性链接,按照所涉及的技术,可以将这些方法分为基于启发式方法的链接恢复技术、基于机器学习的链接恢复技术和基于深度学习的链接恢复技术。
Wu等人提出了一种基于启发式规则的方法ReLink,该方法是一种基于启发式方法的链接恢复技术,其通过制定一些启发式规则以确定给定缺陷报告与代码提交之间是否存在链接。具体来说,他们认为缺陷的修复时间应该与代码修改的提交时间相近,代码提交更改日志和错误报告的描述信息具有相近的文本相似性,缺陷报告创建者通常是缺陷修复的提交者等。而具体的阈值标准则是通过在正确链接集中进行学习而确定的,在链接恢复过程中如果给定链接对同时满足三个规则被认定为正确链接。但是以ReLink为代表的基于启发式规则的方法存在严重的准确性不足、文本数据利用不充分等缺点。
Mazrae等人提出了一种混合文本数据和非文本数据的方法hybrid-linker,该方法是一种基于机器学习的链接恢复技术,其构建了一个由文本组件、非文本组件和分类器的线性组合组成的混合模型。具体而言,该方法借助TF-IDF将文本转换为特征向量输入GB分类器完成分类,而非文本成分则借助XGBoost分类器和GB分类器实现分类,最终将分类结果进行集成以确定链接对是否为正确链接。但是以hybrid-linker为代表的基于机器学习的方法对于文本数据仅借助文本相似度来判断相似性而不能深入挖掘语义关联,同时文本组件和非文本组件的特征信息不能充分交互结合,各组件分类过程相对独立。
Ruan等人提出了一种语义增强的链接恢复方法DeepLink,该方法是一种基于深度学习技术的链接恢复技术,其借助词嵌入技术(Word2vec)和递归神经网络(RNN)模型来获取链接对的向量表示,借助余弦相似度来判断缺陷报告与代码提交之间是否链接。但现有的以DeepLink为代表的基于深度学习的方法仍存在对于语义的理解能力不足且训练数据量难以保证模型效果等缺点。
总体而言,现有的自动化链接恢复方法为构建缺陷报告与代码提交之间的链接提供了良好的研究基础,但在实际开发过程中仍存在数据挖掘不充分、语义理解能力不足、代码理解能力不足以及数据训练需求大等缺点,不能满足实际应用需求。
发明内容
发明目的:本发明的目的是提供一种能充分挖掘利用缺陷报告及代码提交中的多源信息,为软件开发过程中的缺陷报告以及代码提交之间自动构建缺失的链接,进而提高开源项目的可追溯性和可观察性,为各类软件维护任务提供支持的基于多源信息结合的可追溯性链接自动恢复方法。
技术方案:本发明的可追溯性链接自动恢复方法,包括步骤如下:
S1,选取目标项目并获取缺陷报告数据和代码提交数据,并根据开发者手动完成的链接构建目标数据集;
S2,对于缺陷报告中的元数据信息,采用特征表示方式进行特征工程完成对元数据信息的特征表示;对缺陷报告中的文本信息和代码信息,通过现有的预训练模型获取向量化嵌入表示;
S3,对文本数据特征表示和代码数据特征表示,分别采用交叉注意力机制进行融合并池化,得到文本特征向量y和代码特征向量z;对元数据特征表示,则首先使用主成分分析法进行降维得到元数据特征向量x,再将元数据特征向量x、文本特征向量y和代码特征向量z进行融合,得到用于链接恢复的多源融合特征向量;
S4,利用多源融合特征向量,以全连接层作为网络模型的分类层,通过卷积学习分类特征关系,随后将分类特征关系输入到Softmax函数进行归一化作为最后的二分类结果,进而实现确定缺陷报告与代码提交之间是否存在可追溯性链接。
进一步,步骤S1中,构建目标数据集的详细实现步骤如下:
S11,从收集的目标项目中筛选得到具有不同数据规模、不同开发语言和不同的流行程度的软件系统;
S12,采用JIRA平台所提供的JQL语言从缺陷跟踪系统上提取所需的缺陷报告中的多源信息;
S13,通过软件仓库挖掘工具从版本控制系统中挖掘软件仓库中的所需的代码提交的多源信息;
S14,按照启发式链接构建方式构建正确链接集和错误链接集,并添加分类标签,得到所需的链接对数据集。
进一步,步骤S14中,所述正确链接集的构建如下:分析代码提交日志中是否由开发者手动加入缺陷报告ID,如果存在手动加入的缺陷报告ID,则将该代码提交与其关联的缺陷报告作为正确链接加入正确链接集中;
所述错误链接集的构建如下:对于每个由开发者显式与缺陷报告进行链接的代码提交,选取所有缺陷报告中关闭时间与该代码提交的提交时间相差不超过7天的缺陷报告,并与该代码提交构成潜在链接;若该潜在链接不存在于正确链接集中,则将其加入错误链接集中。
进一步,步骤S2中,对元数据信息的特征表示的实现步骤如下:
S211,将缺陷报告优先级、缺陷报告类型按照单热编码进行特征表示;
S212,将缺陷报告创建时间、更新时间、关闭时间以及代码提交时间按照RBF径向基函数的方式对时间信息进行特征表示;
S213,将缺陷报告报告者、代码提交作者、提交者按照特征哈希的方法进行特征表示。
进一步,步骤S2中,对于缺陷报告中的文本(it1,it2,...itn)和代码提交中的文本(ct1,ct2,...ctm),以文本序列的形式对预处理后的文本数据进行向量化嵌入表示;实现过程如下:
将缺陷报告中的文本和代码提交中的文本按照RoBERTa的输入方式进行拼接,形式如下:
([CLS],it1,it2,...itn,[SEP],ct1,ct2,...ctm,[SEP]),m和n满足m+n+3=512;
其中,[CLS]为预训练模型中的特殊标记,用于完成后续分类;[SEP]则用于分隔不同句子序列;
取RoBERTa模型输出中最后一层网络的向量输出,作为文本信息的特征表示。
进一步,步骤S2中,将缺陷报告的代码与代码提交中的代码按照UnixCoder模型的输入方式进行拼接,形式如下:([CLS],it1,it2,...itn,[SEP],ct1,ct2,...ctm,[SEP]),设置最大序列长度为512,并得到Unixcoder模型最后一层网络的向量输出,向量的维度为512×768,得到代码数据的特征表示。
进一步,步骤S2中,所述缺陷报告中的元数据信息主要包括:缺陷报告类型、优先级、报告者、缺陷报告创建时间、更新时间和关闭时间;
所述缺陷报告中的文本信息包括缺陷报告标题和缺陷报告描述;
所述缺陷报告中的代码信息通过正则表达式按照常规的代码标识符抽取模式从缺陷报告描述中进行提取。
进一步,步骤S3中,对于文本数据特征表示,采用交叉注意力机制进行融合并池化得到各自的特征向量的实现过程如下:
在原有的特征表示基础上得到查询Q矩阵,与代码特征表示中的键K矩阵进行矩阵乘法后,对Q矩阵和K矩阵中的每个元素除以dk为矩阵K的维度大小;随后输入Softmax函数将结果进行归一化,此时的矩阵维度为512×512,将维度为512×512的矩阵与代码特征表示中的值V矩阵进行矩阵乘法,得到的特征向量Yz’为融合了代码特征信息的文本特征表示;
将特征向量Yz’与原来的文本特征表示Y进行拼接并最大池化,得到文本特征向量y;
对于代码数据特征表示,将代码特征表示与文本特征表示经过交叉注意力机制相结合得到Zy’,并与原来的代码特征表示Z相拼接并进行最大池化,得到代码特征向量z。
进一步,步骤S4中,所述二分类结果指示了给定缺陷报告-代码提交对是否为正确链接;如果确定缺陷报告与代码提交之间为正确链接,则为给定缺陷报告与代码提交之间添加可追溯性链接。
本发明与现有技术相比,其显著效果如下:
1、本发明充分利用了来自缺陷报告和代码提交中的多源信息,即元数据信息、文本信息和代码信息,并详细介绍了每一类信息的获取和利用方式,能实现更准确地挖掘并利用链接对中的信息;同时,在预训练模型对文本和代码等序列数据的理解基础上,仅需少量数据微调即可实现更准确的语义理解和代码理解;
2、本发明在可追溯性链接恢复领域借助RoBERTa和Unixcoder等先进预训练模型完成序列数据的向量化表示,并提出了一种多源信息特征融合的方式,即基于交叉注意力机制完成文本特征表示和代码特征表示的融合,增强文本数据和代码数据之间的关联度,并与元数据特征向量进一步融合,实现更准确的链接恢复。
附图说明
图1为本发明的模型结构图;
图2为本发明中代码提交代码处理方式示意图。
具体实施方式
下面结合说明书附图和具体实施方式对本发明做进一步详细描述。
本发明的可追溯性链接自动恢复方法从元数据、文本和代码三个角度对Issue-Commit链接对中的信息进行提取,并借助预训练模型对代码和文本等序列化信息进行表征。对于得到的多源特征信息,首先借助Cross-attention(交叉注意力机制)完成文本特征和代码特征的融合,增强代码和文本之间的关联度,再将得到的特征与经过主成分分析法进行降维后的元数据特征向量进行融合完成分类。借助于文本特征、代码特征以及元数据特征,该方法可以更准确地挖掘并利用链接对中的信息。同时,在预训练模型对文本和代码等序列数据的理解基础上,仅需少量数据微调即可实现更准确的语义理解和代码理解。基于多源信息结合的可追溯性链接自动恢复方法模型结构如图1所示。具体实现步骤如下:
步骤1,多源数据准备
从高质量项目平台上选取目标项目并获取实验所需的软件工件,即缺陷报告和代码提交,进而根据开发者手动完成的链接构建方法的目标数据集。
步骤11,开源软件项目选择
从Github上收集高质量的目标项目,并筛选得到具有不同数据规模、不同开发语言和不同的流行程度的软件系统。具体来说,本实施例选取了以JIRA平台作为缺陷跟踪系统,以Git作为版本控制系统的软件项目。这些项目通常具有较高的质量并且提供了方便的接口以实现对数据的获取。此外,综合考虑软件仓库的收藏量、软件开发周期、软件大小以及软件开发语言等信息,完成对项目的最终选取和数据集的构建。
步骤12,缺陷报告数据获取
借助JIRA平台所提供的JQL(JIRA查询语言)语言从缺陷跟踪系统上提取实验所需的缺陷报告中的多源信息。
所需的缺陷报告中的元数据信息主要包括:缺陷报告类型、优先级、报告者、缺陷报告创建时间、更新时间、关闭时间。其中缺陷报告类型用于描述该缺陷报告的主要目标,主要包括故障、任务、新功能和改进等。缺陷报告优先级则在一定程度上指示了该缺陷报告所描述任务的重要程度,主要包括严重、重要、次要、微小等。
所需的缺陷报告中的文本数据主要包括缺陷报告标题和缺陷报告描述。其中缺陷报告标题凝练地表达了该缺陷报告的主要目的和内容,而缺陷报告描述则详尽地对该缺陷报告的主要内容进行描述,其中不仅包含了文本信息还包括了代码块、代码行和标识符等。
所需的缺陷报告中的代码数据主要借助正则表达式按照常见的代码标识符抽取模式(如驼峰式命名、下划线命名等)从缺陷报告描述中进行提取。对于其中提取到的标识符完成拼接作为缺陷报告中代码信息。
步骤13,代码提交数据获取
借助软件仓库挖掘工具Pydriller从版本控制系统中挖掘软件仓库中的实验所需的代码提交的多源信息。
所需的代码提交中的元数据信息主要包括提交时间、代码提交作者、提交者。其中代码提交作者为负责完成代码修改的开发人员,提交者则是将代码提交应用到软件项目中的开发人员。
所需的代码提交中的文本信息为代码提交时由提交者编写的提交日志消息。按照Apache社区开发者规范,该日志信息通常清晰地表达了该代码提交的修改内容。如果该代码提交解决了缺陷报告中的问题,则应该显式地包含缺陷报告的ID(如,ACCUMULO-1234)。
为了合理利用代码提交中的代码信息并提高对于代码更改过程和代码修改目的的理解,本发明提出了一种相对于代码模式匹配而言更准确的代码利用方式来构建方法所需的代码提交中的代码修改信息,代码处理方式如图2所示。具体来说,对于给定代码提交中的各修改文件按照如下方法进行代码数据的构建:1)借助于Pydriller确定该代码提交对于该文件的修改类型(如MODIFY、DELETE和ADD)并与文件名拼接得到文件名修改字符串s;2)确定该文件是否为代码文件,若为代码文件则进一步挖掘在该文件中对哪些函数进行了修改,并将所有修改函数名与1)中得到的文件名修改字符串s相拼接,否则(即如果为非文件代码)则直接以文件名修改字符串作为代码修改信息;最后将抽取到的各文件代码修改信息进行拼接,即得到该代码提交的代码修改信息。
步骤14,Issue-Commit链接对构建
按照传统的启发式链接构建方式构建正确链接集和错误链接集。
正确链接集的构建:分析代码提交日志中是否由开发者手动加入缺陷报告ID,如果存在手动加入缺陷报告ID的这类显式链接,则将该代码提交与其关联的缺陷报告作为正确链接加入正确链接集中。
错误链接集的构建:对于每个由开发者显式与缺陷报告进行链接的代码提交,选取所有缺陷报告中关闭时间与该代码提交的提交时间相差不超过7天的缺陷报告,并与该代码提交构成潜在链接。若该潜在链接不存在于正确链接集中则将其加入错误链接集中。
构建完成正确连接集和错误链接集并添加分类标签,即可得到本发明所需的Issue-Commit链接对数据集。
步骤2,多源数据特征表示
本发明主要利用Issue-Commit链接对中的元数据信息、文本数据和代码数据,其中文本数据和代码数据均以序列形式进行处理。对于元数据信息,借助特征表示方式进行特征工程完成对元数据信息的特征表示。对于文本数据和代码数据,该方法借助现有的预训练模型获取向量化嵌入表示以构建特征表示。
步骤21,元数据特征表示
如步骤12和步骤13所述,对于缺陷报告中的元数据,主要提取缺陷报告类型、优先级、报告者、缺陷报告创建时间、更新时间、关闭时间等信息。对于代码提交中的元数据,主要提取提交时间、代码提交作者、提交者等信息。
按照现有的特征表示技术,将缺陷报告优先级、缺陷报告类型按照单热编码(One-Hot Encoding)进行特征表示;将缺陷报告创建时间、更新时间、关闭时间以及代码提交时间按照RBF径向基函数的方式对时间信息进行特征表示;最后将缺陷报告报告者、代码提交作者、提交者等信息按照特征哈希的方法进行特征表示。至此即可得到一个Issue-Commit链接对样本的完整元数据特征表示,即维度为1×m的特征向量。
步骤22,文本数据特征表示
对于缺陷报告中的文本(it1,it2,...itn)和代码提交中的文本(ct1,ct2,...ctm),采用常见的预处理策略完成文本清洗,即移除网址、去除停用词、分词、词干提取等。
随后,以文本序列的形式对预处理后的文本数据进行向量化嵌入表示,主要借助于当前最常用的RoBERTa模型,作为一种比BERT模型更鲁棒的预训练模型,RoBERTa模型在预训练的基础上只需要借助少量数据即可实现对模型的微调,且具有更强的文本语义表征能力。
接着,将缺陷报告中的文本和代码提交中的文本按照RoBERTa模型的输入方式进行拼接,形式如下:([CLS],it1,it2,...itn,[SEP],ct1,ct2,...ctm,[SEP]),最大序列长度为512,即m和n满足m+n+3=512;其中[CLS]为RoBERTa模型中的特殊标记,用于完成后续分类,[SEP]则用于分隔不同句子序列。取RoBERTa模型输出中最后一层网络的向量输出(维度为512×768,即得到输入中每一个token标记的向量表示)作为文本数据的特征表示。
步骤23,代码数据特征表示
与文本数据的特征表示相似,以序列方式对提取得到的代码信息进行处理。对于由步骤12中提取得到的缺陷报告中的代码(ic1,ic2,...icn)和步骤13中提取得到的代码提交中的代码(cc1,cc2,...,ccm),借助目前在代码理解领域效果最好的Unixcoder模型进行代码的向量化表示。Unixcoder模型作为一种统一的跨模式的预训练模型,可以同时兼容Encoder-Only、Decoder-Only和Encoder-Decoder三种模式,其在代码克隆检测、代码翻译、代码查找等任务上实现了最先进的效果。
与文本数据的处理相似,将缺陷报告的代码与代码提交中的代码按照UnixCoder模型的输入方式进行拼接,形式为([CLS],it1,it2,...itn,[SEP],ct1,ct2,...ctm,[SEP]),同样设置最大序列长度为512,并得到Unixcoder模型最后一层网络的向量输出(维度为512×768,即得到输入的每一个token的向量表示),以得到代码数据的特征表示。
步骤3,多源数据特征融合
将元数据特征表示、文本数据特征表示和代码数据特征表示进行特征融合,其中文本数据和代码数据皆以序列数据进行处理。对于文本数据特征表示和代码数据特征表示,本方法借助交叉注意力机制进行融合并池化得到各自的特征向量;对于元数据特征表示,则首先使用主成分分析法进行降维再与文本特征向量和代码特征向量进行拼接。
步骤31,基于交叉注意力机制的文本及代码特征融合
交叉注意力机制是一种混合两种不同嵌入序列的注意力机制,在两个序列具有相同维度的情况下,以其中一个序列得到输入的查询Q,另一个序列提供键K和值V。交叉注意力机制在特征融合领域具有良好的效果,采用交叉注意力机制实现文本和代码特征的融合能进一步增强代码和文本之间的特征关联。
如图1所示,以文本特征表示为例,在原有的特征表示基础上得到查询Q矩阵,与代码特征表示中的键K矩阵进行矩阵乘法后对矩阵(即维度为512×768的Q矩阵和维度为512×768的K矩阵)中的每个元素除以dk为K矩阵的维度大小,随后输入Softmax函数将结果进行归一化,此时的矩阵维度为512×512,将维度为512×512的矩阵与代码特征表示中的值V矩阵进行矩阵乘法,得到的特征向量Yz’即为融合了代码特征信息的文本特征表示;将Yz’与原来的文本特征表示Y进行拼接并最大池化即得到文本特征向量y。其中注意力机制公式如下:
同理,代码特征表示也采用交叉注意力机制与文本特征表示进行融合并池化得到代码特征向量z。将代码特征表示与文本特征表示经过交叉注意力机制相结合得到Zy’,并与原来的代码特征表示Z相拼接并进行最大池化即可得到代码特征向量z,如图1所示。
步骤32,多源特征向量结合
对于步骤21中得到的元数据特征表示,借助主成分分析法对原特征表示进行降维,将原有的特征指标转化为少有的几个综合指标,使得低维成分保留数据的最重要方面,最后得到维度为1×m’的元数据特征向量x。
将元数据特征向量x与步骤31中得到的文本特征向量y和代码特征向量z进行拼接,即得到最终用于链接恢复的多源融合特征向量。
步骤4,自动化链接恢复
利用步骤3中得到的多源融合特征向量,借助全连接层完成二分类,进而实现确定缺陷报告与代码提交之间是否存在可追溯性链接。
具体来说,以全连接层作为网络模型的分类层,借助卷积充分学习分类特征关系,随后将分类特征关系输入到Softmax函数进行归一化作为最后的二分类结果,该结果指示了给定缺陷报告-代码提交对是否为正确链接。即如果确定缺陷报告与代码提交之间为正确链接则为给定缺陷报告与代码提交之间添加可追溯性链接。
Claims (9)
1.一种基于多源信息结合的可追溯性链接自动恢复方法,其特征在于,包括步骤如下:
S1,选取目标项目并获取缺陷报告数据和代码提交数据,并根据开发者手动完成的链接构建目标数据集;
S2,对于缺陷报告中的元数据信息,采用特征表示方式进行特征工程完成对元数据信息的特征表示;对缺陷报告中的文本信息和代码信息,通过现有的预训练模型获取向量化嵌入表示;
S3,对文本数据特征表示和代码数据特征表示,分别采用交叉注意力机制进行融合并池化,得到文本特征向量y和代码特征向量z;对元数据特征表示,则首先使用主成分分析法进行降维得到元数据特征向量x,再将元数据特征向量x、文本特征向量y和代码特征向量z进行融合,得到用于链接恢复的多源融合特征向量;
S4,利用多源融合特征向量,以全连接层作为网络模型的分类层,通过卷积学习分类特征关系,随后将分类特征关系输入到Softmax函数进行归一化作为最后的二分类结果,进而实现确定缺陷报告与代码提交之间是否存在可追溯性链接。
2.根据权利要求1所述的基于多源信息结合的可追溯性链接自动恢复方法,其特征在于,步骤S1中,构建目标数据集的详细实现步骤如下:
S11,从收集的目标项目中筛选得到具有不同数据规模、不同开发语言和不同的流行程度的软件系统;
S12,采用JIRA平台所提供的JQL语言从缺陷跟踪系统上提取所需的缺陷报告中的多源信息;
S13,通过软件仓库挖掘工具从版本控制系统中挖掘软件仓库中的所需的代码提交的多源信息;
S14,按照启发式链接构建方式构建正确链接集和错误链接集,并添加分类标签,得到所需的链接对数据集。
3.根据权利要求1所述的基于多源信息结合的可追溯性链接自动恢复方法,其特征在于,步骤S14中,所述正确链接集的构建如下:分析代码提交日志中是否由开发者手动加入缺陷报告ID,如果存在手动加入的缺陷报告ID,则将该代码提交与其关联的缺陷报告作为正确链接加入正确链接集中;
所述错误链接集的构建如下:对于每个由开发者显式与缺陷报告进行链接的代码提交,选取所有缺陷报告中关闭时间与该代码提交的提交时间相差不超过7天的缺陷报告,并与该代码提交构成潜在链接;若该潜在链接不存在于正确链接集中,则将其加入错误链接集中。
4.根据权利要求1所述的基于多源信息结合的可追溯性链接自动恢复方法,其特征在于,步骤S2中,对元数据信息的特征表示的实现步骤如下:
S211,将缺陷报告优先级、缺陷报告类型按照单热编码进行特征表示;
S212,将缺陷报告创建时间、更新时间、关闭时间以及代码提交时间按照RBF径向基函数的方式对时间信息进行特征表示;
S213,将缺陷报告报告者、代码提交作者、提交者按照特征哈希的方法进行特征表示。
5.根据权利要求1所述的基于多源信息结合的可追溯性链接自动恢复方法,其特征在于,步骤S2中,对于缺陷报告中的文本和代码提交中的文本,以文本序列的形式对预处理后的文本数据进行向量化嵌入表示;实现过程如下:
将缺陷报告中的文本和代码提交中的文本按照RoBERTa的输入方式进行拼接,形式如下:
([CLS],it1,it2,...itn,[SEP],ct1,ct2,...ctm,[SEP]),m和n满足m+n+3=512;缺陷报告中的文本为:it1,it2,...,itn;代码提交中的文本为ct1,ct2,...ctm;
其中,[CLS]为预训练模型中的特殊标记,用于完成后续分类;[SEP]则用于分隔不同句子序列;
取RoBERTa模型输出中最后一层网络的向量输出,作为文本信息的特征表示。
6.根据权利要求1所述的基于多源信息结合的可追溯性链接自动恢复方法,其特征在于,步骤S2中,将缺陷报告的代码与代码提交中的代码按照UnixCoder模型的输入方式进行拼接,形式如下:
([CLS],it1,it2,...itn,[SEP],ct1,ct2,...ctm,[SEP]),设置最大序列长度为512,并得到Unixcoder模型最后一层网络的向量输出,向量的维度为512×768,得到代码数据的特征表示。
7.根据权利要求1所述的基于多源信息结合的可追溯性链接自动恢复方法,其特征在于,步骤S2中,所述缺陷报告中的元数据信息主要包括:缺陷报告类型、优先级、报告者、缺陷报告创建时间、更新时间和关闭时间;
所述缺陷报告中的文本信息包括缺陷报告标题和缺陷报告描述;
所述缺陷报告中的代码信息通过正则表达式按照常规的代码标识符抽取模式从缺陷报告描述中进行提取。
8.根据权利要求1所述的基于多源信息结合的可追溯性链接自动恢复方法,其特征在于,步骤S3中,对于文本数据特征表示,采用交叉注意力机制进行融合并池化得到各自的特征向量的实现过程如下:
在原有的特征表示基础上得到查询Q矩阵,与代码特征表示中的键K矩阵进行矩阵乘法后,对Q矩阵和K矩阵中的每个元素除以dk为矩阵K的维度大小;随后输入Softmax函数将结果进行归一化,此时的矩阵维度为512×512,将维度为512×512的矩阵与代码特征表示中的值V矩阵进行矩阵乘法,得到的特征向量Yz’为融合了代码特征信息的文本特征表示;
将特征向量Yz’与原来的文本特征表示Y进行拼接并最大池化,得到文本特征向量y;
对于代码数据特征表示,将代码特征表示与文本特征表示经过交叉注意力机制相结合得到Zy’,并与原来的代码特征表示Z相拼接并进行最大池化,得到代码特征向量z。
9.根据权利要求1所述的基于多源信息结合的可追溯性链接自动恢复方法,其特征在于,步骤S4中,所述二分类结果指示了给定缺陷报告-代码提交对是否为正确链接;如果确定缺陷报告与代码提交之间为正确链接,则为给定缺陷报告与代码提交之间添加可追溯性链接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310254576.XA CN116401289A (zh) | 2023-03-16 | 2023-03-16 | 一种基于多源信息结合的可追溯性链接自动恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310254576.XA CN116401289A (zh) | 2023-03-16 | 2023-03-16 | 一种基于多源信息结合的可追溯性链接自动恢复方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116401289A true CN116401289A (zh) | 2023-07-07 |
Family
ID=87006611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310254576.XA Pending CN116401289A (zh) | 2023-03-16 | 2023-03-16 | 一种基于多源信息结合的可追溯性链接自动恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116401289A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117556263A (zh) * | 2024-01-10 | 2024-02-13 | 阿里云计算有限公司 | 样本构建方法、代码生成方法、电子设备及存储介质 |
-
2023
- 2023-03-16 CN CN202310254576.XA patent/CN116401289A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117556263A (zh) * | 2024-01-10 | 2024-02-13 | 阿里云计算有限公司 | 样本构建方法、代码生成方法、电子设备及存储介质 |
CN117556263B (zh) * | 2024-01-10 | 2024-04-23 | 阿里云计算有限公司 | 样本构建方法、代码生成方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110597735B (zh) | 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法 | |
CN108829722B (zh) | 一种远程监督的Dual-Attention关系分类方法及系统 | |
CN110674305B (zh) | 一种基于深层特征融合模型的商品信息分类方法 | |
CN110334213B (zh) | 基于双向交叉注意力机制的汉越新闻事件时序关系识别方法 | |
CN110134757A (zh) | 一种基于多头注意力机制的事件论元角色抽取方法 | |
CN111382575A (zh) | 一种基于联合标注和实体语义信息的事件抽取方法 | |
CN113779260B (zh) | 一种基于预训练模型的领域图谱实体和关系联合抽取方法及系统 | |
CN116049397B (zh) | 基于多模态融合的敏感信息发现并自动分类分级方法 | |
CN114816497B (zh) | 基于bert预训练模型的链接生成方法 | |
CN111274817A (zh) | 一种基于自然语言处理技术的智能化软件成本度量方法 | |
CN115145551A (zh) | 一种面向机器学习应用低代码开发的智能辅助系统 | |
CN113868432A (zh) | 一种用于钢铁制造企业的知识图谱自动构建方法和系统 | |
CN116484024A (zh) | 一种基于知识图谱的多层次知识库构建方法 | |
CN112001484A (zh) | 一种基于多任务深度学习的安全缺陷报告预测方法 | |
CN116401289A (zh) | 一种基于多源信息结合的可追溯性链接自动恢复方法 | |
CN117520561A (zh) | 直升机装配领域知识图谱构建的实体关系抽取方法及系统 | |
CN115292568B (zh) | 一种基于联合模型的民生新闻事件抽取方法 | |
CN116150404A (zh) | 一种基于联合学习的教育资源多模态知识图谱构建方法 | |
CN113920379A (zh) | 一种基于知识辅助的零样本图像分类方法 | |
CN115953788A (zh) | 基于ocr和nlp技术的绿色金融属性智能认定方法及系统 | |
CN113378024B (zh) | 一种基于深度学习面向公检法领域的相关事件识别方法 | |
CN113657473A (zh) | 一种基于迁移学习的Web服务分类方法 | |
CN111061935B (zh) | 一种基于自注意力机制的科技写作推荐方法 | |
CN116775855A (zh) | 基于Bi-LSTM的TextRank中文摘要自动生成方法 | |
CN118277556A (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 |