Skip to main content
QUICK REVIEW

[论文解读] JuICe: A Large Scale Distantly Supervised Dataset for Open Domain Context-based Code Generation

Rajas Agashe, Srinivasan Iyer|arXiv (Cornell University)|Oct 5, 2019
Software Engineering Research参考文献 33被引用 6
一句话总结

本文介绍了JuICe,一个包含150万份Jupyter笔记本示例的大规模、远程监督数据集,用于开放域、基于上下文的代码生成,其高质量评估基于精心筛选的nbgrader笔记本。实验表明,上下文长度和训练数据量的增加均显著提升模型性能,远程监督带来显著收益,但当前模型在复杂推理和长上下文依赖方面仍表现不佳。

ABSTRACT

Interactive programming with interleaved code snippet cells and natural language markdown is recently gaining popularity in the form of Jupyter notebooks, which accelerate prototyping and collaboration. To study code generation conditioned on a long context history, we present JuICe, a corpus of 1.5 million examples with a curated test set of 3.7K instances based on online programming assignments. Compared with existing contextual code generation datasets, JuICe provides refined human-curated data, open-domain code, and an order of magnitude more training data. Using JuICe, we train models for two tasks: (1) generation of the API call sequence in a code cell, and (2) full code cell generation, both conditioned on the NL-Code history up to a particular code cell. Experiments using current baseline code generation models show that both context and distant supervision aid in generation, and that the dataset is challenging for current systems.

研究动机与目标

  • 为交互式计算环境(如Jupyter笔记本)中开放域、基于上下文的代码生成,解决缺乏大规模、高质量数据集的问题。
  • 支持基于交错的自然语言与代码历史的代码生成研究,这一设置在现有数据集中支持不足。
  • 提供一个基准测试集,其源自真实编程作业的精心筛选测试集,以确保代码生成模型评估的可靠性。
  • 研究上下文长度和训练数据量对两类代码生成任务(API序列生成与完整代码生成)模型性能的影响。

提出的方法

  • JuICe数据集从65.9万个公开的GitHub Jupyter笔记本中构建,目标代码单元与先前的自然语言和代码上下文配对。
  • 从13,905个nbgrader笔记本中提取了3,718个实例的精心筛选测试集,这些笔记本包含教师创建的作业,其中留有供学生填写的空白代码单元。
  • 定义了两个任务:(1) 生成实现目标所需的API调用序列;(2) 生成完整且可执行的代码单元。
  • 使用不同上下文长度和训练数据量,对神经序列到序列模型(包括LSTM和检索基线)进行训练与评估。
  • 性能通过精确匹配(EM)、BLEU、精确率和召回率进行衡量,并通过人工评估估算性能上限。
  • 对50个模型预测结果进行错误分析,识别出如误解意图、遗漏参数或无法处理长上下文依赖等失败模式。

实验结果

研究问题

  • RQ1增加训练数据量对基于上下文的代码生成性能有何影响?
  • RQ2在多大程度上,整合更长的先前自然语言与代码上下文序列能提升代码生成的准确性?
  • RQ3当前神经网络模型在开放域、交互式代码生成任务上的表现,与检索基线相比如何?
  • RQ4当前模型在基于长上下文历史生成代码时,主要的失败模式是什么?
  • RQ5根据人工标注者的估计,该设置下的代码生成性能上限是多少?

主要发现

  • 在代码生成和API序列任务上,随着训练数据量的增加,性能显著提升,约在20万条样本左右达到峰值后趋于平稳。
  • 增加上下文长度可提升模型性能,最多可提升至三个先前单元,之后因难以处理更长序列而趋于平稳。
  • 在150万条样本、上下文长度为3的设置下,表现最佳的LSTM模型在完整代码生成任务上的测试集表现达到23% EM和60% BLEU。
  • 尽管检索基线可访问完整上下文,但其BLEU得分仍比神经模型低超过2个百分点,表明模型必须超越检索能力进行推理才能生成正确代码。
  • 人工标注者估计的代码生成性能上限为60% BLEU和23% EM,表明当前模型仍有显著改进空间。
  • 超过30%的模型错误源于对自然语言指令核心意图的误解,凸显了在上下文推理与语义理解方面面临的挑战。

更好的研究,从现在开始

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

无需绑定信用卡

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