当前位置: 首页 > 专利查询>中山大学专利>正文

模型训练方法、代码提交注释生成方法、装置及电子设备制造方法及图纸

技术编号:38815400 阅读:11 留言:0更新日期:2023-09-15 19:54
本申请公开一种模型训练方法、代码提交注释生成方法、装置及电子设备,其中的模型训练方法从代码更改文本中提取代码的语义信息,并从基于抽象语法树的代码编辑序列中提取结构信息来捕捉代码的更改意图,模型采用双编码器结构,分别处理代码更改文本和代码编辑序列,训练得到的预测模型能够生成更高质量、准确度更高、可读性更强的代码提交注释。可读性更强的代码提交注释。可读性更强的代码提交注释。

【技术实现步骤摘要】
模型训练方法、代码提交注释生成方法、装置及电子设备


[0001]本专利技术属于数据编译
,具体涉及一种模型训练方法、代码提交注释生成方法、装置及电子设备。

技术介绍

[0002]代码提交注释是记录代码更改信息的描述性文本,开发人员在代码仓库中提交代码更改时往往需要提供一条简明扼要的代码提交注释,说明所做更改的内容和目的,便于其他人员理解和追踪代码的演化过程。为了提高开发效率,已实现了代码提交注释生成的自动化,现有的自动化生成方法尝试通过代码的语义信息和结构信息来生成注释,尤其是利用机器学习训练模型来理解上下文,但这些方法仍存在不少问题,例如无法准确反映开发人员的意图和更改思路;会忽略代码更改的动态过程,将其简化为两个文本之间的简单替换;无法捕捉到代码更改的顺序和过程等。

技术实现思路

[0003]基于此,本专利技术旨在提供一种模型训练方法、代码提交注释生成方法、装置及电子设备,通过代码编辑序列反映开发人员更改代码的过程,提高代码提交注释自动化生成的准确性和可读性。
[0004]第一方面,本专利技术提供一种模型训练方法,该方法训练得到的模型用于生成代码提交注释,包括第一编码器、第二编码器和解码器,方法包括:
[0005]获取代码更改文本和代码编辑序列,代码编辑序列表征代码结构信息;
[0006]把代码更改文本和代码编辑序列分别输入第一编码器和第二编码器进行特征计算;
[0007]解码器根据第一编码器和第二编码器的输出生成单词序列组成代码提交注释;
[0008]利用优化算法优化模型参数得到用于生成代码提交注释的预测模型。
[0009]进一步地,第一编码器对代码更改文本特征计算包括:
[0010]把代码更改文本转换为词向量;
[0011]利用注意力层和前馈层对词向量特征提取;
[0012]利用归一化层对注意力层和前馈层的输出归一化得到代码语义信息矩阵。
[0013]进一步地,利用归一化层对注意力层和前馈层的输出归一化得到代码语义信息矩阵包括:
[0014]利用第一归一化层对注意力层的输出归一化为特征向量m
i
,特征向量m
i
定义为m
i
=Norm(r
i
+MulAttn(r
i
)),Norm(
·
)表示归一化运算,r
i
表示第i个单词的词向量,MulAttn(
·
)表示注意力层的输出;
[0015]利用第二归一化层对特征向量m
i
和前馈层的输出归一化为特征向量c
i
,特征向量c
i
定义为c
i
=Norm(m
i
+FeedForward(m
i
)),FeedForward(
·
)表示前馈层的输出;
[0016]i个单词的特征向量c
i
组成代码语义信息矩阵。
[0017]进一步地,第二编码器对代码编辑序列特征计算包括:
[0018]根据代码编辑序列生成表征代码结构信息的隐藏状态。
[0019]进一步地,第一编码器为BERT编码器。
[0020]进一步地,第二编码器为GRU编码器。
[0021]进一步地,上述模型训练方法还包括:
[0022]把第一编码器和第二编码器的输出拼接为单一嵌入向量,单一嵌入向量作为解码器的输入。
[0023]进一步地,解码器生成单词序列组成代码提交注释包括:
[0024]根据第一编码器和第二编码器的输出,和,前序生成的预测单词,计算当前单词的概率分布;
[0025]全部单词的概率分布计算完成后,生成单词序列组成代码提交注释。
[0026]进一步地,解码器为Transformer解码器。
[0027]第二方面,本专利技术提供一种代码提交注释生成方法,包括:
[0028]获取新代码和旧代码;
[0029]根据新代码和旧代码计算代码更改文本;
[0030]分别提取新代码和旧代码的抽象语法树,根据新代码的抽象语法树和旧代码的抽象语法树计算代码编辑序列;
[0031]把代码更改文本和代码编辑序列输入上述的模型训练方法得到的预测模型,生成代码提交注释。
[0032]进一步地,代码编辑序列的计算包括:
[0033]利用Myers算法计算新代码的抽象语法树和旧代码的抽象语法树之间的编辑距离,生成代码编辑序列。
[0034]第三方面,本专利技术提供一种模型训练装置,包括:
[0035]代码数据获取单元,用于获取代码更改文本和代码编辑序列,代码编辑序列表征代码结构信息;
[0036]编码单元,包括第一编码器和第二编码器,用于对代码更改文本和代码编辑序列进行特征计算;
[0037]解码单元,包括解码器,用于根据第一编码器和第二编码器的输出生成单词序列组成代码提交注释;
[0038]模型优化单元,用于利用优化算法优化模型参数得到用于生成代码提交注释的预测模型。
[0039]进一步地,第一编码器用于对代码更改文本特征计算时,用于:
[0040]把代码更改文本转换为词向量;
[0041]利用注意力层和前馈层对词向量特征提取;
[0042]利用归一化层对注意力层和前馈层的输出归一化得到代码语义信息矩阵。
[0043]进一步地,第二编码器用于对代码编辑序列特征计算时,用于:
[0044]根据代码编辑序列生成表征代码结构信息的隐藏状态。
[0045]进一步地,解码器用于生成单词序列组成代码提交注释时,用于:
[0046]根据第一编码器和第二编码器的输出,和,前序生成的预测单词,计算当前单词的
概率分布;
[0047]全部单词的概率分布计算完成后,生成单词序列组成代码提交注释。
[0048]第四方面,本专利技术提供一种代码提交注释生成装置,包括:
[0049]代码获取单元,用于获取新代码和旧代码;
[0050]文本计算单元,用于根据新代码和旧代码计算代码更改文本;
[0051]序列计算单元,用于分别提取新代码和旧代码的抽象语法树,根据新代码的抽象语法树和旧代码的抽象语法树计算代码编辑序列;
[0052]注释生成单元,用于利用第三方面的模型训练装置训练得到的预测模型处理代码更改文本和代码编辑序列,生成代码提交注释。
[0053]第五方面,本专利技术提供一种电子设备,包括:存储器和处理器;
[0054]所述存储器,用于存储程序;
[0055]所述处理器,用于调用存储于所述存储器中的程序,以执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的模型训练方法,或,执行上述第二方面实施例提供的代码提交注释生成方法。
[0056]第六方面,本专利技术还提供一种可读存本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种模型训练方法,其特征在于,所述方法训练得到的模型用于生成代码提交注释,包括第一编码器、第二编码器和解码器,所述方法包括:获取代码更改文本和代码编辑序列,所述代码编辑序列表征代码结构信息;把所述代码更改文本和代码编辑序列分别输入所述第一编码器和第二编码器进行特征计算;所述解码器根据所述第一编码器和第二编码器的输出生成单词序列组成代码提交注释;利用优化算法优化模型参数得到用于生成代码提交注释的预测模型。2.根据权利要求1所述的模型训练方法,其特征在于,所述第一编码器对所述代码更改文本进行特征计算包括:把所述代码更改文本转换为词向量;利用注意力层和前馈层对所述词向量特征提取;利用归一化层对所述注意力层和前馈层的输出归一化得到代码语义信息矩阵。3.根据权利要求2所述的模型训练方法,其特征在于,所述利用归一化层对注意力层和前馈层的输出归一化得到代码语义信息矩阵包括:利用第一归一化层对注意力层的输出归一化为特征向量m
i
,所述特征向量m
i
定义为m
i
=Norm(r
i
+MulAttn(r
i
)),Norm(
·
)表示归一化运算,r
i
表示第i个单词的词向量,MulAttn(
·
)表示注意力层的输出;利用第二归一化层对所述特征向量m
i
和前馈层的输出归一化为特征向量c
i
,所述特征向量c
i
定义为c
i
=Norm(m
i
+FeedForward(m
i
)),FeedForward(
·
)表示前馈层的输出;i个单词的特征向量c
i
组成代码语义信息矩阵。4.根据权利要求1所述的模型训练方法,其特征在于,所述第二编码器对代码编辑序列特征计算包括:根据所述代码编辑序列生成表征代码结构信息的隐藏状态。5.根据权利要求1~3任一项所述的模型训练方法,其特征在于,所述第一编码器为BERT编码器。6.根据权利要求1所述的模型训练方法,其特征在于,所述第二编码器为GRU编码器。7.根据权利要求1所述的模型训练方法,其特征在于,所述模型训练方法还包括:把所述第一编码器和第二编码器的输出拼接为单一嵌入向量,所述单一嵌入向量作为解码器的输入。8.根据权利要求1所述的模型训练方法,其特征在于,所述解码器生成单词序列组成代码提交注释包括:根据所述第一编码器和第二编码器的输出,和,前序生成的预测单词,计算当前单词的概率分布;全部单词的概率分布计算完成后,生成单词序列组成代码提交注释。9.根据权利要求1或...

【专利技术属性】
技术研发人员:黄袁李阳姿陈湘萍郑子彬
申请(专利权)人:中山大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1