Skip to main content
QUICK REVIEW

[论文解读] A Survey on Natural Language Processing for Programming

Qingfu Zhu, Xianzhen Luo|arXiv (Cornell University)|Dec 12, 2022
Software Engineering Research被引用 4
一句话总结

本综述通过识别编程语言的两个核心特性——基于结构的和面向功能的——系统性地回顾了编程的自然语言处理(NLP4P)。它分析了这些特性如何塑造任务、数据集、评估方法、技术与最先进模型,并提出了未来在迭代式、多语言和多模态NLP4P方面的发展方向,以解决当前程序理解与生成中的局限性。

ABSTRACT

Natural language processing for programming aims to use NLP techniques to assist programming. It is increasingly prevalent for its effectiveness in improving productivity. Distinct from natural language, a programming language is highly structured and functional. Constructing a structure-based representation and a functionality-oriented algorithm is at the heart of program understanding and generation. In this paper, we conduct a systematic review covering tasks, datasets, evaluation methods, techniques, and models from the perspective of the structure-based and functionality-oriented property, aiming to understand the role of the two properties in each component. Based on the analysis, we illustrate unexplored areas and suggest potential directions for future work.

研究动机与目标

  • 识别并分析编程语言的双重内在特性——基于结构的和面向功能的——这些特性是程序理解与生成的基础。
  • 通过这两个特性,系统性地回顾现有NLP4P工作,涵盖任务、数据集、评估方法、技术与模型。
  • 突出尚未探索的研究领域,并提出未来方向,包括迭代式、多语言和多模态NLP4P。
  • 阐明基于结构的建模在模型架构中的作用与面向功能的设计在评估与生成中的作用。
  • 通过将NLP4P组件与编程语言的基本特征对齐,为未来研究提供一个结构化框架。

提出的方法

  • 根据输入/输出语义及编程语言结构的作用,将NLP4P任务划分为基于结构的(如摘要生成、检索、分类)和面向功能的(如程序合成、代码补全)。
  • 通过结构与功能的双重视角分析数据集与评估方法,强调结构表示与功能正确性如何塑造数据与指标。
  • 调查技术与模型,重点关注主干架构(如基于树、基于图)如何支持结构建模,以及解码策略与测试反馈如何支持功能正确性。
  • 检查最先进模型,识别其如何利用基于结构的表示(如抽象语法树AST、代码嵌入)与面向功能的训练(如测试反馈、执行准确率)。
  • 通过扩展当前范式提出未来研究方向:迭代式NLP4P用于历史上下文建模,多语言NLP4P用于低资源语言,多模态NLP4P利用视觉-语言预训练。
  • 采用系统性综述框架,将现有工作映射到这两项特性,识别在建模、数据与评估方面的缺口。

实验结果

研究问题

  • RQ1编程语言的基于结构的与面向功能的特性如何影响NLP4P任务的设计?
  • RQ2当前的数据集与评估方法在多大程度上反映了编程语言的结构与功能特征?
  • RQ3最先进模型如何利用基于结构的表示与面向功能的训练来实现程序理解与生成?
  • RQ4当前NLP4P方法在历史上下文、低资源语言与多模态输入方面存在哪些关键局限性?
  • RQ5通过整合迭代开发、多语言学习与多模态理解,NLP4P可产生哪些未来研究方向?

主要发现

  • 基于结构的特性在模型架构与表征学习中起核心作用,基于树与图的模型在捕捉程序语法与语义方面表现更优。
  • 面向功能的特性对评估至关重要,因为模型必须生成功能正确的程序,而测试反馈能显著提升泛化能力与正确性。
  • 当前模型常忽略历史上下文,导致重复工作;利用先前版本与错误反馈的迭代式NLP4P是极具前景但尚未充分探索的方向。
  • 多语言NLP4P受数据不平衡制约,低资源语言(如Ruby)表现较差;多语言预训练可作为可扩展方案,减少翻译带来的级联错误。
  • 多模态NLP4P尚处起步阶段,尚无现有数据集;利用预训练视觉-语言模型(如CLIP、Flamingo)处理现有多模态数据,可提升对视觉或图表化程序规格的理解。
  • 尽管在英语及Python、Java等主流语言上表现优异,低资源编程语言与自然语言对仍严重缺乏支持,表明在可及性与公平性方面存在显著差距。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。