CN113849162B - 一种利用模型驱动和深度神经网络相结合的代码生成方法 - Google Patents
一种利用模型驱动和深度神经网络相结合的代码生成方法 Download PDFInfo
- Publication number
- CN113849162B CN113849162B CN202111142407.4A CN202111142407A CN113849162B CN 113849162 B CN113849162 B CN 113849162B CN 202111142407 A CN202111142407 A CN 202111142407A CN 113849162 B CN113849162 B CN 113849162B
- Authority
- CN
- China
- Prior art keywords
- code
- deep neural
- neural network
- natural language
- codes
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 13
- 238000003062 neural network model Methods 0.000 claims abstract description 20
- 230000000694 effects Effects 0.000 claims abstract description 14
- 238000010586 diagram Methods 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 claims abstract description 9
- 230000000007 visual effect Effects 0.000 claims description 12
- 238000012360 testing method Methods 0.000 claims description 9
- 238000012549 training Methods 0.000 claims description 8
- 239000012634 fragment Substances 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims 1
- 230000007547 defect Effects 0.000 abstract description 2
- 238000011160 research Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target 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最大值自然语言片段:
利用N_L、N_S作为对N_input的增强数据,共同送入深度神经网络模型预测action序列;
S20102:将action序列映射回抽象语法树,利用解析工具将抽象语法树还原成代码,并将其加入到原来的自然语言描述位置。
S202:将完整代码送入代码验证器,对代码的词法、语法以及语义进行正确性度量;利用提供的语法分析器分析语法正确性,利用测试用例通过率验证功能正确性。
S20201:将最终生成的代码进行词法分析,测试生成代码的词法正确性。采用BLUE值进行度量,最BLEU作为词汇相似度的度量结果;
S20202:静态检查生成的代码,以检查其语法是否符合可执行标准。
S20203:利用测试用例通过率验证功能正确性,将最终生成的代码,根据预先确定的测试用例,计算测试用例通过率Pt:
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同条件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (6)
1.一种利用模型驱动和深度神经网络相结合的代码生成方法,所述方法是通过可视化建模工具、深度神经网络模型以及代码验证器完成的,
其特征在于:所述方法包括如下步骤:
S1:使用活动图对目标需求建模后,自动生成逻辑结构代码;
S101:利用数据集的样本训练深度神经网络模型;
S102:绘制程序的活动图;
S103:在所需的代码行输入自然语言的需求描述N_input,提交到训练好的深度神经网络模型;
S2:利用训练好的深度神经网络模型完成自然语言需求描述到具体功能代码的生成;
S201:利用深度神经网络模型预测生成代码,将预测代码填入需求位置,进而形成最终完整的代码需求;
S20101:对S103提交的自然语言描述N_input相似的自然语言片段N_L以及N_S;N_L句法级token序列上获取的编辑距离相似度Lexicalsimilarity最大值自然语言片段,N_S是根据语义向量选择的余弦相似度Semantic similarity最大值自然语言片段:
利用N_L、N_S作为对N_input的增强数据,共同送入深度神经网络模型预测action序列;
S20102:将action序列映射回抽象语法树,利用解析工具将抽象语法树还原成代码,并将其加入到原来的自然语言描述位置;
S202:将完整代码送入代码验证器;
S20201:将最终生成的代码进行词法分析,测试生成代码的词法正确性;
S20202:静态检查生成的代码,以检查其语法是否符合可执行标准;
S20203:利用测试用例通过率验证功能正确性,将最终生成的代码,根据预先确定的测试用例,计算测试用例通过率Pt:
2.根据权利要求1所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述可视化建模工具用于对活动图进行建模以及绘制可视化的代码逻辑。
3.根据权利要求2所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述深度神经网络模型用于对自然语言需求进行转换,并生成需求对应的预测代码片段。
4.根据权利要求3所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述代码验证器用于对所述方法生成的代码进行语法以及功能正确性验证。
5.根据权利要求4所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述S101包括如下步骤:
S10101:对训练集中给定的代码片段进行向量化表示,利用解析工具将其对应的代码解析成抽象语法树;
S10102:将AST转换成action序列,并将action序列向量化表示;
S10103:将向量化的自然语言描述和action序列送入深度神经网络模型进行训练。
6.根据权利要求4或5所述的一种利用模型驱动和深度神经网络相结合的代码生成方法,其特征在于:所述S102包括如下步骤:
S10201:定义活动图的图元表示形式和图元间next关系;
S10202:开发具有拖拽绘图功能的简易可视化建模工具;
S10203:利用可视化建模工具,绘制活动图表达程序逻辑;
S10204:通过遍历活动图中的节点以及各节点之间的执行顺序,生成代码框架的执行逻辑。
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 CN113849162A (zh) | 2021-12-28 |
CN113849162B true 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) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114895876B (zh) * | 2022-05-27 | 2023-05-23 | 无锡雪浪数制科技有限公司 | 一种基于模型驱动可视化开发工业系统 |
CN116185373B (zh) * | 2023-04-26 | 2023-09-01 | 上海金仕达软件科技股份有限公司 | 基于静态代码分析的微服务基础设施生成方法 |
CN116931911A (zh) * | 2023-06-15 | 2023-10-24 | 明物数智科技研究院(南京)有限公司 | 一种基于aigc的智能低代码应用开发平台及开发方法 |
CN117055845B (zh) * | 2023-10-13 | 2023-12-29 | 边无际(北京)科技有限公司 | 一种基于大语言模型的物联网智能应用方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110018820A (zh) * | 2019-04-08 | 2019-07-16 | 浙江大学滨海产业技术研究院 | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 |
CN110489110A (zh) * | 2019-08-20 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 一种基于深度学习的代码生成方法及装置 |
CN110489102A (zh) * | 2019-07-29 | 2019-11-22 | 东北大学 | 一种从自然语言自动生成Python代码的方法 |
CN110673840A (zh) * | 2019-09-23 | 2020-01-10 | 山东师范大学 | 一种基于标签图嵌入技术的自动代码生成方法及系统 |
-
2021
- 2021-09-28 CN CN202111142407.4A patent/CN113849162B/zh active Active
Patent Citations (4)
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 | 山东师范大学 | 一种基于标签图嵌入技术的自动代码生成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113849162A (zh) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113849162B (zh) | 一种利用模型驱动和深度神经网络相结合的代码生成方法 | |
CN110673840B (zh) | 一种基于标签图嵌入技术的自动代码生成方法及系统 | |
JP2022177242A (ja) | テキスト認識モデルの訓練方法、テキスト認識方法及び装置 | |
CN112507628A (zh) | 基于深度双向语言模型的风险预测方法、装置和电子设备 | |
CN112270547A (zh) | 基于特征构造的金融风险评估方法、装置和电子设备 | |
US11016740B2 (en) | Systems and methods for virtual programming by artificial intelligence | |
US20210397416A1 (en) | Generating a Pseudo-Code from a Text Summarization Based on a Convolutional Neural Network | |
US11574250B2 (en) | Classification of erroneous cell data | |
CN115238045B (zh) | 一种生成式事件论元抽取方法、系统及存储介质 | |
CN115617694B (zh) | 基于信息融合的软件缺陷预测方法、系统、设备及介质 | |
US20230297784A1 (en) | Automated decision modelling from text | |
CN113868368A (zh) | 用于信息处理的方法、电子设备和计算机程序产品 | |
EP4195092A1 (en) | Text processing method and apparatus, system, device, and storage medium | |
US12038955B2 (en) | Method for generating query statement, electronic device and storage medium | |
CN114547619A (zh) | 一种基于树的漏洞修复系统及修复方法 | |
CN117891458A (zh) | 一种sql语句生成方法、装置、设备及存储介质 | |
Elghondakly et al. | A comprehensive study for software testing and test cases generation paradigms | |
CN114328956B (zh) | 文本信息的确定方法、装置、电子设备及存储介质 | |
CN110727428B (zh) | 一种转换业务逻辑层代码的方法、装置和电子设备 | |
CN114117445A (zh) | 漏洞分类方法、装置、设备及介质 | |
CN114444606A (zh) | 模型训练和数据分类方法及装置 | |
CN113849634A (zh) | 用于提升深度模型推荐方案可解释性的方法 | |
Jnanamurthy et al. | Formal specification at model-level of model-driven engineering using modelling techniques | |
CN118012781B (zh) | 模型训练方法与相关方法、装置、设备及存储介质 | |
US20230122093A1 (en) | Method for determining text topic, and electronic device |
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 |