当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于文本到代码变换的双贝叶斯编码-解码技术制造技术

技术编号:37246427 阅读:18 留言:0更新日期:2023-04-20 23:26
本申请涉及用于文本到代码变换的双贝叶斯编码

【技术实现步骤摘要】
用于文本到代码变换的双贝叶斯编码

解码技术


[0001]本申请总地涉及自然语言处理,并且更具体地涉及用于文本到代码变换的双贝叶斯编码

解码技术。

技术介绍

[0002]用于自然语言处理(NLP)的方法和机器学习(ML)框架已在过去十年中呈现显著进步。特别地,深度学习(DL)技术已在诸如含义提取、命名实体识别、问答和机器翻译之类的NLP任务上显示了性能的提高。然而,收到较少关注的自然语言(NL)的一个子域是NL到源代码的变换。
[0003]编写无错误的源代码是极其困难的任务,对复杂软件系统来说尤其如此。甚至最有经验的程序员和开发者也可能在编写源代码时遇到困难。来自在线论坛的使用的统计信息提供了困难有多么普遍的证据。例如,Stack Overflow的1600万个用户已张贴了2200万个问题,提供了3200万个回答,并且每天访问站点1100万次(最近的平均值)。通常,用户需要询问其他人或者搜索网络以查找适当的语法或者查找已知代码实现方式的解决方案。
[0004]搜索像GitHub或Stack Overflow(及其他)一样的大代码数据库常常非常耗时;因此,使用DL和概率模型来自动化源代码生成正在赢得关注。需要准确且降低计算成本的技术,以便为依赖软件/固件开发的公司提供优势,以缩短其软件和硬件产品的上市时间。

技术实现思路

[0005]根据本申请的一方面,提供了一种用于从自然语言NL输入生成源代码的方法,包括:处理所述NL输入以生成源代码SC词元序列中的SC词元的概率分布PD;处理所述NL输入以生成抽象句法树AST词元序列中的AST词元的PD;标识要修复的一个或多个SC词元;以及对被标识的所述一个或多个SC词元应用一个或多个修复规则,其中用于给定SC词元的修复规则是基于所述SC词元的PD和与所述SC词元相关联的AST词元的PD中的至少一个来选择的。
[0006]根据本申请的另一方面,提供了一种非暂时性机器可读介质,其上存储有指令,所述指令被配置为在计算系统上的一个或多个处理器上执行以从自然语言(NL)输入生成源代码,其中所述指令的执行使得所述计算系统:处理所述NL输入以生成源代码SC词元序列中的SC词元的概率分布PD;处理所述NL输入以生成抽象句法树AST词元序列中的AST词元的PD;标识要修复的一个或多个SC词元;以及对被标识的所述一个或多个SC词元应用一个或多个修复规则,其中用于给定SC词元的修复规则是基于所述SC词元的PD和与所述SC词元相关联的AST词元的PD中的至少一个来选择的。
[0007]根据本申请的又一方面,提供了一种计算系统,包括:一个或多个处理器,存储器,所述存储器耦合到所述一个或多个处理器,在所述存储器中存储有指令,所述指令被配置为在所述一个或多个处理器中的至少一个上执行以使得所述系统能够:处理自然语言NL输入以生成源代码SC词元序列中的SC词元的概率分布PD;处理所述NL输入以生成抽象句法树
AST词元序列中的AST词元的PD;标识要修复的一个或多个SC词元;以及对被标识的所述一个或多个SC词元应用一个或多个修复规则,其中用于给定SC词元的修复规则是至少部分地基于所述SC词元的PD和与所述SC词元相关联的AST词元的PD中的至少一个来选择的。
附图说明
[0008]本专利技术的上述方面和许多附带优点将变得更容易理解,因为当结合附图时,通过参考以下详细描述,它们变得更好理解,其中除非另外指定,否则相似的附图标记在各个视图中自始至终指代相似的部分:
[0009]图1a是根据一个实施例的多模态概率源代码模型和示例性输出表的框图,该示例性输出表包括从处理输入自然语言(NL)请求生成的源代码(SC)词元(token)和抽象语法树(AST);
[0010]图1b是示出由图1a的多模态概率源代码模型生成的更多词元和概率的图;
[0011]图2是图示用于确定性和不确定性的解码源代码修复准则和关联符号的图;
[0012]图3是图示用于响应语法错误并且基于来自源代码和AST词元的概率分布数据来选择要应用的修复规则的伪代码逻辑的图;
[0013]图4是图示根据一个实施例的使用图1a的多模态概率源代码模型的端到端过程流程的示意图;
[0014]图5示出与确定性语法词典(dgd)、源代码词汇列表(svl)和未定义列表(ndl)相对应的Python代码片段;
[0015]图6是图示根据一个实施例的由图4的端到端过程流程图用来从NL请求生成源代码的操作和逻辑的流程图;
[0016]图7是示出经由处理CoNaLa数据集获得的各种数据和字段的Pandas数据帧的一部分;
[0017]图8是图示用于Text2AST变换的贝叶斯编码器

解码器深度学习(DL)模型的拓扑的图;
[0018]图9是图示用于Text2Code变换的贝叶斯编码器

解码器深度DL模型的拓扑的图;以及
[0019]图10是可以用于实现本文描述和图示的实施例的各方面的计算平台或服务器的图。
具体实施方式
[0020]本文描述了用于实现用于文本到代码变换的双贝叶斯编码

解码的方法、设备和软件的实施例。在以下描述中,阐述了许多具体细节以提供对本专利技术的实施例的透彻理解。然而,相关领域的技术人员将认识到,能够在没有一个或多个具体细节的情况下或者用其他方法、组件、材料等来实践本专利技术。在其他情况下,未详细地示出或描述公知结构、材料或操作以避免使本专利技术的各方面混淆。
[0021]贯穿本说明书对“一个实施例”或“实施例”的引用意味着连同该实施例一起描述的特定特征、结构或特性被包括在本专利技术的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”贯穿本说明书在各个地方中的出现不一定全部指代相同实施例。此外,
可以在一个或多个实施例中以任何合适的方式组合特定特征、结构或特性。
[0022]为了清楚,本文图中的各个组件也可以通过它们在附图中的标签而不是通过特定附图标记来指代。另外地,指代特定类型的组件(与特定组件不同)的附图标记可以用后面有意指“典型”的“(typ)”的附图标记来示出。应理解,这些组件的配置将是可能存在但为了简单和清楚而在图中未示出的类似组件或未用单独的附图标记所标记的其他类似组件的典型配置。相反地,“(typ)”不应被解释为意味着组件、元素等被通常用于其公开的功能、实现方式、目的等。
[0023]源代码的结构可能变得极其复杂并且可以使用广泛开放的词汇。为了应对这个问题,大多数当前的模型(DL或概率)往往通过实现像抽象语法树(AST)/图形、开放词汇模型和注意力机制一样的结构表示来简化其范围。遗憾的是,这些方法的实施方式可能仍然导致计算密集型解决方案或者生成可能无法解析、编译、执行和/或解决问题的代码。
[0024]在本文描述和图示的实施例中,提出了一种根据由对应的贝叶斯编码器
...

【技术保护点】

【技术特征摘要】
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词元的序列...

【专利技术属性】
技术研发人员:亚历杭德罗
申请(专利权)人:英特尔公司
类型:发明
国别省市:

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

1