- 简介最近的研究表明,大型语言模型(LLMs)在资源丰富的通用语言(如C++、Java和Python)的自然语言(NL)到代码生成方面表现出最先进的性能。然而,对于结构化领域特定语言(DSLs)(如YAML、JSON)的实际使用受到限制,这是由于LLMs在预训练期间通常看不到领域特定的模式、语法和定制化。尽管通过相关示例或微调进行上下文学习来缓解这一挑战,但它仍然存在问题,例如DSL样本有限和提示敏感性,但企业保持着DSL的良好文档。因此,我们提出了DocCGen框架,它可以利用这种丰富的知识,通过将结构化代码语言的NL-to-Code生成任务分解为两个步骤。首先,使用最符合NL查询的库文档检测正确的库。然后,利用从这些库的文档中提取的模式规则来约束解码。我们针对两种复杂的结构化语言,Ansible YAML和Bash命令,进行了两个设置的评估:域外(OOD)和域内(ID)。我们的广泛实验表明,DocCGen始终可以提高各种规模的语言模型在所有六个评估指标上的表现,减少结构化代码中的语法和语义错误。我们计划开源数据集和代码,以激励约束代码生成的研究。
-
- 图表
- 解决问题本论文旨在解决对于领域特定语言(DSL)的自然语言到代码生成任务中,传统的大型语言模型(LLMs)无法有效利用企业文档中的丰富知识的问题。
- 关键思路本论文提出了一种名为DocCGen的框架,将自然语言到代码生成任务分为两个步骤:首先使用最符合自然语言查询的库文档检测正确的库,然后利用从这些库的文档中提取的模式规则来约束解码。
- 其它亮点实验结果表明,DocCGen框架在两个复杂的结构化语言(Ansible YAML和Bash命令)中显著改善了不同大小的语言模型的性能,并减少了结构化代码中的语法和语义错误。本论文计划开源数据集和代码以促进约束代码生成领域的研究。
- 最近的相关研究包括:《CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing》、《Neural Code Comprehension: A Systematic Literature Review》、《Natural Language Processing for Software Engineering: A Systematic Mapping Study》等。
NEW
提问交流
提交问题,平台邀请作者,轻松获得权威解答~
向作者提问

提问交流