一种利用模型驱动和深度神经网络相结合的代码生成方法技术

技术编号:31628694 阅读:14 留言:0更新日期:2021-12-29 19:06
一种利用模型驱动和深度神经网络相结合的代码生成方法,涉及一种代码生成方法。所述方法包括如下步骤:使用活动图对目标需求建模后,自动生成逻辑结构代码;利用训练好的深度神经网络模型完成自然语言需求描述到具体功能代码的生成。本发明专利技术依靠两种代码生成各自的优点,弥补对方的不足,即利用模型驱动解决基于自然语言的代码生成中的长距离依赖和代码粒度较小的问题;又基于自然语言的生成解决模型驱动代码生成中代码细节信息不丰富的问题,对功能复杂的代码既可以保证逻辑的正确性以及长结构的正确性,又可以一定程度保证代码细节的正确性。节的正确性。节的正确性。

【技术实现步骤摘要】
一种利用模型驱动和深度神经网络相结合的代码生成方法


[0001]本专利技术涉及一种代码生成方法,尤其是一种利用模型驱动和深度神经网络相结合的代码生成方法。

技术介绍

[0002]开发软件产品需要开发人员对所用到的编程语言十分熟悉。快速学习掌握一个新的编程语言时间成本很高、难度也比较大。
[0003]目前,代码自动生成的研究领域有两种常见的研究方向:
[0004]1)为了减轻开发人员的负担,利用模型驱动开发工具生成代码。其需要复杂细致的建模才能生成功能复杂的代码,这是一个非常耗时的工作;
[0005]2)利用自然描述的需求生成具体的代码片段。其难以生成结构复杂的代码,尤其是长结构依赖关系的获取;对代码结构的考虑不充分,仅有对AST树局部父子节点信息的考虑;当前生成代码粒度很小,大多数为单行python代码。
[0006]现有技术中对两种方法的研究一直是并行、分开的,但是它们之间存在一定的联系。可以利用模型驱动方法生成代码框架,关注代码宏观的逻辑结构,解决基于自然语言的代码生成中的长距离依赖和代码粒度较小的问题;利用自然语言需求描述生成代码片段,关注代码微观的功能,解决模型驱动代码生成中代码细节信息不丰富的问题。由此可以看出,为了尽可能达到生成功能复杂且可用代码的目标,将二种方法联合起来综合利用,是一个可行的研究思路和方法。

技术实现思路

[0007]为解决
技术介绍
中存在的问题,本专利技术提供一种利用模型驱动和深度神经网络相结合的代码生成方法。
[0008]实现上述目的,本专利技术采取下述技术方案:一种利用模型驱动和深度神经网络相结合的代码生成方法,所述方法是通过可视化建模工具、深度神经网络模型以及代码验证器完成的,所述方法包括如下步骤:
[0009]S1:使用活动图对目标需求建模后,自动生成逻辑结构代码;
[0010]S2:利用训练好的深度神经网络模型完成自然语言需求描述到具体功能代码的生成。
[0011]与现有技术相比,本专利技术的有益效果是:
[0012]本专利技术依靠两种代码生成各自的优点,弥补对方的不足,即利用模型驱动解决基于自然语言的代码生成中的长距离依赖和代码粒度较小的问题;又基于自然语言的生成解决模型驱动代码生成中代码细节信息不丰富的问题,对功能复杂的代码既可以保证逻辑的正确性以及长结构的正确性,又可以一定程度保证代码细节的正确性。
附图说明
[0013]图1是本专利技术总体构建及工作流程的示意图;
[0014]图2是深度神经网络模型训练的流程图;
[0015]图3是模型驱动逻辑代码生成的流程图;
[0016]图4是利用已训练模型预测生成代码的流程图。
具体实施方式
[0017]下面将结合本专利技术实施例中的附图,对本专利技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是专利技术的一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0018]一种利用模型驱动和深度神经网络相结合的代码生成方法,所述方法是通过可视化建模工具、深度神经网络模型以及代码验证器完成的,
[0019]所述可视化建模工具用于对活动图进行建模以及绘制可视化的代码逻辑。
[0020]所述深度神经网络模型用于对自然语言需求进行转换,并生成需求对应的预测代码片段。
[0021]所述代码验证器用于对所述方法生成的代码进行语法以及功能正确性验证。
[0022]所述方法包括如下步骤:
[0023]S1:使用活动图对目标需求建模后,自动生成逻辑结构代码;
[0024]S101:根据训练集中的自然语言及其对应的代码片段,利用数据集的样本训练深度神经网络模型;深度网络模型采用Transformer模型,其整体架构是Encoder

Deocer架构。Transformer模型是一种只基于attention结构来处理序列的模,它是Vaswani A,Shazeer N,Parmar N,et al.等人在Proceedings of the 31st International Conference on Neural Information Processing Systems.(2017:6000

6010)中发表的Attention is all you need中提出的。
[0025]S10101:对训练集中给定的代码片段进行向量化表示,利用解析工具将其对应的代码解析成抽象语法树;
[0026]S10102:依据编程语言的语法规则和action转换规则将AST转换成action序列,并将action序列向量化表示;
[0027]S10103:将向量化的自然语言描述和action序列送入深度神经网络模型进行训练。
[0028]S102:开发简易可视化活动图建模工具,给出建模语言的形式化表达,依据代码生成规则,利用代码生成算法,将活动图中的节点与代码之间形成对应关系,将代码语句合并成完整的逻辑框架代码,绘制程序的活动图;
[0029]S10201:定义活动图的图元表示形式和图元间next关系;
[0030]S10202:基于定义的活动图的图元表示和连接关系,开发具有拖拽绘图功能的简易可视化建模工具;
[0031]S10203:利用可视化建模工具,绘制活动图表达程序逻辑;
[0032]S10204:通过遍历活动图中的节点以及各节点之间的执行顺序,生成代码框架的
执行逻辑。
[0033]采用文浩等人在软件工程(2021,24(08):34

38+30)发表的基于活动图与顺序图的自动代码生成中提出的活动图环识别算法和活动图代码生成算法。
[0034]S103:在所需的代码行输入自然语言的需求描述N_input,提交到训练好的深度神经网络模型。
[0035]S2:利用训练好的深度神经网络模型完成自然语言需求描述到具体功能代码的生成。
[0036]S201:利用深度神经网络模型预测生成代码,将预测代码填入需求位置,进而形成最终完整的代码需求;
[0037]S20101:对S103提交的自然语言描述N_input相似的自然语言片段N_L以及N_S;N_L句法级token序列上获取的编辑距离相似度Lexical similarity最大值自然语言片段,N_S是根据语义向量选择的余弦相似度Semantic similarity最大值自然语言片段:
[0038][0039][0040]利用N_L、N_S作为对N_input的增强数据,共同送入深度神经网络模型预测action序列;
[0041]S20102:将action序列映射回抽象语法树,利用解析工具将抽象语法树还原成代码,并将其加入到原来的自然语言描述位置。
[0042]S202:将完本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种利用模型驱动和深度神经网络相结合的代码生成方法,所述方法是通过可视化建模工具、深度神经网络模型以及代码验证器完成的,其特征在于:所述方法包括如下步骤:S1:使用活动图对目标需求建模后,自动生成逻辑结构代码;S2:利用训练好的深度神经网络模型完成自然语言需求描述到具体功能代码的生成。2.根据权利要求1所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述S1包括如下步骤:S101:利用数据集的样本训练深度神经网络模型;S102:绘制程序的活动图;S103:在所需的代码行输入自然语言的需求描述N_input,提交到训练好的深度神经网络模型。3.根据权利要求1或2所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述S2包括如下步骤:S201:利用深度神经网络模型预测生成代码,将预测代码填入需求位置,进而形成最终完整的代码需求;S202:将完整代码送入代码验证器。4.根据权利要求3所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述可视化建模工具用于对活动图进行建模以及绘制可视化的代码逻辑。5.根据权利要求3所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述深度神经网络模型用于对自然语言需求进行转换,并生成需求对应的预测代码片段。6.根据权利要求3所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述代码验证器用于对所述方法生成的代码进行语法以及功能正确性验证。7.根据权利要求4或5或6所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述S101包括如下步骤:S10101:对训练集中给定的代码片段进行向量化表示,利用解析工具将其对应的代码解析成抽象语法树;S10102:将AST转换成action序列,...

【专利技术属性】
技术研发人员:王甜甜杨博苏小红
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:

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

1