CN116909574A - 一种检索增强的结构化代码生成系统及方法 - Google Patents
一种检索增强的结构化代码生成系统及方法 Download PDFInfo
- Publication number
- CN116909574A CN116909574A CN202311154532.6A CN202311154532A CN116909574A CN 116909574 A CN116909574 A CN 116909574A CN 202311154532 A CN202311154532 A CN 202311154532A CN 116909574 A CN116909574 A CN 116909574A
- Authority
- CN
- China
- Prior art keywords
- code
- code generation
- natural language
- module
- retrieval
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000004927 fusion Effects 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 21
- 238000000605 extraction Methods 0.000 claims abstract description 14
- 230000006870 function Effects 0.000 claims abstract description 10
- 239000000284 extract Substances 0.000 claims abstract description 7
- 239000012634 fragment Substances 0.000 claims abstract description 7
- 239000013598 vector Substances 0.000 claims description 29
- 238000013528 artificial neural network Methods 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 5
- 230000002776 aggregation Effects 0.000 claims description 3
- 238000004220 aggregation Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000012549 training Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 238000003306 harvesting Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种检索增强的结构化代码生成系统及方法,该结构化代码生成系统包括检索前处理模块、结构信息提取模块和代码生成融合模块,所述检索前处理模块根据自然语言描述来检索到功能相关的代码片段;所述结构信息提取模块对所述检索前处理模块检索到的代码片段进行结构信息的提取;所述代码生成融合模块将输入的自然语言和代码片段进行融合,完成代码生成任务。本发明的有益效果是:本发明在不改变原有模型规模的条件下,增强其泛化性,提升代码生成的能力。
Description
技术领域
本发明涉及软件开发技术领域,尤其涉及一种检索增强的结构化代码生成系统及方法。
背景技术
程序作为人类与计算机沟通的桥梁,其编写方式自计算机诞生以来就不断迭代更新直至现在。软件开发人员在编写程序的过程中有两种情景最为常见,一是编写重复且技术含量较低的代码;二是通过查阅学习编写能够实现新功能的代码。事实上,这两种情形都能够通过智能化代码生成技术进行解决。智能化代码生成是指根据开发人员利用自然语言直接描述的程序功能,使用特定手段让机器自行生成对应功能的代码的过程。
代码生成早期的工作大多是基于专家编写的规则来实现的,这样的做法泛化性差,且耗费人力资源巨大,因此并没有得到广泛的传播与应用。随着机器学习和深度学习的发展,智能化代码生成应运而生。目前,使用神经网络来完成从自然语言到代码的转换已经成为了代码生成任务研究的一项基本范式,展现出了其可行性和有效性。预训练模型是对传统神经网络的又一次革新,采用在大规模无标注数据上进行预训练,再在下游任务的高质量数据集上进行调优,从而使得结果显著提高。然而目前的趋势是将模型的规模不断扩大,从而在原有任务上取得更加优异的效果,甚至收获更多不曾设想而涌现出的能力。尽管智能化代码生成领域的预训练模型已经取得了非常先进的性能,它们仍然面临着资源与性能之间权衡的问题。如何在现有的模型上进行改进取得接近更大模型的性能成为当前代码生成任务最严峻的挑战之一。
已有的智能化代码生成模型一般采用神经网络来学习自然语言描述到代码片段的映射,这样学习到的知识大多隐含在模型的参数中。虽然使用预训练-调优范式能够一定程度上让有限参数的模型学习到更多的知识并应用于下游任务,但是模型的参数量决定了其在代码生成任务上性能的上限。另一方面,预训练模型调优的过程资源消耗巨大。事实上,模型在调优完成后知识量随着参数的更新结束而固定。如果后续有新的知识补充进来,模型就需要再次调优更新参数从而学习到新的知识。对于代码更新速度快的情形,往往已有的训练好的代码生成模型无法对其进行快速适配,从而也很难获得模型性能的持续提高。
发明内容
本发明提供了一种检索增强的结构化代码生成系统,包括检索前处理模块、结构信息提取模块和代码生成融合模块,
所述检索前处理模块根据自然语言描述来检索到功能相关的代码片段;
所述结构信息提取模块对所述检索前处理模块检索到的代码片段进行结构信息的提取;
所述代码生成融合模块将输入的自然语言和代码片段进行融合,完成代码生成任务。
作为本发明的进一步改进,所述检索前处理模块通过代码检索方法和自然语言匹配方法检索到与输入自然语言最相近的多条候选代码作为检索结果。
作为本发明的进一步改进,所述代码检索方法采用CodeBERT模型,在获取到预训练好的CodeBERT模型后,将其在代码生成任务数据集上进行调优,使用调优后的CodeBERT模型可以对输入的自然语言描述和待检索数据库中的代码分别进行编码得到固定长度的向量,通过对向量进行内积相似度计算得到前K个相似的候选代码。
作为本发明的进一步改进,在所述检索前处理模块中,离线使用调优后的CodeBERT模型对所有待检索数据库中的代码进行编码和保存。
作为本发明的进一步改进,所述自然语言匹配方法采用BM25算法,使用BM25算法对输入的自然语言描述和待检索数据库中的代码对应的自然语言进行相似度检测,得到前K个相似的自然语言描述,将其作为索引,得到对应的K个相似的候选代码。
作为本发明的进一步改进,使用代码检索方法得到的最相似的一条候选代码和使用自然语言匹配方法得到的最相似的一条候选代码作为最终检索前处理模块的结果。
作为本发明的进一步改进,所述结构信息提取模块对每一段代码都提取出其唯一对应的抽象语法树,随后将抽象语法树作为图结构输入到图神经网络中进行消息传递和聚合,得到代码片段的结构信息。
作为本发明的进一步改进,将检索到的代码与原有的自然语言输入进行拼接输入到所述代码生成融合模块的编码器中得到嵌入向量表示,再将其与结构信息提取模块得到的向量进行拼接,输入到所述代码生成融合模块的解码器中完成代码生成任务。
本发明还提供了一种检索增强的结构化代码生成方法,包括如下步骤:
步骤1:将检索前处理模块返回的检索结果直接拼接在原始自然语言输入之后,并使用分隔符将其隔开作为最终的输入,所述检索结果是检索前处理模块根据自然语言描述来检索到功能相关的代码片段;
步骤2:将步骤1得到的输入经过代码生成融合模块的编码器得到固定长度的向量;
步骤3:将结构信息模块提取出的向量与步骤2中获得的向量直接进行拼接,输入到代码生成融合模块的解码器中完成代码生成过程。
作为本发明的进一步改进,所述代码生成融合模块为CodeT5模型。
本发明的有益效果是:本发明在不改变原有模型规模的条件下,增强其泛化性,提升代码生成的能力。
附图说明
图1是本发明的方法流程图。
实施方式
本发明公开了一种检索增强的结构化代码生成系统,结构化代码生成系统也可以称为结构化代码生成模型,简称模型。结构化代码生成系统包括检索前处理模块、结构信息提取模块和代码生成融合模块。
智能化代码生成任务的数据一般由<自然语言描述,代码片段>构成,自然语言描述是模型的输入,代码片段是模型的输出。为了保证模型在训练与推理过程中模型接收信息的一致性,检索前处理模块主要根据自然语言描述来检索到功能相关的代码片段,这个过程可以看作是代码搜索。与此同时,由于代码生成任务的数据具备代码搜索任务不具备的<key-value>属性,因此检索前处理模型可以分为代码检索方法与自然语言匹配方法的结合,即,所述检索前处理模块通过代码检索方法和自然语言匹配方法检索到与输入自然语言最相近的多条候选代码(例如,两条候选代码)作为检索结果。
作为本发明的优选方案,所述代码检索方法采用CodeBERT模型,在获取到预训练好的CodeBERT模型后,将其在代码生成任务数据集上进行调优,使用调优后的CodeBERT模型可以对输入的自然语言描述和待检索数据库中的代码分别进行编码得到固定长度的向量,通过对向量进行内积相似度计算得到前K个相似的候选代码。为了节省推理速度,可以离线使用调优后的CodeBERT模型对所有待检索数据库中的代码进行编码和保存。
作为本发明的优选方案,所述自然语言匹配方法采用BM25算法,由于代码生成数据集的构成大多为<自然语言描述,代码片段>这样<key-value>的形式,同时考虑到使用同一个CodeBERT可能会由于自然语言描述和代码片段之间的差异造成检索得到的结果较差。因此这里使用BM25对输入的自然语言描述和待检索数据库中的代码对应的自然语言进行相似度检测,得到前K个相似的自然语言描述,将其作为索引,得到对应的K个相似的候选代码。
本发明使用代码检索方法得到的最相似的一条候选代码和使用自然语言匹配方法得到的最相似的一条候选代码作为最终检索前处理模块的结果。
检索前处理模块的结果本质上是两条与输入文本最接近的代码片段,因此可以认为这两条数据在语法和语义上都非常接近最终要生成的代码。
因此所述结构信息提取模块对所述检索前处理模块检索到的两条候选代码进行结构信息的提取,便于其能够更好的作为辅助信息帮助生成质量更高的代码。
为获取代码的结构信息,所述结构信息提取模块对每一段代码都提取出其唯一对应的抽象语法树(AST),随后将抽象语法树作为图结构输入到图神经网络中进行消息传递和聚合,这个过程可以被视作对于AST的编码过程,最终的结果是固定长度的两条向量,其蕴含着检索所得到的两份代码片段的结构信息。
本发明的最终目的是生成符合自然语言描述功能的代码片段,代码生成融合模块本质上是一个生成器,将原有输入和检索结果进行融合,来更好地完成代码生成任务。在本发明中,代码生成融合模块使用的是CodeT5模型,也可以根据下面的具体描述更换为其他的Transformer类模型,同样适用。
作为本发明的优选实施例,将检索到的代码与原有的自然语言输入进行拼接输入到所述代码生成融合模块的编码器中得到嵌入向量表示,再将其与结构信息提取模块得到的向量进行拼接,输入到所述代码生成融合模块的解码器中完成代码生成任务。
为了使得发明的模型在训练和推理阶段之间的差异尽可能缩小,模型在训练和推理过程中接收到的输入信息是一致的。如图1所示,本发明公开了一种检索增强的结构化代码生成方法,包括如下步骤:
步骤1:将检索前处理模块返回的检索结果(例如,2条检索结果)直接拼接在原始自然语言输入之后,并使用特殊分隔符[SEP]将其隔开作为最终的模型输入,所述检索结果是检索前处理模块根据自然语言描述来检索到功能相关的代码片段。
步骤2:将步骤1得到的输入经过代码生成融合模块的编码器得到固定长度的向量。
步骤3:将结构信息模块提取出的向量与步骤2中获得的向量直接进行拼接,输入到代码生成融合模块的解码器中完成代码生成过程。
本发明在不改变原有模型规模的条件下,增强其泛化性,提升代码生成的能力。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种检索增强的结构化代码生成系统,其特征在于:包括检索前处理模块、结构信息提取模块和代码生成融合模块,
所述检索前处理模块根据自然语言描述来检索到功能相关的代码片段;
所述结构信息提取模块对所述检索前处理模块检索到的代码片段进行结构信息的提取;
所述代码生成融合模块将输入的自然语言和代码片段进行融合,完成代码生成任务。
2.根据权利要求1所述的结构化代码生成系统,其特征在于:所述检索前处理模块通过代码检索方法和自然语言匹配方法检索到与输入自然语言最相近的多条候选代码作为检索结果。
3.根据权利要求2所述的结构化代码生成系统,其特征在于:所述代码检索方法采用CodeBERT模型,在获取到预训练好的CodeBERT模型后,将其在代码生成任务数据集上进行调优,使用调优后的CodeBERT模型可以对输入的自然语言描述和待检索数据库中的代码分别进行编码得到固定长度的向量,通过对向量进行内积相似度计算得到前K个相似的候选代码。
4.根据权利要求3所述的结构化代码生成系统,其特征在于:在所述检索前处理模块中,离线使用调优后的CodeBERT模型对所有待检索数据库中的代码进行编码和保存。
5.根据权利要求2所述的结构化代码生成系统,其特征在于:所述自然语言匹配方法采用BM25算法,使用BM25算法对输入的自然语言描述和待检索数据库中的代码对应的自然语言进行相似度检测,得到前K个相似的自然语言描述,将其作为索引,得到对应的K个相似的候选代码。
6.根据权利要求2所述的结构化代码生成系统,其特征在于:使用代码检索方法得到的最相似的一条候选代码和使用自然语言匹配方法得到的最相似的一条候选代码作为最终检索前处理模块的结果。
7.根据权利要求1所述的结构化代码生成系统,其特征在于:所述结构信息提取模块对每一段代码都提取出其唯一对应的抽象语法树,随后将抽象语法树作为图结构输入到图神经网络中进行消息传递和聚合,得到代码片段的结构信息。
8.根据权利要求1所述的结构化代码生成系统,其特征在于:将检索到的代码与原有的自然语言输入进行拼接输入到所述代码生成融合模块的编码器中得到嵌入向量表示,再将其与结构信息提取模块得到的向量进行拼接,输入到所述代码生成融合模块的解码器中完成代码生成任务。
9.一种检索增强的结构化代码生成方法,其特征在于,包括如下步骤:
步骤1:将检索前处理模块返回的检索结果直接拼接在原始自然语言输入之后,并使用分隔符将其隔开作为最终的输入,所述检索结果是检索前处理模块根据自然语言描述来检索到功能相关的代码片段;
步骤2:将步骤1得到的输入经过代码生成融合模块的编码器得到固定长度的向量;
步骤3:将结构信息模块提取出的向量与步骤2中获得的向量直接进行拼接,输入到代码生成融合模块的解码器中完成代码生成过程。
10.根据权利要求9所述的结构化代码生成方法,其特征在于:所述代码生成融合模块为CodeT5模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311154532.6A CN116909574A (zh) | 2023-09-08 | 2023-09-08 | 一种检索增强的结构化代码生成系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311154532.6A CN116909574A (zh) | 2023-09-08 | 2023-09-08 | 一种检索增强的结构化代码生成系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116909574A true CN116909574A (zh) | 2023-10-20 |
Family
ID=88356787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311154532.6A Pending CN116909574A (zh) | 2023-09-08 | 2023-09-08 | 一种检索增强的结构化代码生成系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116909574A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342318A (zh) * | 2021-04-19 | 2021-09-03 | 山东师范大学 | 基于多视图代码特征的细粒度代码自动生成方法及系统 |
CN114385178A (zh) * | 2021-12-14 | 2022-04-22 | 厦门大学 | 基于抽象语法树结构信息增强的代码生成方法 |
CN114880022A (zh) * | 2022-04-28 | 2022-08-09 | 南通大学 | 一种基于CodeBERT微调和检索增强的Bash代码注释生成方法 |
CN116400901A (zh) * | 2023-04-12 | 2023-07-07 | 上海计算机软件技术开发中心 | 一种Python代码自动生成方法及系统 |
-
2023
- 2023-09-08 CN CN202311154532.6A patent/CN116909574A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342318A (zh) * | 2021-04-19 | 2021-09-03 | 山东师范大学 | 基于多视图代码特征的细粒度代码自动生成方法及系统 |
CN114385178A (zh) * | 2021-12-14 | 2022-04-22 | 厦门大学 | 基于抽象语法树结构信息增强的代码生成方法 |
CN114880022A (zh) * | 2022-04-28 | 2022-08-09 | 南通大学 | 一种基于CodeBERT微调和检索增强的Bash代码注释生成方法 |
CN116400901A (zh) * | 2023-04-12 | 2023-07-07 | 上海计算机软件技术开发中心 | 一种Python代码自动生成方法及系统 |
Non-Patent Citations (1)
Title |
---|
MD RIZWAN PARVEZ 等: "Retrieval Augmented Code Generation and Summarization", pages 1 - 16, Retrieved from the Internet <URL:https://arxiv.org/abs/2108.11601> * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489395B (zh) | 自动获取多源异构数据知识的方法 | |
US20210279042A1 (en) | Neural code completion via re-ranking | |
CN111930906A (zh) | 基于语义块的知识图谱问答方法及装置 | |
CN112597285B (zh) | 一种基于知识图谱的人机交互方法及系统 | |
CN116301893A (zh) | 一种基于提示学习的轻量化代码生成方法 | |
CN117609421A (zh) | 基于大语言模型的电力专业知识智能问答系统构建方法 | |
CN115858750A (zh) | 基于自然语言处理的电网技术标准智能问答方法及系统 | |
CN117407532A (zh) | 一种利用大模型与协同训练进行数据增强的方法 | |
CN117349311A (zh) | 一种基于改进RetNet的数据库自然语言查询方法 | |
CN116909574A (zh) | 一种检索增强的结构化代码生成系统及方法 | |
CN116661797A (zh) | 一种词元粒度下基于加强Transformer的代码补全方法 | |
CN110825381A (zh) | 一种结合源代码语义与语法特征的基于CNN的bug定位方法 | |
CN115826988A (zh) | 一种基于数据流分析和注意力机制的Java方法注释即时自动更新方法 | |
Wang et al. | An advanced bert-based decomposition method for joint extraction of entities and relations | |
Zhang et al. | Synchronous condenser-based intelligent question answering system based on knowledge graph | |
CN113010676A (zh) | 一种文本知识提取方法、装置及自然语言推断系统 | |
Gu et al. | Extension-Compression Learning: A deep learning code search method that simulates reading habits | |
CN112884354B (zh) | 一种字词双维度的化妆品安全监管领域事件信息抽取方法 | |
CN117093196B (zh) | 一种基于知识图谱的编程语言生成方法及系统 | |
Yu et al. | MASZSL: A Multi-Block Attention-Based Description Generative Adversarial Network for Knowledge Graph Zero-Shot Relational Learning | |
Chen et al. | On Unified Prompt Tuning for Request Quality Assurance in Public Code Review | |
SONG et al. | A Deep Neural Network-Based Multimodal Relation Extraction Model for Power Equipment | |
Fan et al. | LANID: LLM-assisted New Intent Discovery | |
CN117786042A (zh) | 一种政策解读方法、装置及存储介质 | |
Agarwal et al. | A Deep Learning Framework for Visual to Caption Translation |
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 |