CN117093222A - 一种基于改进转换器模型的代码参数摘要生成方法和系统 - Google Patents
一种基于改进转换器模型的代码参数摘要生成方法和系统 Download PDFInfo
- Publication number
- CN117093222A CN117093222A CN202311068977.2A CN202311068977A CN117093222A CN 117093222 A CN117093222 A CN 117093222A CN 202311068977 A CN202311068977 A CN 202311068977A CN 117093222 A CN117093222 A CN 117093222A
- Authority
- CN
- China
- Prior art keywords
- parameter
- code
- abstract
- parameters
- information
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000012549 training Methods 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims description 37
- 230000004927 fusion Effects 0.000 claims description 12
- 238000000605 extraction Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 238000013528 artificial neural network Methods 0.000 claims description 8
- 230000010354 integration Effects 0.000 claims description 8
- 238000012360 testing method Methods 0.000 claims description 6
- 238000003062 neural network model Methods 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical 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
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种基于改进转换器模型的代码参数摘要生成方法和系统,包括:获取待处理的代码段,通过抽象语法树解析器对待处理的代码段进行解析,获得相应的抽象语法树并提取代码段中的参数集合;通过抽象语法树获取参数集合中若干个参数的相关信息,并根据相关信息分别生成与各个参数对应的参数信息树;通过对参数信息树分别进行转换,获得各个参数的SBT序列;对Transformer模型进行改进并训练,基于各个参数的SBT序列,采用完成训练后的改进的Transformer模型生成代码参数摘要。本发明可以有效提取代码中与参数相关的信息,并利用改进的Transformer神经网络模型生成参数的摘要。
Description
技术领域
本发明属于神经网络和代码语义分析领域,特别是涉及一种基于改进转换器模型的代码参数摘要生成方法和系统。
背景技术
自动生成代码摘要的目的是利用现有的自然语言处理技术,分析代码并生成一段代码的自然语言摘要,以帮助程序员高效地理解代码,并方便后续的程序维护和开发。
目前基于深度学习技术的代码摘要模型结构大多采用编码器——解码器结构。编码器负责将输入转化为上下文向量,解码器负责根据上下文向量产生输出。这一结构被广泛用于机器翻译任务,而代码摘要问题可视为将代码翻译为自然语言的问题。
代码可以不同的形式输入到编码器中。代码的表示形式包括词元(Token)、抽象语法树(Abstract Syntax Tree,AST)和控制流图(Control Flow Graph)等。词元序列特征是将代码的各个单词及符号所组成的序列作为代码的特征表示,被广泛采用。抽象语法树(AST)是一种以树结构保存代码词法信息、语法信息和结构信息的代码表示形式,相比于词元序列特征,AST包含了更丰富的代码结构信息。相关领域中通常用解析器来将代码的词元表示转换为基于树或图的表示。
在一段代码中,函数(方法)的参数是重要的组成部分。如果无法准确提供函数(方法)参数的摘要,将会影响程序开发的效率。当程序员面对一段复杂且没有关于参数的摘要的代码时,仅凭借参数的名称,特别是对于不能直接理解意义的参数名称,他们会对参数的含义产生疑惑,从而需要阅读整段代码以理解参数的意义。因此,为代码生成参数级别的摘要可以帮助程序员高效地理解和使用相关的函数(方法)。然而,现有的基于深度学习的技术主要关注整段代码摘要的生成,对于代码中参数摘要的生成研究相对较少。因此,现有技术还不足以帮助程序员充分了解方法参数的声明和使用。
发明内容
本发明的目的是提供一种基于改进转换器模型的代码参数摘要生成方法和系统,以解决上述现有技术存在的问题。
为实现上述目的,本发明提供了一种基于改进转换器模型的代码参数摘要生成方法,包括:
步骤一、获取待处理的代码段,通过抽象语法树解析器对所述待处理的代码段进行解析,获得相应的抽象语法树并提取代码段中的参数集合;
步骤二、通过所述抽象语法树获取参数集合中若干个参数的相关信息,并根据相关信息分别生成与各个参数对应的参数信息树;
步骤三、通过对所述参数信息树分别进行转换,获得各个参数的SBT序列;
步骤四、对Transformer模型进行改进并训练,基于各个参数的SBT序列,采用完成训练后的改进的Transformer模型生成代码参数摘要。
可选的,所述步骤一中的待处理的代码段包括函数、方法;所述抽象语法树包括结点名与结点类型,并为参数及Statement创建结点。
可选的,获取参数集合中若干个参数的相关信息的过程包括:
针对参数集合中的每个参数,获取所有调用该参数的结点并构成调用结点集合。
可选的,获取各个参数对应的参数信息树的过程包括:
针对参数集合中的每个参数调用结点集合中对应的每个调用结点,找到每个调用结点所属的语句级别子树,放入调用结点对应参数的语句级别子树集合中,将每个参数的语句级别子树集合中包含的语句级别子树进行合并,分别获得各个参数的参数信息树。
可选的,找到每个调用结点所属的语句级别子树的过程包括:
步骤S1:将一个寻找指针指向单个调用结点,
步骤S2:判断指针所指结点的类型是否属于Statement类型,如果是,则将以指针作为根结点的子树作为此调用结点对应参数的一颗语句级别子树;如果不是,则将指针指向此调用结点的父结点,然后重新执行步骤S2。
可选的,对Transformer模型进行改进并训练的过程包括:
基于COPY机制对Transformer模型进行改进,获取包括自然语言摘要的代码段,采用所述步骤一至所述步骤三的方法处理代码段,获得其中包括的全部参数的SBT序列,将参数所在函数或方法对应的自然语言摘要可进行截取后,与参数进行匹配,形成数据集;将所述数据集划分为训练集与测试集后,对改进后的Transformer模型进行训练,直至达到预设标准,其中,所述自然语言摘要为代码段中函数与方法的自然语言摘要。
可选的,基于改进转换器模型的代码参数摘要生成方法还包括:
获取待处理的代码段的同时,获取代码段中函数或者方法的自然语言摘要,若参数所在的函数或方法存在自然语言摘要,则将参数的SBT序列及参数所处函数或方法的自然语言摘要输入至模型中,若不存在,则将参数的SBT序列输入至模型中获得代码参数摘要。
可选的,若参数所在的函数或方法存在自然语言摘要,则分别通过模型中的两个编码器分别SBT序列和参数所处函数或方法的自然语言摘要进行编码,编码后的输出传入融合解码器进行特征融合;利用Attention机制,从SBT序列对应的编码器输出中提取SBT序列编码后的信息,将其与融合解码器的输出进行综合后,通过Copy生成器生成代码参数摘要。
可选的,若参数所在的函数或方法不存在自然语言摘要,则将SBT序列送入编码器进行编码,将编码后的输出送入解码器;同时,基于Attention机制,根据解码器的输出从SBT序列对应的编码器输出中提取SBT序列编码后的信息;通过Copy生成器综合SBT序列编码后的信息和解码器输出的信息,生成代码参数摘要。
本发明还提供一种基于改进转换器模型的代码参数摘要生成系统,包括:
抽象语法树解析器,用于生成代码的抽象语法树表示;
参数相关信息提取和整合模块,用于从代码的抽象语法树中提取和整合各个参数的信息,为每个参数生成一颗参数信息树;
基于结构遍历的序列转换模块,用于将一颗参数信息树转换为基于结构遍历的序列;
改进的Transformer神经网络模块,用于从参数信息树的SBT序列和代码摘要信息中提取特征,并生成代码中参数的摘要;
所述抽象语法树解析器、参数相关信息提取和整合模块、基于结构遍历的序列转换模块、改进的Transformer神经网络模块依次连接。
本发明的技术效果为:
本发明采用了变换器模型,Transformer模型使用自注意力机制,模型单层计算复杂性更低,也可有效解决长时依赖问题;本发明还使用了Pointer Network来构建Copy生成器,此技术可以整合输入序列和输出序列词元的分布,使模型可以产生输入序列中独有的词元,例如变量名等标识符,有利于改善生成的摘要的质量。通过本发明的方法和装置,可以有效提取代码中与参数相关的信息,并利用改进的Transformer神经网络模型生成参数的摘要。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本发明实施例中的方法整体框架示意图;
图2为本发明实施例中的提取参数信息的流程图;
图3为本发明实施例中的改进的Transformer模型的结构图;
图4为本发明实施例中的不使用参数所处方法的自然语言摘要信息时的模型处理示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一
如图1-4所示,本实施例中提供一种基于改进转换器模型的代码参数摘要生成方法,包括:
步骤一:用对应编程语言的抽象语法树解析器解析输入的函数(方法),得到其对应的抽象抽象语法树,并提取出函数(方法)中的参数集合P。抽象语法树中至少应包含结点名和结点类型信息,并能为函数(方法)中的参数以及Statement创建结点。在抽象语法树(AST)中,Statement(语句)是一类AST结点。“语句”是指执行一条操作或者完成某个动作的代码指令。
步骤二:从函数(方法)的抽象语法树中提取和整合与参数相关的信息。
提取的方法是:
针对参数集合P中的每个参数pi,找到所有调用该参数的结点dj,构成调用结点集合Di。
针对每个参数pi调用结点集合Di中的每个调用结点dj,找到其所属的语句级别子树,放入对于参数的语句级别子树集合Si,寻找过程如下:
步骤S1:将一个寻找指针f指向dj,
步骤S2:判断f所指结点的类型是否属于Statement类型,如果是,则将以f作为根结点的子树作为参数pi的一颗语句级别子树;如果不是,则将f指向dj的父结点,然后重新执行步骤S2。
针对每个参数的语句级别子树集合Si,将其中所有的语句级别子树合并,得到这个参数的参数信息树Ti。
在AST中,根据语句的在编程语言中的类型,可以将Statement结点分为BlockStatement、ForStatement、IfStatement等,这些结点都属于Statement类型。
(3)步骤三:将各个参数的参数信息树Ti转换为SBT序列SBTi。
(4)步骤四:将各个参数的SBT序列SBTi和以及其所在函数(方法)的摘要输入到改进的Transformer模型中进行特征提取和融合,生成针对参数的摘要。
与Transformer模型相比,改进的Transformer模型依照Libovicky等人的方法改造了Transformer解码器,并采用了基于Pointer网络,使得模型可以复制输入源中的重要词汇,如参数名等。Pointer网络(Pointer Network)即为模型图(图3或图4)中的“Copy注意力”(后面所提到的“Attention机制”)和“Copy生成器”两部分。
参照图3,在使用基于改进Transformer模型提取特征和生成参数的自然语言摘要时,一种实施方式是采用两个编码器分别对参数信息树的SBT序列和参数所处函数(方法)的自然语言摘要进行编码。编码后的输出被送入融合解码器中,以进行特征融合。此外,利用Attention机制,从SBT序列对应的编码器输出中提取SBT序列编码后的信息,将其与解码器的输出进行综合,最后通过Copy生成器(Copy Generator)生成关于参数描述的自然语言摘要输出。
参照图4,在使用基于改进Transformer模型提取特征和生成参数的自然语言摘要时,另一种实施方式是不使用参数所处方法的自然语言摘要信息。相反,仅使用参数信息树的SBT序列作为输出,将其送入编码器进行编码,然后将编码后的输出送入解码器。同时,利用Attention机制,根据解码器的输出从SBT序列对应的编码器输出中提取SBT序列编码后的信息。最后,通过Copy生成器综合SBT序列编码后的信息和解码器输出的信息,生成关于参数描述的自然语言摘要输出。
还提供一种基于改进转换器模型的代码参数摘要生成系统,包括:
抽象语法树(Abstract Syntax Tree,AST)解析器:用于生成代码的抽象语法树表示。
参数相关信息提取和整合模块:用于从代码的抽象语法树中提取和整合各个参数的信息,为每个参数生成一颗参数信息树。
基于结构遍历的序列(SBT序列)转换模块:用于将一颗参数信息树转换为基于结构遍历的序列(SBT序列)。
改进的Transformer神经网络模块:用于从参数信息树的SBT序列和代码摘要信息中提取特征,并生成代码中参数的摘要。
通过本发明的方法和装置,可以有效提取代码中与参数相关的信息,并利用改进的Transformer神经网络模型生成参数的摘要。
本实施例使用了变换器模型。Transformer模型使用自注意力机制,模型单层计算复杂性更低,也可有效解决长时依赖问题。本发明还使用了Pointer Network来构建Copy生成器,此技术可以整合输入序列和输出序列词元的分布,使模型可以产生输入序列中独有的词元(如变量名等标识符),有利于改善生成的摘要的质量。
本实施例利用了CoDesc数据集(https://github.com/csebuetnlp/CoDesc)代码片段,并从代码的摘要种截取出参数摘要构建数据集。按照8:1:1的比例随机划分为训练数据集、验证数据集、测试数据集。经过训练之后,模型在测试数据集上进行测试。
利用Transformer模型在测试数据集上BLEU、ROUGE-L、METEOR三个指标的分数可达到49.21、52.92、29.04(额外添加参数摘要的实施例三个指标分数分别提高0.11,0.27,0.28),而将模型替换为《Deep code comment generation with hybrid lexical andsyntactical information》中的模型则只有36.42、38.00、15.79的分数。
简单来说,通过使用抽象语法树解析器、参数相关信息提取和整合模块和基于结构遍历的序列转换模块可以有效提取出一段代码(方法或摘要)的多个参数的信息,以被模型利用。而利用改进Transformer模型可以有效的对参数信息进行建模。
实施例二
本实施例提供了一种基于改进转换器模型的代码参数摘要生成方法,包括:
步骤一、获取待处理的代码段,通过抽象语法树解析器对待处理的代码段进行解析,获得相应的抽象语法树并提取代码段中的参数集合;
步骤二、通过抽象语法树获取参数集合中若干个参数的相关信息,并根据相关信息分别生成与各个参数对应的参数信息树;
步骤三、通过对参数信息树分别进行转换,获得各个参数的SBT序列;
步骤四、对Transformer模型进行改进并训练,基于各个参数的SBT序列,采用完成训练后的改进的Transformer模型生成代码参数摘要。
具体的,步骤一中的待处理的代码段包括函数、方法;抽象语法树包括结点名与结点类型,并为参数及Statement创建结点。
具体的,获取参数集合中若干个参数的相关信息的过程包括:
针对参数集合中的每个参数,获取所有调用该参数的结点并构成调用结点集合。
具体的,获取各个参数对应的参数信息树的过程包括:
针对参数集合中的每个参数调用结点集合中对应的每个调用结点,找到每个调用结点所属的语句级别子树,放入调用结点对应参数的语句级别子树集合中,将每个参数的语句级别子树集合中包含的语句级别子树进行合并,分别获得各个参数的参数信息树。
具体的,找到每个调用结点所属的语句级别子树的过程包括:
步骤S1:将一个寻找指针指向单个调用结点,
步骤S2:判断指针所指结点的类型是否属于Statement类型,如果是,则将以指针作为根结点的子树作为此调用结点对应参数的一颗语句级别子树;如果不是,则将指针指向此调用结点的父结点,然后重新执行步骤S2。
具体的,对Transformer模型进行改进并训练的过程包括:
基于COPY机制对Transformer模型进行改进,获取包括自然语言摘要的代码段,采用步骤一至步骤三的方法处理代码段,获得其中包括的全部参数的SBT序列,将参数所在函数或方法对应的自然语言摘要可进行截取后,与参数进行匹配,形成数据集;将数据集划分为训练集与测试集后,对改进后的Transformer模型进行训练,直至达到预设标准,其中,自然语言摘要为代码段中函数与方法的自然语言摘要。
具体的,基于改进转换器模型的代码参数摘要生成方法还包括:
获取待处理的代码段的同时,获取代码段中函数或者方法的自然语言摘要,若参数所在的函数或方法存在自然语言摘要,则将参数的SBT序列及参数所处函数或方法的自然语言摘要输入至模型中,若不存在,则将参数的SBT序列输入至模型中获得代码参数摘要。
具体的,若参数所在的函数或方法存在自然语言摘要,则分别通过模型中的两个编码器分别SBT序列和参数所处函数或方法的自然语言摘要进行编码,编码后的输出传入融合解码器进行特征融合;利用Attention机制,从SBT序列对应的编码器输出中提取SBT序列编码后的信息,将其与融合解码器的输出进行综合后,通过Copy生成器生成代码参数摘要。
具体的,若参数所在的函数或方法不存在自然语言摘要,则将SBT序列送入编码器进行编码,将编码后的输出送入解码器;同时,基于Attention机制,根据解码器的输出从SBT序列对应的编码器输出中提取SBT序列编码后的信息;通过Copy生成器综合SBT序列编码后的信息和解码器输出的信息,生成代码参数摘要。
本实施例还提供一种基于改进转换器模型的代码参数摘要生成系统,其特征在于,包括:
抽象语法树解析器,用于生成代码的抽象语法树表示;
参数相关信息提取和整合模块,用于从代码的抽象语法树中提取和整合各个参数的信息,为每个参数生成一颗参数信息树;
基于结构遍历的序列转换模块,用于将一颗参数信息树转换为基于结构遍历的序列;
改进的Transformer神经网络模块,用于从参数信息树的SBT序列和代码摘要信息中提取特征,并生成代码中参数的摘要;
抽象语法树解析器、参数相关信息提取和整合模块、基于结构遍历的序列转换模块、改进的Transformer神经网络模块依次连接。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种基于改进转换器模型的代码参数摘要生成方法,其特征在于,包括以下步骤:
步骤一、获取待处理的代码段,通过抽象语法树解析器对所述待处理的代码段进行解析,获得相应的抽象语法树并提取代码段中的参数集合;
步骤二、通过所述抽象语法树获取参数集合中若干个参数的相关信息,并根据相关信息分别生成与各个参数对应的参数信息树;
步骤三、通过对各个参数对应的参数信息树分别进行转换,获得各个参数的SBT序列;
步骤四、对Transformer模型进行改进并训练,基于各个参数的SBT序列,采用完成训练后的改进的Transformer模型生成代码参数摘要。
2.根据权利要求1所述的基于改进转换器模型的代码参数摘要生成方法,其特征在于,
所述步骤一中的待处理的代码段包括函数、方法;所述抽象语法树包括结点名与结点类型,并为参数及Statement创建结点。
3.根据权利要求1所述的基于改进转换器模型的代码参数摘要生成方法,其特征在于,
所述步骤二中获取参数集合中若干个参数的相关信息的过程包括:
针对参数集合中的每个参数,获取所有调用该参数的结点并构成调用结点集合。
4.根据权利要求3所述的基于改进转换器模型的代码参数摘要生成方法,其特征在于,
所述步骤二中获取各个参数对应的参数信息树的过程包括:
针对参数集合中的每个参数调用结点集合中对应的每个调用结点,找到每个调用结点所属的语句级别子树,放入调用结点对应参数的语句级别子树集合中,将每个参数的语句级别子树集合中包含的语句级别子树进行合并,分别获得各个参数的参数信息树。
5.根据权利要求4所述的基于改进转换器模型的代码参数摘要生成方法,其特征在于,
所述步骤二中找到每个调用结点所属的语句级别子树的过程包括:
步骤S1:将一个寻找指针指向单个调用结点,
步骤S2:判断指针所指结点的类型是否属于Statement类型,如果是,则将以指针作为根结点的子树作为此调用结点对应参数的一颗语句级别子树;如果不是,则将指针指向此调用结点的父结点,然后重新执行步骤S2。
6.根据权利要求1所述的基于改进转换器模型的代码参数摘要生成方法,其特征在于,
所述步骤四中对Transformer模型进行改进并训练的过程包括:
基于COPY机制对Transformer模型进行改进,获取包括自然语言摘要的代码段,采用所述步骤一至所述步骤三的方法处理代码段,获得其中包括的全部参数的SBT序列,将参数所在函数或方法对应的自然语言摘要可进行截取后,与参数进行匹配,形成数据集;将所述数据集划分为训练集与测试集后,对改进后的Transformer模型进行训练,直至达到预设标准,其中,所述自然语言摘要为代码段中函数与方法的自然语言摘要。
7.根据权利要求1所述的基于改进转换器模型的代码参数摘要生成方法,其特征在于,
基于改进转换器模型的代码参数摘要生成方法还包括:
获取待处理的代码段的同时,获取代码段中函数或者方法的自然语言摘要,若参数所在的函数或方法存在自然语言摘要,则将参数的SBT序列及参数所处函数或方法的自然语言摘要输入至模型中,若不存在,则将参数的SBT序列输入至模型中获得代码参数摘要。
8.根据权利要求7所述的基于改进转换器模型的代码参数摘要生成方法,其特征在于,
所述步骤四中,若参数所在的函数或方法存在自然语言摘要,则分别通过模型中的两个编码器分别SBT序列和参数所处函数或方法的自然语言摘要进行编码,编码后的输出传入融合解码器进行特征融合;利用Attention机制,从SBT序列对应的编码器输出中提取SBT序列编码后的信息,将其与融合解码器的输出进行综合后,通过Copy生成器生成代码参数摘要。
9.根据权利要求7所述的基于改进转换器模型的代码参数摘要生成方法,其特征在于,
所述步骤四中,若参数所在的函数或方法不存在自然语言摘要,则将SBT序列送入编码器进行编码,将编码后的输出送入解码器;同时,基于Attention机制,根据解码器的输出从SBT序列对应的编码器输出中提取SBT序列编码后的信息;通过Copy生成器综合SBT序列编码后的信息和解码器输出的信息,生成代码参数摘要。
10.一种基于改进转换器模型的代码参数摘要生成系统,其特征在于,包括:
抽象语法树解析器,用于生成代码的抽象语法树表示;
参数相关信息提取和整合模块,用于从代码的抽象语法树中提取和整合各个参数的信息,为每个参数生成一颗参数信息树;
基于结构遍历的序列转换模块,用于将一颗参数信息树转换为基于结构遍历的序列;
改进的Transformer神经网络模块,用于从参数信息树的SBT序列和代码摘要信息中提取特征,并生成代码中参数的摘要;
所述抽象语法树解析器、参数相关信息提取和整合模块、基于结构遍历的序列转换模块、改进的Transformer神经网络模块依次连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311068977.2A CN117093222A (zh) | 2023-08-23 | 2023-08-23 | 一种基于改进转换器模型的代码参数摘要生成方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311068977.2A CN117093222A (zh) | 2023-08-23 | 2023-08-23 | 一种基于改进转换器模型的代码参数摘要生成方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117093222A true CN117093222A (zh) | 2023-11-21 |
Family
ID=88772974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311068977.2A Pending CN117093222A (zh) | 2023-08-23 | 2023-08-23 | 一种基于改进转换器模型的代码参数摘要生成方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117093222A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117407051A (zh) * | 2023-12-12 | 2024-01-16 | 武汉大学 | 一种基于结构位置感知的代码自动摘要方法 |
-
2023
- 2023-08-23 CN CN202311068977.2A patent/CN117093222A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117407051A (zh) * | 2023-12-12 | 2024-01-16 | 武汉大学 | 一种基于结构位置感知的代码自动摘要方法 |
CN117407051B (zh) * | 2023-12-12 | 2024-03-08 | 武汉大学 | 一种基于结构位置感知的代码自动摘要方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Berabi et al. | Tfix: Learning to fix coding errors with a text-to-text transformer | |
Hu et al. | Deep code comment generation | |
Sui et al. | Flow2vec: Value-flow-based precise code embedding | |
Chen et al. | Tree-to-tree neural networks for program translation | |
CN108459860B (zh) | 区块链智能合约形式化验证代码转换器及转换方法 | |
US8601453B2 (en) | COBOL to bytecode translation | |
CN109783079A (zh) | 一种基于程序分析和循环神经网络的代码注释生成方法 | |
Calegari et al. | Verification of model transformations: A survey of the state-of-the-art | |
Zhou et al. | Augmenting Java method comments generation with context information based on neural networks | |
CN106843849B (zh) | 一种基于文档的库函数的代码模型的自动合成方法 | |
CN109857641A (zh) | 对程序源文件进行缺陷检测的方法及装置 | |
CN116450616A (zh) | 一种基于解析树的通用异构关系型数据库sql迁移方法 | |
CN114547619B (zh) | 一种基于树的漏洞修复系统及修复方法 | |
Schiewe et al. | Advancing static code analysis with language-agnostic component identification | |
CN117093222A (zh) | 一种基于改进转换器模型的代码参数摘要生成方法和系统 | |
Gui et al. | Cross-language binary-source code matching with intermediate representations | |
US20230252161A1 (en) | Methods of evaluating source code using numeric array representations of source code elements | |
Mahbub et al. | Explaining software bugs leveraging code structures in neural machine translation | |
Tufano et al. | Deepmutation: A neural mutation tool | |
CN112732264A (zh) | 一种高级编程语言间代码自动转换方法 | |
Liu et al. | Syntax and domain aware model for unsupervised program translation | |
CN109155129B (zh) | 语言程控系统 | |
Sharma et al. | A survey on machine learning techniques applied to source code | |
CN104731705B (zh) | 一种基于复杂网络的脏数据传播路径发现方法 | |
CN115357492A (zh) | 一种用于Java软件的形式化验证方法及装置 |
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 |