本发明专利技术提出了一种将自然语言转化为程序代码的方法及系统,涉及深度学习领域。一种将自然语言转化为程序代码的方法包括:对输入的源语言进行预处理,提取源语言中与目标代码直接有关的关键信息;根据深度学习模型提取源语言的特征向量,并将源语言解析成语法树;在预构资源库中为源语言检索出可能匹配的若干个资源;对检索到的中间表示作出可能的转换变为相互关联的模板。其创新性地视自然语言转化为程序代码的过程为机器学习与信息检索的不确定性问题。此外本发明专利技术还提出一种将自然语言转化为程序代码系统,包括:预处理模块、分析模块、检索模块、转换模块、连接模块以及转化模块。块。块。
【技术实现步骤摘要】
一种将自然语言转化为程序代码的方法及系统
[0001]本专利技术涉及深度学习领域,具体而言,涉及一种将自然语言转化为程序代码的方法及系统。
技术介绍
[0002]计算机语言在计算机领域内应用范围广泛,但是,随着计算机语言的高速发展,其种类越来越多,并且计算机语言的复杂度也较高,掌握并达到精通的程度比较困难。
[0003]在越来越多的计算机应用中要求相关产品的产出既要高效又要周期短。对这些应用的实现,要求应用设计者和实施者具有较高的计算机语言水平。而在现实环境中这往往意味着需要付出更多的成本用于编码和设计培训的投入,并且导致规模性的实施相对困难。
[0004]计算机语言的使用风格与自然语言差别巨大,计算机语言表述信息比自然语言更加精确,但是复杂度也相对更高。对计算机语言从掌握到精通往往需要较高的成本投入,并且实现周期过长。
技术实现思路
[0005]本专利技术的目的在于提供一种将自然语言转化为程序代码的方法,其能够创新性地视自然语言转化为程序代码的过程为机器学习与信息检索的不确定性问题,定义了这一问题中的评价标准,以使得其能够采用其他问题中常见的衡量指标进行评估。
[0006]本专利技术的另一目的在于提供一种将自然语言转化为程序代码系统,其能够运行一种将自然语言转化为程序代码的方法。
[0007]本专利技术的实施例是这样实现的:
[0008]第一方面,本申请实施例提供一种将自然语言转化为程序代码的方法,其包括对输入的源语言进行预处理,提取源语言中与目标代码直接有关的关键信息;根据深度学习模型提取源语言的特征向量,并将源语言解析成语法树;在预构资源库中为源语言检索出可能匹配的若干个资源;对检索到的中间表示作出可能的转换变为相互关联的模板;将正确的一套模板的空槽填入对应的代码块与变量,得到当前句子对应的一套相关联的代码块,并与其他句子的代码块以同样方式连接,形成目标代码的整体的图状数据结构;将图状数据结构转化为最终的目标代码。
[0009]在本专利技术的一些实施例中,在上述对输入的源语言进行预处理,提取源语言中与目标代码直接有关的关键信息之后包括:将源语言进行分割后,依次处理每个单元,并将源语言处理成适合深度学习模型处理的标准形式。
[0010]在本专利技术的一些实施例中,上述根据深度学习模型提取源语言的特征向量,并将源语言解析成语法树包括:使用训练好的深度学习模型处理源语言,根据源语言语法上的构成关系将其分解并组织成更易于处理的树状结构,并提取句子、子句、词组、单词的语义特征向量。
[0011]在本专利技术的一些实施例中,上述在预构资源库中为源语言检索出可能匹配的若干个资源包括:迭代处理语法树,并在预构资源库中检索可能与当前树节点对应的源语言成分匹配的源语言模式;源语言模式被映射成代码模板或变量模板与目标语言有关的表示。
[0012]在本专利技术的一些实施例中,上述还包括源语言模式被映射成一阶谓词逻辑表示、lambda表达式表示或程序代码数据结构的表示独立于源语言与目标语言的中间表示。
[0013]在本专利技术的一些实施例中,上述对检索到的中间表示作出可能的转换变为相互关联的模板包括:对检索到的中间表示作出可能的转换变为相互关联的模板,模板中选择能够相互关联并且能够覆盖原源语言的一组可能性。
[0014]在本专利技术的一些实施例中,上述还包括判断是否有多种可能性;若是,则由用户交互式选择正确的一套模板;若不是,则提示用户修改输入或者重新输入。
[0015]在本专利技术的一些实施例中,在上述若是,则由用户交互式选择正确的一套模板之后还包括:将该资源组合对应的变量和代码块进行关联,并与之前输入的其他源语言的变量和代码块相关联,组织成程序代码整体的逻辑拓扑图;根据拓扑图生成程序代码,并对生成的程序代码进行优化、整理代码文件。
[0016]第二方面,本申请实施例提供一种将自然语言转化为程序代码系统,其包括预处理模块,用于对输入的源语言进行预处理,提取源语言中与目标代码直接有关的关键信息;分析模块,用于根据深度学习模型提取源语言的特征向量,并将源语言解析成语法树;检索模块,用于在预构资源库中为源语言检索出可能匹配的若干个资源;转换模块,用于对检索到的中间表示作出可能的转换变为相互关联的模板;连接模块,用于将正确的一套模板的空槽填入对应的代码块与变量,得到当前句子对应的一套相关联的代码块,并与其他句子的代码块以同样方式连接,形成目标代码的整体的图状数据结构;转化模块,用于将图状数据结构转化为最终的目标代码。
[0017]在本专利技术的一些实施例中,上述包括用于存储计算机指令的至少一个存储器;与上述存储器通讯的至少一个处理器,其中当上述至少一个处理器执行上述计算机指令时,上述至少一个处理器使上述系统执行:预处理模块、分析模块、检索模块、转换模块、连接模块以及转化模块。
[0018]相对于现有技术,本专利技术的实施例至少具有如下优点或有益效果:
[0019]通过计算机对自然语言,例如:中文、英文,简称“源语言”,进行自动处理和分析,将其转化为高级程序设计语言,例如:C++、Python、Java,称为“目标语言”的目标代码,其能够创新性地视自然语言转化为程序代码的过程为机器学习与信息检索的不确定性问题,定义了这一问题中的评价标准,以使得其能够采用其他问题中常见的衡量指标进行评估。
附图说明
[0020]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0021]图1为本专利技术实施例提供的一种将自然语言转化为程序代码的方法步骤示意图;
[0022]图2为本专利技术实施例提供的一种将自然语言转化为程序代码的方法详细步骤示意
图;
[0023]图3为本专利技术实施例提供的一种将自然语言转化为程序代码系统模块示意图。
[0024]图标:10-预处理模块;20-分析模块;30-检索模块;40-转换模块;50-连接模块;60-转化模块。
具体实施方式
[0025]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
[0026]因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0027]需要说明的是,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种将自然语言转化为程序代码的方法,其特征在于,包括:对输入的源语言进行预处理,提取源语言中与目标代码直接有关的关键信息;根据深度学习模型提取源语言的特征向量,并将源语言解析成语法树;在预构资源库中为源语言检索出可能匹配的若干个资源;对检索到的中间表示作出可能的转换变为相互关联的模板;将正确的一套模板的空槽填入对应的代码块与变量,得到当前句子对应的一套相关联的代码块,并与其他句子的代码块以同样方式连接,形成目标代码的整体的图状数据结构;将图状数据结构转化为最终的目标代码。2.如权利要求1所述的一种将自然语言转化为程序代码的方法,其特征在于,在所述对输入的源语言进行预处理,提取源语言中与目标代码直接有关的关键信息之后包括:将源语言进行分割后,依次处理每个单元,并将源语言处理成适合深度学习模型处理的标准形式。3.如权利要求1所述的一种将自然语言转化为程序代码的方法,其特征在于,所述根据深度学习模型提取源语言的特征向量,并将源语言解析成语法树包括:使用训练好的深度学习模型处理源语言,根据源语言语法上的构成关系将其分解并组织成更易于处理的树状结构,并提取句子、子句、词组、单词的语义特征向量。4.如权利要求1所述的一种将自然语言转化为程序代码的方法,其特征在于,所述在预构资源库中为源语言检索出可能匹配的若干个资源包括:迭代处理语法树,并在预构资源库中检索可能与当前树节点对应的源语言成分匹配的源语言模式;源语言模式被映射成代码模板或变量模板与目标语言有关的表示。5.如权利要求4所述的一种将自然语言转化为程序代码的方法,其特征在于,还包括:源语言模式被映射成一阶谓词逻辑表示、lambda表达式表示或程序代码数据结构的表示独立于源语言与目标语言的中间表示。6.如权利要求1所述的一种将自然语言转化为程序代码的方法,其特征在于,所述对检索到...
【专利技术属性】
技术研发人员:高炼,
申请(专利权)人:高炼,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。