首页 / 专利库 / 人工智能 / 人工智能 / 机器学习 / 人工神经网络 / 前馈神经网络 / 一种基于代码更改关键类判定的代码提交注释预测方法

一种基于代码更改关键类判定的代码提交注释预测方法

阅读:1019发布:2020-05-14

专利汇可以提供一种基于代码更改关键类判定的代码提交注释预测方法专利检索,专利查询,专利分析的服务。并且本 发明 公开一种基于代码更改关键类判定的代码提交注释预测方法,包括根据 修改 前的代码、修改后的代码与代码更改内容提取出结构性耦合信息作为代码结构特征,将代码更改内容作为代码修改特征;将代码结构特征与代码修改特征作为LightGBM的输入,判断此次代码更改中的关键类和非关键类;在此 基础 上将关键类作为transformer模型的输入,预测生成提交注释信息。本发明本发明通过识别代码修改中的关键类再对其进行提交注释信息的预测,提高了提交注释预测的有效性和准确性。,下面是一种基于代码更改关键类判定的代码提交注释预测方法专利的具体信息内容。

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将分好词的代码使用词向量模型进行词嵌入获取单词,将单词转换为词向量word Embedding并获取单词的位置向量position Embedding,将词向量word Embedding与位置向量position Embedding拼接成带有时序信息的词向量,然后将所有带有时序信息的词向量拼接成文本向量X;
S603将拼接后的文本向量X输入编码器,编码器栈式搭建N个编码网络,每个编码网络块包括一个编码多头注意机制层、两层相加归一层和一个编码前馈神经网络层,编码多头注意力机制层包括待训练的查询权重Q矩阵、关键性权重K矩阵、评估权重V矩阵,文本向量X在每一个编码网络块中分别与多组设置有不同待训练权重参数的查询权重Q矩阵、关键性权重K矩阵、评估权重V矩阵进行多头计算,再通过相加归一层加权归一,每个头的计算方式:headi=Attention(QWiQ,KWiK,VWiV),其中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中文词向是模型。
8.如权利要求5所述的基于代码更改关键类判定的代码提交注释预测方法,其特征在于,所述S402中获取模型的评价指标F1-Score的方法为:
(1)先通过如下公式计算模型的精确率:
(2)再通过如下公式计算模型的召回率:
(3)然后通过计算精确率和召回率的调和平均获取模型的评价指标:
(4)选取模型的评价指标拟合参数最大时对应的关键类预测初步模型为关键类预测模型。
9.如权利要求6所述的基于代码更改关键类判定的代码提交注释预测方法,其特征在于,所述归一化指数函数为:
其中Z=(z1,z2,…,zn)是全连接层输出的每个词的概率,归一层Softmax将全连接层输出的每个词的概率Zj的范围归一化到[0,1]之间,且当前输出每个词的概率相加为1。
10.如权利要求6所述的基于代码更改关键类判定的代码提交注释预测方法,其特征在于,所述目标函数为:
MSE=(θ1-θ2)2
其中,θ1=(x1,x2,…,xn)是归一层softmax输出的产生每个词的概率,θ2是S50获取的代码更改内容的代码更改关键类的每个词的概率矩阵。

说明书全文

一种基于代码更改关键类判定的代码提交注释预测方法

技术领域

[0001] 本发明涉及软件维护领域,尤其涉及一种基于代码更改关键类判定的代码提交注释预测方法。

背景技术

[0002] 为了代码管理与维护,现在大量的软件项目都托管在GitHub,SourceForge等代码托管平台。程序员在对软件代码进行修改之后,并将修改内容提交到托管平台时,通常会使
用commit message来表示更改信息或是新增加的功能。commit message可以帮助其他用户
迅速了解项目修改内容,在开源社区/大型项目中尤为重要。而有些程序员开发时间紧迫或
并无良好的commit message书写习惯,导致许多项目版本迭代时没有提交注释,造成代码
更改难以理解。
[0003] 因此,帮助程序员找出修改代码的影响范围,并自动生成准确简洁的提交注释信息,一直是软件维护领域广受关注的课题。

发明内容

[0004] 本发明为克服上述现有技术所述的至少一种缺陷(不足),提供一种基于代码更改关键类判定的代码提交注释预测方法。
[0005] 本发明旨在至少在一定程度上解决上述技术问题。
[0006] 为了达到上述技术效果,本发明的技术方案如下:
[0007] 一种基于代码更改关键类判定的代码提交注释预测方法,包括:
[0008] S10输入代码提交数据,从代码提交数据中修改前的代码、修改后的代码与代码修改内容中提取代码实体间结构耦合特征作为代码结构特征;
[0009] S20从代码更改内容中获取代码修改特征;
[0010] S30对代码修改内容进行分类标注,将代码核心的修改内容标注为代码更改关键类,将为了完成核心修改所进行的依赖性改动内容标注为代码更改非关键类;
[0011] S40将代码结构特征、代码修改特征及分类标注输入机器学习框架LightGBM训练,获取判别代码更改关键类与代码更改非关键类的最优模型作为代码更改关键类预测模型
[0012] S50筛选出具有书写规范且具有准确表达代码更改内容的注释信息的代码输入代码更改关键类预测模型,获取代码更改内容的代码更改关键类或代码更改非关键类;
[0013] S60将代码更改内容的代码更改关键类输入深度学习框架分词、编码、解码并分类处理,获得代码更改关键类的概率矩阵,并以其与代码的提交注释的均方误差作为损失函
数进行训练,以均方误差最小的深度学习框架为提交注释预测模型;
[0014] S70将待预测的代码数据输入训练好的提交注释预测模型获取代码注释的预测结果。
[0015] 优选地,所述S10的具体步骤为:
[0016] S101定义提交修改中当前实体引用其他实体的次数为入度,提交修改中其他实体引用当前实体的次数为出度;
[0017] S102将代码提交数据分类整理为修改前的代码、修改后的代码、代码修改内容;
[0018] S103以分类后的修改前的代码、修改后的代码、代码修改内容为不同的代码实体,提取代码实体间结构的耦合特征。
[0019] 优选地,所述耦合特征包括:表示修改提交的类与类平均入度的特征CF1、表示修改提交的类与类入度总和的特征CF2、表示修改提交的类与类平均出度的特征CF3、表示修
改提交的类与类出度总和的特征CF4、表示修改提交的方法与类平均入度的特征CF5、表示
修改提交的方法与类入度总和的特征CF6、表示修改提交的方法与属性平均入度的特征
CF7、表示修改提交的方法与属性入度总和的特征CF8、表示修改提交的方法与方法平均入
度的特征CF9、表示修改提交的方法与方法入度总和的特征CF10、表示修改提交的方法与方
法平均出度的特征CF11、表示修改提交的方法与方法出度总和的特征CF12。
[0020] 优选地,所述代码修改特征包括:表示新增代码行数的特征MF1、表示修改代码行数的特征MF2、表示删除代码行数的特征MF3、表示新增类数量的特征MF4、表示修改类数量
的特征MF5、表示删除类数量的特征MF6、表示重命名类数量的特征MF7、表示新增方法数量
的特征MF8、表示删除方法数量的特征MF9、表示重命名方法数量的特征MF1、表示变更返回
类型方法数量的特征MF11、表示参数类型变更数量的特征MF12、表示参数名变更数量的特
征MF13、表示新增参数数量的特征MF14、表示删除参数数量的特征MF15、表示属性名变更数
量的特征MF16、表示属性类型变更数量的特征MF17、表示条件表达式变更数量的特征MF18。
[0021] 优选地,所述机器学习框架LightGBM为树模型,其根结点包括样本全集,从根结点到每个中子结点的路径对应一属性判定的分类过程,该模型先统计每个特征中每种离散值
出现次数,并将每个特征下的离散值作为直方图的索引,将该离散值下每个类别出现的次
数作为直方图的高度建立直方图,然后遍历找出该特征下类别的最优分割点来划分左右子
树,每个结点包含的样本集合根据特征值被划分到子结点中,该模型经过训练后再通过调
整参数获得的最优模型为代码更改关键类预测模型,所述S40的具体步骤为:
[0022] S401将代码结构特征、代码修改特征及分类标注输入机器学习框架LightGBM,采用机器学习框架LightGBM属性判定的分类过程,获取代码更改关键类预测初始模型;
[0023] S402以机器学习框架LightGBM中左右子树的深度、叶子数、学习率及特征选择概率为特征参数组合,以特征参数组合作为代码更改关键类预测初始模型的调整参数设置,
设置机器学习框架LightGBM的分类迭代次数,计算模型的精确率Precision和召回率
Recall,以精确率Precision和召回率Recall的调和平均获取模型的评价指标F1-Score;
[0024] S403拟合分类迭代的调整参数,以模型的评价指标F1-Score最大时对应的代码更改关键类预测初步模型作为训练好的代码更改关键类预测模型。
[0025] 优选地,所述深度学习框架包括用于生成文本向量X的文本处理层、编码器、文档嵌入层、解码器、全连接层和归一层,所述S60包括:
[0026] S601代码更改关键类代码文件使用驼峰分词法进行分词;
[0027] S602将分好词的代码使用词向量模型进行词嵌入获取单词,将单词转换为词向量word Embedding并获取单词的位置向量position Embedding,将词向量word Embedding与
位置向量position Embedding拼接成带有时序信息的词向量,然后将所有带有时序信息的
词向量拼接成文本向量X;
[0028] S603将拼接后的文本向量X输入编码器,编码器栈式搭建N个编码网络,每个编码网络块包括一个编码多头注意机制层、两层相加归一层和一个编码前馈神经网络层,
编码多头注意力机制层包括待训练的查询权重Q矩阵、关键性权重K矩阵、评估权重V矩阵,
文本向量X在每一个编码网络块中分别与多组设置有不同待训练权重参数的查询权重Q矩
阵、关键性权重K矩阵、评估权重V矩阵进行多头计算,再通过相加归一层加权归一,每个头
的计算方式:headi=Attention(QWiQ,KWiK,VWiV),其中WQ、WK、WV分别代表对应矩阵的待训练
的权值参数矩阵,将多头计算后多个矩阵拼接压缩,输出编码多头注意力机制矩阵Z,以获
取文本向量X的内容和特征向量之间的关系;
[0029] S604将编码多头注意力机制矩阵Z与直连的文本向量X相加后进行归一化,归一化后的输出输入编码前馈全连接神经网络层Feed Forward将输入中的多个神经元联接成一
个神经元输出,再通过相加归一层加权归一后输出编码器输出矩阵,并将之输入文档嵌入
层;
[0030] S605解码器栈式搭建N个解码网络块,每个解码网络块包括一个掩码多头机制层、三层相加归一层、一个解码多头注意力机制层和一个解码前馈神经网络层,掩码多头机制
层计算文本向量X的内容和训练过的文本向量之间的关系,并经相加归一层规范的输出作
为解码多头注意力机制层的查询权重Q矩阵,文档嵌入层将编码器输出矩阵划分为关键性
权重K矩阵和评估权重V矩阵,输入解码多头注意力机制层进行多头计算,再次经过相加归
一层规范后输入解码前馈全连接神经网络将其中多个神经元联接成一个神经元输出,最后
经过相加归一层规范后输出解码矩阵;
[0031] S606将解码矩阵输入全连接层进行分类,分类后将每个词的概率输入到归一层Softmax,归一层Softmax通过归一化指数函数归一化每个词的概率生成概率矩阵;
[0032] S607以概率矩阵与代码的提交注释的均方误差为损失函数返回S601训练深度学习框架,以均方误差最小的深度学习框架为提交注释预测模型。
[0033] 优选地,所述S602中所述词向量模型采用Google发布的预训练BERT中文词向是模型。
[0034] 优选地,所述S402中获取模型的评价指标F1-Score的方法为:
[0035] (1)先通过如下公式计算模型的精确率:
[0036]
[0037] (4)再通过如下公式计算模型的召回率:
[0038]
[0039] (5)然后通过计算精确率和召回率的调和平均获取模型的评价指标:
[0040]
[0041] (4)选取模型的评价指标拟合参数最大时对应的关键类预测初步模型为关键类预测模型。
[0042] 优选地,所述归一化指数函数为:
[0043]
[0044] 其中Z=(z1,z2,…,zn)是全连接层输出的每个词的概率,归一层Softmax将全连接层输出的每个词的概率Zj的范围归一化到[0,1]之间,且当前输出每个词的概率相加为1。
[0045] 优选地,所述目标函数为:
[0046] MSE=(θ1-θ2)2
[0047] 其中,θ1=(x1,x2,…,xn)是归一层softmax输出的产生每个词的概率,θ2是S50获取的代码更改内容的代码更改关键类的每个词的概率矩阵。
[0048] 与现有技术相比,本发明技术方案的有益效果是:本发明通过识别代码修改中的关键类再对其进行提交注释信息的预测,提高了提交注释预测的有效性和准确性。
附图说明
[0049] 图1为本发明基于代码更改关键类判定的代码提交注释预测方法一实施例的方法流程图
[0050] 图2为所述深度学习框架的架构图。

具体实施方式

[0051] 在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
[0052] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者
隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三
个等,除非另有明确具体的限定。
[0053] 在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内
部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员
而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0054] 在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在
第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示
第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第
一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
[0055] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特
点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不
必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任
一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技
术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结
合和组合。
[0056] 尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述
实施例进行变化、修改、替换和变型。
[0057] 为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
[0058] 对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
[0059] 下面结合附图和实施例对本发明的技术方案做进一步的说明。
[0060] 一种基于代码更改关键类判定的代码提交注释预测方法,包括:
[0061] S10输入代码提交数据,从代码提交数据中修改前的代码、修改后的代码与代码修改内容中提取代码实体间结构耦合特征作为代码结构特征;
[0062] S20从代码更改内容中获取代码修改特征;
[0063] S30对代码修改内容进行分类标注,将代码核心的修改内容标注为代码更改关键类,将为了完成核心修改所进行的依赖性改动内容标注为代码更改非关键类;
[0064] S40将代码结构特征、代码修改特征及分类标注输入机器学习框架LightGBM训练,获取判别代码更改关键类与代码更改非关键类的最优模型作为代码更改关键类预测模型;
[0065] S50筛选出具有书写规范且具有准确表达代码更改内容的注释信息的代码输入代码更改关键类预测模型,获取代码更改内容的代码更改关键类或代码更改非关键类;
[0066] S60将代码更改内容的代码更改关键类输入深度学习框架分词、编码、解码并分类处理,获得代码更改关键类的概率矩阵,并以其与代码的提交注释的均方误差作为损失函
数进行训练,以均方误差最小的深度学习框架为提交注释预测模型;
[0067] S70将待预测的代码数据输入训练好的提交注释预测模型获取代码注释的预测结果。
[0068] 在本发明实施例中,本发明根据修改前的代码、修改后的代码与代码更改内容提取出结构性耦合信息作为代码结构特征,将代码更改内容作为代码修改特征;将代码结构
特征与代码修改特征作为LightGBM的输入,判断此次代码更改中的关键类和非关键类;在
基础上将关键类作为transformer模型的输入,预测生成提交注释信息。在软件工程中,
入度和出度可以用来反映代码实体间的结构耦合特征,入度指提交修改中当前实体引用其
他实体的次数,出度指提交修改中其他实体引用当前实体的次数。
[0069] 优选地,所述S10的具体步骤为:
[0070] S101定义提交修改中当前实体引用其他实体的次数为入度,提交修改中其他实体引用当前实体的次数为出度;
[0071] S102将代码提交数据分类整理为修改前的代码、修改后的代码、代码修改内容;
[0072] S103以分类后的修改前的代码、修改后的代码、代码修改内容为不同的代码实体,提取代码实体间结构的耦合特征。
[0073] 优选地,所述耦合特征包括:表示修改提交的类与类平均入度的特征CF1、表示修改提交的类与类入度总和的特征CF2、表示修改提交的类与类平均出度的特征CF3、表示修
改提交的类与类出度总和的特征CF4、表示修改提交的方法与类平均入度的特征CF5、表示
修改提交的方法与类入度总和的特征CF6、表示修改提交的方法与属性平均入度的特征
CF7、表示修改提交的方法与属性入度总和的特征CF8、表示修改提交的方法与方法平均入
度的特征CF9、表示修改提交的方法与方法入度总和的特征CF10、表示修改提交的方法与方
法平均出度的特征CF11、表示修改提交的方法与方法出度总和的特征CF12。
[0074] 优选地,所述代码修改特征包括:表示新增代码行数的特征MF1、表示修改代码行数的特征MF2、表示删除代码行数的特征MF3、表示新增类数量的特征MF4、表示修改类数量
的特征MF5、表示删除类数量的特征MF6、表示重命名类数量的特征MF7、表示新增方法数量
的特征MF8、表示删除方法数量的特征MF9、表示重命名方法数量的特征MF1、表示变更返回
类型方法数量的特征MF11、表示参数类型变更数量的特征MF12、表示参数名变更数量的特
征MF13、表示新增参数数量的特征MF14、表示删除参数数量的特征MF15、表示属性名变更数
量的特征MF16、表示属性类型变更数量的特征MF17、表示条件表达式变更数量的特征MF18。
[0075] 优选地,所述机器学习框架LightGBM为树模型,其根结点包括样本全集,从根结点到每个中子结点的路径对应一属性判定的分类过程,该模型先统计每个特征中每种离散值
出现次数,并将每个特征下的离散值作为直方图的索引,将该离散值下每个类别出现的次
数作为直方图的高度建立直方图,然后遍历找出该特征下类别的最优分割点来划分左右子
树,每个结点包含的样本集合根据特征值被划分到子结点中,该模型经过训练后再通过调
整参数获得的最优模型为代码更改关键类预测模型,所述S40的具体步骤为:
[0076] S401将代码结构特征、代码修改特征及分类标注输入机器学习框架LightGBM,采用机器学习框架LightGBM属性判定的分类过程,获取代码更改关键类预测初始模型;
[0077] S402以机器学习框架LightGBM中左右子树的深度、叶子数、学习率及特征选择概率为特征参数组合,以特征参数组合作为代码更改关键类预测初始模型的调整参数设置,
设置机器学习框架LightGBM的分类迭代次数,计算模型的精确率Precision和召回率
Recall,以精确率Precision和召回率Recall的调和平均获取模型的评价指标F1-Score;
[0078] S403拟合分类迭代的调整参数,以模型的评价指标F1-Score最大时对应的代码更改关键类预测初步模型作为训练好的代码更改关键类预测模型。
[0079] 优选地,所述深度学习框架包括用于生成文本向量X的文本处理层、编码器、文档嵌入层、解码器、全连接层和归一层,所述S60包括:
[0080] S601代码更改关键类代码文件使用驼峰分词法进行分词;
[0081] S602将分好词的代码使用词向量模型进行词嵌入获取单词,将单词转换为词向量word Embedding并获取单词的位置向量position Embedding,将词向量word Embedding与
位置向量position Embedding拼接成带有时序信息的词向量,然后将所有带有时序信息的
词向量拼接成文本向量X;
[0082] S603将拼接后的文本向量X输入编码器,编码器栈式搭建N个编码网络块,每个编码网络块包括一个编码多头注意力机制层、两层相加归一层和一个编码前馈神经网络层,
编码多头注意力机制层包括待训练的查询权重Q矩阵、关键性权重K矩阵、评估权重V矩阵,
文本向量X在每一个编码网络块中分别与多组设置有不同待训练权重参数的查询权重Q矩
阵、关键性权重K矩阵、评估权重V矩阵进行多头计算,再通过相加归一层加权归一,每个头
的计算方式:headi=Attention(QWiQ,KWiK,VWiV),其中WQ、WK、WV分别代表对应矩阵的待训练
的权值参数矩阵,将多头计算后多个矩阵拼接压缩,输出编码多头注意力机制矩阵Z,以获
取文本向量X的内容和特征向量之间的关系;
[0083] S604将编码多头注意力机制矩阵Z与直连的文本向量X相加后进行归一化,归一化后的输出输入编码前馈全连接神经网络层Feed Forward将输入中的多个神经元联接成一
个神经元输出,再通过相加归一层加权归一后输出编码器输出矩阵,并将之输入文档嵌入
层;
[0084] S605解码器栈式搭建N个解码网络块,每个解码网络块包括一个掩码多头机制层、三层相加归一层、一个解码多头注意力机制层和一个解码前馈神经网络层,掩码多头机制
层计算文本向量X的内容和训练过的文本向量之间的关系,并经相加归一层规范的输出作
为解码多头注意力机制层的查询权重Q矩阵,文档嵌入层将编码器输出矩阵划分为关键性
权重K矩阵和评估权重V矩阵,输入解码多头注意力机制层进行多头计算,再次经过相加归
一层规范后输入解码前馈全连接神经网络将其中多个神经元联接成一个神经元输出,最后
经过相加归一层规范后输出解码矩阵;
[0085] S606将解码矩阵输入全连接层进行分类,分类后将每个词的概率输入到归一层Softmax,归一层Softmax通过归一化指数函数归一化每个词的概率生成概率矩阵;
[0086] S607以概率矩阵与代码的提交注释的均方误差为损失函数返回S601训练深度学习框架,以均方误差最小的深度学习框架为提交注释预测模型。
[0087] 在本发明实施例中,本发明的相加归一层将编码器输出矩阵Z与直连的文本向量X相加归一化,文本向量X直连是为了缓解神经网络中的梯度消失、梯度爆炸问题,归一化是
为了将数据限制在一定范围,消除神经网络训练过程中的分布偏移,维护神经网络的稳定
性。
[0088] 优选地,所述S602中所述词向量模型采用Google发布的预训练BERT中文词向是模型。
[0089] 优选地,所述S402中获取模型的评价指标F1-Score的方法为:
[0090] (1)先通过如下公式计算模型的精确率:
[0091]
[0092] (6)再通过如下公式计算模型的召回率:
[0093]
[0094] (7)然后通过计算精确率和召回率的调和平均获取模型的评价指标:
[0095]
[0096] (4)选取模型的评价指标拟合参数最大时对应的关键类预测初步模型为关键类预测模型。
[0097] 优选地,所述归一化指数函数为:
[0098]
[0099] 其中Z=(z1,z2,…,zn)是全连接层输出的每个词的概率,归一层Softmax将全连接层输出的每个词的概率Zj的范围归一化到[0,1]之间,且当前输出每个词的概率相加为1。
[0100] 优选地,所述目标函数为:
[0101] MSE=(θ1-θ2)2
[0102] 其中,θ1=(x1,x2,…,xn)是归一层softmax输出的产生每个词的概率,θ2是S50获取的代码更改内容的代码更改关键类的每个词的概率矩阵。
[0103] 相同或相似的标号对应相同或相似的部件;
[0104] 附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
[0105] 显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可
以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本
发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求
的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈