TreeBERT: 面向编程语言的基于树形结构的预训练模型
本文介绍了一种 AstBERT 模型,该模型基于预训练的编程语言模型,使用抽象语法树从语义和句法两方面来更好地理解金融代码,通过 Alipay 代码库中大量的 Java 和 Python 代码进行训练,并通过代码解析器将抽象语法树信息整合进模型中,最终,在代码问答、代码克隆检测和代码优化三个任务中获得了良好的性能。
Jan, 2022
本文提出了一种名为 Syntax-BERT 的新型框架,它可以有效地并高效地将句法树结构融入到基于 Transformer 的任何预训练模型中,并在多个先前的预训练模型上取得了稳定的性能提升,进一步证明了句法信息在 NLP 任务中的重要性。
Mar, 2021
GraphCodeBERT 是一种基于 Transformer 的预训练模型,通过使用数据流而不是抽象语法树的句法级别结构,可以更有效地编码代码的语义结构,从而提高代码理解过程。其结构感知的预训练任务可以改善 GraphCodeBERT,并在代码搜索,克隆检测,代码翻译和代码优化等方面实现了最先进的性能。
Sep, 2020
使用 AST(抽象语法树)的 AST-T5 模型在代码生成、转译和理解任务中表现出色,保留了代码结构,对重建各种代码结构具有强大的能力,并在各种代码相关任务中优于类似尺寸的其他大型语言模型。
Jan, 2024
本文提出了 SynCoBERT—— 一种语法引导的,多模态对比预训练方法,旨在更好地表示代码,其中设计了两种新的预训练目标 —— 标识符预测和 AST 边缘预测,并提出了多模态对比学习策略来最大化不同模态之间的互信息。经过广泛的实验,SynCoBERT 在与相同的预训练语料库和模型大小进行比较时,提高了与代码智能相关的四个下游任务的最新性能。
Aug, 2021
此篇论文分析了预训练语言模型,尤其是 CodeBERT 和 GraphCodeBERT 对源代码的结构性质,通过对注意力分析,词嵌入的探索和语法树归纳等方面进行全面分析,揭示出了一些深入的发现,为今后的相关研究提供了启示。
Feb, 2022
在软件工程领域,编程语言理解与表示(即代码表示学习)一直是一个备受关注和具有挑战性的任务,其旨在应用深度学习技术生成源代码特征的数值表示同时保持其语义,这些表示可用于促进后续与代码相关的任务。然而,AST(抽象语法树)作为一种基本的代码特征,在代码表示学习中广泛应用,但目前缺乏对 AST-based 代码表示如何促进后续代码相关任务的系统和定量评估。本文通过详细的实证研究首次探索了 AST-based 代码表示在促进后续代码相关任务方面的有效性,并比较了基于代码标记序列和基于 AST 的代码表示方法在三种常见类型的代码相关任务上的性能。令人惊讶的是,整体定量统计结果表明,与基于代码标记的代码表示方案相比,基于 AST 的代码表示方法在所有三个任务中的表现均较差。进一步的定量分析显示,基于 AST 的代码表示方法在所有三个任务的某些子样本中优于基于代码标记的代码表示方法。我们还进行了全面的实验,评估和揭示了 AST 解析 / 预处理 / 编码方法的选择对基于 AST 的代码表示和后续代码相关任务的影响。本研究为未来的研究人员提供了关于如何选择每个阶段的解决方案以充分利用 AST 的详细指导。
Dec, 2023
本文提出 Tree-Transformer 神经网络架构,可用于树状结构数据的矫正任务,并在源代码和自然语言两个领域中分别取得了 25% 和 10% 的改进。
Aug, 2019
本文提出了一种基于树结构的神经架构 (TreeGen) 来生成编程语言代码,该模型使用了 Transformer 的注意力机制解决了长依赖问题,并引入了一种新颖的 AST 阅读器 (encoder) 将语法规则和 AST 结构整合到网络中。在 Python 基准测试、ATIS 和 GEO 语义解析基准测试中,TreeGen 的性能优于之前的最先进方法 4.5 个百分点,同时在 ATIS(89.1%)和 GEO(89.6%)的神经网络方法中实现了最佳精度。
Nov, 2019
该研究探讨了使用神经机器翻译模型进行源代码自动生成文档的机器翻译任务,并阐述了抽象语法树在源码的机器学习研究中的重要性和 Tree-LSTM 方法的局限性,并提出了一种新方法 Multi-way Tree-LSTM 来应对此问题,对比现有技术取得更好的结果。
Jun, 2019