基于自然语义理解的代码生成方法及系统技术方案

技术编号:35273765 阅读:45 留言:0更新日期:2022-10-19 10:50
本发明专利技术提供了一种基于自然语义理解的代码生成方法及系统,包括:步骤S1:获取自然语言序列,并对获取的自然语言序列进行预处理得到预处理后的自然语言序列;步骤S2:构建代码生成模型,并对构建的代码生成模型进行训练得到训练后的代码生成模型;步骤S3:训练后的代码生成模型根据输入的自然语言序列生成目标代码;所述代码生成模型是基于编码器

【技术实现步骤摘要】
基于自然语义理解的代码生成方法及系统


[0001]本专利技术涉及自然语言处理
,具体地,涉及基于自然语义理解的代码生成方法及系统。

技术介绍

[0002]语义解析任务是自然语言处理领域中的一类任务,主要研究的是如何将给定的自然语言描述文本转换成一种计算机能够理解并且可以执行的一种逻辑表示。传统的方法是根据程序设计语言的特点设计出固定的模板,然后使用模式匹配的方式将自然语言描述解析成模板中的一个个实例。随着深度学习技术的发展,Encoder

Decoder等深度学习框架也被引入到语义解析任务中,比如采用机器翻译的方法将自然描述语言序列直接翻译成编程语言序列,又或者是在生成代码的时候,引入编程语言的语法,先生成程序的抽象语法树,然后再将抽象语法树转换成程序代码。但是这些方法存在一些缺陷,比如直接利用机器翻译的方法对准确标注数据的规模要求较高,利用抽象语法树的方法需要加入较多人工设计、未能引入自然语言领域知识等。
[0003]Yin P,Neubig G.TRANX:A trans ition

based neural abstract syntax parser for semantic pars ing and code generation[J].arXiv preprint arXiv:1810.02720,2018.
[0004]Lewis M,Liu Y,Goyal N,et al.Bart:Denoi sing sequence

>to

sequence pre

training for natural language generation,translation,and comprehension[J].arXiv preprint arXiv:1910.13461,2019.
[0005]Norouzi S,Tang K,Cao Y.Code Generation from Natural Language with Less Prior Knowledge and More Monol ingual Data[C]//Proceedings of the 59th Annual Meeting of the Association for Computational Linguist ics and the 11th International Joint Conference on Natural Language Processing(Volume 2:Short Papers).2021:776

785.
[0006]上述现有技术均是基于深度学习的代码生成技术,但是现有技术中存在的不足包括:结合抽象语法树设计神经网络模型结构,需要在数据处理以及模型结构方面加入较多的人工设计,且不容易引入外部的无标注数据,代码生成能力有限;利用Bart模型在大量代码及对应的文档数据上从零开始预训练,对数据规模和计算资源要求很高,模型训练耗时很长;仅在微调阶段利用标注不准确数据中的代码数据进行数据增强,而未利用对应的自然语言标注,不利于模型学习自然语言和程序语言之间的语义关联。
[0007]专利文献CN110489102B(申请号:201910689490.3)公开了一种从自然语言自动生成Python代码的方法。所述的方法步骤如下:步骤1:采用GAN网络的生成器根据自然语言描述生成程序片段的抽象语法树。步骤2:采用GAN的判别器判断生成器生成的抽象语法树的语义是否与给定的自然语言描述的语义是否一致。步骤3:将GAN网络的生成器和判别器一起训练。

技术实现思路

[0008]针对现有技术中的缺陷,本专利技术的目的是提供一种基于自然语义理解的代码生成方法及系统。
[0009]根据本专利技术提供的一种基于自然语义理解的代码生成方法,包括:
[0010]步骤S1:获取自然语言序列,并对获取的自然语言序列进行预处理得到预处理后的自然语言序列;
[0011]步骤S2:构建代码生成模型,并对构建的代码生成模型进行训练得到训练后的代码生成模型;
[0012]步骤S3:训练后的代码生成模型根据输入的自然语言序列生成目标代码
[0013]所述代码生成模型是基于编码器

解码器的神经网络结构,实现从自然语言序列到目标代码的自动生成。
[0014]优选地,所述步骤S1采用:获取自然语言序列,并利用BERT的词表和分词器对自然语言序列依次进行分词操作以及向量化处理得到词向量。
[0015]优选地,所述代码生成模型中编码器采用BERT模型形成BERT编码器;
[0016]所述代码生成模型中解码器采用多层Transformer形成Transformer解码器;
[0017]所述BERT编码器通过多头自注意力机制和前馈神经网络对输入的词向量进行语义特征提取,得到自然语言的深度语义表示;
[0018]所述Transformer解码器根据BERT编码器提取出的自然语言的深度语义表示,通过带掩码的多头自注意力机制、交叉注意力机制和前馈神经网络,循环地进行推理得到解码器输出。
[0019]优选地,所述步骤S2采用:
[0020]步骤S2.1:基于标注不准确数据扩展训练集,利用扩展的训练集对待训练代码生成模型进行双向预训练;
[0021]所述标注的不准确数据表示为:
[0022][0023]其中,x
i
表示自然语言标注;y
i
表示目标代码;N表示标注不准确数据的样本总数;
[0024]所述基于标注不准确数据扩展训练集采用:
[0025][0026]双向预训练损失函数采用:
[0027][0028]其中,F(x;Θ)表示输入x经过代码生成模型的编码器、解码器以及softmax操作后得到的概率输出;
[0029]步骤S2.2:利用无标注数据和标注准确数据对经过双向预训练的代码生成模型进行自编码微调,得到训练后的代码生成模型;
[0030]所述标注准确数据表示为:
[0031][0032]其中,x
i
表示自然语言标注,y
i
表示目标代码,C表示标注准确的样本总数;
[0033]所述无标注数据表示为:
[0034][0035]其中,y
i

为无标注的代码数据,C

为无标注的样本总数;
[0036]则微调阶段的损失函数为:
[0037][0038]优选地,所述步骤S3采用:
[0039]步骤S3.1:将输入的自然语言序列进行分词和向量化处理得到词向量;
[0040]步骤S3.2:将词向量输入训练后的BERT编码器进行语义特征提取得到自然语言的深度语义;
[0041]步骤S3.3:训练后的本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于自然语义理解的代码生成方法,其特征在于,包括:步骤S1:获取自然语言序列,并对获取的自然语言序列进行预处理得到预处理后的自然语言序列;步骤S2:构建代码生成模型,并对构建的代码生成模型进行训练得到训练后的代码生成模型;步骤S3:训练后的代码生成模型根据输入的自然语言序列生成目标代码;所述代码生成模型是基于编码器

解码器的神经网络结构,实现从自然语言序列到目标代码的自动生成。2.根据权利要求1所述的基于自然语义理解的代码生成方法,其特征在于,所述步骤S1采用:获取自然语言序列,并利用BERT的词表和分词器对自然语言序列依次进行分词操作以及向量化处理得到词向量。3.根据权利要求1所述的基于自然语义理解的代码生成方法,其特征在于,所述代码生成模型中编码器采用BERT模型形成BERT编码器;所述代码生成模型中解码器采用多层Transformer形成Transformer解码器;所述BERT编码器通过多头自注意力机制和前馈神经网络对输入的词向量进行语义特征提取,得到自然语言的深度语义表示;所述Transformer解码器根据BERT编码器提取出的自然语言的深度语义表示,通过带掩码的多头自注意力机制、交叉注意力机制和前馈神经网络,循环地进行推理得到解码器输出。4.根据权利要求1所述的基于自然语义理解的代码生成方法,其特征在于,所述步骤S2采用:步骤S2.1:基于标注不准确数据扩展训练集,利用扩展的训练集对待训练代码生成模型进行双向预训练;所述标注的不准确数据表示为:其中,x
i
表示自然语言标注;y
i
表示目标代码;N表示标注不准确数据的样本总数;所述基于标注不准确数据扩展训练集采用:双向预训练损失函数采用:其中,F(x;Θ)表示输入x经过代码生成模型的编码器、解码器以及softmax操作后得到的概率输出;步骤S2.2:利用无标注数据和标注准确数据对经过双向预训练的代码生成模型进行自编码微调,得到训练后的代码生成模型;所述标注准确数据表示为:
其中,x
i
表示自然语言标注,y
i
表示目标代码,C表示标注准确的样本总数;所述无标注数据表示为:其中,y
i

为无标注的代码数据,C

为无标注的样本总数;则微调阶段的损失函数为:5.根据权利要求1所述的基于自然语义理解的代码生成方法,其特征在于,所述步骤S3采用:步骤S3.1:将输入的自然语言序列进行分词和向量化处理得到词向量;步骤S3.2:将词向量输入训练后的BERT编码器进行语义特征提取得到自然语言的深度语义;步骤S3.3:训练后的Transformer解码器根据提取的自然语言的深度语义进行循环推理,在每个时间步得到词表中各个词出现的概率,通过代码搜索得到出现概率最大的代码序列为目标代码。6.一种...

【专利技术属性】
技术研发人员:乐心怡王骥泽陈彩莲关新平
申请(专利权)人:上海交通大学
类型:发明
国别省市:

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

1