CN117407051A - 一种基于结构位置感知的代码自动摘要方法 - Google Patents
一种基于结构位置感知的代码自动摘要方法 Download PDFInfo
- Publication number
- CN117407051A CN117407051A CN202311701689.6A CN202311701689A CN117407051A CN 117407051 A CN117407051 A CN 117407051A CN 202311701689 A CN202311701689 A CN 202311701689A CN 117407051 A CN117407051 A CN 117407051A
- Authority
- CN
- China
- Prior art keywords
- code
- sequence
- vector
- semantic
- attention
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 239000013598 vector Substances 0.000 claims abstract description 67
- 239000011159 matrix material Substances 0.000 claims abstract description 25
- 238000004364 calculation method Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 19
- 230000007246 mechanism Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 10
- 238000010276 construction Methods 0.000 claims description 7
- 239000003550 marker Substances 0.000 claims description 6
- 238000010606 normalization Methods 0.000 claims description 6
- 230000011218 segmentation Effects 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 claims description 4
- 230000008034 disappearance Effects 0.000 claims description 3
- 238000004880 explosion Methods 0.000 claims description 3
- 238000009499 grossing Methods 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 3
- 230000000873 masking effect Effects 0.000 claims description 3
- 230000004927 fusion Effects 0.000 abstract description 6
- 238000013519 translation Methods 0.000 description 33
- 238000011156 evaluation Methods 0.000 description 16
- 238000012549 training Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000008485 antagonism Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000003058 natural language processing Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000004816 latex Substances 0.000 description 2
- 229920000126 latex Polymers 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 206010063385 Intellectualisation Diseases 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- DJGAAPFSPWAYTJ-UHFFFAOYSA-M metamizole sodium Chemical compound [Na+].O=C1C(N(CS([O-])(=O)=O)C)=C(C)N(C)N1C1=CC=CC=C1 DJGAAPFSPWAYTJ-UHFFFAOYSA-M 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000002054 transplantation 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/70—Software maintenance or management
- G06F8/73—Program documentation
-
- 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/3346—Query execution using probabilistic model
-
- 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/34—Browsing; Visualisation therefor
- G06F16/345—Summarisation for human users
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- 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
- G06N3/0455—Auto-encoder networks; Encoder-decoder networks
-
- 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/048—Activation functions
-
- 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/0499—Feedforward networks
-
- 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
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Library & Information Science (AREA)
- Machine Translation (AREA)
Abstract
本发明提供一种基于结构位置感知的代码自动摘要方法,属于代码自动摘要技术领域,包括:对源代码进行解析获得标记序列和抽象语法树AST,并通过源代码的AST得到源代码的距离关系矩阵;将标记序列和距离关系矩阵传入到注意力模块中;编码器的输出结果作为最后的编码输出;解码器输入编码器输出和起始标识符;解码器依据编码向量和上一时刻的输出逐步生成代码摘要。本发明通过将距离关系矩阵和代码标记序列同时加入注意力计算模块,使得模型同时关注代码各个标记之间的语义和语法关联度,并根据关联度来做更好的特征融合,在注意力计算中添加了距离关系矩阵,使得模型同时关注源代码的语义和语法特征并增强了模型捕获源代码语法信息的能力。
Description
技术领域
本发明涉及代码自动摘要技术领域,尤其涉及一种基于结构位置感知的代码自动摘要方法。
背景技术
进入21世纪以来,软件产业逐渐成为社会经济发展的战略性基础产业,各个平台的代码规模也随之快速增长。代码量的激增加大了开发人员对代码进行开发和维护的难度,传统的人工维护和分析已经不能满足现代软件发展的需求。近年来,随着人工智能和软件工程的结合,软件智能化技术在软件分析、移植、运维等方面为开发人员提供很大的帮助。
在现代软件开发过程中,开发人员可以通过检索开源代码库来获取相关代码进行代码复用。由于代码具有数据量大和抽象性高的特点,对代码进行理解时需要花费大量的时间。代码摘要是包含代码的功能描述和数据说明等信息的自然语句,它能够帮助开发人员快速理解代码并避免代码误用。人工书写的代码摘要不仅在可读性上有很大的差异,还容易造成书写错误或遗漏的问题。因此,代码自动摘要技术逐渐成为软件工程领域研究的热点。
代码自动摘要技术是一项将繁杂的代码语言文本转换为简洁的自然语言描述的技术,这种转换的合理性依赖于模型对源代码的理解能力。随着模型对代码理解能力的提高,代码自动摘要技术完全能够替代人工来理解源代码。代码自动摘要技术在程序进行更新迭代时也能发挥重要作用,通过该技术生成的代码摘要可以和相应的代码改动进行同步。代码自动摘要技术是推动现代软件智能化的重要一环。
早期的代码自动摘要技术重点关注代码的字面语义,通过该种方法得到的代码摘要不够完整和流畅。随着深度学习的兴起和机器翻译模型研究不断取得突破,模型在处理这类序列转换成序列的任务上能够不断地训练学习从而提高抽象概括能力并生成更加合理的代码摘要。这些模型经过大量代码数据训练后能够智能分析代码文本的上下文特征并识别出编程人员的各种编程行为,并且根据这些主要特征和重点行为来生成出相关的代码摘要。目前最先进的代码摘要模型大多是基于序列生成序列(Sequence to Sequence,Seq2Seq)模型结构。Seq2Seq模型的编码器将代码编码成特征向量,Seq2Seq模型的解码器根据模型处理后的特征向量解码出生成结果。虽然基于深度学习的模型已经在代码摘要任务上取得了不错的效果,但是目前的主流方法还存在代码的语义和语法特征融合性差的问题,亟需一种能有效提升模型生成代码摘要质量的方法。
发明内容
本发明提供一种基于结构位置感知的代码自动摘要方法,用以解决现有技术中存在的缺陷。
为实现上述目的,本发明提供如下技术方案:一种基于结构位置感知的代码自动摘要方法,包括以下步骤:
一、对源代码进行解析获得标记序列和抽象语法树AST,并通过源代码的AST得到源代码的距离关系矩阵;
二、将标记序列和距离关系矩阵传入到Transformer代码摘要生成模型的注意力模块中,使得模型同时关注代码各个标记之间的语义和语法关联度;
三、编码器的输出结果作为最后的编码输出;
四、解码器输入编码器输出和起始标识符;
五、解码器依据编码向量和上一时刻的输出逐步生成代码摘要。
优选的,在步骤一中,所述距离关系矩阵用于描述代码标记之间的语法关系,通过代码的AST完成构建,具体构建包括如下:
抽象语法树AST中每个节点代表一个结构属性,通过前序遍历AST得到遍历序列,根据其距离位置和AST序列中对应的语义节点来确定节点之间的语法关联性;
设AST序列为,/>表示第/>个语法节点,表示第/>个语义节点,/>和/>之间的距离/>描述了和/>的语法相关性,计算方法为/>,由于上述语义节点之间的距离计算方法使得距离过于离散化,需要对语义节点之间的距离再做一次转化来进行距离平滑处理;通过计算所有语义节点之间的距离,得到了距离关系矩阵/>,其中/>,/>,/>和/>为超参数。
优选的,在步骤一中,将源代码分词得到的子标记收集形成标记序列,用该标记序列来表示其语义信息,采用Transformer编码器来为标记序列编码,将序列中的标记替代为它对应的词嵌入向量来将标记转化为初始嵌入向量;
设语义上下文信息,序列/>是/>经过标记嵌入层后得到的嵌入向量序列,其中/>表示标记/>的嵌入向量。
优选的,在步骤三中,编码器的输出结果为分别对代码标记之间的语义相关度和语法相关度进行综合考虑,最终形成的整体代码隐状态向量表示,具体包括如下:
在每个注意头的嵌入向量序列中,/>被转化为隐状态向量序列,其中/>,嵌入向量序列/>被编码器编码并转换为一个隐状态向量序列/>来包含代码所有的语义和语法信息,计算具体如下:
其中,/>,/>,/>表示每个注意力层中的不同参数,/>扩展为/>的形状,并在每个注意力层中保持不变。
优选的,在步骤四中,解码器的输入有两个,一个是真实代码摘要目标句子,一个是编码器的输出编码向量,输出则是对应的单词概率;
给定输入的目标摘要,/>,其中“<bos>”为摘要的起始标识符,“<eos>”为摘要的结束标识符,用于确定摘要的起始和终止;
在词嵌入后的向量中添加位置编码信息,位置编码的作用是用于确定输入的顺序,位置编码的构建如下所示:
其中偶数下标采用正弦函数进行计算,奇数下标采用余弦函数进行计算;通过加入位置编码Transformer就能区分不同位置的单词;表示Transformer参数设置的基本维度大小;
在掩码自注意力模块计算的过程中,将得分矩阵归一化之前先要用掩码信息对未来信息进行掩盖,防止未来信息泄露;通过自注意力机制,解码器对输入序列的相互关系进行学习,更好的预测当前时刻的生成单词,归一化和残差连接用于防止梯度的消失或者爆炸,计算公式如下所示:
其中表示经过词嵌入和位置编码的输入向量;/>为经过归一化和残差之后的中间输出;
经过交叉注意力、前馈神经网络和归一化残差连接的计算,便能得到解码向量;通过全连接网络将解码向量映射到词典空间并对其进行softmax归一化操作可以得到单词的输出概率。
优选的,针对单词的输出概率,选取概率最大的单词作为输出结果,便能得到生成的目标序列,Transformer解码器的学习目的是最小化交叉熵损失,或者说最大化似然函数;似然函数如下所示:
其中是对应生成单词概率的对数;/>表示模型中的可学习参数。
优选的,在步骤五中,解码器按时间步依次生成对应时刻的预测单词,解码器通过输入起始标识符“<bos>”依次生成下一时刻的输入单词,当遇到“<eos>”标识符的时候停止序列的生成;
解码器时刻的生成结果根据/>时刻之前的所有的输出条件生成,给定生成序列/>和源端输入/>,生成的条件概率计算如下所示:
。
本发明的有益效果是:本发明设计了一个新的代码摘要生成方法,构建了一个新的Transformer代码摘要生成模型。该模型通过将距离关系矩阵和代码标记序列同时加入注意力计算模块,使得模型同时关注代码各个标记之间的语义和语法关联度,并根据关联度来做更好的特征融合,在注意力计算中添加了距离关系矩阵,来使得模型同时关注源代码的语义和语法特征并增强了模型捕获源代码语法信息的能力,用开源数据集对模型进行实验评测,本发明模型在所有的评测指标下都超过了其他基线模型。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的代码自动摘要方法步骤流程示意图;
图2是本发明提供的模型架构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明提供一种技术方案:一种基于结构位置感知的代码自动摘要方法,包括以下步骤:
一、对源代码进行解析获得标记序列和抽象语法树AST,并通过源代码的AST得到源代码的距离关系矩阵;
二、将标记序列和距离关系矩阵传入到Transformer代码摘要生成模型的注意力模块中,使得模型同时关注代码各个标记之间的语义和语法关联度;
三、编码器的输出结果作为最后的编码输出;
四、解码器输入编码器输出和起始标识符;
五、解码器依据编码向量和上一时刻的输出逐步生成代码摘要。
进一步的,由于编程中的命名规则,一些标记可能有不明确的表达。为了解决这个问题,需要将复合标记分解为子标记来提供更明确的语义信息。例如,标记“latex_preamble”并不能准确地传达语义信息,而分解后的子标记“latex”和“preamble”对于生成有意义的代码摘要至关重要。此外,大量罕见词的存在会对模型的泛化能力产生负面影响。通过将标记“latex_preamble”分解为“latex preamble”,也减小了模型需要建立的词库大小。将源代码分词得到的子标记收集形成标记序列,用该标记序列来表示每种方法的语义信息。
需要为源代码的语义信息构造一个向量表示,模型才能通过该向量表示去解析源代码的语义特征。在本发明的方法中,将序列中的标记替代为它对应的词嵌入向量来将标记转化为初始嵌入向量。例如,对于语义上下文信息,序列/>是/>经过标记嵌入层后得到的嵌入向量序列,其中/>表示标记的嵌入向量。由于向量序列可能有不同的长度,本发明通过为长度小于最大序列长度的序列填充零向量,使同一批次中的向量序列具有相同的长度。最终,每个方法的语义信息都可以表示为一个向量序列。
AST提供了源代码的语法结构的抽象表示并以树的形式展示它的语法特性,AST中每个节点代表一个结构属性,AST同时还包括语义节点来确保信息的完整性。通过前序遍历AST得到遍历序列,根据其距离位置和AST序列中对应的语义节点来确定节点之间的语法关联性。对于一个AST序列,/>表示第/>个语法节点,表示第/>个语义节点。/>和/>之间的距离/>描述了和/>的语法相关性,计算方法为/>,由于上述语义节点之间的距离计算方式使得距离过于离散化,需要对语义节点之间的距离再做一次转化来进行距离平滑处理。通过计算所有语义节点之间的距离,得到了距离关系矩阵/>,本发明的方法保证/>是对称的,其中/>,,/>和/>为超参数,本发明将/>设为1,/>设为2。
本发明的模型架构如图2所示,采用一个Transformer编码器来为标记序列编码。输入序列表示该方法的语义上下文信息,序列中的每个向量/>表示源代码文本中的标记。
在每个注意头中,嵌入向量序列中,/>被转化为隐状态向量序列,其中/>。最终,输入序列/>被编码器编码并转换为一个隐状态向量序列/>来包含代码的所有的语义和语法信息。计算细节如下:
其中,/>,/>,/>表示每个注意力层中的不同参数,/>扩展为/>的形状,并在每个注意力层中保持不变。
最后,模型得到了编码器的输出,以供解码器端使用。在这种编码模式下,模型是隐式地进行了代码语义特征和语法特征的融合操作。由于距离关系矩阵的加入,模型在训练过程中会分别对代码标记之间的语义相关度和语法相关度进行综合考虑,最终形成一种更加合理的整体代码隐状态表示,模型可以从编码后的隐状态表示向量中获取到更多的信息。
模型解码器用于将编码得到的特征隐向量转换为目标序列/>,其具体计算步骤如下:
其中,表示输出序列的长度,/>表示输出序列的第/>个元素,/>表示解码器在第个时间步的隐藏状态,/>表示上下文向量;/>表示概率计算函数,通常使用softmax函数来实现;/>函数使用Transformer模块实现。
进一步的,解码器的输入有两个,一个是真实代码摘要目标句子,一个是编码器的输出编码向量,输出则是对应的单词概率;
给定输入的目标摘要,/>,其中“<bos>”为摘要的起始标识符,“<eos>”为摘要的结束标识符,用于确定摘要的起始和终止;
在词嵌入后的向量中添加位置编码信息,位置编码的作用是用于确定输入的顺序,位置编码的构建如下所示:
其中偶数下标采用正弦函数进行计算,奇数下标采用余弦函数进行计算;通过加入位置编码Transformer就能区分不同位置的单词;表示Transformer参数设置的基本维度大小;
在掩码自注意力模块计算的过程中,将得分矩阵归一化之前先要用掩码信息对未来信息进行掩盖,防止未来信息泄露;通过自注意力机制,解码器对输入序列的相互关系进行学习,更好的预测当前时刻的生成单词,归一化和残差连接用于防止梯度的消失或者爆炸,计算公式如下所示:
其中表示经过词嵌入和位置编码的输入向量;/>为经过归一化和残差之后的中间输出;
经过交叉注意力、前馈神经网络和归一化残差连接的计算,便能得到解码向量;通过全连接网络将解码向量映射到词典空间并对其进行softmax归一化操作可以得到单词的输出概率。
进一步的,针对单词的输出概率,选取概率最大的单词作为输出结果,便能得到生成的目标序列,Transformer解码器的学习目的是最小化交叉熵损失,或者说最大化似然函数;似然函数如下所示:
其中是对应生成单词概率的对数;/>表示模型中的可学习参数。
优选的,在步骤五中,解码器按时间步依次生成对应时刻的预测单词,解码器通过输入起始标识符“<bos>”依次生成下一时刻的输入单词,当遇到“<eos>”标识符的时候停止序列的生成;
解码器时刻的生成结果根据/>时刻之前的所有的输出条件生成,给定生成序列/>和源端输入/>,生成的条件概率计算如下所示:
。
深度学习中的“对抗性”一词有两个主要的解释。其一是生成对抗网络(GANs),它包含了一类广泛的高级生成模型;另一个领域涉及对抗性的攻击和对抗性的样例,这一领域主要关注模型在小扰动下的鲁棒性,本发明工作中提到的对抗性训练是后者。对抗性的例子是指那些与人类观察认为几乎相同的实例,但在通过模型进行评估时产生了截然不同的结果。对抗性训练是对抗性防御的一种形式,旨在通过将这些样本纳入训练数据来增强模型对对抗性样本的抵抗力。这种方法最初是为计算机视觉(CV)提出的,后来已经被证明在NLP领域中也是有效的。
计算机视觉中的扰动训练是指在原始图像上添加一个小的、特定的值,导致模型做出错误预测的过程。这一过程很容易在计算机视觉任务中实现,因为图像可以被视为实数的连续向量,而被扰动的图像仍然是一个可识别的图像。相比之下,自然语言处理任务中的输入是文本,它被表示为一个独热(one-hot)向量。由于两个不同的one-hot向量之间是离散的,所以它们之间没有“小扰动”的概念。为了解决这个问题,嵌入层被用来将离散标记转换为连续表示,并允许对嵌入层引入扰动。嵌入层的扰动为最佳扰动,本发明通过这种扰动的设置方法来进一步提高模型的性能和鲁棒性。
注意机制在各种NLP任务中起着至关重要的作用,包括机器翻译、智能对话和文本摘要等任务。该机制与模型架构的集成可以极大地提高模型的整体性能。注意机制背后的核心思想是模拟认知神经科学中的集中注意力,使模型能够根据其当前状态有选择地关注最相关的信息。这种方法允许模型有目的地选择它所需的最重要的信息,从而起到类似于筛选信息的效果。
传统的编码器-解码器结构的问题,由于编码器将输入的句子压缩成一个固定维度的向量来供解码器使用,这将导致信息的严重丢失,特别是对于较长的句子,为了解决这个问题,提出了Bahdanau注意机制。在该方法中,解码器并没有对句子中的每个单词分配相同的权重,编码器根据之前的状态为重要的单词分配较高的权重,这个权重反映了当前状态所关注的句子中的信息。
Bahdanau注意机制和Luong注意机制通常作为编码器和解码器结构的组成部分,而编码器解码器通常使用RNN。虽然RNN在序列处理任务上非常有效,但它们有两个显著的局限性。其一,当在长序列上进行反向传播时,模型容易发生梯度消失或爆炸的问题;其二,RNN的编码和解码必须一次执行一个时间步从而无法并行执行计算,模型容易忽略掉序列中的非时间线性特征。
为了解决这些问题,提出了Transformer注意力机制,这是一种捕获标记之间长期依赖关系的有效方法,自注意力的计算过程如下:
其中表示标记的嵌入向量序列,/>表示标记序列的长度,表示/>的查询向量,/>表示/>的键向量,/>表示/>的值向量,表示每层的隐藏向量维度大小。
为了使Transformer能够利用源码标记的顺序信息,矩阵将被模型训练来标记的绝对位置信息编码到维度为/>的向量中。然而,研究证明了在编码器和解码器侧都捕获源代码标记的顺序信息对学习源代码表示并没有帮助。总之,采用只在编码器侧加入矩阵/>来加入标记的绝对位置信息的策略可以使模型在代码自动摘要任务上取得最好的效果。
代码的语义表示并不依赖于其标记的绝对位置。相反,它们之间的相互作用会影响源代码的含义。例如,表达式和/>在代码中的意义是相同的。为了对输入元素之间的成对关系进行编码,Shaw等人将自注意机制扩展如下:
其中,和/>是两个位置/>和/>的相对位置表示。
将最大相对位置裁剪到的最大绝对值,假设精确的相对位置信息在一定距离之外没有用处,裁剪运算如下:
本发明采用了学习的相对位置表示的策略/>和。在这项工作中,本发明采用忽略方向性信息的相对位置表示方法,第/>个标记是在第/>个标记的左边还是右边的信息将被忽略,计算过程如下:
数据集
本发明方法采用的数据集中包含Java项目代码和Python项目代码,如表1所示:
表1数据集相关数据的统计情况
数据集相关介绍如下:
Hu等人[1]从开源软件仓库Github中抽取了2015到2016年的Java项目,基于这些项目代码构建了用于代码摘要的Java数据集。每个Javadoc文档的第一句话作为对应代码的自然语言描述,用于描述代码的功能。该数据集包含87,136<代码, 摘要>对,本发明根据Hu等人的数据集处理方法将数据集按照8:1:1的比例划分为训练集、验证集和测试集。本发明采用该Java数据集验证本发明方法在Java编程语言上的有效性。
Wan等人[2]使用Barone和Sennrich构建的Python平行数据集对评估代码摘要任务的性能。该数据集包含92,545从Github抽取的<代码, 摘要>对,本发明按照Wan等人的数据集处理方法将Python数据集按照6:2:2的比例划分为训练集、验证集和测试集。本发明采用该Python数据集验证本发明方法在Python编程语言上的有效性。
[1]Hu X, Li G, Xia X, et al. Summarizing source code with transferredAPI knowledge[C]//Proceedings of the 27th International Joint Conference onArtificial Intelligence. 2018: 2269-2275.
[2]Wan Y, Zhao Z, Yang M, et al. Improving Automatic Source CodeSummarization via Deep Reinforcement Learning[C]//2018 33rd IEEE/ACMInternational Conference on Automated Software Engineering (ASE). IEEE, 2018:397-407.
对比
为了更好的体现本发明方法的卓越性,本发明选取了几个在代码摘要领域做出优秀结果的基线方法作为本发明方法的对比模型。基线的选取涵盖了传统的基于序列信息的代码摘要方法以及基于结构信息的代码摘要方法。
CODE-NN:Iyer等人[3]使用LSTM结合注意力模型生成源代码摘要,注意力机制能够让模型在每一个时刻关注重要内容。
Tree2Seq:Eriguchi等人[4]利用源侧短语结构扩展了序列到序列模型,以捕获输入序列的结构信息。
RL+Hybrid2Seq:Wan等人通过深度强化学习方法缓解了模型的暴露偏差问题,该模型相比于传统的层次化生成模型具有更高的性能。
DeepCom:Hu等人使用深度神经网络来分析Java方法的结构信息,该策略能提高模型获取信息的有效性。
API+CODE:Hu等人引入了源代码的api序列,为模型添加了额外的特征信息,实验结果证明api序列的引入提高了模型的性能。
Dual Model:Wei等人[5]将摘要生成和代码生成任务视为双重任务,以提高模型的性能。
Transformer:Ahmad等人[6]使用基于Transformer的模型来增强模型捕获源代码的长依赖关系能力,他们使用相对位置编码来提高模型对编程语言的适应性。
SiT:Wu等人[7]将AST的邻接矩阵添加到注意模块中,借助Transformer模型捕获结构化特征的能力同时对代码语义特征和语法特征进行捕获,该策略为模型提供了两个维度特征,在代码完整摘要任务性能上取得了提升。
[3]Iyer S, Konstas I, Cheung A, et al. Summarizing source code usinga neural attention model[C]//Proceedings of the 54th Annual Meeting of theAssociation for Computational Linguistics (Volume 1: Long Papers). 2016:2073-2083.
[4]Eriguchi A, Hashimoto K, Tsuruoka Y. Tree-to-Sequence AttentionalNeural Machine Translation[C]//Proceedings of the 54th Annual Meeting of theAssociation for Computational Linguistics (Volume 1: Long Papers). 2016: 823-833.
[5]Wei B, Li G, Xia X, et al. Code generation as a dual task of codesummarization[C]//Proceedings of the 33rd International Conference on NeuralInformation Processing Systems. 2019: 6563-6573.
[6]Ahmad W, Chakraborty S, Ray B, et al. A Transformer-based Approachfor Source Code Summarization[C]//Proceedings of the 58th Annual Meeting ofthe Association for Computational Linguistics. 2020: 4998-5007.
[7]Wu H, Zhao H, Zhang M. Code Summarization with Structure-inducedTransformer[C]//Findings of the Association for Computational Linguistics:ACL-IJCNLP 2021. 2021: 1078-1090.
评测指标
本次实验使用三个评测指标来评估模型的性能,包括BLEU(BilingualEvaluation Understudy)、METEOR(Metric for Evaluation of Translation withExplicit ORdering)和ROUGE-L。关于ROUGE-L指标已在上文做了详细介绍,接下来将介绍BLEU和METEOR评测指标。
ROUGE(Recall-Oriented Understudy for Gisting Evaluation)评价矩阵通过将模型生成的单词序列与参考单词序列进行比较来评估模型生成的单词序列的质量,进而来评估模型生成的文本质量。本发明对模型生成的结果进行了评估测试,得到了ROUGE-1和ROUGE-L评分,指标结果可以表明模型生成文本的质量。ROUGE-N的计算方式如下:
其中,表示n-gram的长度,/>和/>是候选摘要和一组n-gram参考摘要中同时出现的标记的最大数量。
ROUGE-L中的L是指最长的共同子序列。序列是另一个序列的子序列,如果关于X序列的下标存在一个严格递增序列/>,对于所有/>,有/>。给定两个序列/>和/>,/>和/>的最长的共同子序列是一个具有最大长度的公共子序列。
BLEU是一种常用的机器翻译评价指标,它用于衡量机器翻译结果与参考翻译之间的相似度,其计算基于n-gram的匹配度和翻译长度等因素,BLEU指标的计算过程如下。首先将机器翻译结果和参考翻译都进行分词,计算n-gram精度并统计机器翻译结果中n元组在参考翻译中出现的次数得到n元组的精度值。为了避免机器翻译结果太过于依赖于n-gram匹配,Bleu引入了一个短语匹配惩罚因子/>,对较短的机器翻译结果进行惩罚,使得机器翻译结果更趋向于与参考翻译相似。最后将n-gram精度和短语匹配惩罚因子综合起来,得到机器翻译结果的Bleu得分。BLEU指标的计算公式如下:/>
其中,为计算的最大n-gram的大小,/>为短语匹配惩罚因子,/>为n元组的精度值,/>为不同n元组精度的权重,通常可以取/>。
通常情况下,BLEU指标的取值范围在0到1之间,值越高表示机器翻译结果越接近参考翻译。由于BLEU指标对翻译结果的精度、流畅度和一致性等方面都有要求,因此它并不能完全代表翻译质量的好坏,需要结合其他评价指标或人工评估结果来进行综合评估。
METEOR是一种常用的机器翻译评价指标,它主要关注于翻译结果的语义准确性、句子结构和词汇多样性等方面且具有较好的评价效果,METEOR指标的计算过程包括以下步骤。将机器翻译结果和参考翻译进行分词和词干化处理,得到一组词干形式的词汇,将机器翻译结果和参考翻译中的词汇进行匹配和对齐得到一组词汇对齐的结果。基于词汇对齐的结果生成一组候选短语,统计候选短语在参考翻译中出现的次数计算候选短语的精度值和召回率。为了惩罚机器翻译结果中与参考翻译不匹配的短语,METEOR引入了一个短语惩罚因子,对机器翻译结果中的短语进行惩罚。结合精度、召回率和惩罚因子,得到机器翻译结果的METEOR得分,METEOR指标的计算公式如下:
其中,Penalty为短语惩罚因子,为精度,/>为召回率,/>为平衡因子。
总的来说,METEOR指标能够比较全面地反映机器翻译结果的语义、结构和多样性等方面的准确性,因此在机器翻译领域中得到了广泛的应用。
本发明的模型是一种序列到另一种序列的转换模型,所以用上述的三种评测指标可以有效地评测出模型生成的文本的准确性和流畅度。
在Java数据集上,本发明的模型展现了更好的性能,如表2所示:
表2 代码完整摘要模型与基线模型对比实验结果
从表2中的Java测试结果示例中可以明显看出,本发明模型生成的摘要比Transformer模型生成的摘要更加流畅和流畅,特征融合机制和对抗性训练方法的加入加强了模型的生成和拟合能力。与SiT方法相比,本发明的模型在Java数据集上表现有很大的提升。代码摘要任务更加偏向于关注源代码的语义,本发明的方法通过只保留AST中的语义节点来让模型更偏向于关注代码的语义,这种提升语义关注的策略有助于模型提升代码自动摘要任务的效果。
相对于基础Transformer模型,本发明模型生成的代码摘要序列更加完整和准确。这是由于特征融合机制让模型能够捕获多维度的信息,模型关注的信息不仅仅停留在源代码语义层面。模型能够在不断的学习中权衡到标记之间的语义相关度和语法相关度,使得模型生成的代码摘要序列合乎流畅的自然语言表达。本发明模型在训练过程中的每一时刻性能都高于其他基线模型。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种基于结构位置感知的代码自动摘要方法,其特征在于,包括:
一、对源代码进行解析获得标记序列和抽象语法树AST,并通过源代码的AST得到源代码的距离关系矩阵;
二、将标记序列和距离关系矩阵传入到Transformer代码摘要生成模型的注意力模块中,使得模型同时关注代码各个标记之间的语义和语法关联度;
三、编码器的输出结果作为最后的编码输出;
四、解码器输入编码器输出和起始标识符;
五、解码器依据编码向量和上一时刻的输出逐步生成代码摘要。
2.根据权利要求1所述的基于结构位置感知的代码自动摘要方法,其特征在于,在步骤一中,所述距离关系矩阵用于描述代码标记之间的语法关系,通过代码的AST完成构建,具体构建包括如下:
抽象语法树AST中每个节点代表一个结构属性,通过前序遍历AST得到遍历序列,根据其距离位置和AST序列中对应的语义节点来确定节点之间的语法关联性;
设AST序列为,/>表示第/>个语法节点,/>表示第/>个语义节点,/>和/>之间的距离/>描述了/>和的语法相关性,计算方法为/>,由于上述语义节点之间的距离计算方法使得距离过于离散化,需要对语义节点之间的距离再做一次转化来进行距离平滑处理;通过计算所有语义节点之间的距离,得到了距离关系矩阵/>,其中,/>,/>和/>为超参数。
3.根据权利要求1所述的基于结构位置感知的代码自动摘要方法,其特征在于:在步骤一中,将源代码分词得到的子标记收集形成标记序列,用该标记序列来表示其语义信息,采用Transformer编码器来为标记序列编码,将序列中的标记替代为它对应的词嵌入向量来将标记转化为初始嵌入向量;
设语义上下文信息,序列/>是/>经过标记嵌入层后得到的嵌入向量序列,其中/>表示标记/>的嵌入向量。
4.根据权利要求1所述的基于结构位置感知的代码自动摘要方法,其特征在于:在步骤三中,编码器的输出结果为分别对代码标记之间的语义相关度和语法相关度进行综合考虑,最终形成的整体代码隐状态向量表示,具体包括如下:
在每个注意头的嵌入向量序列中,/>被转化为隐状态向量序列,其中/>,嵌入向量序列/>被编码器编码并转换为一个隐状态向量序列/>来包含代码所有的语义和语法信息,计算具体如下:
其中,,/>,/>,/>表示每个注意力层中的不同参数,/>扩展为/>的形状,并在每个注意力层中保持不变。
5.根据权利要求1所述的基于结构位置感知的代码自动摘要方法,其特征在于:在步骤四中,解码器的输入有两个,一个是真实代码摘要目标句子,一个是编码器的输出编码向量,输出则是对应的单词概率;
给定输入的目标摘要,/>,其中“<bos>”为摘要的起始标识符,“<eos>”为摘要的结束标识符,用于确定摘要的起始和终止;
在词嵌入后的向量中添加位置编码信息,位置编码的作用是用于确定输入的顺序,位置编码的构建如下所示:
其中偶数下标采用正弦函数进行计算,奇数下标采用余弦函数进行计算;通过加入位置编码Transformer就能区分不同位置的单词;表示Transformer参数设置的基本维度大小;
在掩码自注意力模块计算的过程中,将得分矩阵归一化之前先要用掩码信息对未来信息进行掩盖,防止未来信息泄露;通过自注意力机制,解码器对输入序列的相互关系进行学习,更好的预测当前时刻的生成单词,归一化和残差连接用于防止梯度的消失或者爆炸,计算公式如下所示:
其中表示经过词嵌入和位置编码的输入向量;/>为经过归一化和残差之后的中间输出;
经过交叉注意力、前馈神经网络和归一化残差连接的计算,便能得到解码向量;通过全连接网络将解码向量映射到词典空间并对其进行softmax归一化操作可以得到单词的输出概率。
6.根据权利要求5所述的基于结构位置感知的代码自动摘要方法,其特征在于:针对单词的输出概率,选取概率最大的单词作为输出结果,便能得到生成的目标序列,Transformer解码器的学习目的是最小化交叉熵损失,或者说最大化似然函数;似然函数如下所示:
其中是对应生成单词概率的对数;/>表示模型中的可学习参数。
7.根据权利要求1所述的基于结构位置感知的代码自动摘要方法,其特征在于:在步骤五中,解码器按时间步依次生成对应时刻的预测单词,解码器通过输入起始标识符“<bos>”依次生成下一时刻的输入单词,当遇到“<eos>”标识符的时候停止序列的生成;
解码器时刻的生成结果根据/>时刻之前的所有的输出条件生成,给定生成序列/>和源端输入/>,生成的条件概率计算如下所示:
。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311701689.6A CN117407051B (zh) | 2023-12-12 | 2023-12-12 | 一种基于结构位置感知的代码自动摘要方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311701689.6A CN117407051B (zh) | 2023-12-12 | 2023-12-12 | 一种基于结构位置感知的代码自动摘要方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117407051A true CN117407051A (zh) | 2024-01-16 |
CN117407051B CN117407051B (zh) | 2024-03-08 |
Family
ID=89492844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311701689.6A Active CN117407051B (zh) | 2023-12-12 | 2023-12-12 | 一种基于结构位置感知的代码自动摘要方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117407051B (zh) |
Citations (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006287319A (ja) * | 2005-03-31 | 2006-10-19 | Nippon Hoso Kyokai <Nhk> | 番組ダイジェスト作成装置および番組ダイジェスト作成プログラム |
US20110161232A1 (en) * | 2009-12-28 | 2011-06-30 | Brown Kerry D | Virtualization of authentication token for secure applications |
CN108519890A (zh) * | 2018-04-08 | 2018-09-11 | 武汉大学 | 一种基于自注意力机制的鲁棒性代码摘要生成方法 |
US20180300400A1 (en) * | 2017-04-14 | 2018-10-18 | Salesforce.Com, Inc. | Deep Reinforced Model for Abstractive Summarization |
CN109214003A (zh) * | 2018-08-29 | 2019-01-15 | 陕西师范大学 | 基于多层注意力机制的循环神经网络生成标题的方法 |
CN110795556A (zh) * | 2019-11-01 | 2020-02-14 | 中山大学 | 一种基于细粒度插入式解码的摘要生成方法 |
US20200183681A1 (en) * | 2018-12-11 | 2020-06-11 | Sap Se | Method for a software development system |
US20200249918A1 (en) * | 2019-02-02 | 2020-08-06 | Microsoft Technology Licensing, Llc. | Deep learning enhanced code completion system |
CN111625276A (zh) * | 2020-05-09 | 2020-09-04 | 山东师范大学 | 基于语义与语法信息融合的代码摘要生成方法及系统 |
CN111897949A (zh) * | 2020-07-28 | 2020-11-06 | 北京工业大学 | 一种基于Transformer的引导性文本摘要生成方法 |
CN112162775A (zh) * | 2020-10-21 | 2021-01-01 | 南通大学 | 一种基于Transformer和混合代码表示的Java代码注释自动生成方法 |
US20210357210A1 (en) * | 2020-05-15 | 2021-11-18 | Microsoft Technology Licensing, Llc. | Automatic generation of code documentation |
US20210397799A1 (en) * | 2018-12-11 | 2021-12-23 | Salesforce.Com, Inc. | Systems and methods for structured text translation with tag alignment |
CN113946326A (zh) * | 2021-10-25 | 2022-01-18 | 浙江海心智惠科技有限公司 | 一种基于ast和规则库、知识库的可视化代码生成方法 |
US20220067269A1 (en) * | 2020-08-31 | 2022-03-03 | Twilio Inc. | Language model for abstractive summarization |
CN114185595A (zh) * | 2021-11-02 | 2022-03-15 | 武汉大学 | 基于代码结构引导的方法名生成方法 |
CN114881033A (zh) * | 2022-05-06 | 2022-08-09 | 润联软件系统(深圳)有限公司 | 一种文本摘要生成方法、装置、计算机设备及存储介质 |
CN114925195A (zh) * | 2022-04-29 | 2022-08-19 | 北京邮电大学 | 一种融合词汇编码与结构编码的标准内容文本摘要生成方法 |
CN115048141A (zh) * | 2022-07-01 | 2022-09-13 | 南京工业大学 | 一种基于图引导的Transformer模型代码注释自动生成方法 |
CN115408056A (zh) * | 2022-10-28 | 2022-11-29 | 北京航空航天大学 | 一种基于信息检索和神经网络的代码摘要自动生成方法 |
CN116048613A (zh) * | 2022-07-18 | 2023-05-02 | 云南恒于科技有限公司 | 基于注意力机制的图序列关联的代码摘要方法 |
KR20230065017A (ko) * | 2021-11-04 | 2023-05-11 | 연세대학교 산학협력단 | 인공지능 분석 기반 프로그램 소스코드의 요약문 생성 장치 및 방법 |
US11704099B1 (en) * | 2022-03-31 | 2023-07-18 | Amazon Technologies, Inc. | Discovering matching code segments according to index and comparative similarity |
US20230229440A1 (en) * | 2022-01-18 | 2023-07-20 | Jpmorgan Chase Bank, N.A. | Systems and methods for multi-signal pattern matching with graph propagation |
CN116975864A (zh) * | 2023-07-14 | 2023-10-31 | 于耀翔 | 恶意代码检测方法、装置、电子设备及存储介质 |
CN117093222A (zh) * | 2023-08-23 | 2023-11-21 | 广东工业大学 | 一种基于改进转换器模型的代码参数摘要生成方法和系统 |
-
2023
- 2023-12-12 CN CN202311701689.6A patent/CN117407051B/zh active Active
Patent Citations (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006287319A (ja) * | 2005-03-31 | 2006-10-19 | Nippon Hoso Kyokai <Nhk> | 番組ダイジェスト作成装置および番組ダイジェスト作成プログラム |
US20110161232A1 (en) * | 2009-12-28 | 2011-06-30 | Brown Kerry D | Virtualization of authentication token for secure applications |
US20180300400A1 (en) * | 2017-04-14 | 2018-10-18 | Salesforce.Com, Inc. | Deep Reinforced Model for Abstractive Summarization |
CN108519890A (zh) * | 2018-04-08 | 2018-09-11 | 武汉大学 | 一种基于自注意力机制的鲁棒性代码摘要生成方法 |
CN109214003A (zh) * | 2018-08-29 | 2019-01-15 | 陕西师范大学 | 基于多层注意力机制的循环神经网络生成标题的方法 |
US20200183681A1 (en) * | 2018-12-11 | 2020-06-11 | Sap Se | Method for a software development system |
EP3667493A1 (en) * | 2018-12-11 | 2020-06-17 | Sap Se | A method for a software development system |
US20210397799A1 (en) * | 2018-12-11 | 2021-12-23 | Salesforce.Com, Inc. | Systems and methods for structured text translation with tag alignment |
US20200249918A1 (en) * | 2019-02-02 | 2020-08-06 | Microsoft Technology Licensing, Llc. | Deep learning enhanced code completion system |
CN110795556A (zh) * | 2019-11-01 | 2020-02-14 | 中山大学 | 一种基于细粒度插入式解码的摘要生成方法 |
CN111625276A (zh) * | 2020-05-09 | 2020-09-04 | 山东师范大学 | 基于语义与语法信息融合的代码摘要生成方法及系统 |
US20210357210A1 (en) * | 2020-05-15 | 2021-11-18 | Microsoft Technology Licensing, Llc. | Automatic generation of code documentation |
CN111897949A (zh) * | 2020-07-28 | 2020-11-06 | 北京工业大学 | 一种基于Transformer的引导性文本摘要生成方法 |
US20220067269A1 (en) * | 2020-08-31 | 2022-03-03 | Twilio Inc. | Language model for abstractive summarization |
CN112162775A (zh) * | 2020-10-21 | 2021-01-01 | 南通大学 | 一种基于Transformer和混合代码表示的Java代码注释自动生成方法 |
CN113946326A (zh) * | 2021-10-25 | 2022-01-18 | 浙江海心智惠科技有限公司 | 一种基于ast和规则库、知识库的可视化代码生成方法 |
CN114185595A (zh) * | 2021-11-02 | 2022-03-15 | 武汉大学 | 基于代码结构引导的方法名生成方法 |
KR20230065017A (ko) * | 2021-11-04 | 2023-05-11 | 연세대학교 산학협력단 | 인공지능 분석 기반 프로그램 소스코드의 요약문 생성 장치 및 방법 |
US20230229440A1 (en) * | 2022-01-18 | 2023-07-20 | Jpmorgan Chase Bank, N.A. | Systems and methods for multi-signal pattern matching with graph propagation |
US11704099B1 (en) * | 2022-03-31 | 2023-07-18 | Amazon Technologies, Inc. | Discovering matching code segments according to index and comparative similarity |
CN114925195A (zh) * | 2022-04-29 | 2022-08-19 | 北京邮电大学 | 一种融合词汇编码与结构编码的标准内容文本摘要生成方法 |
CN114881033A (zh) * | 2022-05-06 | 2022-08-09 | 润联软件系统(深圳)有限公司 | 一种文本摘要生成方法、装置、计算机设备及存储介质 |
CN115048141A (zh) * | 2022-07-01 | 2022-09-13 | 南京工业大学 | 一种基于图引导的Transformer模型代码注释自动生成方法 |
CN116048613A (zh) * | 2022-07-18 | 2023-05-02 | 云南恒于科技有限公司 | 基于注意力机制的图序列关联的代码摘要方法 |
CN115408056A (zh) * | 2022-10-28 | 2022-11-29 | 北京航空航天大学 | 一种基于信息检索和神经网络的代码摘要自动生成方法 |
CN116975864A (zh) * | 2023-07-14 | 2023-10-31 | 于耀翔 | 恶意代码检测方法、装置、电子设备及存储介质 |
CN117093222A (zh) * | 2023-08-23 | 2023-11-21 | 广东工业大学 | 一种基于改进转换器模型的代码参数摘要生成方法和系统 |
Non-Patent Citations (3)
Title |
---|
ZI GONG, CUIYUN GAO: "Source Code Summarization with Structural Relative Position Guided Transformer", ARXIV, 14 February 2022 (2022-02-14), pages 1 - 12 * |
蔡波, 瞿志恒, 曾剑辉: "Method Name Generation Based on Code Structure Guidance", 2022 IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION AND REENGINEERING (SANER), 21 July 2022 (2022-07-21), pages 1101 - 1110 * |
蔡波: "Structure and Sequence Aligned Code Summarization with Prefix and Suffix Balanced Strategy", ENTROPY, vol. 4, no. 25, 26 March 2023 (2023-03-26), pages 1 - 18 * |
Also Published As
Publication number | Publication date |
---|---|
CN117407051B (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lin et al. | Bridging textual and tabular data for cross-domain text-to-SQL semantic parsing | |
CN110348016B (zh) | 基于句子关联注意力机制的文本摘要生成方法 | |
CN111651589B (zh) | 一种针对长文档的两阶段文本摘要生成方法 | |
Zhang et al. | SG-Net: Syntax guided transformer for language representation | |
Qin et al. | A survey on text-to-sql parsing: Concepts, methods, and future directions | |
CN112613326B (zh) | 一种融合句法结构的藏汉语言神经机器翻译方法 | |
CN114818668B (zh) | 一种语音转写文本的人名纠错方法、装置和计算机设备 | |
CN112446221B (zh) | 翻译评估方法、装置、系统及计算机存储介质 | |
CN114818717A (zh) | 融合词汇和句法信息的中文命名实体识别方法及系统 | |
CN114818669B (zh) | 一种人名纠错模型的构建方法和计算机设备 | |
Zhong et al. | Codegen-test: An automatic code generation model integrating program test information | |
Jin et al. | Fintech key-phrase: a new Chinese financial high-tech dataset accelerating expression-level information retrieval | |
Xiao et al. | Cqr-sql: Conversational question reformulation enhanced context-dependent text-to-sql parsers | |
CN117251522A (zh) | 一种基于潜层关系增强的实体和关系联合抽取模型的方法 | |
CN117407051B (zh) | 一种基于结构位置感知的代码自动摘要方法 | |
CN115757325A (zh) | 一种xes日志智能转换方法及系统 | |
CN115408056A (zh) | 一种基于信息检索和神经网络的代码摘要自动生成方法 | |
CN115659172A (zh) | 基于关键信息掩码与拷贝的生成式文本摘要方法 | |
CN112380882B (zh) | 一种具有误差修正功能的蒙汉神经机器翻译方法 | |
Wen et al. | Code2tree: A Method for Automatically Generating Code Comments | |
CN116610791B (zh) | 针对结构化信息的基于语义分析的问答方法、系统及设备 | |
CN112668345B (zh) | 语法缺陷数据识别模型构建方法和语法缺陷数据识别方法 | |
Ma et al. | An enhanced method for dialect transcription via error‐correcting thesaurus | |
CN115048946B (zh) | 融合主题信息的篇章级神经机器翻译方法 | |
CN118194869A (zh) | 一种多级特征融合的中文电子病历命名实体识别方法 |
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 |