LLM2D
LecPrompt:基于提示的 CodeBERT 逻辑错误纠正方法
LecPrompt: A Prompt-based Approach for Logical Error Correction with CodeBERT
作者: Zhenyu Xu, Victor S. Sheng
发布日期: 10/14/2024
arXiv ID: oai:arXiv.org:2410.08241v1

摘要

编程中的逻辑错误不会引发编译器警报,这使得它们难以检测。这些沉默的错误会破坏程序的功能或导致运行时问题。它们的修正需要对程序逻辑有深刻的理解,突出了自动检测和修复的重要性。在本文中,我们介绍了 LecPrompt 用于定位和修复逻辑错误,这是一种基于提示的方法,利用了 CodeBERT 的能力,CodeBERT 是一种基于 Transformer 的大型语言模型,在代码上进行了训练。首先,LecPrompt 利用大型语言模型来计算困惑度和对数概率指标,在词元和行级别上精确定位逻辑错误。通过统计分析,它识别出与大型语言模型识别的预期模式显著偏离的词元和行,并将它们标记为潜在的错误来源。其次,通过将逻辑错误修正挑战构建为一个掩码语言建模 (MLM) 任务,LecPrompt 利用 CodeBERT 自回归地修复已识别的错误词元。最后,软提示方法在低成本场景中提供了一种新颖的解决方案,确保模型能够针对逻辑错误修正任务的具体细微差别进行微调,而不会产生高昂的计算成本。为了评估 LecPrompt 的性能,我们创建了一种方法,将逻辑错误引入正确的代码,并将其应用于 QuixBugs 以生成 QuixBugs-LE 数据集。我们对 QuixBugs-LE 数据集(针对 Python 和 Java)的评估突出了我们方法 LecPrompt 的令人印象深刻的能力。对于 Python,LecPrompt 实现了 74.58% 的值得注意的 top-1 词元级修复准确率和 27.4% 的程序级修复准确率。在 Java 中,LecPrompt 提供了 69.23% 的 top-1 词元级修复准确率和 24.7% 的完整程序级修复准确率。