中文

基于稀疏指针网络学习 Python 代码建议

神经与进化计算 2016-11-28 v1 人工智能 计算与语言 软件工程

摘要

为提升开发者生产力,所有现代集成开发环境(IDE)都包含代码建议功能,在光标处提议可能的下一个标记。虽然当前 IDE 对静态类型语言效果良好,但其对类型标注的依赖意味着它们无法为动态编程语言提供与静态类型语言同等的支持。此外,现代 IDE 中的建议引擎不提议表达式或多语句惯用代码。近期工作表明,语言模型可通过从软件仓库学习来改进代码建议系统。本文引入一种带有稀疏指针网络的神经语言模型,旨在捕获极长程依赖。我们发布了一个从 GitHub 爬取的大规模代码建议语料库,包含 4100 万行 Python 代码。在该语料库上,我们发现标准神经语言模型在建议局部现象时表现良好,但难以引用许多标记之前引入的标识符。通过用专门引用预定义标识符类的指针网络增强神经语言模型,我们得到了比 LSTM 基线更低的困惑度,且代码建议准确率提高 5 个百分点。实际上,代码建议准确率的提升源于标识符预测准确率提高了 13 倍。此外,定性分析表明该模型确实捕获了有趣的长程依赖,例如引用 60 多个标记之前定义的类成员。

关键词

引用

@article{arxiv.1611.08307,
  title  = {Learning Python Code Suggestion with a Sparse Pointer Network},
  author = {Avishkar Bhoopchand and Tim Rocktäschel and Earl Barr and Sebastian Riedel},
  journal= {arXiv preprint arXiv:1611.08307},
  year   = {2016}
}

备注

Under review as a conference paper at ICLR 2017