CN116400901B - 一种Python代码自动生成方法及系统 - Google Patents
一种Python代码自动生成方法及系统 Download PDFInfo
- Publication number
- CN116400901B CN116400901B CN202310382529.3A CN202310382529A CN116400901B CN 116400901 B CN116400901 B CN 116400901B CN 202310382529 A CN202310382529 A CN 202310382529A CN 116400901 B CN116400901 B CN 116400901B
- Authority
- CN
- China
- Prior art keywords
- natural language
- code
- language description
- sample
- codes
- 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
- 239000013598 vector Substances 0.000 claims abstract description 66
- 230000009471 action Effects 0.000 claims abstract description 57
- 238000012512 characterization method Methods 0.000 claims abstract description 29
- 238000012549 training Methods 0.000 claims abstract description 19
- 230000004927 fusion Effects 0.000 claims abstract description 14
- 238000012360 testing method Methods 0.000 claims abstract description 13
- 238000013135 deep learning Methods 0.000 claims abstract description 12
- 230000006870 function Effects 0.000 claims description 15
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 4
- 238000013528 artificial neural network Methods 0.000 claims description 3
- 238000007781 pre-processing Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 230000011218 segmentation Effects 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 2
- 230000018109 developmental process Effects 0.000 description 6
- 238000011160 research Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 101000772194 Homo sapiens Transthyretin Proteins 0.000 description 1
- 102100029290 Transthyretin Human genes 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000009635 antibiotic susceptibility testing Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012407 engineering method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3347—Query execution using vector based model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
- G06F18/253—Fusion techniques of extracted features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- 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
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Devices For Executing Special Programs (AREA)
- Machine Translation (AREA)
Abstract
本发明公开一种Python代码自动生成方法及系统,涉及代码生成领域,该方法包括从测试数据库中获取代码的自然语言描述;获取代码的自然语言描述对应的代码的NLP特征;将代码的自然语言描述转化为Action序列特征;并根据Action特征确定AST表征向量;对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合;利用特征向量进行检索确定样本自然语言描述;并将样本自然语言描述、代码的自然语言描述以及对应的代码作为样本数据集中样本;利用样本数据集训练深度学习PLBART模型;根据待生成的代码的自然语言描述,采用代码生成模型,生成Python代码。本发明可准确自动生成有效的代码。
Description
技术领域
本发明涉及代码生成领域,特别是涉及一种Python代码自动生成方法及系统。
背景技术
随着现有软件功能和复杂度的不断增加,软件技术开发的成本和错误率也在不断提升。为了将开发人员从耗时且容易出错的软件开发任务中解脱出来。研究人员提出了多种工程方法和先进技术来指导软件开发,而利用机器自动生成目标代码的技术受到了广泛关注。其中,代码生成方法主要是基于代码描述或者代码编程实例生成目标代码,但自动生成代码的可读性较差会极大地影响软件开发的效率。
代码生成是将自然语言描述转换为代码的一项极具挑战性的任务这项任务遇到的主要困难是模型的输入和输出数据是跨语言的。此外,NL结构随意,但生成的代码却需要明确可执行的结构输出也是主要问题所在。由于Python是当下热门的编程语言,因此Python代码生成在学术界和工业界备受关注。但是Python由于编程风格较为随意,没有明确的格式限制,极大地提升了代码自动生成的难度。现有研究表明开发人员有一半以上的时间都花在了程序理解上,代码的可读性和可维护性差极大地影响了开发的效率和质量,而代码生成却能减少开发人员的工作量,同时大大提高了代码的可读性。并且代码生成技术能减轻开发人员的工作负担,他们能有更多的时间完善软件设计。
因此Python代码自动化生成在学术界和工业界备受关注,所以代码生成是一个重要的领域,值得深入研究。
在代码生成领域中,利用功能描述的自然语言转换为代码是极具挑战性的任务。这项任务遇到的主要问题是输入的自然语言和生成的代码间是跨语言的,代码生成模型很难挖掘出两者间的关联性。此外,自然语言描述结构较随意,但生成的代码却需要明确可执行的结构输出也是任务的难点之一。早期的研究工作是尝试根据建模语言中描述的模型生成源代码,但是利用UML构建动作语义也是具有挑战性和耗时的。随着深度学习的快速发展,越来越多的研究人员将深度学习技术应用到代码生成领域。有的研究人员使用Seq2Seq深度学习模型将自然语言序列转换为代码的符号序列。但是,这些序列方法只使用了最简单的代码标识符表征,且不能确保生成的代码在语法和结构上是正确的。为了解决这个问题,研究人员提出将自然语言描述转化为代码的中间结构,并利用该结构生成目标代码的方法。研究结果表明该方法可以有效提高代码生成的准确性。
但是,如何有效地结合自然语言描述的语义信息和结构特征更好地生成目标代码,仍然是上述模型中存在的问题。第一,基于中间结构的深度模型通常能提取代码的结构特征,但是对于自然语言描述的语义信息特征提取不足。现有的研究工作中,他们没有考虑相同结构的训练数据,无法利用相关信息辅助生成代码。最常见的是模型无法生成出现频率较低的代码节点。第二,当前的生成模型缺乏捕捉复杂结构的能力。这种情况导致模型无法正确生成目标代码的结构,甚至会生成完全错误的代码框架。
发明内容
本发明的目的是提供一种Python代码自动生成方法及系统,可准确自动生成有效的代码。
为实现上述目的,本发明提供了如下方案:
一种Python代码自动生成方法,包括:
从测试数据库中获取代码的自然语言描述;
获取代码的自然语言描述对应的代码的NLP特征;
将代码的自然语言描述转化为Action序列特征;并根据Action特征确定AST表征向量;
对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量;
利用特征向量进行检索确定样本自然语言描述;并将样本自然语言描述、代码的自然语言描述以及对应的代码作为样本数据集中样本;
利用样本数据集训练深度学习PLBART模型,确定代码生成模型;
根据待生成的代码的自然语言描述,采用代码生成模型,生成Python代码。
可选地,所述从测试数据库中获取代码的自然语言描述,之后还包括:
对代码的自然语言描述进行预处理;所述预处理包括:切词处理。
可选地,所述对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量,具体包括:
采用FastText预训练模型作为样本嵌入模型;
利用样本嵌入模型对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量。
可选地,所述利用样本嵌入模型对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量,具体包括:
利用公式x=α*embed(u)+β*embed(Action)+γ*embed(AST)确定特征向量;
其中,x为特征向量,α、β和γ是控制语义和结构特征的混合权重参数,u为自然语言描述的代码的NLP特征,Action为Action序列特征,AST为AST表征向量。
可选地,所述利用特征向量进行检索确定样本自然语言描述;并将样本自然语言描述、代码的自然语言描述以及对应的代码作为样本数据集中样本,具体包括:
采用余弦相似度度量样本间的相似性,确定样本自然语言描述。
可选地,所述深度学习PLBART模型的损失函数为:
其中,为损失函数,m是样本数据集的数量,f()为噪声函数,f()用于学习语言的语法和语义特征,xi为第i个样本,P()是解码过程中的概率函数,θ是神经网络中的训练参数。
一种Python代码自动生成系统,包括:
代码的自然语言描述获取模块,用于从测试数据库中获取代码的自然语言描述;
自然语言特征获取模块,用于获取代码的自然语言描述对应的代码的NLP特征;
Action序列特征转化模块,用于将代码的自然语言描述转化为Action序列特征;
AST表征向量确定模块,用于根据Action特征确定AST表征向量;
特征向量确定模块,用于对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量;
检索模块,用于利用特征向量进行检索确定样本自然语言描述;并将样本自然语言描述、代码的自然语言描述以及对应的代码作为样本数据集中样本;
PLBART模型训练模块,用于利用样本数据集训练深度学习PLBART模型,确定代码生成模型;
代码生成模块,用于根据待生成的代码的自然语言描述,采用代码生成模型,生成Python代码。
一种存储介质,其上存储有计算机程序指令,当所述计算机程序指令被处理器执行时实现所述的方法。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明所提供的一种Python代码自动生成方法及系统,将代码的自然语言描述转化为Action特征;将Action特征转化为AST表征向量;将Action特征、自然语言特征和AST表征向量转化为特征向量;利用特征向量对测试样本进行检索;并结合检索的信息构建最终样本数据集。其中,对获取的Action、AST和自然语言特征进行比例融合,构建最终的样本数据向量表征。最后,利用PLBART模型进行Python代码的生成。本发明在利用自然语言转化为中间架构的同时,还考虑了自然语言描述的影响。两者通过向量相似度检索方法得出最相关的代码样本,从而生成低频词。使用PLBART模型构建代码的生成模型,该模型可以捕捉复杂的结构和语义特征以正确生成复杂的代码,以正确生成复杂的代码。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的一种Python代码自动生成方法流程示意图;
图2为本发明所提供的一种Python代码自动生成方法原理示意图;
图3为本发明所提供的一种Python代码自动生成方法对应的架构图;
图4为自然语言描述转化为Action和AST示意图;
图5本发明所提供的一种Python代码自动生成系统结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种Python代码自动生成方法及系统,可准确自动生成有效的代码。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1、图2和图3所示,本发明提供一种Python代码自动生成方法,包括:
S101,从测试数据库中获取代码的自然语言描述;对代码的自然语言描述进行预处理,用于下阶段的样本特征量化;所述预处理包括:切词处理。
使用Androguard逆向编译工具对该安卓应用进行逆向编译,获取其中相关粗粒度的API特征信息。
S102,获取代码的自然语言描述对应的代码的NLP特征。
S103,将代码的自然语言描述转化为Action序列特征;并根据Action特征确定AST表征向量。
使用TRANX模型中的抽象语法描述语言(ASDL)将自然语言描述转换为Action序列特征。TRANX模型本质上是一个转换系统,它旨在将每个自然语言描述解析成Action序列。Action序列主要分为以下三类:
(1)APPLYCONSTR[c]动作用于构建AST的中间节点,可以连接到其他类型的动作并向下扩展。如果边界字段具有顺序基数,则该操作会将构造函数附加到该字段持有的构造函数列表中。
(2)REDUCE动作表示APPLYCONSTR[c]动作中可选(?)或多个(*)基数的生成操作结束,即对应操作结束标志。
(3)GENTOKEN[v]动作用于构造AST的终端节点,其中的v表示终端节点。动作结构APPLYCONSTR[c]的概率计算公式如下:
对于GENTOKEN[v]动作,模型使用生成和复制的混合生成方法,从自然语言描述中选择细粒度信息。其概率计算公式如下:
p=(at=GENTOKEN[v]|a<t,x)
=p(gen|at,x)p(v|gen,at,x)+p(copy|at,x)p(v|copy,at,x)。
其中p(gen|·)和p(copy|·)的概率由计算得来。节点v可以从预定义的词汇表中生成。此外,节点v可以利用指针网络复制生成,并且指针网络复制自然语言描述x中第i个单词的概率公式如下:
样本的结构特征是由所有Action组成的序列,其中包含大量节点之间的结构信息,例如节点间的父子特征以及语义信息等。虽然,本发明可以单独选择生成的AST作为结构检索的数据,但AST仍然会缺失重要的结构信息。例如,有些动作在对应的AST中只会显示Attribute节点信息,缺少(exprvalue,identifier attr)语义信息,这会导致潜在子节点的结构信息丢失。因此,本发明选择Action序列特征及AST作为检索模型的结构特征数据。Action和AST生成的核心差异在于AST更为精确,自然语言描述很难直接找到关联性,但Action包含信息更多,关键数据丢失的可能性小。
S104,对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量,即将样本特征量化。为了解决现有方法对样本特征提取不充分的问题,将自然语言描述带入到模型中,该操作能包含样本的语义特征和稀有词语。如表1所示,目标代码中包含内置函数“str”,分析发现其检索样本代码的自然语言描述是“ifvalue is an instanceofstrtype”包含了“str”。该词在训练数据集中出现的次数低于5,显然是低频词汇,此外“strtype”的语义描述能够增加样本语义特性。
表1
Action包含更多样本的结构特征。例如,在图4中,t3为[Attribute(exprvalue,identifierattr)]其包含了子节点相关结构信息。但是,该动作在对应的AST中只会显示Attribute节点信息,缺少(expr value,identifierattr)结构信息,这会导致潜在子节点的结构信息丢失。
采用FastText预训练模型作为样本嵌入模型;通过对样本的自然语言描述、Action序列特征和AST表征向量进行向量化表征,模型可以更好地获取词语之间的相关性,深层次挖掘样本的语义特征,从而提高检索相关数据的准确性。该过程如x=α*embed(u)+β*embed(Action)+γ*embed(AST)所示,将这些语义和结构特征同时嵌入为混合向量,并用于样本表示和检索。
即利用样本嵌入模型对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量。
其中,x为特征向量,α、β和γ是控制语义和结构特征的混合权重参数,u为自然语言描述的代码的NLP特征,Action为Action序列特征,AST为AST表征向量。
S105,利用特征向量进行检索确定样本自然语言描述;并将样本自然语言描述、代码的自然语言描述以及对应的代码作为样本数据集中样本。
采用余弦相似度度量样本间的相似性,确定样本自然语言描述。
在得到每个样本的向量表征后,模型使用余弦相似度度量样本间的相似性,并获取最相关的检索样本,该过程如以下公式所示:
其中,ci为训练数据集中样本的嵌入向量,为ci的转置,s为样本的总数,d为测试样本的嵌入向量,cos为计算两个向量的余弦相似度,argmax为查找最大余弦相似度的函数。
S106,利用样本数据集训练深度学习PLBART模型,确定代码生成模型。
所述深度学习PLBART模型的损失函数为:
其中,为损失函数,m是样本数据集的数量,f()为噪声函数,f()用于学习语言的语法和语义特征,xi为第i个样本,P()是解码过程中的概率函数,θ是神经网络中的训练参数。
生成模型的输入是一个序列,将自然语言描述和检索到的样本自然语言描述和代码拼接起来作为模型的序列输入。在输入序列中,模型添加了两个特殊标识符<nlsep>和<codeseq>来区分测试数据和检索样本,并将检索样本代码和自然语言描述打乱。
S107,根据待生成的代码的自然语言描述,采用代码生成模型,生成Python代码。
对于本发明的检测精度,对比了之前研究工作。实验表明,本发明在公开数据集中对于Python代码自动任务中,预测精度Acc值首次超过了80%,远超了其他的相关模型。此外,本发明的BLEU值到91%,和对比模型相比,其提升的程度超过10%。
本发明能够有效生成样本中的一些低频词,其主要原因是因为样本检索方法能够考虑更多的数据信息,在模型生成代码时,可参考的样本数据更多。
如图5所示,本发明所提供的一种Python代码自动生成系统,包括:
代码的自然语言描述获取模块,用于从测试数据库中获取代码的自然语言描述。
自然语言特征获取模块,用于获取代码的自然语言描述对应的代码的NLP特征。
Action序列特征转化模块,用于将代码的自然语言描述转化为Action序列特征。
AST表征向量确定模块,用于根据Action特征确定AST表征向量。
特征向量确定模块,用于对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量。
检索模块,用于利用特征向量进行检索确定样本自然语言描述。并将样本自然语言描述、代码的自然语言描述以及对应的代码作为样本数据集中样本。
PLBART模型训练模块,用于利用样本数据集训练深度学习PLBART模型,确定代码生成模型。
代码生成模块,用于根据待生成的代码的自然语言描述,采用代码生成模型,生成Python代码。
基于上述描述,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的计算机存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (5)
1.一种Python代码自动生成方法,其特征在于,包括:
从测试数据库中获取代码的自然语言描述;
获取代码的自然语言描述对应的代码的NLP特征;
将代码的自然语言描述转化为Action序列特征;并根据Action特征确定AST表征向量;
对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量;
利用特征向量进行检索确定样本自然语言描述;并将样本自然语言描述、代码的自然语言描述以及对应的代码作为样本数据集中样本;
利用样本数据集训练深度学习PLBART模型,确定代码生成模型;
根据待生成的代码的自然语言描述,采用代码生成模型,生成Python代码;
所述对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量,具体包括:
采用FastText预训练模型作为样本嵌入模型;
利用样本嵌入模型对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量;
利用公式确定特征向量;
其中,为特征向量,/>、/>和/>是控制语义和结构特征的混合权重参数,/>为自然语言描述的代码的NLP特征,Action为Action序列特征,AST为AST表征向量;
所述从测试数据库中获取代码的自然语言描述,之后还包括:
对代码的自然语言描述进行预处理;所述预处理包括:切词处理;
生成模型的输入是一个序列,将自然语言描述和检索到的样本自然语言描述和代码拼接起来作为模型的序列输入;在输入序列中,样本嵌入模型添加了两个特殊标识符<nlsep>和<codeseq>来区分测试数据和检索样本,并将检索样本代码和自然语言描述打乱。
2.根据权利要求1所述的一种Python代码自动生成方法,其特征在于,所述利用特征向量进行检索确定样本自然语言描述;并将样本自然语言描述、代码的自然语言描述以及对应的代码作为样本数据集中样本,具体包括:
采用余弦相似度度量样本间的相似性,确定样本自然语言描述。
3.根据权利要求1所述的一种Python代码自动生成方法,其特征在于,所述深度学习PLBART模型的损失函数为:
;
其中,为损失函数,/>是样本数据集的数量,/>为噪声函数,/>用于学习语言的语法和语义特征,/>为第i个样本,/>是解码过程中的概率函数,/>是神经网络中的训练参数。
4.一种Python代码自动生成系统,应用于权利要求1-3任一项所述的一种Python代码自动生成方法其特征在于,包括:
代码的自然语言描述获取模块,用于从测试数据库中获取代码的自然语言描述;
自然语言特征获取模块,用于获取代码的自然语言描述对应的代码的NLP特征;
Action序列特征转化模块,用于将代码的自然语言描述转化为Action序列特征;
AST表征向量确定模块,用于根据Action特征确定AST表征向量;
特征向量确定模块,用于对代码的NLP特征、Action序列特征以及AST表征向量进行特征融合,确定特征向量;
检索模块,用于利用特征向量进行检索确定样本自然语言描述;并将样本自然语言描述、代码的自然语言描述以及对应的代码作为样本数据集中样本;
PLBART模型训练模块,用于利用样本数据集训练深度学习PLBART模型,确定代码生成模型;
代码生成模块,用于根据待生成的代码的自然语言描述,采用代码生成模型,生成Python代码。
5.一种存储介质,其上存储有计算机程序指令,其特征在于,当所述计算机程序指令被处理器执行时实现如权利要求1-3中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310382529.3A CN116400901B (zh) | 2023-04-12 | 2023-04-12 | 一种Python代码自动生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310382529.3A CN116400901B (zh) | 2023-04-12 | 2023-04-12 | 一种Python代码自动生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116400901A CN116400901A (zh) | 2023-07-07 |
CN116400901B true CN116400901B (zh) | 2024-06-11 |
Family
ID=87011997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310382529.3A Active CN116400901B (zh) | 2023-04-12 | 2023-04-12 | 一种Python代码自动生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116400901B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117093196B (zh) * | 2023-09-04 | 2024-03-01 | 广东工业大学 | 一种基于知识图谱的编程语言生成方法及系统 |
CN116909574A (zh) * | 2023-09-08 | 2023-10-20 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种检索增强的结构化代码生成系统及方法 |
CN117707501B (zh) * | 2023-12-18 | 2024-06-14 | 广州擎勤网络科技有限公司 | 基于ai与大数据的代码自动生成方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489102A (zh) * | 2019-07-29 | 2019-11-22 | 东北大学 | 一种从自然语言自动生成Python代码的方法 |
CN113190219A (zh) * | 2021-05-08 | 2021-07-30 | 南通大学 | 一种基于递归神经网络模型的代码注释生成方法 |
CN113761163A (zh) * | 2021-08-18 | 2021-12-07 | 浙江大学 | 基于代码结构语义信息的深度代码搜索方法、系统及装置 |
CN114385178A (zh) * | 2021-12-14 | 2022-04-22 | 厦门大学 | 基于抽象语法树结构信息增强的代码生成方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11782686B2 (en) * | 2021-05-18 | 2023-10-10 | Salesforce.Com, Inc. | Systems and methods for code understanding and generation |
-
2023
- 2023-04-12 CN CN202310382529.3A patent/CN116400901B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489102A (zh) * | 2019-07-29 | 2019-11-22 | 东北大学 | 一种从自然语言自动生成Python代码的方法 |
CN113190219A (zh) * | 2021-05-08 | 2021-07-30 | 南通大学 | 一种基于递归神经网络模型的代码注释生成方法 |
CN113761163A (zh) * | 2021-08-18 | 2021-12-07 | 浙江大学 | 基于代码结构语义信息的深度代码搜索方法、系统及装置 |
CN114385178A (zh) * | 2021-12-14 | 2022-04-22 | 厦门大学 | 基于抽象语法树结构信息增强的代码生成方法 |
Non-Patent Citations (1)
Title |
---|
Code Generation with Hybrid of Structural and Semantic Features Retrieval;Kang Yang等;《International journal of software engineering and knowledge engineering》;第第32卷卷(第第3期期);第457-478页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116400901A (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116400901B (zh) | 一种Python代码自动生成方法及系统 | |
US20210034817A1 (en) | Request paraphrasing system, request paraphrasing model and request determining model training method, and dialogue system | |
CN111930906A (zh) | 基于语义块的知识图谱问答方法及装置 | |
US11327722B1 (en) | Programming language corpus generation | |
CN111563045B (zh) | 基于Adaboost模型的并发程序数据竞争语句级检测方法 | |
CN118170894B (zh) | 一种知识图谱问答方法、装置及存储介质 | |
CN113190219A (zh) | 一种基于递归神经网络模型的代码注释生成方法 | |
CN110750297B (zh) | 一种基于程序分析和文本分析的Python代码参考信息生成方法 | |
CN113127339A (zh) | 一种Github开源平台数据的获取方法及源代码缺陷修复系统 | |
CN115238029A (zh) | 一种电力故障知识图谱的构建方法和装置 | |
CN114722833B (zh) | 一种语义分类方法及装置 | |
CN117035078A (zh) | 一种多模态知识图谱统一表示学习框架 | |
CN113076089B (zh) | 一种基于对象类型的api补全方法 | |
JP4738753B2 (ja) | 文法オーサリングにおけるセグメント化あいまい性(segmentationambiguity)の自動的な解決 | |
CN116560631A (zh) | 一种机器学习模型代码的生成方法及装置 | |
CN116166789A (zh) | 一种方法命名精准推荐和审查方法 | |
CN115438341A (zh) | 提取代码循环计数器的方法、装置、存储介质和电子设备 | |
CN114239555A (zh) | 一种关键词提取模型的训练方法及相关装置 | |
CN115906838A (zh) | 文本抽取方法、装置、电子设备以及存储介质 | |
CN113434430A (zh) | 一种sql查询语句性能检测方法和装置 | |
CN114842246B (zh) | 一种社交媒体压力类别检测方法及装置 | |
CN114610852B (zh) | 一种基于课程学习的细粒度中文句法分析方法及装置 | |
Qiu et al. | A multi-encoder model for automatic code comment generation | |
CN113553266A (zh) | 一种基于并行性检测模型的串行程序的并行性检测方法、系统、终端及可读存储介质 | |
Yu et al. | Deep Code Curator–Technical Report on Code2Graph |
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 |