基于 Transformer 的智能调用自动代码完成方法

💡 原文中文,约1400字,阅读约需4分钟。
📝

内容提要

本研究评估了基于Transformer的语言模型在代码补全中的表现,提出了多任务学习和动态推理方法以提高准确性和效率。结果表明,使用真实代码训练的模型在补全任务中显著优于传统方法,提升了程序员的使用体验。

🎯

关键要点

  • 基于 Transformer 的语言模型在自动代码补全方面显示出巨大的潜力。

  • 本研究提供了对三个公共代码语言模型在完成真实世界代码时的定量和定性评估。

  • 采用多任务学习的预训练语言模型,通过混合目标函数进行预训练,能更好地理解和生成代码。

  • IntelliCode Compose 是一种通用的多语言代码自动完成工具,能够生成语法正确的代码。

  • 通过使用上下文数据提高预训练代码语言模型的性能,改善自动补全的实用性和准确性。

  • 提出早期拒绝机制和基于 Transformer 的评估器,显著减少计算成本并提高补全准确性。

  • 在真实代码完成实例上训练模型,准确性提高了 12.8% 和 13.8%。

  • 动态推理方法优化神经代码补全模型,节约计算资源并减少计算成本。

  • Grammformer 模型在 C# 和 Python 的代码完成方面生成更准确的代码。

  • 结合静态分析和语言模型预测词汇分布的方法,提高代码完成的实时性、准确性及有效性。

延伸问答

基于 Transformer 的语言模型在代码补全中有什么优势?

基于 Transformer 的语言模型在代码补全中显示出巨大的潜力,能够更好地理解和生成代码,尤其在完成标识符的任务上效果显著。

IntelliCode Compose 是什么?

IntelliCode Compose 是一种通用的多语言代码自动完成工具,能够生成语法正确的代码,支持多种编程语言。

如何提高代码补全模型的准确性?

通过使用真实代码进行训练、采用多任务学习和动态推理方法,可以显著提高代码补全模型的准确性。

Grammformer 模型的特点是什么?

Grammformer 模型能够根据编程语言语法生成具有“空洞”的代码完成,在 C# 和 Python 的代码完成方面生成更准确的代码。

动态推理方法在代码补全中有什么作用?

动态推理方法优化神经代码补全模型,节约计算资源并减少计算成本,同时主动防止生成错误代码。

多任务学习如何影响代码补全的效果?

多任务学习通过混合目标函数进行预训练,能够更好地理解和生成代码,从而提升代码补全的效果。

🏷️

标签

➡️

继续阅读