代码理解与生成
代码理解与生成为自然语言处理与软件工程的交叉方向,旨在利用自然语言处理技术提升编程效率。具体任务包括从自然语言到编程语言的程序合成和代码检索,以及从编程语言到自然语言的代码摘要和文档生成等,以下为程序合成任务的示例:
自然语言输入:创建一个函数计算两数之和
程序语言输出:
def sum(a, b): return a + b
开源软件平台(如GitHub)的发展极大提升了数据驱动的代码理解与生成模型的性能,然而,上述数据在语言(包括自然语言和程序语言)之间存在较为明显的偏置,多数自然语言均为英文、程序语言均为Java或Python等。由此引发了模型在不同语言上效果差距较大的问题。基于预训练的多语言模型可以利用高资源语言所蕴含的通用知识,将其迁移至低资源语言提升其上的模型性能。为此,本研究充分利用预训练多语言模型获取不同语言的统一表示,以此为基础进行程序合成等代码理解与生成下游任务,缓解不同语言之间的性能差距。