【技术实现步骤摘要】
用于文本到代码变换的双贝叶斯编码
‑
解码技术
[0001]本申请总地涉及自然语言处理,并且更具体地涉及用于文本到代码变换的双贝叶斯编码
‑
解码技术。
技术介绍
[0002]用于自然语言处理(NLP)的方法和机器学习(ML)框架已在过去十年中呈现显著进步。特别地,深度学习(DL)技术已在诸如含义提取、命名实体识别、问答和机器翻译之类的NLP任务上显示了性能的提高。然而,收到较少关注的自然语言(NL)的一个子域是NL到源代码的变换。
[0003]编写无错误的源代码是极其困难的任务,对复杂软件系统来说尤其如此。甚至最有经验的程序员和开发者也可能在编写源代码时遇到困难。来自在线论坛的使用的统计信息提供了困难有多么普遍的证据。例如,Stack Overflow的1600万个用户已张贴了2200万个问题,提供了3200万个回答,并且每天访问站点1100万次(最近的平均值)。通常,用户需要询问其他人或者搜索网络以查找适当的语法或者查找已知代码实现方式的解决方案。
[0004]搜索像GitHub或Stack Overflow(及其他)一样的大代码数据库常常非常耗时;因此,使用DL和概率模型来自动化源代码生成正在赢得关注。需要准确且降低计算成本的技术,以便为依赖软件/固件开发的公司提供优势,以缩短其软件和硬件产品的上市时间。
技术实现思路
[0005]根据本申请的一方面,提供了一种用于从自然语言NL输入生成源代码的方法,包括:处理所述NL输入以生成源代码SC词元序列中
【技术保护点】
【技术特征摘要】
1.一种用于从自然语言NL输入生成源代码的方法,包括:处理所述NL输入以生成源代码SC词元序列中的SC词元的概率分布PD;处理所述NL输入以生成抽象句法树AST词元序列中的AST词元的PD;标识要修复的一个或多个SC词元;以及对被标识的所述一个或多个SC词元应用一个或多个修复规则,其中用于给定SC词元的修复规则是基于所述SC词元的PD和与所述SC词元相关联的AST词元的PD中的至少一个来选择的。2.根据权利要求1所述的方法,其中标识要修复的SC词元包括:以下至少一项:用编译器编译SC词元序列、和用解释器解释SC词元序列;以及检测使所述编译器或解释器抛出句法错误的SC词元。3.根据权利要求1或2所述的方法,进一步包括:确定SC词元具有低置信度水平而相关联的AST词元具有高置信度水平;以及使用确定性语法词典来替换所述SC词元。4.根据权利要求1至3中任一项所述的方法,进一步包括:确定与SC词元相关联的AST词元具有低置信度水平并且是变量var;以及用源代码词汇列表中的条目替换所述SC词元。5.根据权利要求1至4中任一项所述的方法,进一步包括:确定与SC词元相关联的AST词元具有低置信度水平并且不是变量var;以及采用遗传编程过程来替换所述SC词元。6.根据权利要求1至5中任一项所述的方法,其中SC词元的PD包括与所述SC词元是否匹配的确定性水平相关联的均值和与所述SC词元是否匹配的不确定性水平相关联的标准偏差,其中AST词元的PD包括与所述AST词元是否匹配的确定性水平相关联的均值和与所述AST词元是否匹配的不确定性水平相关联的标准偏差,并且其中对所述修复规则的选择对于SC词元及其相关联的AST词元中的至少一个采用所述确定性水平和所述不确定性水平中的至少一个。7.根据权利要求1至6中任一项所述的方法,其中所述SC词元的PD由文本到源代码Text2Code机器学习ML模型生成。8.根据权利要求7所述的方法,其中所述Text2Code ML模型包括长短期记忆LSTM编码器以及输出解码后SC词元的序列的源代码贝叶斯LSTM解码器。9.根据权利要求1至7中任一项所述的方法,其中所述AST词元的PD由文本到AST Text2AST机器学习ML模型生成。10.根据权利要求9所述的方法,其中所述Text2AST ML模型包括长短期记忆LSTM编码器以及输出解码后AST词元的序列的AST贝叶斯LSTM解码器。11.一种非暂时性机器可读介质,其上存储有指令,所述指令被配置为在计算系统上的一个或多个处理器上执行以从自然语言NL输入生成源代码,其中所述指令的执行使得所述计算系统:处理所述NL输入以生成源代码SC词元序列中的SC词元的概率分布PD;处理所述NL输入以生成抽象句法树AST词元序列中的AST词元的PD;标识要修复的一个或多个SC词元;以及
对被标识的所述一个或多个SC词元应用一个或多个修复规则,其中用于给定SC词元的修复规则是基于所述SC词元的PD和与所述SC词元相关联的AST词元的PD中的至少一个来选择的。12.根据权利要求11所述的非暂时性机器可读介质,其中所述指令的一部分包括文本到AST Text2AST机器学习ML模型,所述Text2AST ML模型包括长短期记忆LSTM编码器以及输出解码后AST词元的序列...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。