
摘要
软件开发人员在软件开发过程中需要编写大量源代码和文档。在实际开发中,开发者常常会回忆起过去编写的部分代码或代码摘要,以便在实现新功能或撰写文档时进行参考。为模拟开发人员生成代码或摘要的行为,我们提出了一种检索增强框架——REDCODER。该框架能够从检索数据库中检索出相关的代码片段或摘要,并将其作为补充信息提供给代码生成或摘要生成模型。REDCODER具有若干独特之处:首先,它将当前最先进的密集检索技术扩展应用于相关代码或摘要的搜索任务;其次,该框架可兼容包含单模态数据(仅代码或仅自然语言描述)或双模态数据(代码-描述配对)的检索数据库。我们在Java和Python语言的代码生成与摘要生成两个基准数据集上开展了实验与深入分析,结果表明,所提出的检索增强框架在性能上表现优异,充分验证了其有效性。
代码仓库
kagnlp/CodeGenerator
GitHub 中提及
rizwan09/redcoder
官方
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| code-generation-on-codexglue-codesearchnet | Redcoder-ext | Java/BLEU: 28.98 Java/CodeBLEU: 33.18 Java/EM: 10.21 Python/BLEU: 24.43 Python/CodeBLEU: 30.21 Python/EM: 9.61 |
| code-generation-on-concode | Redcoder-ext | BLEU: 42.5 CodeBLEU: 43.4 Exact Match: 23.4 |