CN110908709A - 一种基于代码更改关键类判定的代码提交注释预测方法 - Google Patents
一种基于代码更改关键类判定的代码提交注释预测方法 Download PDFInfo
- Publication number
- CN110908709A CN110908709A CN201911167191.XA CN201911167191A CN110908709A CN 110908709 A CN110908709 A CN 110908709A CN 201911167191 A CN201911167191 A CN 201911167191A CN 110908709 A CN110908709 A CN 110908709A
- Authority
- CN
- China
- Prior art keywords
- code
- modification
- feature
- submission
- layer
- 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
- 238000000034 method Methods 0.000 title claims abstract description 80
- 230000008859 change Effects 0.000 title claims abstract description 65
- 230000004048 modification Effects 0.000 claims abstract description 142
- 238000012986 modification Methods 0.000 claims abstract description 142
- 230000008878 coupling Effects 0.000 claims abstract description 12
- 238000010168 coupling process Methods 0.000 claims abstract description 12
- 238000005859 coupling reaction Methods 0.000 claims abstract description 12
- 239000013598 vector Substances 0.000 claims description 55
- 239000011159 matrix material Substances 0.000 claims description 49
- 230000007246 mechanism Effects 0.000 claims description 30
- 238000010606 normalization Methods 0.000 claims description 26
- 238000011156 evaluation Methods 0.000 claims description 24
- 238000010801 machine learning Methods 0.000 claims description 18
- 238000013135 deep learning Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 16
- 238000013528 artificial neural network Methods 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000002372 labelling Methods 0.000 claims description 9
- 210000002569 neuron Anatomy 0.000 claims description 9
- 230000011218 segmentation Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 7
- 238000012549 training Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 claims description 3
- 238000012216 screening Methods 0.000 claims description 3
- 238000005192 partition Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000006467 substitution reaction 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
- G06F8/73—Program documentation
-
- 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
- G06F16/353—Clustering; Classification into predefined classes
-
- 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
- G06F16/355—Class or cluster creation or modification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Library & Information Science (AREA)
- Machine Translation (AREA)
Abstract
本发明公开一种基于代码更改关键类判定的代码提交注释预测方法,包括根据修改前的代码、修改后的代码与代码更改内容提取出结构性耦合信息作为代码结构特征,将代码更改内容作为代码修改特征;将代码结构特征与代码修改特征作为LightGBM的输入,判断此次代码更改中的关键类和非关键类;在此基础上将关键类作为transformer模型的输入,预测生成提交注释信息。本发明本发明通过识别代码修改中的关键类再对其进行提交注释信息的预测,提高了提交注释预测的有效性和准确性。
Description
技术领域
本发明涉及软件维护领域,尤其涉及一种基于代码更改关键类判定的代码提交注释预测方法。
背景技术
为了代码管理与维护,现在大量的软件项目都托管在GitHub,SourceForge等代码托管平台。程序员在对软件代码进行修改之后,并将修改内容提交到托管平台时,通常会使用commit message来表示更改信息或是新增加的功能。commit message可以帮助其他用户迅速了解项目修改内容,在开源社区/大型项目中尤为重要。而有些程序员开发时间紧迫或并无良好的commit message书写习惯,导致许多项目版本迭代时没有提交注释,造成代码更改难以理解。
因此,帮助程序员找出修改代码的影响范围,并自动生成准确简洁的提交注释信息,一直是软件维护领域广受关注的课题。
发明内容
本发明为克服上述现有技术所述的至少一种缺陷(不足),提供一种基于代码更改关键类判定的代码提交注释预测方法。
本发明旨在至少在一定程度上解决上述技术问题。
为了达到上述技术效果,本发明的技术方案如下:
一种基于代码更改关键类判定的代码提交注释预测方法,包括:
S10输入代码提交数据,从代码提交数据中修改前的代码、修改后的代码与代码修改内容中提取代码实体间结构耦合特征作为代码结构特征;
S20从代码更改内容中获取代码修改特征;
S30对代码修改内容进行分类标注,将代码核心的修改内容标注为代码更改关键类,将为了完成核心修改所进行的依赖性改动内容标注为代码更改非关键类;
S40将代码结构特征、代码修改特征及分类标注输入机器学习框架LightGBM训练,获取判别代码更改关键类与代码更改非关键类的最优模型作为代码更改关键类预测模型;
S50筛选出具有书写规范且具有准确表达代码更改内容的注释信息的代码输入代码更改关键类预测模型,获取代码更改内容的代码更改关键类或代码更改非关键类;
S60将代码更改内容的代码更改关键类输入深度学习框架分词、编码、解码并分类处理,获得代码更改关键类的概率矩阵,并以其与代码的提交注释的均方误差作为损失函数进行训练,以均方误差最小的深度学习框架为提交注释预测模型;
S70将待预测的代码数据输入训练好的提交注释预测模型获取代码注释的预测结果。
优选地,所述S10的具体步骤为:
S101定义提交修改中当前实体引用其他实体的次数为入度,提交修改中其他实体引用当前实体的次数为出度;
S102将代码提交数据分类整理为修改前的代码、修改后的代码、代码修改内容;
S103以分类后的修改前的代码、修改后的代码、代码修改内容为不同的代码实体,提取代码实体间结构的耦合特征。
优选地,所述耦合特征包括:表示修改提交的类与类平均入度的特征CF1、表示修改提交的类与类入度总和的特征CF2、表示修改提交的类与类平均出度的特征CF3、表示修改提交的类与类出度总和的特征CF4、表示修改提交的方法与类平均入度的特征CF5、表示修改提交的方法与类入度总和的特征CF6、表示修改提交的方法与属性平均入度的特征CF7、表示修改提交的方法与属性入度总和的特征CF8、表示修改提交的方法与方法平均入度的特征CF9、表示修改提交的方法与方法入度总和的特征CF10、表示修改提交的方法与方法平均出度的特征CF11、表示修改提交的方法与方法出度总和的特征CF12。
优选地,所述代码修改特征包括:表示新增代码行数的特征MF1、表示修改代码行数的特征MF2、表示删除代码行数的特征MF3、表示新增类数量的特征MF4、表示修改类数量的特征MF5、表示删除类数量的特征MF6、表示重命名类数量的特征MF7、表示新增方法数量的特征MF8、表示删除方法数量的特征MF9、表示重命名方法数量的特征MF1、表示变更返回类型方法数量的特征MF11、表示参数类型变更数量的特征MF12、表示参数名变更数量的特征MF13、表示新增参数数量的特征MF14、表示删除参数数量的特征MF15、表示属性名变更数量的特征MF16、表示属性类型变更数量的特征MF17、表示条件表达式变更数量的特征MF18。
优选地,所述机器学习框架LightGBM为树模型,其根结点包括样本全集,从根结点到每个中子结点的路径对应一属性判定的分类过程,该模型先统计每个特征中每种离散值出现次数,并将每个特征下的离散值作为直方图的索引,将该离散值下每个类别出现的次数作为直方图的高度建立直方图,然后遍历找出该特征下类别的最优分割点来划分左右子树,每个结点包含的样本集合根据特征值被划分到子结点中,该模型经过训练后再通过调整参数获得的最优模型为代码更改关键类预测模型,所述S40的具体步骤为:
S401将代码结构特征、代码修改特征及分类标注输入机器学习框架LightGBM,采用机器学习框架LightGBM属性判定的分类过程,获取代码更改关键类预测初始模型;
S402以机器学习框架LightGBM中左右子树的深度、叶子数、学习率及特征选择概率为特征参数组合,以特征参数组合作为代码更改关键类预测初始模型的调整参数设置,设置机器学习框架LightGBM的分类迭代次数,计算模型的精确率Precision和召回率Recall,以精确率Precision和召回率Recall的调和平均获取模型的评价指标F1-Score;
S403拟合分类迭代的调整参数,以模型的评价指标F1-Score最大时对应的代码更改关键类预测初步模型作为训练好的代码更改关键类预测模型。
优选地,所述深度学习框架包括用于生成文本向量X的文本处理层、编码器、文档嵌入层、解码器、全连接层和归一层,所述S60包括:
S601代码更改关键类代码文件使用驼峰分词法进行分词;
S602将分好词的代码使用词向量模型进行词嵌入获取单词,将单词转换为词向量word Embedding并获取单词的位置向量position Embedding,将词向量word Embedding与位置向量position Embedding拼接成带有时序信息的词向量,然后将所有带有时序信息的词向量拼接成文本向量X;
S603将拼接后的文本向量X输入编码器,编码器栈式搭建N个编码网络块,每个编码网络块包括一个编码多头注意力机制层、两层相加归一层和一个编码前馈神经网络层,编码多头注意力机制层包括待训练的查询权重Q矩阵、关键性权重K矩阵、评估权重V矩阵,文本向量X在每一个编码网络块中分别与多组设置有不同待训练权重参数的查询权重Q矩阵、关键性权重K矩阵、评估权重V矩阵进行多头计算,再通过相加归一层加权归一,每个头的计算方式:headi=Attention(QWi Q,KWi K,VWi V),其中WQ、WK、WV分别代表对应矩阵的待训练的权值参数矩阵,将多头计算后多个矩阵拼接压缩,输出编码多头注意力机制矩阵Z,以获取文本向量X的内容和特征向量之间的关系;
S604将编码多头注意力机制矩阵Z与直连的文本向量X相加后进行归一化,归一化后的输出输入编码前馈全连接神经网络层Feed Forward将输入中的多个神经元联接成一个神经元输出,再通过相加归一层加权归一后输出编码器输出矩阵,并将之输入文档嵌入层;
S605解码器栈式搭建N个解码网络块,每个解码网络块包括一个掩码多头机制层、三层相加归一层、一个解码多头注意力机制层和一个解码前馈神经网络层,掩码多头机制层计算文本向量X的内容和训练过的文本向量之间的关系,并经相加归一层规范的输出作为解码多头注意力机制层的查询权重Q矩阵,文档嵌入层将编码器输出矩阵划分为关键性权重K矩阵和评估权重V矩阵,输入解码多头注意力机制层进行多头计算,再次经过相加归一层规范后输入解码前馈全连接神经网络将其中多个神经元联接成一个神经元输出,最后经过相加归一层规范后输出解码矩阵;
S606将解码矩阵输入全连接层进行分类,分类后将每个词的概率输入到归一层Softmax,归一层Softmax通过归一化指数函数归一化每个词的概率生成概率矩阵;
S607以概率矩阵与代码的提交注释的均方误差为损失函数返回S601训练深度学习框架,以均方误差最小的深度学习框架为提交注释预测模型。
优选地,所述S602中所述词向量模型采用Google发布的预训练BERT中文词向是模型。
优选地,所述S402中获取模型的评价指标F1-Score的方法为:
(1)先通过如下公式计算模型的精确率:
(4)再通过如下公式计算模型的召回率:
(5)然后通过计算精确率和召回率的调和平均获取模型的评价指标:
(4)选取模型的评价指标拟合参数最大时对应的关键类预测初步模型为关键类预测模型。
优选地,所述归一化指数函数为:
其中Z=(z1,z2,…,zn)是全连接层输出的每个词的概率,归一层Softmax将全连接层输出的每个词的概率Zj的范围归一化到[0,1]之间,且当前输出每个词的概率相加为1。
优选地,所述目标函数为:
MSE=(θ1-θ2)2
其中,θ1=(x1,x2,…,xn)是归一层softmax输出的产生每个词的概率,θ2是S50获取的代码更改内容的代码更改关键类的每个词的概率矩阵。
与现有技术相比,本发明技术方案的有益效果是:本发明通过识别代码修改中的关键类再对其进行提交注释信息的预测,提高了提交注释预测的有效性和准确性。
附图说明
图1为本发明基于代码更改关键类判定的代码提交注释预测方法一实施例的方法流程图。
图2为所述深度学习框架的架构图。
具体实施方式
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
一种基于代码更改关键类判定的代码提交注释预测方法,包括:
S10输入代码提交数据,从代码提交数据中修改前的代码、修改后的代码与代码修改内容中提取代码实体间结构耦合特征作为代码结构特征;
S20从代码更改内容中获取代码修改特征;
S30对代码修改内容进行分类标注,将代码核心的修改内容标注为代码更改关键类,将为了完成核心修改所进行的依赖性改动内容标注为代码更改非关键类;
S40将代码结构特征、代码修改特征及分类标注输入机器学习框架LightGBM训练,获取判别代码更改关键类与代码更改非关键类的最优模型作为代码更改关键类预测模型;
S50筛选出具有书写规范且具有准确表达代码更改内容的注释信息的代码输入代码更改关键类预测模型,获取代码更改内容的代码更改关键类或代码更改非关键类;
S60将代码更改内容的代码更改关键类输入深度学习框架分词、编码、解码并分类处理,获得代码更改关键类的概率矩阵,并以其与代码的提交注释的均方误差作为损失函数进行训练,以均方误差最小的深度学习框架为提交注释预测模型;
S70将待预测的代码数据输入训练好的提交注释预测模型获取代码注释的预测结果。
在本发明实施例中,本发明根据修改前的代码、修改后的代码与代码更改内容提取出结构性耦合信息作为代码结构特征,将代码更改内容作为代码修改特征;将代码结构特征与代码修改特征作为LightGBM的输入,判断此次代码更改中的关键类和非关键类;在此基础上将关键类作为transformer模型的输入,预测生成提交注释信息。在软件工程中,入度和出度可以用来反映代码实体间的结构耦合特征,入度指提交修改中当前实体引用其他实体的次数,出度指提交修改中其他实体引用当前实体的次数。
优选地,所述S10的具体步骤为:
S101定义提交修改中当前实体引用其他实体的次数为入度,提交修改中其他实体引用当前实体的次数为出度;
S102将代码提交数据分类整理为修改前的代码、修改后的代码、代码修改内容;
S103以分类后的修改前的代码、修改后的代码、代码修改内容为不同的代码实体,提取代码实体间结构的耦合特征。
优选地,所述耦合特征包括:表示修改提交的类与类平均入度的特征CF1、表示修改提交的类与类入度总和的特征CF2、表示修改提交的类与类平均出度的特征CF3、表示修改提交的类与类出度总和的特征CF4、表示修改提交的方法与类平均入度的特征CF5、表示修改提交的方法与类入度总和的特征CF6、表示修改提交的方法与属性平均入度的特征CF7、表示修改提交的方法与属性入度总和的特征CF8、表示修改提交的方法与方法平均入度的特征CF9、表示修改提交的方法与方法入度总和的特征CF10、表示修改提交的方法与方法平均出度的特征CF11、表示修改提交的方法与方法出度总和的特征CF12。
优选地,所述代码修改特征包括:表示新增代码行数的特征MF1、表示修改代码行数的特征MF2、表示删除代码行数的特征MF3、表示新增类数量的特征MF4、表示修改类数量的特征MF5、表示删除类数量的特征MF6、表示重命名类数量的特征MF7、表示新增方法数量的特征MF8、表示删除方法数量的特征MF9、表示重命名方法数量的特征MF1、表示变更返回类型方法数量的特征MF11、表示参数类型变更数量的特征MF12、表示参数名变更数量的特征MF13、表示新增参数数量的特征MF14、表示删除参数数量的特征MF15、表示属性名变更数量的特征MF16、表示属性类型变更数量的特征MF17、表示条件表达式变更数量的特征MF18。
优选地,所述机器学习框架LightGBM为树模型,其根结点包括样本全集,从根结点到每个中子结点的路径对应一属性判定的分类过程,该模型先统计每个特征中每种离散值出现次数,并将每个特征下的离散值作为直方图的索引,将该离散值下每个类别出现的次数作为直方图的高度建立直方图,然后遍历找出该特征下类别的最优分割点来划分左右子树,每个结点包含的样本集合根据特征值被划分到子结点中,该模型经过训练后再通过调整参数获得的最优模型为代码更改关键类预测模型,所述S40的具体步骤为:
S401将代码结构特征、代码修改特征及分类标注输入机器学习框架LightGBM,采用机器学习框架LightGBM属性判定的分类过程,获取代码更改关键类预测初始模型;
S402以机器学习框架LightGBM中左右子树的深度、叶子数、学习率及特征选择概率为特征参数组合,以特征参数组合作为代码更改关键类预测初始模型的调整参数设置,设置机器学习框架LightGBM的分类迭代次数,计算模型的精确率Precision和召回率Recall,以精确率Precision和召回率Recall的调和平均获取模型的评价指标F1-Score;
S403拟合分类迭代的调整参数,以模型的评价指标F1-Score最大时对应的代码更改关键类预测初步模型作为训练好的代码更改关键类预测模型。
优选地,所述深度学习框架包括用于生成文本向量X的文本处理层、编码器、文档嵌入层、解码器、全连接层和归一层,所述S60包括:
S601代码更改关键类代码文件使用驼峰分词法进行分词;
S602将分好词的代码使用词向量模型进行词嵌入获取单词,将单词转换为词向量word Embedding并获取单词的位置向量position Embedding,将词向量word Embedding与位置向量position Embedding拼接成带有时序信息的词向量,然后将所有带有时序信息的词向量拼接成文本向量X;
S603将拼接后的文本向量X输入编码器,编码器栈式搭建N个编码网络块,每个编码网络块包括一个编码多头注意力机制层、两层相加归一层和一个编码前馈神经网络层,编码多头注意力机制层包括待训练的查询权重Q矩阵、关键性权重K矩阵、评估权重V矩阵,文本向量X在每一个编码网络块中分别与多组设置有不同待训练权重参数的查询权重Q矩阵、关键性权重K矩阵、评估权重V矩阵进行多头计算,再通过相加归一层加权归一,每个头的计算方式:headi=Attention(QWi Q,KWi K,VWi V),其中WQ、WK、WV分别代表对应矩阵的待训练的权值参数矩阵,将多头计算后多个矩阵拼接压缩,输出编码多头注意力机制矩阵Z,以获取文本向量X的内容和特征向量之间的关系;
S604将编码多头注意力机制矩阵Z与直连的文本向量X相加后进行归一化,归一化后的输出输入编码前馈全连接神经网络层Feed Forward将输入中的多个神经元联接成一个神经元输出,再通过相加归一层加权归一后输出编码器输出矩阵,并将之输入文档嵌入层;
S605解码器栈式搭建N个解码网络块,每个解码网络块包括一个掩码多头机制层、三层相加归一层、一个解码多头注意力机制层和一个解码前馈神经网络层,掩码多头机制层计算文本向量X的内容和训练过的文本向量之间的关系,并经相加归一层规范的输出作为解码多头注意力机制层的查询权重Q矩阵,文档嵌入层将编码器输出矩阵划分为关键性权重K矩阵和评估权重V矩阵,输入解码多头注意力机制层进行多头计算,再次经过相加归一层规范后输入解码前馈全连接神经网络将其中多个神经元联接成一个神经元输出,最后经过相加归一层规范后输出解码矩阵;
S606将解码矩阵输入全连接层进行分类,分类后将每个词的概率输入到归一层Softmax,归一层Softmax通过归一化指数函数归一化每个词的概率生成概率矩阵;
S607以概率矩阵与代码的提交注释的均方误差为损失函数返回S601训练深度学习框架,以均方误差最小的深度学习框架为提交注释预测模型。
在本发明实施例中,本发明的相加归一层将编码器输出矩阵Z与直连的文本向量X相加归一化,文本向量X直连是为了缓解神经网络中的梯度消失、梯度爆炸问题,归一化是为了将数据限制在一定范围,消除神经网络训练过程中的分布偏移,维护神经网络的稳定性。
优选地,所述S602中所述词向量模型采用Google发布的预训练BERT中文词向是模型。
优选地,所述S402中获取模型的评价指标F1-Score的方法为:
(1)先通过如下公式计算模型的精确率:
(6)再通过如下公式计算模型的召回率:
(7)然后通过计算精确率和召回率的调和平均获取模型的评价指标:
(4)选取模型的评价指标拟合参数最大时对应的关键类预测初步模型为关键类预测模型。
优选地,所述归一化指数函数为:
其中Z=(z1,z2,…,zn)是全连接层输出的每个词的概率,归一层Softmax将全连接层输出的每个词的概率Zj的范围归一化到[0,1]之间,且当前输出每个词的概率相加为1。
优选地,所述目标函数为:
MSE=(θ1-θ2)2
其中,θ1=(x1,x2,…,xn)是归一层softmax输出的产生每个词的概率,θ2是S50获取的代码更改内容的代码更改关键类的每个词的概率矩阵。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.一种基于代码更改关键类判定的代码提交注释预测方法,其特征在于,包括:
S10输入代码提交数据,从代码提交数据中修改前的代码、修改后的代码与代码修改内容中提取代码实体间结构耦合特征作为代码结构特征;
S20从代码更改内容中获取代码修改特征;
S30对代码修改内容进行分类标注,将代码核心的修改内容标注为代码更改关键类,将为了完成核心修改所进行的依赖性改动内容标注为代码更改非关键类;
S40将代码结构特征、代码修改特征及分类标注输入机器学习框架LightGBM训练,获取判别代码更改关键类与代码更改非关键类的最优模型作为代码更改关键类预测模型;
S50筛选出具有书写规范且具有准确表达代码更改内容的注释信息的代码输入代码更改关键类预测模型,获取代码更改内容的代码更改关键类或代码更改非关键类;
S60将代码更改内容的代码更改关键类输入深度学习框架分词、编码、解码并分类处理,获得代码更改关键类的概率矩阵,并以其与代码的提交注释的均方误差作为损失函数进行训练,以均方误差最小的深度学习框架为提交注释预测模型;
S70将待预测的代码数据输入训练好的提交注释预测模型获取代码注释的预测结果。
2.如权利要求1所述的基于代码更改关键类判定的代码提交注释预测方法,其特征在于,所述S10的具体步骤为:
S101定义提交修改中当前实体引用其他实体的次数为入度,提交修改中其他实体引用当前实体的次数为出度;
S102将代码提交数据分类整理为修改前的代码、修改后的代码、代码修改内容;
S103以分类后的修改前的代码、修改后的代码、代码修改内容为不同的代码实体,提取代码实体间结构的耦合特征。
3.如权利要求2所述的基于代码更改关键类判定的代码提交注释预测方法,其特征在于,所述耦合特征包括:表示修改提交的类与类平均入度的特征CF1、表示修改提交的类与类入度总和的特征CF2、表示修改提交的类与类平均出度的特征CF3、表示修改提交的类与类出度总和的特征CF4、表示修改提交的方法与类平均入度的特征CF5、表示修改提交的方法与类入度总和的特征CF6、表示修改提交的方法与属性平均入度的特征CF7、表示修改提交的方法与属性入度总和的特征CF8、表示修改提交的方法与方法平均入度的特征CF9、表示修改提交的方法与方法入度总和的特征CF10、表示修改提交的方法与方法平均出度的特征CF11、表示修改提交的方法与方法出度总和的特征CF12。
4.如权利要求1所述的基于代码更改关键类判定的代码提交注释预测方法,其特征在于,所述代码修改特征包括:表示新增代码行数的特征MF1、表示修改代码行数的特征MF2、表示删除代码行数的特征MF3、表示新增类数量的特征MF4、表示修改类数量的特征MF5、表示删除类数量的特征MF6、表示重命名类数量的特征MF7、表示新增方法数量的特征MF8、表示删除方法数量的特征MF9、表示重命名方法数量的特征MF1、表示变更返回类型方法数量的特征MF11、表示参数类型变更数量的特征MF12、表示参数名变更数量的特征MF13、表示新增参数数量的特征MF14、表示删除参数数量的特征MF15、表示属性名变更数量的特征MF16、表示属性类型变更数量的特征MF17、表示条件表达式变更数量的特征MF18。
5.如权利要求1所述的基于代码更改关键类判定的代码提交注释预测方法,其特征在于,所述机器学习框架LightGBM为树模型,其根结点包括样本全集,从根结点到每个中子结点的路径对应一属性判定的分类过程,该模型先统计每个特征中每种离散值出现次数,并将每个特征下的离散值作为直方图的索引,将该离散值下每个类别出现的次数作为直方图的高度建立直方图,然后遍历找出该特征下类别的最优分割点来划分左右子树,每个结点包含的样本集合根据特征值被划分到子结点中,该模型经过训练后再通过调整参数获得的最优模型为代码更改关键类预测模型,所述S40的具体步骤为:
S401将代码结构特征、代码修改特征及分类标注输入机器学习框架LightGBM,采用机器学习框架LightGBM属性判定的分类过程,获取代码更改关键类预测初始模型;
S402以机器学习框架LightGBM中左右子树的深度、叶子数、学习率及特征选择概率为特征参数组合,以特征参数组合作为代码更改关键类预测初始模型的调整参数设置,设置机器学习框架LightGBM的分类迭代次数,计算模型的精确率Precision和召回率Recall,以精确率Precision和召回率Recall的调和平均获取模型的评价指标F1-Score;
S403拟合分类迭代的调整参数,以模型的评价指标F1-Score最大时对应的代码更改关键类预测初步模型作为训练好的代码更改关键类预测模型。
6.如权利要求1所述的基于代码更改关键类判定的代码提交注释预测方法,其特征在于,所述深度学习框架包括用于生成文本向量X的文本处理层、编码器、文档嵌入层、解码器、全连接层和归一层,所述S60包括:
S601代码更改关键类代码文件使用驼峰分词法进行分词;
S602将分好词的代码使用词向量模型进行词嵌入获取单词,将单词转换为词向量wordEmbedding并获取单词的位置向量position Embedding,将词向量word Embedding与位置向量position Embedding拼接成带有时序信息的词向量,然后将所有带有时序信息的词向量拼接成文本向量X;
S603将拼接后的文本向量X输入编码器,编码器栈式搭建N个编码网络块,每个编码网络块包括一个编码多头注意力机制层、两层相加归一层和一个编码前馈神经网络层,编码多头注意力机制层包括待训练的查询权重Q矩阵、关键性权重K矩阵、评估权重V矩阵,文本向量X在每一个编码网络块中分别与多组设置有不同待训练权重参数的查询权重Q矩阵、关键性权重K矩阵、评估权重V矩阵进行多头计算,再通过相加归一层加权归一,每个头的计算方式:headi=Attention(QWi Q,KWi K,VWi V),其中WQ、WK、WV分别代表对应矩阵的待训练的权值参数矩阵,将多头计算后多个矩阵拼接压缩,输出编码多头注意力机制矩阵Z,以获取文本向量X的内容和特征向量之间的关系;
S604将编码多头注意力机制矩阵Z与直连的文本向量X相加后进行归一化,归一化后的输出输入编码前馈全连接神经网络层Feed Forward将输入中的多个神经元联接成一个神经元输出,再通过相加归一层加权归一后输出编码器输出矩阵,并将之输入文档嵌入层;
S605解码器栈式搭建N个解码网络块,每个解码网络块包括一个掩码多头机制层、三层相加归一层、一个解码多头注意力机制层和一个解码前馈神经网络层,掩码多头机制层计算文本向量X的内容和训练过的文本向量之间的关系,并经相加归一层规范的输出作为解码多头注意力机制层的查询权重Q矩阵,文档嵌入层将编码器输出矩阵划分为关键性权重K矩阵和评估权重V矩阵,输入解码多头注意力机制层进行多头计算,再次经过相加归一层规范后输入解码前馈全连接神经网络将其中多个神经元联接成一个神经元输出,最后经过相加归一层规范后输出解码矩阵;
S606将解码矩阵输入全连接层进行分类,分类后将每个词的概率输入到归一层Softmax,归一层Softmax通过归一化指数函数归一化每个词的概率生成概率矩阵;
S607以概率矩阵与代码的提交注释的均方误差为损失函数返回S601训练深度学习框架,以均方误差最小的深度学习框架为提交注释预测模型。
7.如权利要求6所述的基于代码更改关键类判定的代码提交注释预测方法,其特征在于,所述S602中所述词向量模型采用Google发布的预训练BERT中文词向是模型。
10.如权利要求6所述的基于代码更改关键类判定的代码提交注释预测方法,其特征在于,所述目标函数为:
MSE=(θ1-θ2)2
其中,θ1=(x1,x2,…,xn)是归一层softmax输出的产生每个词的概率,θ2是S50获取的代码更改内容的代码更改关键类的每个词的概率矩阵。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911167191.XA CN110908709B (zh) | 2019-11-25 | 2019-11-25 | 一种基于代码更改关键类判定的代码提交注释预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911167191.XA CN110908709B (zh) | 2019-11-25 | 2019-11-25 | 一种基于代码更改关键类判定的代码提交注释预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110908709A true CN110908709A (zh) | 2020-03-24 |
CN110908709B CN110908709B (zh) | 2023-05-02 |
Family
ID=69819361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911167191.XA Active CN110908709B (zh) | 2019-11-25 | 2019-11-25 | 一种基于代码更改关键类判定的代码提交注释预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110908709B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522581A (zh) * | 2020-04-22 | 2020-08-11 | 山东师范大学 | 一种增强型代码注释自动生成方法及系统 |
CN112394974A (zh) * | 2020-11-23 | 2021-02-23 | 平安科技(深圳)有限公司 | 代码变更的注释生成方法、装置、电子设备及存储介质 |
CN112417852A (zh) * | 2020-12-07 | 2021-02-26 | 中山大学 | 一种代码片段重要性的判断方法和装置 |
CN112487291A (zh) * | 2020-11-28 | 2021-03-12 | 重庆邮电大学 | 一种基于大数据的个性化新闻推荐方法及装置 |
CN113934450A (zh) * | 2020-07-13 | 2022-01-14 | 阿里巴巴集团控股有限公司 | 生成注释信息的方法、装置、计算机设备和介质 |
CN116542290A (zh) * | 2023-06-25 | 2023-08-04 | 城云科技(中国)有限公司 | 基于多源多维数据的信息预测模型构建方法、装置及应用 |
WO2024130686A1 (en) * | 2022-12-23 | 2024-06-27 | Huawei Technologies Co., Ltd. | Methods, systems, apparatuses, and computer-readable media for training neural network to learn computer code change representations |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960506A (zh) * | 2018-12-03 | 2019-07-02 | 复旦大学 | 一种基于结构感知的代码注释生成方法 |
CN110018820A (zh) * | 2019-04-08 | 2019-07-16 | 浙江大学滨海产业技术研究院 | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 |
WO2019174422A1 (zh) * | 2018-03-16 | 2019-09-19 | 北京国双科技有限公司 | 实体关联关系的分析方法及相关装置 |
-
2019
- 2019-11-25 CN CN201911167191.XA patent/CN110908709B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019174422A1 (zh) * | 2018-03-16 | 2019-09-19 | 北京国双科技有限公司 | 实体关联关系的分析方法及相关装置 |
CN109960506A (zh) * | 2018-12-03 | 2019-07-02 | 复旦大学 | 一种基于结构感知的代码注释生成方法 |
CN110018820A (zh) * | 2019-04-08 | 2019-07-16 | 浙江大学滨海产业技术研究院 | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522581A (zh) * | 2020-04-22 | 2020-08-11 | 山东师范大学 | 一种增强型代码注释自动生成方法及系统 |
CN111522581B (zh) * | 2020-04-22 | 2021-06-25 | 山东师范大学 | 一种增强型代码注释自动生成方法及系统 |
CN113934450A (zh) * | 2020-07-13 | 2022-01-14 | 阿里巴巴集团控股有限公司 | 生成注释信息的方法、装置、计算机设备和介质 |
CN112394974A (zh) * | 2020-11-23 | 2021-02-23 | 平安科技(深圳)有限公司 | 代码变更的注释生成方法、装置、电子设备及存储介质 |
CN112394974B (zh) * | 2020-11-23 | 2024-05-07 | 平安科技(深圳)有限公司 | 代码变更的注释生成方法、装置、电子设备及存储介质 |
WO2021208701A1 (zh) * | 2020-11-23 | 2021-10-21 | 平安科技(深圳)有限公司 | 代码变更的注释生成方法、装置、电子设备及存储介质 |
CN112487291A (zh) * | 2020-11-28 | 2021-03-12 | 重庆邮电大学 | 一种基于大数据的个性化新闻推荐方法及装置 |
CN112487291B (zh) * | 2020-11-28 | 2022-06-10 | 重庆邮电大学 | 一种基于大数据的个性化新闻推荐方法及装置 |
CN112417852B (zh) * | 2020-12-07 | 2022-01-25 | 中山大学 | 一种代码片段重要性的判断方法和装置 |
CN112417852A (zh) * | 2020-12-07 | 2021-02-26 | 中山大学 | 一种代码片段重要性的判断方法和装置 |
WO2024130686A1 (en) * | 2022-12-23 | 2024-06-27 | Huawei Technologies Co., Ltd. | Methods, systems, apparatuses, and computer-readable media for training neural network to learn computer code change representations |
CN116542290A (zh) * | 2023-06-25 | 2023-08-04 | 城云科技(中国)有限公司 | 基于多源多维数据的信息预测模型构建方法、装置及应用 |
CN116542290B (zh) * | 2023-06-25 | 2023-09-08 | 城云科技(中国)有限公司 | 基于多源多维数据的信息预测模型构建方法、装置及应用 |
Also Published As
Publication number | Publication date |
---|---|
CN110908709B (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110908709B (zh) | 一种基于代码更改关键类判定的代码提交注释预测方法 | |
CN111310438B (zh) | 基于多粒度融合模型的中文句子语义智能匹配方法及装置 | |
CN111090461B (zh) | 一种基于机器翻译模型的代码注释生成方法 | |
CN110298032B (zh) | 文本分类语料标注训练系统 | |
CN112559766B (zh) | 一种法律知识图谱构建系统 | |
CN112434535B (zh) | 基于多模型的要素抽取方法、装置、设备及存储介质 | |
CN111259851B (zh) | 一种多模态事件检测方法及装置 | |
CN113065358B (zh) | 面向银行咨询服务基于多粒度对齐的文本对语义匹配方法 | |
EP3722968A1 (en) | Data extraction system | |
CN110941964A (zh) | 双语语料筛选方法、装置及存储介质 | |
CN113987155B (zh) | 一种融合知识图谱与大规模用户日志的会话式检索方法 | |
CN115526236A (zh) | 一种基于多模态对比学习的文本网络图分类方法 | |
CN113254507B (zh) | 一种数据资产目录智能构建盘点方法 | |
CN114372475A (zh) | 一种基于RoBERTa模型的网络舆情情感分析方法及系统 | |
CN114429122A (zh) | 一种基于循环注意力的方面级情感分析系统和方法 | |
CN116401376A (zh) | 一种面向工艺性检查的知识图谱构建方法及系统 | |
CN116680343A (zh) | 基于融合多模态信息的实体和关系表示的链接预测方法 | |
CN112818121A (zh) | 一种文本分类方法、装置、计算机设备及存储介质 | |
CN113886531A (zh) | 智能问答话术确定方法、装置、计算机设备和存储介质 | |
CN117035456A (zh) | 一种智慧工地监控管理方法及系统 | |
CN111597943A (zh) | 一种基于图神经网络的表格结构识别方法 | |
CN116522912B (zh) | 一种包装设计语言模型的训练方法、装置、介质及设备 | |
CN116975256B (zh) | 抽水蓄能电站地下厂房施工过程多源信息的处理方法及系统 | |
CN116186562B (zh) | 基于编码器的长文本匹配方法 | |
CN117151222A (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 |