从结构和上下文中学习源代码的语言不可知性表示学习
该研究探讨了使用神经机器翻译模型进行源代码自动生成文档的机器翻译任务,并阐述了抽象语法树在源码的机器学习研究中的重要性和 Tree-LSTM 方法的局限性,并提出了一种新方法 Multi-way Tree-LSTM 来应对此问题,对比现有技术取得更好的结果。
Jun, 2019
该研究报告介绍了一种新方法 —— 结构化语言建模(SLM),利用编程语言的严格语法将代码片段建模为树来实现任意代码完成,该方法可以生成任意编程语言的任意代码,在生成 Java 和 C# 代码方面,效果显著优于现有技术。
Sep, 2019
在软件工程领域,编程语言理解与表示(即代码表示学习)一直是一个备受关注和具有挑战性的任务,其旨在应用深度学习技术生成源代码特征的数值表示同时保持其语义,这些表示可用于促进后续与代码相关的任务。然而,AST(抽象语法树)作为一种基本的代码特征,在代码表示学习中广泛应用,但目前缺乏对 AST-based 代码表示如何促进后续代码相关任务的系统和定量评估。本文通过详细的实证研究首次探索了 AST-based 代码表示在促进后续代码相关任务方面的有效性,并比较了基于代码标记序列和基于 AST 的代码表示方法在三种常见类型的代码相关任务上的性能。令人惊讶的是,整体定量统计结果表明,与基于代码标记的代码表示方案相比,基于 AST 的代码表示方法在所有三个任务中的表现均较差。进一步的定量分析显示,基于 AST 的代码表示方法在所有三个任务的某些子样本中优于基于代码标记的代码表示方法。我们还进行了全面的实验,评估和揭示了 AST 解析 / 预处理 / 编码方法的选择对基于 AST 的代码表示和后续代码相关任务的影响。本研究为未来的研究人员提供了关于如何选择每个阶段的解决方案以充分利用 AST 的详细指导。
Dec, 2023
本研究提出了一种新的神经网络模型,它可以将源代码的单词和代码结构(AST)结合起来,从而能够生成准确的注释文档。与传统的基于模板的系统不同,该模型可以更好地学习代码结构,即使程序缺乏内部文档,也可以在演示中提供连贯的描述,并在 SE 文献和 NLP 文献中得到进一步的改进和应用验证。
Feb, 2019
通过预训练和微调编程结构,改进了面向代码任务的当前语言模型的方法,并且在使用有限训练样本时,结合程序结构与纯文本表示方式展现出显著的改进效果。
Jan, 2024
本文介绍了一种称为 CAST 的新型模型,采用分层拆分和重构 AST 来完整地捕捉 AST 中的丰富信息,利用递归神经网络对子树进行编码,通过重构拆分后的 AST 来聚合嵌入子树,最后使用 AST 表示和源码嵌入进行代码摘要,进而提高程序的理解和维护能力。
Aug, 2021
使用 AST(抽象语法树)的 AST-T5 模型在代码生成、转译和理解任务中表现出色,保留了代码结构,对重建各种代码结构具有强大的能力,并在各种代码相关任务中优于类似尺寸的其他大型语言模型。
Jan, 2024
本研究提出了从源代码的抽象语法树构建异构编程图用于方法命名和代码注释生成的方法,并使用异构图神经网络学习这些图。实验结果表明,利用编程图中节点和边的类型信息可以帮助学习程序语义,本方法优于基线模型。
Dec, 2020
AST-MHSA 是一个使用多头注意力机制从抽象语法树中提取重要语义信息的模型,它包括编码器和解码器两个主要组件,编码器将代码的抽象语法树作为输入生成隐藏状态序列,解码器以这些隐藏状态为输入生成代码的自然语言摘要。
Aug, 2023
本文提出了 InferCode 用于建立源代码模型的自监督学习机制,通过从 AST 上下文中识别的子树进行训练去匹配程序的表示,该技术不需要人工标注,也不与特定任务或代码单元相绑定,应用于无监督的任务效果显著。
Dec, 2020