GypSum: Learning Hybrid Representations for Code Summarization
East China Normal University(华东师范大学)
近年来,基于深度学习的代码摘要得到了广泛的研究。当前用于代码摘要的深度学习模型通常遵循神经机器翻译的原理,并采用编码器-解码器框架,其中编码器从源代码学习语义表示,解码器将学习的表示转换为描述代码片段功能的人类可读文本。尽管它们实现了新的最先进的性能,但我们注意到,当前的模型通常生成不太流畅的摘要,或者无法捕获核心功能,因为它们通常专注于单一类型的代码表示。因此,我们提出了GypSum,这是一种新的深度学习模型,它使用图形注意力神经网络和预训练的编程和自然语言模型来学习混合表示。我们引入特定的边缘相关的控制流的代码片段到抽象语法树的图形构造,并设计了两个编码器,分别从图形和令牌序列的源代码,学习。我们修改了Transformer的解码器中的编码器-解码器子层,以融合表示,并提出了一个双拷贝机制,以促进摘要生成。实验结果表明GypSum的性能优于现有的代码摘要模型。
2022-04-26 cs.LG cs.PL cs.SE
Project-Level Encoding for Neural Source Code Summarization of Subroutines
University of Notre Dame(圣母大学)
子例程的源代码摘要是编写该子例程的简短自然语言描述的任务。这种描述通常用于针对程序员的文档中,即使是简短的短语(例如“将数据压缩到zip文件”)也可以帮助读者快速理解子例程的功能,而无需阅读代码本身。基于神经网络(特别是编码器-解码器模型设计)的技术已经成为最先进的技术。然而,这些模型普遍存在的一个问题是,它们假设创建摘要所需的信息存在于被摘要的代码本身中--这一假设与程序理解文献不一致。因此,当前的研究前沿在于将源代码上下文编码到摘要的神经模型中的问题。在本文中,我们提出了一个项目级的编码器,以改善模型的代码摘要。项目级是指我们在软件项目中创建选定代码文件的矢量化表示,并使用该表示来增强最先进的神经代码摘要技术的编码器。我们展示了我们的编码器如何改进几个现有的模型,并提供了最大限度地提高,同时控制模型大小的时间和资源成本的指导方针。
2021-03-22 cs.LG cs.SE
Assemble Foundation Models for Automatic Code Summarization
University of Zurich(苏黎世大学)
自动代码摘要有助于减少对手工编写的需求,有利于日常软件开发。当前,人工智能正在经历一场范式转变。基础模型在海量数据上进行预训练,并针对下游任务进行微调,超越了专门定制的模型。这种趋势促使我们考虑重用基础模型,而不是从头开始学习。因此,我们提出了一个灵活的和强大的自动代码摘要的方法,基于神经模型。我们将现有的基础模型,如CodeBERT和GPT-2,组装成一个名为AdaMo的神经模型。此外,我们利用高斯噪声作为上下文信息的模拟来优化潜在表示。此外,我们从知识转移的角度介绍了两种自适应方案,即连续预训练和中间微调,并设计了一般序列到序列学习的中间阶段任务。最后,我们通过将AdaMo与最先进的模型进行比较,来评估AdaMo对代码摘要的基准数据集。
2022-03-11 cs.LG cs.SE
Neural Code Summarization
Khoury College of Computer Sciences(Khoury计算机科学学院)
代码摘要是生成可读摘要的任务,这些摘要在语义上是有意义的,并且可以准确地描述软件的假定任务。程序理解已经成为知识转移中最繁琐的任务之一。随着代码库随着时间的推移而发展,每次都需要手动更新描述。提出了一种自动的方法来推断这样的字幕基准和自定义数据集的基础上,与原始和生成的结果之间的比较。
2021-03-04 cs.AI cs.LG cs.SE
GN-Transformer: Fusing Sequence and Graph Representation for Improved Code Summarization
University of Southern California(南加州大学)
与自然语言相反,源代码理解受标记之间的语法关系的影响,而不管它们的标识符名称。源代码的图形表示(如抽象树(AST))可以捕获标记之间的关系,这些关系在源代码中并不明显。我们提出了一种新的方法,GN-Transformer在融合序列和图形模态上学习端到端,我们称之为Syntax-Code-Graph(SCG)。GN-Transformer使用自注意机制扩展了图网络(GN)框架。SCG是源代码片段和AST表示之间早期融合的结果。我们对SCG的结构进行了实验,对模型设计进行了消融研究,并得出结论,性能优势来自融合表示。所提出的方法在两个代码摘要数据集和三个自动代码摘要度量(BLEU,METEOR,ROUGE-L)上实现了最先进的性能。我们进一步评估我们的模型和以前的工作与专家用户的研究人类感知质量。我们的模型在人类感知质量和准确性方面优于最先进的技术。
2021-11-17 cs.LG cs.PL
A Transformer-based Approach for Source Code Summarization
University of California, Los Angeles(加州大学洛杉矶分校);Columbia University(哥伦比亚大学)
生成描述程序功能的可读摘要称为源代码摘要。在这个任务中,通过对代码标记之间的成对关系建模来学习代码表示以捕获它们的长期依赖关系是至关重要的。为了学习用于摘要的代码表示,我们探索了使用自我注意力机制的Transformer模型,该模型已被证明在捕获长距离依赖关系方面是有效的。在这项工作中,我们表明,尽管这种方法很简单,但它的性能明显优于最先进的技术。我们进行了广泛的分析和消融研究,揭示了几个重要的发现,例如,源代码标记的位置的绝对编码阻碍了摘要的性能,而相对编码显著提高了摘要的性能。我们已经公开了我们的代码,以方便未来的研究。
2020-05-01 cs.AI cs.LG cs.SE
Automatic Source Code Summarization with Extended Tree-LSTM
Kyoto University(京都大学);Hitachi, Ltd.(日立有限公司)
神经机器翻译模型用于从给定源代码自动生成文档,因为这可以被视为机器翻译任务。源代码摘要是自动文档生成的一个组成部分,它从给定的源代码中生成自然语言的摘要。这表明神经机器翻译中使用的技术,如长短期记忆(LSTM),可以用于源代码摘要。然而,在源代码和自然语言之间存在相当大的差异:源代码本质上是{ \em结构}的,具有循环和条件分支等。因此,将已知的机器翻译模型应用于源代码存在一些障碍。抽象语法树(AST)捕捉这些结构特性,并在最近的机器学习研究的源代码中发挥了重要作用。Tree-LSTM是LSTM对树结构数据的推广。然而,在将其应用于AST时存在一个关键问题:它不能同时处理包含具有任意数量的子节点及其顺序的节点的树,而AST通常具有这样的节点。为了解决这个问题,我们提出了Tree-LSTM的扩展,我们称之为\emph{Multi-way Tree-LSTM},并将其应用于源代码摘要。作为计算实验的结果,我们的建议取得了更好的结果时,与几个国家的最先进的技术相比。
2019-06-20 cs.LG cs.SE stat.ML
Understanding Code Semantics: An Evaluation of Transformer Models in Summarization
University of Massachusetts Amherst(马萨诸塞大学阿默斯特分校)
本文通过改名、死代码和注释代码等对抗实验,评估Transformer模型在代码摘要中是否真正理解代码语义,旨在揭示模型内部机制并提升软件开发效率。
2023-10-27 cs.LG
Code Generation as a Dual Task of Code Summarization
Peking University(北京大学);Monash University(莫纳什大学)
代码摘要(CS)和代码生成(CG)是软件自动化开发领域中的两个关键任务。各种基于神经网络的方法被提出来分别解决这两个任务。然而,CS和CG之间存在特定的直观相关性,这在以前的工作中没有被利用。在本文中,我们应用两个任务之间的关系,以提高这两个任务的性能。换句话说,利用这两个任务之间的二元性,我们提出了一个双重训练框架来同时训练这两个任务。在这个框架中,我们考虑了概率和注意力权重的对偶性,并设计了相应的正则化项来约束对偶性。我们在从GitHub收集的两个数据集上评估了我们的方法,实验结果表明,我们的双重框架可以提高CS和CG任务的性能。
2019-10-14 cs.AI cs.LG cs.SE
Automatic Semantic Augmentation of Language Model Prompts (for Code Summarization)
University of California, Davis(加州大学戴维斯分校);University College London(伦敦大学学院);Google Brain(谷歌大脑)
本文研究在代码摘要任务中显式地向LLM提示添加自动提取的语义事实是否有效,实验表明该方法在多种设置和两个LLM上均提升性能,多数提升接近或超过2 BLEU,PHP上超过30 BLEU。
2024-01-11 cs.LG cs.SE
AST-MHSA : Code Summarization using Multi-Head Self-Attention
Indian Institute of Technology Madras(印度理工学院马德拉斯分校);Walmart Global Tech(沃尔玛全球技术)
针对AST过长导致编码效率低和依赖关系难以提取的问题,提出AST-MHSA模型,利用多头自注意力从AST中提取关键语义信息,以更高效地生成代码摘要。
2023-08-10 cs.CL cs.LG cs.PL
A Convolutional Neural Network for Language-Agnostic Source Code Summarization
Two Six Labs(双六实验室)
描述性注释在软件工程过程中起着至关重要的作用。它们减少了开发时间,实现了更好的bug检测,并促进了以前编写的代码的重用。然而,注释通常是软件开发人员的最后一个优先级,因此要么是不足的,要么是完全缺失的。因此,自动源代码摘要可能具有显著改进软件开发过程的能力。我们引入了一种新颖的编码器-解码器模型,它总结了源代码,有效地编写了一个注释来描述代码的功能。我们在当前的源代码摘要模型之外做了两个主要的创新。首先,我们的编码器是完全语言无关的,不需要复杂的输入预处理。其次,我们的解码器有一个开放的词汇表,使它能够预测任何单词,甚至是在训练中没有看到的单词。我们展示的结果相当于国家的最先进的方法在一个单一的语言数据集,并提供了第一个由多个程序设计语言的数据集上的结果。
2019-03-29 cs.CL cs.LG stat.ML
Learning code summarization from a small and local dataset
University of California, Davis(加州大学戴维斯分校)
基础模型(例如,CodeBERT、GraphCodeBERT、CodeT5)对于许多软件工程任务都能很好地工作。这些模型使用数十亿个代码令牌进行预训练(使用自我监督),然后使用数十万个标记的示例进行微调,这些示例通常来自许多项目。然而,软件现象可能是非常特定于项目的。词汇和其他现象随着每个项目的变化而变化。因此,在特定项目数据上进行培训,并在同一项目上进行测试,是一个很有前途的想法。必须仔细评估这一假设,例如,在时间序列设置中,以防止训练测试泄漏。我们比较了几种模型和训练方法,包括同一项目训练,跨项目训练,训练一个专门设计为样本有效的模型(因此初步认为非常适合在有限样本的同一项目环境中学习)和最大化混合方法,首先在许多语言的许多项目上进行微调,然后在同一项目上进行训练。我们发现,在Java和Python的许多不同项目中,最大化的混合设置提供了一致的、实质性的收益。
2022-06-02 cs.LG cs.SE
Prompt-Driven Code Summarization: A Systematic Literature Review
William & Mary(威廉玛丽学院)
本文综述了基于提示的代码摘要方法,分析了不同提示策略的有效性及评估挑战,旨在为未来研究和实际应用提供指导。
2026-04-16 cs.LG cs.SE
Variational Prefix Tuning for Diverse and Accurate Code Summarization Using Pre-trained Language Models
提出变分前缀调优(VPT),结合条件变分自编码器与预训练模型,参数高效地生成多样且准确的代码摘要集,并通过双准则重排序优化选项,提升用户选择灵活性。
2025-05-14 cs.AI cs.LG cs.SE
Improving Automatic Source Code Summarization via Deep Reinforcement Learning
Zhejiang University(浙江大学);Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences(中国科学院深圳先进技术研究院);University of Technology Sydney(悉尼科技大学);University of Illinois at Chicago(伊利诺伊大学芝加哥分校);Tsinghua University(清华大学)
代码摘要提供了对代码所执行功能的高级自然语言描述,有利于软件维护、代码分类和检索。据我们所知,大多数最先进的方法遵循编码器-解码器框架,其将代码编码到隐藏空间中,然后将其解码到自然语言空间中,具有两个主要缺点:a)它们的编码器只考虑代码的顺序内容,忽略了对于代码摘要任务也至关重要的树结构,b)它们的解码器通常被训练为通过最大化下一个地面实况词与前一个地面实况词的可能性来预测下一个词。但是,预计将在测试时从头开始生成整个序列。这种差异可能导致\textit{exposure bias}问题,使学习的解码器次优。在本文中,我们将抽象语法树结构以及代码片段的顺序内容纳入深度强化学习框架(即,演员-评论家网络)。演员网络提供了根据当前状态预测下一个词的信心。另一方面,评论家网络评估当前状态的所有可能扩展的奖励值,并可以为探索提供全局指导。我们采用BLEU指标组成的优势奖励训练两个网络。在真实数据集上的综合实验表明,与一些最先进的方法相比,我们提出的模型是有效的。
2018-11-17 cs.CL cs.LG cs.SE
Binary Code Summarization: Benchmarking ChatGPT/GPT-4 and Other Large Language Models
The Ohio State University(俄亥俄州立大学);Microsoft Research(微软研究院)
本研究针对二进制代码摘要的难点,构建含55.7万+函数的BinSum基准,提出提示词优化方法与新语义相似度指标,经多LLM大规模评估得出10项关键洞见,明确了LLM的潜力与待解挑战。
2023-12-15 cs.CL cs.CR cs.LG
A Convolutional Attention Network for Extreme Summarization of Source Code
University of Edinburgh(爱丁堡大学);Peking University(北京大学)
神经网络中的注意力机制已被证明对于输入和输出不具有固定维数的问题是有用的。通常存在局部平移不变的特征,并且对于引导模型的注意力是有价值的,但是以前的注意力架构并不是专门为了学习这些特征而构建的。我们引入了一个注意力神经网络,它采用卷积的输入令牌检测本地时不变和长距离的主题注意力特征的上下文相关的方式。我们将这种架构应用于将源代码片段极端总结成简短的、描述性的函数名称之类的摘要的问题。使用这些功能,该模型通过边缘化两个注意力机制来顺序生成摘要:一个基于输入标记的注意力权重预测下一个摘要标记,另一个能够将代码标记直接复制到摘要中。我们在10个流行的Java项目上展示了我们的卷积注意力神经网络的性能,表明与以前的注意力机制相比,它实现了更好的性能。
2016-05-25 cs.CL cs.LG cs.SE
Retrieval-Augmented Generation for Code Summarization via Hybrid GNN
Nanyang Technology University(南洋理工大学);Rensselaer Polytechnic Institute(伦斯勒理工学院)
源代码摘要旨在从结构化代码片段生成自然语言摘要,以便更好地理解代码功能。然而,由于源代码的复杂性以及源代码和自然语言摘要之间的语言差距,自动代码摘要具有挑战性。大多数以前的方法要么依赖于基于检索的方法(可以利用从检索数据库中看到的相似示例,但泛化性能较低),要么依赖于基于生成的方法(具有更好的泛化性能,但不能利用相似示例)。本文提出了一种新的检索增强机制,结合两个世界的好处。此外,针对图神经网络(GNNs)在捕获源代码全局图结构信息方面的局限性,提出了一种基于注意力的动态图来补充源代码的静态图表示,并设计了一种混合消息传递GNN来捕获源代码的局部和全局结构信息.为了评估所提出的方法,我们发布了一个新的具有挑战性的基准测试,从各种大型开源C项目中抓取(数据集中共有95 k+独特的函数)。我们的方法达到了最先进的性能,在BLEU-4,ROUGE-L和METEOR方面将现有方法提高了1.42,2.44和1.29。
2021-05-13 cs.AI cs.LG
HGAdapter: Hypergraph-based Adapters in Language Models for Code Summarization and Clone Detection
Data Technology Group, Technology Research and Development Department, Guotai Haitong Securities, China(国泰君安证券数据技术部、技术研发部);School of Computer Science and Technology, East China Normal University, China(华东师范大学计算机科学与技术学院)
HGAdapter通过引入高阶数据相关性,改进超图神经网络架构,提升预训练语言模型在代码摘要与克隆检测任务中的性能。
2025-10-20 cs.AI cs.CL cs.LG
Improving Sequence-to-Sequence Models for Abstractive Text Summarization Using Meta Heuristic Approaches
Bharati Vidyapeeth College of Engineering(巴拉蒂·维迪亚皮特工程学院)
本文旨在通过微调超参数和尝试特定编码器-解码器组合来增强抽象式文本摘要的seq2seq模型架构,并在CNN/DailyMail数据集上验证了多种模型的有效性。
2024-03-24 cs.CL cs.LG cs.NE
Leveraging Deep Learning for Abstractive Code Summarization of Unofficial Documentation
Ecole de Technologie Superieure(高等技术学院);Carleton University(卡尔顿大学)
本文提出利用 BART 深度学习模型为 StackOverflow 非官方文档中的 API 生成高质量代码摘要,并通过 ROUGE 和 BLEU 评估证明其在精确率、召回率和 F-measure 上分别平均超越此前工作 57%、66% 和 61%,且速度快 4.4 倍。
2023-12-03 cs.LG cs.SE
Summarization Programs: Interpretable Abstractive Summarization with Neural Modular Trees
University of North Carolina at Chapel Hill(北卡罗来纳大学教堂山分校)
当前的抽象摘要模型要么缺乏清晰的可解释性,要么只突出显示源文档的一部分,从而提供不完整的基本原理。为此,我们提出了总结程序(SP),一个可解释的模块化框架,包括一个(有序)的二叉树列表,每个编码的一步一步的生成过程中的一个抽象的摘要句子从源文件。摘要程序包含每个摘要句子的一个根结点,并且不同的树将每个摘要句子(根结点)连接到从其导出的文档句子(叶节点),其中连接节点包含中间生成的句子。边表示在摘要中涉及的不同模块化操作,例如句子融合、压缩和释义。我们首先提出了一个有效的最佳优先搜索方法,在神经模块,SP-Search,识别SP的人类摘要直接优化ROUGE分数。接下来,使用这些程序作为自动监督,我们提出了seq 2seq模型,生成摘要程序,然后执行这些程序以获得最终摘要。我们证明,SP-Search有效地代表了人类总结背后的生成过程,使用通常忠实于其预期行为的模块。我们还进行了模拟研究,以表明摘要程序提高了摘要模型的可解释性,允许人类更好地模拟模型推理。摘要程序是迈向可解释和模块化抽象摘要的有希望的一步,这是一项复杂的任务,以前主要通过黑盒端到端神经系统来解决。支持代码可在https://github.com/swarnaHub/SummarizationPrograms上获得
2023-02-02 cs.AI cs.CL cs.LG
LANS: Large-scale Arabic News Summarization Corpus
Virginia Tech(弗吉尼亚理工大学);NEC Labs America(NEC美国实验室)
文本摘要在许多语言中得到了深入的研究,有些语言已经达到了高级阶段。然而,阿拉伯语文本摘要(ATS)仍处于发展阶段。现有的ATS数据集要么很小,要么缺乏多样性。我们建立了LANS,一个大规模和多样化的数据集,用于阿拉伯语文本摘要任务。LANS提供了1999年至2019年间从报纸网站元数据中提取的840万篇文章及其摘要。高质量和多样化的摘要是由来自22家主要阿拉伯报纸的记者撰写的,其中包括来自每个来源的至少7个以上主题的折衷组合。我们对局域网进行了内在的评价,自动和人类的评价。对1000个随机样本的人工评估报告了我们收集的摘要的95.4%的准确性,自动评估量化了摘要的多样性和抽象性。该数据集可应要求公开提供。
2022-10-24 cs.CL cs.LG