从 Stack Overflow 中学习挖掘对齐的代码与自然语言对
计算与语言
2018-05-24 v1 软件工程
摘要
对于从自然语言进行代码合成、代码检索和代码摘要等任务,数据驱动模型已展现出巨大潜力。然而,构建这些模型需要自然语言(NL)与代码之间具有细粒度对齐的并行数据。Stack Overflow(SO)是创建此类数据集的一个有前景的来源:问题多样,且其中大多数都有包含高质量代码片段的对应答案。然而,现有的启发式方法(例如,将帖子的标题与已接受答案中的代码配对)在覆盖率和所获 NL-代码对的正确性方面均存在局限。在本文中,我们提出了一种从 SO 挖掘高质量对齐数据的新方法,使用了两组特征:考虑所提取片段结构的手工特征,以及通过训练概率模型以利用神经网络捕获 NL 与代码之间相关性的对应特征。这些特征被输入一个分类器,用于判定所挖掘 NL-代码对的质量。以 Python 和 Java 为测试平台的实验表明,即便仅使用少量标注样本,所提方法相较现有挖掘方法在覆盖率和准确率上均有大幅提升。此外,我们发现即使在一种语言上训练分类器并在另一种语言上测试,也能取得合理结果,这显示了将 NL-代码挖掘扩展到多种编程语言(超出我们能够标注数据的语言)的潜力。
引用
@article{arxiv.1805.08949,
title = {Learning to Mine Aligned Code and Natural Language Pairs from Stack Overflow},
author = {Pengcheng Yin and Bowen Deng and Edgar Chen and Bogdan Vasilescu and Graham Neubig},
journal= {arXiv preprint arXiv:1805.08949},
year = {2018}
}
备注
MSR '18