本发明专利技术公开了基于人工智能的代码自动生成方法与装置,以强化学习模型作为生成器优化生成对抗网络,再以句法分析传统技术引入生成对抗网络,通过生成对抗网络提取文本特征融入序列到序列模型。在生成对抗网络原型的基础上提出了句法分析等传统技术引入生成对抗网络的算法,该算法通过句法树等语义或结构相关内容的融入,限制了生成器的输出范围和分布。
Automatic Code Generation Method and Device Based on Artificial Intelligence
【技术实现步骤摘要】
基于人工智能的代码自动生成方法与装置
本专利技术技术涉及计算机
,具体涉及一种基于人工智能的代码自动生成方法与装置。
技术介绍
随着网络的迅猛发展,企业级分布式开发逐渐成为开发市场的主流。因此在企业级开发中,分布式开发带来了企业端设计模式和实践模式的激增。越来越多设计模式的使用可以使代码更健壮和缩短进入市场的时间。同时,开发者只需要专注于应用系统的一部分,系统服务留给服务器提供商来实现。由于编写企业级代码涉及许多重复性工作,为实现一个应用系统,程序员必须不断的重复处理大量的相同与类似代码。代码生成技术的应用是解决这个难题的关键。
技术实现思路
本专利技术技术所要解决的技术问题是提供及一种基于人工智能的代码自动生成方法与装置。本专利技术所要解决的技术问题采用以下的技术方案来实现:基于人工智能的代码自动生成方法,包括:以强化学习模型作为生成器优化生成对抗网络,再以句法分析传统技术引入生成对抗网络,通过生成对抗网络提取文本特征融入序列到序列模型。所述的强化学习模型包括状态、动作和回报,“状态”是描述当前情况的,“动作”是一个智能体在每个状态中可以做的事情,“回报”是一个描述来自外界的反馈的抽象概念,回报可以是正面的或者负面的。所述句法分析传统技术包括生成式句法分析、判决式句法分析。所述的生成式句法分析,生成式就是生成一系列句法树,从里面挑选出概率最大的那一棵作为输出,在具体实现的时候,可以选择最大熵等模型去计算单条依存边的概率,利用最大生成树算法来挑选最佳句法树。所述判决式句法分析,判决式一般是基于动作(或称转移)和一个分类器实现的,仿照人类从左到右的阅读顺序,判决式句法分析器不断地读入单词,根据该单词和已构建的句法子树等信息建立分类模型,分类模型输出当前状态下的最佳动作,然后判决式分析器根据最佳动作“拼装”句法树。基于人工智能的代码自动生成装置,具体为自动代码生成器,通过连接服务器,从服务器中选择相应的数据库,与数据库连接,提取所需要的数据,然后选择代码功能,对数据库进行操作,操作包括插入、删除、查询和更新,操作后自动生成代码。该自动代码生成器还包括查询模块、生成CS模块和生成SQL脚本模块。本专利技术的有益效果为:针对生成模型输出的结果内容不可控的问题,在生成对抗网络原型的基础上提出了句法分析等传统技术引入生成对抗网络的算法。该算法通过句法树等语义或结构相关内容的融入,限制了生成器的输出范围和分布。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图;图1生成对抗网络算法思路框图;图2生成对抗网络运行时各个概率分布图;图3生成对抗网络的流程;图4神经网络单一输出节点和softmax层的区别;图5LTP直接使用隐藏层的输出;图6立方激活函数的分布;图7为代码生成器的主要功能模块示意图。图8为最大似然估计图;图9为投射性关系示意图一;图10为投射性关系示意图二;图11为投射性关系示意图三;图12为非投射关系示意图一;图13为arc-standard系统动作类型一;图14为arc-standard系统动作类型二;图15为arc-standard系统动作类型三。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。基于人工智能的代码自动生成方法,包括:生成对抗网络,如图1,生成式对抗网络基本思路是要解决的问题是如何从训练样本中学习出新样本,训练样本是图片就生成新图片,训练样本是文章就输出新文本等等,如图1所示。如果能够知道训练样本的分布p(x),生成对抗网络的优化是一个极小极大博弈问题。如图2,粗虚线是真实数据的高斯分布,细实线是生成网络学习到的伪造分布,细虚线是判别网络判定为真实图片的概率,标x的横线代表服从高斯分布x的采样空间,标z的横线代表服从均匀分布z的采样空间。可以看出GG就是学习了从z的空间到x的空间的映射关系。图3生成对抗网络的流程生成模型工作方式以及其跟其它模型比较的优势如下:创造生成模型的主要方法涉及到概率领域一个方法:最大似然估计,如图8。通常来说,一组相互独立事件的同时发生概率是:P(X1,X2)=P(X1)×P(X2)而现实生活中,我们可能并不知道每个P(概率分布模型)到底是什么,我们已知的是我们可以观测到的源数据。所以,最大似然估计就是这种给定了观察数据以评估模型参数(也就是估计出分布模型应该是怎样的)的方法。比如,如果校长想调查全校同学的成绩,假如这个校长很懒但是统计学得很好的话,他会选择通过采样来估计一个靠谱的成绩分布。首先,假设我们独立采样X1,X2,......Xn共n个同学的成绩,并且是我们使用的是f模型,只是它的参数θ未知,那么这个方程可表示为:f(X1,X2...Xn|θ)=f(X1|θ)×f(X2|θ)...×f(Xn|θ)此刻,我们已知的是X1......Xn,未知的是θ,那么我们的似然就可以定义为:L(θ|X1...Xn)=f(X1...Xn|θ)=Πf(Xi|θ)两边取对数,得到:logL(θ|X1...Xn)=∑logf(Xi|θ)设logL(θ|x1...xn)称为对数似然,称为平均对数似然。那么最大的平均对数似然就是:以句法分析传统技术引入生成对抗网络;生成式句法分析生成式就是生成一系列句法树,从里面挑选出概率最大的那一棵作为输出。在具体实现的时候,可以选择最大熵等模型去计算单条依存边的概率,利用最大生成树算法来挑选最佳句法树。其优点是效果好,但开销大。训练的时候常常要用一份巨大的特征模板,得到的模型中含有大量复杂的特征函数。在解码的时候,这些特征函数的储存和运算成本很高。由于是全局最优,所以可以取得较高的准确率,还可以很方便地处理非投射的句法树。不过也由于搜索的全局性和特征函数的复杂度,模型常常会过拟合,在训练集和测试集上的准确率差别很大。判决式句法分析判决式一般是基于动作(或称转移)和一个分类器实现的,仿照人类从左到右的阅读顺序,判决式句法分析器不断地读入单词,根据该单词和已构建的句法子树等信息建立分类模型,分类模型输出当前状态下的最佳动作,然后判决式分析器根据最佳动作“拼装”句法树。动作体系包含两大体系,分别处理投射和非投射两种语言现象。投射大多数代码文本语言,包括汉语和英语,满足投射性。所谓投射性是指:如图9,如果词p依存于词q,那么p和q之间的任意词r就不能依存到p和q所构成的跨度之外(用白话说,就是任意构成依存的两个单词构成一个笼子,把它们之间的所有单词囚禁在这个笼子里,只可内部通婚,不可与外族通婚)。比如:图10再例如:图11非投射,非投射就没有上述限制了,这会导致依存边有交叉,怎么都理不顺:图12;依存弧,一条依存弧(dependencyarcs)有两个信息:动作类型+依存关系名称。视依存句法语料库中使用了本文档来自技高网...
【技术保护点】
1.基于人工智能的代码自动生成方法,其特征在于,包括:以强化学习模型作为生成器优化生成对抗网络,再以句法分析传统技术引入生成对抗网络,通过生成对抗网络提取文本特征融入序列到序列模型。
【技术特征摘要】
1.基于人工智能的代码自动生成方法,其特征在于,包括:以强化学习模型作为生成器优化生成对抗网络,再以句法分析传统技术引入生成对抗网络,通过生成对抗网络提取文本特征融入序列到序列模型。2.根据权利要求1中所述的基于人工智能的代码自动生成方法,其特征在于,所述的强化学习模型包括状态、动作和回报,“状态”是描述当前情况的,“动作”是一个智能体在每个状态中可以做的事情,“回报”是一个描述来自外界的反馈的抽象概念,回报可以是正面的或者负面的。3.根据权利要求1中所述的基于人工智能的代码自动生成方法,其特征在于,所述句法分析传统技术包括生成式句法分析、判决式句法分析。4.根据权...
【专利技术属性】
技术研发人员:轩石磊,陆乐,谢勇,
申请(专利权)人:深圳市行知网络科技有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。