CN112114791B - 一种基于元学习的代码自适应生成方法 - Google Patents
一种基于元学习的代码自适应生成方法 Download PDFInfo
- Publication number
- CN112114791B CN112114791B CN202010932958.XA CN202010932958A CN112114791B CN 112114791 B CN112114791 B CN 112114791B CN 202010932958 A CN202010932958 A CN 202010932958A CN 112114791 B CN112114791 B CN 112114791B
- Authority
- CN
- China
- Prior art keywords
- code
- meta
- learning
- generation model
- training
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000012549 training Methods 0.000 claims abstract description 38
- 230000003044 adaptive effect Effects 0.000 claims abstract description 19
- 230000014509 gene expression Effects 0.000 claims abstract description 18
- 238000013528 artificial neural network Methods 0.000 claims abstract description 13
- 239000013598 vector Substances 0.000 claims abstract description 12
- 238000004519 manufacturing process Methods 0.000 claims abstract description 5
- 238000012360 testing method Methods 0.000 claims description 16
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000003672 processing method Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 5
- 238000005457 optimization Methods 0.000 claims description 3
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 12
- 238000010801 machine learning Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 101100455978 Arabidopsis thaliana MAM1 gene Proteins 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 101100153586 Caenorhabditis elegans top-1 gene Proteins 0.000 description 2
- 101100370075 Mus musculus Top1 gene Proteins 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Machine Translation (AREA)
Abstract
本发明公开一种基于元学习的代码自适应生成方法,首先构建包含不同代码风格的数据集,并对基础代码生成模型进行训练,基础代码生成模型采用编码器‑解码器结构,编码器使用图神经网络计算代码图的状态向量,表示程序当前上下文信息;解码器使用语言语法中的产生规则,根据上下文信息生成目标代码表达式;再通过元学习,学习不同的代码风格,从而训练出能够对新的风格代码做出快速而准确的学习的自适应代码生成模型;最终用户指定目标风格代码,对自适应代码生成模型再进行元训练过程,模型就能够生成具有目标风格的代码。本发明作为一种代码生成方法引入了元学习技术,能够根据编程人员不同的个性化代码风格正确和高效的生成代码。
Description
技术领域
本发明涉及一种基于元学习的代码自适应生成方法,尤其涉及一种利用程序静态分析、图神经网络技术和元学习技术实现自适应的代码生成方法,属于软件工程技术领域。
背景技术
集成开发环境(IDE)已成为现代软件工程师的基本范式,它提供了一组有用的服务来加速软件开发。代码生成(补全)是IDE中最有价值的功能之一,尤其是当开发人员不熟悉代码库时。它可以建议下一个可能的代码单元,例如变量名或函数调用,包括API调用。近年来,研究者提出了许多代码生成的模型,使用机器学习技术从大量开源代码数据库提取数据进行训练,但是,不同的开发人员具有不同的编码风格,许多优秀的开发团队都有自己的开发风格指南。当合并不同开发人员的代码时,同时会使得不同的编码风格互相混淆。所以现有的代码生成模型无法根据编程人员的个性化需求进行正确和高效的生成代码。因此,期望代表不同的代码模式来建立适应性代码推荐模型。
获得自适应代码生成结果的直接方法是从相关代码(例如同一项目中的代码文件)中学习类似的代码模式。然后重新训练模型,以便它可以调整参数以适合结果。但是,这种方法可能会损害泛化性能,并且会花费大量时间,因此无法快速适应,这对于程序员来说是不能接受的。因此,我们认为使用已经在小样本学习中取得成功示例的元学习技术MAML能够解决这个问题。元学习可以跨多个先前任务学习数据;少数元学习算法可以发现任务之间的结构,从而可以快速学习新任务。MAML可以用于少量样本。可以通过一些简单的步骤对模型进行微调,以提高这些样本反映的代码模式的推荐性能,同时保持其泛化性能。MAML的一种变体Reptile,简化了梯度计算过程,同时保持了模型的准确性。
发明内容
在实际编程过程中,每个程序员有自己的代码风格,而传统基于机器学习的代码推荐技术无法学习到这种代码风格,目前存在的定制化代码推荐工具需要在本地耗费大量计算资源和时间对模型进行重新训练,无法满足程序员的个性化需求。针对上述问题,本发明提供一种基于元学习的代码自适应生成方法,引入了元学习技术,能够根据编程人员不同的个性化代码风格进行正确和高效的生成代码。
本发明为解决上述技术问题采用以下技术方案:
一种基于元学习的代码自适应生成方法,包括下述步骤:
S1:构建训练数据集
对从开源代码数据库中获取的若干代码数据,并对各代码数据分别进行如下处理:将代码数据解析为抽象语法树,使用程序语法中非终结符的名称标记抽象语法树中的节点;经过控制流分析以及数据流分析得到抽象语法树中节点在数据流和控制流中的关系,在抽象语法树中表示增加表示上述关系的边,得到了包含代码上下文语义信息的代码图;选择代码图的一个表达式作为预测目标,该代码图的剩余部分作为输入,预测目标和输入形成一个样本;按照项目对代码数据进行分类,形成具有不同代码风格的训练数据集;
S2:构建基础代码生成模型,并利用S1中的训练数据集进行训练
所述基础代码生成模型一个编码器-解码器结构,编码器使用图神经网络计算出代码图代表上下文语义的向量表示,输入到解码器中;解码器根据语言语法中的产生规则和当前上下文语义的向量表示一次扩展一个标记token,直至生成目标代码表达式;
S3:基于元学习和训练数据集,对S2训练完成的基础代码生成模型继续学习,生成自适应代码生成模型;
S4:对用户提供具有指定代码风格的代码文件,按照S1中的代码数据处理方法进行处理后,输入S3中的自适应代码生成模型,通过元学习生成具有目标风格的代码生成模型;
S5:输入当前编程上下文代码,按照S1中的代码数据处理方法进行处理后,输入S3中的自适应代码生成模型,生成具有目标风格的代码。
进一步,给定上下文信息c能生成抽象语法树a的概率公式如下:p(a|c)=∏tp(at|c,a<t),其中,at表示解码器生成目标表达式的过程中第t次生成的token,a<t表示在t次前生成的部分语法树(partial AST)。
进一步,步骤S3具体为:将不同代码风格视为元学习中的任务,在元训练的每次迭代中随机选取训练数据集中的n个任务,对每个任务中k个样本进行随机梯度下降,在每若干次元训练迭代后执行一次元测试;元测试时随机选取训练数据集中未进行过元训练的1个任务,对该任务中k个样本进行随机梯度下降,测试参数更新后的基础代码生成模型对该任务中其他样本的生成准确率;设置一个结束标志位E=0,若当前生成准确率小于前次元测试得到的生成准确率,则E=E+1,当E大于等于3或者达到元训练的最大迭代次数是元学习结束;基础代码生成模型的参数更新公式为:其中θ表示基础代码生成模型的参数,ε表示学习率,θi表示在第i个任务中进行梯度下降后的参数。
进一步,步骤S2中基础代码生成模型优化过程的目标函数为生成的代码与目标代码的交叉熵,使用Adam优化器进行参数更新。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
附图说明
图1是代码表达式生成示例;
图2是自适应代码生成模型的基本架构。
具体实施方式
下面结合附图对本发明的技术方案做进一步的详细说明:
本发明是一种基于元学习的代码自适应生成方法,包括下述步骤:
S1:构建训练数据集
对从开源代码数据库中获取的代码数据进行预处理——首先把代码数据解析为抽象语法树,(AST);使用程序语法中非终结符的名称标记语法节点,而语法记号用字符串标记;再经过数据流(Data Flow)分析和控制流(Control Flow)分析得到抽象语法树中节点在数据流和控制流中的关系,例如接着我们在抽象语法树中额外增加表示这些关系信息的边,预处理后得到包含代码上下文语义信息的代码图;选择代码图的一个简单表达式作为预测目标,这个代码图的剩余部分作为输入,预测目标和输入形成一个样本,反复如此采样,再按照不同项目进行分类,形成具有不同代码风格的训练数据集。
S2:构建基础代码生成模型,并利用S1中的训练数据集进行训练
所述基础代码生成模型,具体是建立一个编码器-解码器结构,编码器使用图神经网络计算出代码图代表上下文语义的向量表示;把这个向量表示输入到解码器中,解码器根据语言语法中的产生规则和当前上下文向量一次扩展一个token(此处token含义与编译原理中的含义一致,例如var a=”lox”;这个表达式中var,a,=,”lox”,;各自都是一个token)直至生成目标代码表达式。给定上下文信息c能生成抽象语法树a的概率公式如下:p(a|c)=∏tp(at|c,a<t),其中at表示在解码器生成表达式第t次时生成的token,a<t表示在t次前生成的部分语法树(partialAST)。
S3:构建基于元学习的代码风格自适应生成策略,得到自适应的代码生成模型。所述代码风格自适应策略使用从数据集中按照元训练的策略随机采样出支持集和测试集作为输入,对模型参数进行迭代优化,得到自适应代码生成模型。
将训练好的基础代码生成模型通过元学习器对数据集的不同项目进行元学习形成自适应代码生成模型。元学习分为元训练和元测试两个部分。在元训练部分有多次迭代周期,每次迭代需要随机选取训练数据集中的n个项目,每个项目中选取k个样本对模型进行梯度下降。在每500次元训练迭代后执行一次元测试过程,类似地选择测试数据集的1个任务(测试数据集是以前从未训练过的数据集),对其中k个样本进行随机梯度下降,再测试参数更新后的模型对该任务中其他样本的生成准确率,元测试过程中更新的模型参数不保存到结果中去。每次参数更新根据如下公式:其中θ表示初始模型参数,ε表示学习率,n表示n个项目,θi表示在第i个项目中模型梯度下降后的参数。设置一个结束标志位E=0,每次元测试的生成准确率小于上一次元测试得到的生成准确率,E加1,元学习过程结束的条件是E大于等于3或者执行了20000次元训练。
S4:对用户提供具有指定代码风格的代码文件,按照S1中的代码数据处理方法进行处理后,输入S3中的自适应代码生成模型,通过元学习生成具有目标风格的代码生成模型;
S5:输入当前编程上下文代码,按照S1中的代码数据处理方法进行处理后,输入S3中的自适应代码生成模型,生成具有目标风格的代码。
本发明使用的主要技术分别是程序图表示技术,图神经网络(graph neuralnetwork)(GNN),元学习(Meta Learning)技术,这些技术均是现有技术,在本发明中将这些技术有机地进行结合。下面介绍方法的流程并具体说明本发明所使用的各项技术的实施方式和具体实施步骤。
1、图神经网络
图神经网络(GNN)是一种直接在图结构上运行的神经网络。GNN的一个典型应用是节点分类。本质上,图中的每个节点都与一个标签相关联。经过预处理后的代码结构图中每一个节点对应其抽象语法树(AST)中的节点。本发明使用的是GNN的一个变种门控图神经网络GGNN(Gated Graph Neural Network),它是一种基于GRU的经典的空间域messagepassing的模型。一个图G=(V,E),V中存储D维向量表示节点的集合,E中存储D×D维矩阵表示边的集合,目的是构建网络GGNN。实现每一次参数更新时,每个节点既接受相邻节点的信息,又向相邻节点发送信息。最终整个图输出一个值,一般这个值表示图的分类信息。
2、代码图表示技术
现有的使用机器学习对源代码进行表示学习的工作大多数都试图使用传统自然语言处理的方法,没有利用代码的语法和语义结构带来的特有信息。例如,通常不考虑在长距离使用相同的变量或函数而引起的远程依赖性。所以可以使用图来表示代码的语法和语义结构,并使用这种表示技术将源代码表示为图形,并使用不同的边类型标记不同token之间的句法和语义关系。代码的骨干图是程序的抽象语法树(AST),由语法节点(对应于编程语言语法中的非终结符)和语法记号(对应于终结符)组成。我们用程序语法中非终结符的名称标记语法节点,而语法记号用字符串标记。另外一些边则是经过控制流数据流分析之后表示特定节点关系。
3、元学习技术
元学习(Meta Learning)是对模型的一种研究与学习。相对于深度学习在一个任务中通过对样本的学习以对新样本做出判断,元学习的目标可以看做是将任务视作样本,通过对多个任务的学习,以使元模型(meta-learner)能够对新的任务做出快速而准确的学习。
元学习首先在大量任务中进行训练,然后测试其学习新任务的能力。例如每一个类别给出几个样本,那么元学习是否能在将新的图片正确分类,或者在仅提供一条穿过迷宫的通道时,模型能否学会快速穿过新的迷宫。该方法包括在单个任务上训练和在留出样本上测试,与很多标准机器学习技术不同。本发明选择了元学习的一种方法——Reptile,它对梯度更新的过程做了简化,减少了计算资源的耗费,同时保持了准确率。
训练好的模型能够对从未见过的代码风格,通过少量样本进行快速准确的自适应,从而提高代码生成的准确度。表1呈现了四种代码生成模型:
①传统基于序列模型的Seq2Seq
②Brockschmidt、Allamanis等人的基于图神经网络的Graph2Graph模型
③通过Graph2Graph加上样本直接重新训练微调的模型G2G-Tuned
④本发明的模型ACG-Reptile。
在代码表达式生成的Top-1和Top-5的准确率对比,前2种方法未对代码风格进行自适应,而第3种方法没有使用元学习技术进行自适应。
表1四种代码生成模型的准确率
Model | Acc@1 | Acc@5 |
Seq2Seq | 10.54% | 17.83% |
Graph2Graph | 38.79% | 54.06% |
G2G-Tuned | 39.57& | 55.34% |
ACG-Reptile | 41.62% | 59.71% |
从表1可得知本发明的方法相对于Graph2Graph模型对top-1和top-5准确率分别提升了3%和5%,这证明了其有效性。
下面通过具体的实例来说明本发明的使用方式:
本发明选择了一个简单的开源C#项目其中的一个程序文件作为示例如图1,代码生成的目标是灰色框标注的表达式。整体结构如图2,介绍如下:给定一个代码项目,程序员需要在其中一个文件中编辑代码,希望产生符合项目整体代码风格的代码生成结果。首先利用预处理程序将代码项目预处理为代码图,输入训练好的自适应代码生成模型中进行元学习,由于元学习在小样本学习场景的优越性,模型只会选择少量样本进行几步更新,形成目标代码风格的自适应代码生成模型。再输入当前编程上下文代码,首先同样预处理为表示上下文语义的代码图,模型就能自动生成与项目代码风格相近的代码表达式。
综上,本发明基于元学习的代码自适应生成方法,首先构建包含不同代码风格的数据集,并对基础代码生成模型进行训练,基础代码生成模型采用编码器-解码器结构,编码器使用图神经网络计算代码图的状态向量,表示程序当前上下文信息;解码器使用语言语法中的产生规则,根据上下文信息生成目标代码表达式;再通过元学习,学习不同的代码风格,从而训练出能够对新的风格代码做出快速而准确的学习的自适应代码生成模型;最终用户指定目标风格代码,对自适应代码生成模型再进行元训练过程,模型就能够生成具有目标风格的代码。本发明作为一种代码生成方法引入了元学习技术,能够根据编程人员不同的个性化代码风格正确和高效的生成代码。
以上所述,仅为本发明中的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可理解想到的变换或替换,都应涵盖在本发明的包含范围之内,因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (4)
1.一种基于元学习的代码自适应生成方法,其特征在于,包括下述步骤:
S1:构建训练数据集
对从开源代码数据库中获取的若干代码数据,并对各代码数据分别进行如下处理:将代码数据解析为抽象语法树,使用程序语法中非终结符的名称标记抽象语法树中的节点;经过控制流分析以及数据流分析得到抽象语法树中节点在数据流和控制流中的关系,在抽象语法树中表示增加表示上述关系的边,得到了包含代码上下文语义信息的代码图;选择代码图的一个表达式作为预测目标,该代码图的剩余部分作为输入,预测目标和输入形成一个样本;按照项目对代码数据进行分类,形成具有不同代码风格的训练数据集;
S2:构建基础代码生成模型,并利用S1中的训练数据集进行训练
所述基础代码生成模型一个编码器-解码器结构,编码器使用图神经网络计算出代码图代表上下文语义的向量表示,输入到解码器中;解码器根据语言语法中的产生规则和当前上下文语义的向量表示一次扩展一个标记token,直至生成目标代码表达式;
S3:基于元学习和训练数据集,对S2训练完成的基础代码生成模型继续学习,生成自适应代码生成模型;
S4:对用户提供具有指定代码风格的代码文件,按照S1中的代码数据处理方法进行处理后,输入S3中的自适应代码生成模型,通过元学习生成具有目标风格的代码生成模型;
S5:输入当前编程上下文代码,按照S1中的代码数据处理方法进行处理后,输入S3中的自适应代码生成模型,生成具有目标风格的代码。
2.如权利要求1所述的一种基于元学习的代码自适应生成方法,其特征在于,给定上下文信息c能生成抽象语法树a的概率公式如下:p(a|c)=∏tp(at|c,a<t),其中at表示解码器生成目标表达式的过程中第t次生成的token,a<t表示在t次前生成的部分语法树。
3.如权利要求1所述的一种基于元学习的代码自适应生成方法,其特征在于,步骤S3具体为:将不同代码风格视为元学习中的任务,在元训练的每次迭代中随机选取训练数据集中的n个任务,对每个任务中k个样本进行随机梯度下降,在每若干次元训练迭代后执行一次元测试;元测试时随机选取训练数据集中未进行过元训练的1个任务,对该任务中k个样本进行随机梯度下降,测试参数更新后的基础代码生成模型对该任务中其他样本的生成准确率;设置一个结束标志位E=0,若当前生成准确率小于前次元测试得到的生成准确率,则E=E+1,当E大于等于3或者达到元训练的最大迭代次数是元学习结束;基础代码生成模型的参数更新公式为:其中θ表示基础代码生成模型的参数,ε表示学习率,θi表示在第i个任务中进行梯度下降后的参数。
4.如权利要求1所述的一种基于元学习的代码自适应生成方法,其特征在于,步骤S2中基础代码生成模型优化过程的目标函数为生成的代码与目标代码的交叉熵,使用Adam优化器进行参数更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010932958.XA CN112114791B (zh) | 2020-09-08 | 2020-09-08 | 一种基于元学习的代码自适应生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010932958.XA CN112114791B (zh) | 2020-09-08 | 2020-09-08 | 一种基于元学习的代码自适应生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112114791A CN112114791A (zh) | 2020-12-22 |
CN112114791B true CN112114791B (zh) | 2022-03-25 |
Family
ID=73803163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010932958.XA Active CN112114791B (zh) | 2020-09-08 | 2020-09-08 | 一种基于元学习的代码自适应生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112114791B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112381216B (zh) * | 2021-01-14 | 2021-04-27 | 蚂蚁智信(杭州)信息技术有限公司 | 混合图神经网络模型的训练、预测方法和装置 |
CN112836033B (zh) * | 2021-02-25 | 2023-12-01 | 平安银行股份有限公司 | 业务模型的管理方法、装置、设备及存储介质 |
CN116700684B (zh) * | 2022-09-30 | 2024-04-12 | 荣耀终端有限公司 | 一种代码生成方法和终端 |
CN116112762A (zh) * | 2023-04-17 | 2023-05-12 | 武汉理工大学三亚科教创新园 | 一种基于元学习的补充数据下的说话视频生成方法 |
CN116502959B (zh) * | 2023-06-21 | 2023-09-08 | 南京航空航天大学 | 一种基于元学习的产品制造质量预测方法 |
CN116719520B (zh) * | 2023-08-07 | 2023-11-17 | 支付宝(杭州)信息技术有限公司 | 代码生成方法及装置 |
CN117193733B (zh) * | 2023-09-12 | 2024-03-19 | 上海澜码科技有限公司 | 示例库的构建、使用方法及生成的示例代码的评估方法 |
CN116909532B (zh) * | 2023-09-12 | 2024-01-05 | 深圳须弥云图空间科技有限公司 | 一种代码生成与缺陷修复方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260189A (zh) * | 2015-11-02 | 2016-01-20 | 江苏马上游科技股份有限公司 | 基于模型驱动生成代码的方法及系统 |
CN109213863A (zh) * | 2018-08-21 | 2019-01-15 | 北京航空航天大学 | 一种基于学习风格的自适应推荐方法及系统 |
CN109522011A (zh) * | 2018-10-17 | 2019-03-26 | 南京航空航天大学 | 一种基于编程现场上下文深度感知的代码行推荐方法 |
CN109783079A (zh) * | 2018-12-21 | 2019-05-21 | 南京航空航天大学 | 一种基于程序分析和循环神经网络的代码注释生成方法 |
CN109814855A (zh) * | 2017-11-21 | 2019-05-28 | 南京大学 | 一种基于对象分类和自适应子图匹配的api推荐方法 |
CN110018820A (zh) * | 2019-04-08 | 2019-07-16 | 浙江大学滨海产业技术研究院 | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 |
CN110738057A (zh) * | 2019-09-05 | 2020-01-31 | 中山大学 | 一种基于语法约束和语言模型的文本风格迁移方法 |
CN110780878A (zh) * | 2019-10-25 | 2020-02-11 | 湖南大学 | 一种基于深度学习进行JavaScript类型推断的方法 |
CN111459491A (zh) * | 2020-03-17 | 2020-07-28 | 南京航空航天大学 | 一种基于树形神经网络的代码推荐方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10733532B2 (en) * | 2016-01-27 | 2020-08-04 | Bonsai AI, Inc. | Multiple user interfaces of an artificial intelligence system to accommodate different types of users solving different types of problems with artificial intelligence |
CN109032591B (zh) * | 2018-06-21 | 2021-04-09 | 北京航空航天大学 | 一种基于元学习的众包软件开发者推荐方法 |
US10983761B2 (en) * | 2019-02-02 | 2021-04-20 | Microsoft Technology Licensing, Llc | Deep learning enhanced code completion system |
-
2020
- 2020-09-08 CN CN202010932958.XA patent/CN112114791B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260189A (zh) * | 2015-11-02 | 2016-01-20 | 江苏马上游科技股份有限公司 | 基于模型驱动生成代码的方法及系统 |
CN109814855A (zh) * | 2017-11-21 | 2019-05-28 | 南京大学 | 一种基于对象分类和自适应子图匹配的api推荐方法 |
CN109213863A (zh) * | 2018-08-21 | 2019-01-15 | 北京航空航天大学 | 一种基于学习风格的自适应推荐方法及系统 |
CN109522011A (zh) * | 2018-10-17 | 2019-03-26 | 南京航空航天大学 | 一种基于编程现场上下文深度感知的代码行推荐方法 |
CN109783079A (zh) * | 2018-12-21 | 2019-05-21 | 南京航空航天大学 | 一种基于程序分析和循环神经网络的代码注释生成方法 |
CN110018820A (zh) * | 2019-04-08 | 2019-07-16 | 浙江大学滨海产业技术研究院 | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 |
CN110738057A (zh) * | 2019-09-05 | 2020-01-31 | 中山大学 | 一种基于语法约束和语言模型的文本风格迁移方法 |
CN110780878A (zh) * | 2019-10-25 | 2020-02-11 | 湖南大学 | 一种基于深度学习进行JavaScript类型推断的方法 |
CN111459491A (zh) * | 2020-03-17 | 2020-07-28 | 南京航空航天大学 | 一种基于树形神经网络的代码推荐方法 |
Non-Patent Citations (3)
Title |
---|
Meta-GNN: Metagraph Neural Network for Semi-supervised learning in Attributed Heterogeneous Information Networks;Aravind Sankar;《2019 IEEE/ACM International Conference on Advances in Social Networks Analysis and Mining (ASONAM)》;20200423;全文 * |
Model-agnostic meta-learning for fast adaptation of deep networks;FINN C;《Proceedings of the 34th International Conference on Machine》;20171231;全文 * |
基于度量学习的小样本学习研究;聂金龙;《中国优秀硕士学位论文全文数据库 信息科技辑》;20200215;正文第9-34页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112114791A (zh) | 2020-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112114791B (zh) | 一种基于元学习的代码自适应生成方法 | |
US10983761B2 (en) | Deep learning enhanced code completion system | |
Pelikan et al. | Estimation of distribution algorithms | |
Gulwani et al. | Programming by examples: PL meets ML | |
CN113342318B (zh) | 基于多视图代码特征的细粒度代码自动生成方法及系统 | |
JP6663873B2 (ja) | プログラム自動生成システム及びプログラム自動生成方法 | |
CN113688634B (zh) | 一种细粒度情感分析方法 | |
US11573771B2 (en) | Predicting code editor | |
CN113312268A (zh) | 一种智能合约代码相似检测方法 | |
Krleža et al. | Graph matching using hierarchical fuzzy graph neural networks | |
CN113535897A (zh) | 一种基于句法关系和意见词分布的细粒度情感分析方法 | |
CN114327483A (zh) | 图张量神经网络模型建立方法及源代码语义识别方法 | |
JP7355123B2 (ja) | プログラム生成装置、プログラム生成方法及びプログラム | |
Paassen et al. | Mapping python programs to vectors using recursive neural encodings | |
US6889219B2 (en) | Method of tuning a decision network and a decision tree model | |
Kadavy et al. | The ensemble of strategies and perturbation parameter in self-organizing migrating algorithm solving CEC 2019 100-digit challenge | |
CN116225525A (zh) | 一种结合用户反馈和深度学习的代码补全方法 | |
CN115658845A (zh) | 一种适用于开源软件供应链的智能问答方法及装置 | |
Komendantskaya et al. | Proof mining with dependent types | |
Paduraru et al. | Automatic test data generation for a given set of applications using recurrent neural networks | |
WO2022159558A1 (en) | Systems and methods for template-free reaction predictions | |
CN114780577A (zh) | Sql语句生成方法、装置、设备及存储介质 | |
Bahgat | Non-Deterministic Concurrent Logic Programming in Pandora | |
CN112329440A (zh) | 一种基于两阶段筛选和分类的关系抽取方法和装置 | |
He et al. | Knowledge-Driven Program Synthesis via Adaptive Replacement Mutation and Auto-constructed Subprogram Archives |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |