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

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

Info

Publication number
CN113849162A
CN113849162A CN202111142407.4A CN202111142407A CN113849162A CN 113849162 A CN113849162 A CN 113849162A CN 202111142407 A CN202111142407 A CN 202111142407A CN 113849162 A CN113849162 A CN 113849162A
Authority
CN
China
Prior art keywords
code
deep neural
model
neural network
natural language
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
Application number
CN202111142407.4A
Other languages
English (en)
Other versions
CN113849162B (zh
Inventor
王甜甜
杨博
苏小红
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Institute of Technology
Original Assignee
Harbin Institute of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN202111142407.4A priority Critical patent/CN113849162B/zh
Publication of CN113849162A publication Critical patent/CN113849162A/zh
Application granted granted Critical
Publication of CN113849162B publication Critical patent/CN113849162B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

一种利用模型驱动和深度神经网络相结合的代码生成方法
技术领域
本发明涉及一种代码生成方法,尤其是一种利用模型驱动和深度神经网络相结合的代码生成方法。
背景技术
开发软件产品需要开发人员对所用到的编程语言十分熟悉。快速学习掌握一个新的编程语言时间成本很高、难度也比较大。
目前,代码自动生成的研究领域有两种常见的研究方向:
1)为了减轻开发人员的负担,利用模型驱动开发工具生成代码。其需要复杂细致的建模才能生成功能复杂的代码,这是一个非常耗时的工作;
2)利用自然描述的需求生成具体的代码片段。其难以生成结构复杂的代码,尤其是长结构依赖关系的获取;对代码结构的考虑不充分,仅有对AST树局部父子节点信息的考虑;当前生成代码粒度很小,大多数为单行python代码。
现有技术中对两种方法的研究一直是并行、分开的,但是它们之间存在一定的联系。可以利用模型驱动方法生成代码框架,关注代码宏观的逻辑结构,解决基于自然语言的代码生成中的长距离依赖和代码粒度较小的问题;利用自然语言需求描述生成代码片段,关注代码微观的功能,解决模型驱动代码生成中代码细节信息不丰富的问题。由此可以看出,为了尽可能达到生成功能复杂且可用代码的目标,将二种方法联合起来综合利用,是一个可行的研究思路和方法。
发明内容
为解决背景技术中存在的问题,本发明提供一种利用模型驱动和深度神经网络相结合的代码生成方法。
实现上述目的,本发明采取下述技术方案:一种利用模型驱动和深度神经网络相结合的代码生成方法,所述方法是通过可视化建模工具、深度神经网络模型以及代码验证器完成的,所述方法包括如下步骤:
S1:使用活动图对目标需求建模后,自动生成逻辑结构代码;
S2:利用训练好的深度神经网络模型完成自然语言需求描述到具体功能代码的生成。
与现有技术相比,本发明的有益效果是:
本发明依靠两种代码生成各自的优点,弥补对方的不足,即利用模型驱动解决基于自然语言的代码生成中的长距离依赖和代码粒度较小的问题;又基于自然语言的生成解决模型驱动代码生成中代码细节信息不丰富的问题,对功能复杂的代码既可以保证逻辑的正确性以及长结构的正确性,又可以一定程度保证代码细节的正确性。
附图说明
图1是本发明总体构建及工作流程的示意图;
图2是深度神经网络模型训练的流程图;
图3是模型驱动逻辑代码生成的流程图;
图4是利用已训练模型预测生成代码的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种利用模型驱动和深度神经网络相结合的代码生成方法,所述方法是通过可视化建模工具、深度神经网络模型以及代码验证器完成的,
所述可视化建模工具用于对活动图进行建模以及绘制可视化的代码逻辑。
所述深度神经网络模型用于对自然语言需求进行转换,并生成需求对应的预测代码片段。
所述代码验证器用于对所述方法生成的代码进行语法以及功能正确性验证。
所述方法包括如下步骤:
S1:使用活动图对目标需求建模后,自动生成逻辑结构代码;
S101:根据训练集中的自然语言及其对应的代码片段,利用数据集的样本训练深度神经网络模型;深度网络模型采用Transformer模型,其整体架构是Encoder-Deocer架构。Transformer模型是一种只基于attention结构来处理序列的模,它是Vaswani A,Shazeer N,Parmar N,et al.等人在Proceedings of the 31st InternationalConference on Neural Information Processing Systems.(2017:6000-6010)中发表的Attention is all you need中提出的。
S10101:对训练集中给定的代码片段进行向量化表示,利用解析工具将其对应的代码解析成抽象语法树;
S10102:依据编程语言的语法规则和action转换规则将AST转换成action序列,并将action序列向量化表示;
S10103:将向量化的自然语言描述和action序列送入深度神经网络模型进行训练。
S102:开发简易可视化活动图建模工具,给出建模语言的形式化表达,依据代码生成规则,利用代码生成算法,将活动图中的节点与代码之间形成对应关系,将代码语句合并成完整的逻辑框架代码,绘制程序的活动图;
S10201:定义活动图的图元表示形式和图元间next关系;
S10202:基于定义的活动图的图元表示和连接关系,开发具有拖拽绘图功能的简易可视化建模工具;
S10203:利用可视化建模工具,绘制活动图表达程序逻辑;
S10204:通过遍历活动图中的节点以及各节点之间的执行顺序,生成代码框架的执行逻辑。
采用文浩等人在软件工程(2021,24(08):34-38+30)发表的基于活动图与顺序图的自动代码生成中提出的活动图环识别算法和活动图代码生成算法。
S103:在所需的代码行输入自然语言的需求描述N_input,提交到训练好的深度神经网络模型。
S2:利用训练好的深度神经网络模型完成自然语言需求描述到具体功能代码的生成。
S201:利用深度神经网络模型预测生成代码,将预测代码填入需求位置,进而形成最终完整的代码需求;
S20101:对S103提交的自然语言描述N_input相似的自然语言片段N_L以及N_S;N_L句法级token序列上获取的编辑距离相似度Lexical similarity最大值自然语言片段,N_S是根据语义向量选择的余弦相似度Semantic similarity最大值自然语言片段:
Figure BDA0003284454880000041
Figure BDA0003284454880000051
利用N_L、N_S作为对N_input的增强数据,共同送入深度神经网络模型预测action序列;
S20102:将action序列映射回抽象语法树,利用解析工具将抽象语法树还原成代码,并将其加入到原来的自然语言描述位置。
S202:将完整代码送入代码验证器,对代码的词法、语法以及语义进行正确性度量;利用提供的语法分析器分析语法正确性,利用测试用例通过率验证功能正确性。
S20201:将最终生成的代码进行词法分析,测试生成代码的词法正确性。采用BLUE值进行度量,最BLEU作为词汇相似度的度量结果;
S20202:静态检查生成的代码,以检查其语法是否符合可执行标准。
S20203:利用测试用例通过率验证功能正确性,将最终生成的代码,根据预先确定的测试用例,计算测试用例通过率Pt:
Figure BDA0003284454880000052
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同条件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

Claims (10)

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序列,并将action序列向量化表示;
S10103:将向量化的自然语言描述和action序列送入深度神经网络模型进行训练。
8.根据权利要求4或5或6所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述S102包括如下步骤:
S10201:定义活动图的图元表示形式和图元间next关系;
S10202:开发具有拖拽绘图功能的简易可视化建模工具;
S10203:利用可视化建模工具,绘制活动图表达程序逻辑;
S10204:通过遍历活动图中的节点以及各节点之间的执行顺序,生成代码框架的执行逻辑。
9.根据权利要求7所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述S201包括如下步骤:
S20101:对S103提交的自然语言描述N_input相似的自然语言片段N_L以及N_S;N_L句法级token序列上获取的编辑距离相似度Lexical similarity最大值自然语言片段,N_S是根据语义向量选择的余弦相似度Semantic similarity最大值自然语言片段:
Figure FDA0003284454870000031
Figure FDA0003284454870000032
利用N_L、N_S作为对N_input的增强数据,共同送入深度神经网络模型预测action序列;
S20102:将action序列映射回抽象语法树,利用解析工具将抽象语法树还原成代码,并将其加入到原来的自然语言描述位置。
10.根据权利要求9所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述S202包括如下步骤:
S20201:将最终生成的代码进行词法分析,测试生成代码的词法正确性;
S20202:静态检查生成的代码,以检查其语法是否符合可执行标准;
S20203:利用测试用例通过率验证功能正确性,将最终生成的代码,根据预先确定的测试用例,计算测试用例通过率Pt:
Figure FDA0003284454870000033
CN202111142407.4A 2021-09-28 2021-09-28 一种利用模型驱动和深度神经网络相结合的代码生成方法 Active CN113849162B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111142407.4A CN113849162B (zh) 2021-09-28 2021-09-28 一种利用模型驱动和深度神经网络相结合的代码生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111142407.4A CN113849162B (zh) 2021-09-28 2021-09-28 一种利用模型驱动和深度神经网络相结合的代码生成方法

Publications (2)

Publication Number Publication Date
CN113849162A true CN113849162A (zh) 2021-12-28
CN113849162B CN113849162B (zh) 2024-04-02

Family

ID=78980779

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111142407.4A Active CN113849162B (zh) 2021-09-28 2021-09-28 一种利用模型驱动和深度神经网络相结合的代码生成方法

Country Status (1)

Country Link
CN (1) CN113849162B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114895876A (zh) * 2022-05-27 2022-08-12 无锡雪浪数制科技有限公司 一种基于模型驱动可视化开发工业系统
CN116185373A (zh) * 2023-04-26 2023-05-30 上海金仕达软件科技股份有限公司 基于静态代码分析的微服务基础设施生成方法
CN116931911A (zh) * 2023-06-15 2023-10-24 明物数智科技研究院(南京)有限公司 一种基于aigc的智能低代码应用开发平台及开发方法
CN117055845A (zh) * 2023-10-13 2023-11-14 边无际(北京)科技有限公司 一种基于大语言模型的物联网智能应用方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018820A (zh) * 2019-04-08 2019-07-16 浙江大学滨海产业技术研究院 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法
CN110489102A (zh) * 2019-07-29 2019-11-22 东北大学 一种从自然语言自动生成Python代码的方法
CN110489110A (zh) * 2019-08-20 2019-11-22 腾讯科技(深圳)有限公司 一种基于深度学习的代码生成方法及装置
CN110673840A (zh) * 2019-09-23 2020-01-10 山东师范大学 一种基于标签图嵌入技术的自动代码生成方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018820A (zh) * 2019-04-08 2019-07-16 浙江大学滨海产业技术研究院 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法
CN110489102A (zh) * 2019-07-29 2019-11-22 东北大学 一种从自然语言自动生成Python代码的方法
CN110489110A (zh) * 2019-08-20 2019-11-22 腾讯科技(深圳)有限公司 一种基于深度学习的代码生成方法及装置
CN110673840A (zh) * 2019-09-23 2020-01-10 山东师范大学 一种基于标签图嵌入技术的自动代码生成方法及系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114895876A (zh) * 2022-05-27 2022-08-12 无锡雪浪数制科技有限公司 一种基于模型驱动可视化开发工业系统
CN114895876B (zh) * 2022-05-27 2023-05-23 无锡雪浪数制科技有限公司 一种基于模型驱动可视化开发工业系统
CN116185373A (zh) * 2023-04-26 2023-05-30 上海金仕达软件科技股份有限公司 基于静态代码分析的微服务基础设施生成方法
CN116185373B (zh) * 2023-04-26 2023-09-01 上海金仕达软件科技股份有限公司 基于静态代码分析的微服务基础设施生成方法
CN116931911A (zh) * 2023-06-15 2023-10-24 明物数智科技研究院(南京)有限公司 一种基于aigc的智能低代码应用开发平台及开发方法
CN117055845A (zh) * 2023-10-13 2023-11-14 边无际(北京)科技有限公司 一种基于大语言模型的物联网智能应用方法及装置
CN117055845B (zh) * 2023-10-13 2023-12-29 边无际(北京)科技有限公司 一种基于大语言模型的物联网智能应用方法及装置

Also Published As

Publication number Publication date
CN113849162B (zh) 2024-04-02

Similar Documents

Publication Publication Date Title
US11099237B2 (en) Test prioritization and dynamic test case sequencing
US11221832B2 (en) Pruning engine
CN113849162B (zh) 一种利用模型驱动和深度神经网络相结合的代码生成方法
CN111414380B (zh) 一种中文数据库sql语句生成方法、设备及存储介质
CN112507628B (zh) 基于深度双向语言模型的风险预测方法、装置和电子设备
US20210397416A1 (en) Generating a Pseudo-Code from a Text Summarization Based on a Convolutional Neural Network
US20230252354A1 (en) Method for pre-training language model
CN115238045B (zh) 一种生成式事件论元抽取方法、系统及存储介质
US20230078134A1 (en) Classification of erroneous cell data
US11610134B2 (en) Techniques for defining and executing program code specifying neural network architectures
CN117891458A (zh) 一种sql语句生成方法、装置、设备及存储介质
CN117312564A (zh) 文本分类方法、分类装置、电子设备和存储介质
US20230297784A1 (en) Automated decision modelling from text
CN114328956B (zh) 文本信息的确定方法、装置、电子设备及存储介质
Amit et al. Model-informed LIME Extension for Business Process Explainability.
CN115186738A (zh) 模型训练方法、装置和存储介质
CN110727428B (zh) 一种转换业务逻辑层代码的方法、装置和电子设备
CN114117445A (zh) 漏洞分类方法、装置、设备及介质
CN108492168B (zh) 财税行业审核用仿真方法
CN110928535A (zh) 衍生变量部署方法、装置、设备及可读存储介质
Berti et al. Evaluating Large Language Models in Process Mining: Capabilities, Benchmarks, Evaluation Strategies, and Future Challenges
US20230267066A1 (en) Software anomaly detection
Yang et al. Graph embedding code prediction model integrating semantic features
Anbarasu et al. A survey on test case generation and extraction of reliable test cases
CN116595538A (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