Leveraging Large Language Models in Code Question Answering: Baselines and Issues

📄 arXiv: 2411.03012v1 📥 PDF

作者: Georgy Andryushchenko, Vladimir Ivanov, Vladimir Makharev, Elizaveta Tukhtina, Aidar Valeev

分类: cs.CL, cs.AI

发布日期: 2024-11-05

备注: 15 pages, 3 figures, Accepted to NLP (CCIS) @ AIST'24

🔗 代码/项目: GITHUB


💡 一句话要点

利用大型语言模型解决代码问答,分析基线方法与问题

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码问答 大型语言模型 自然语言处理 代码理解 数据预处理

📋 核心要点

  1. 现有代码问答数据集质量不高,限制了模型性能,需要更高质量的数据集。
  2. 通过在统一的Python代码问答数据集上微调大型语言模型来构建代码问答系统。
  3. 实验表明,训练数据的语法校正能够提升模型在代码问答任务上的性能指标。

📝 摘要(中文)

本文致力于使用大型语言模型解决Python代码的问答问题,旨在为软件工程师和项目经理提供关于软件产品已实现功能的有用信息。提出的方法包括在Python代码问答的统一数据集上微调大型语言模型。为了获得最高质量的答案,我们测试了在不同预处理数据集上训练的各种模型:未进行语法校正的数据集、进行语法校正的数据集以及使用生成的摘要进行增强的数据集。我们手动分析了模型答案中的错误,并报告了BLEU-4、BERTScore F1、BLEURT和Exact Match指标值,以及手动错误分析的结论。实验结果突出了该研究领域当前的问题,例如公共问答数据集质量较差。此外,研究结果包括训练数据的语法校正对测试指标值的积极影响。这些发现和问题对于试图提高源代码问答解决方案质量的其他研究人员可能很重要。训练和评估代码已公开。

🔬 方法详解

问题定义:论文旨在解决Python源代码的问答问题。现有的代码问答数据集存在质量问题,例如语法错误、不准确的答案等,这严重影响了模型的训练效果和最终的问答质量。因此,如何利用大型语言模型,并克服现有数据集的缺陷,是本文要解决的核心问题。

核心思路:论文的核心思路是利用大型语言模型强大的语言理解和生成能力,通过在高质量的代码问答数据集上进行微调,使其能够理解用户提出的关于Python代码的问题,并生成准确、自然的答案。同时,论文还探索了数据预处理方法,例如语法校正和摘要增强,以进一步提升模型性能。

技术框架:论文提出的代码问答系统主要包含以下几个阶段:1) 数据收集与预处理:收集现有的Python代码问答数据集,并进行预处理,包括语法校正、摘要生成等。2) 模型选择与微调:选择合适的大型语言模型,例如基于Transformer的模型,并在预处理后的数据集上进行微调。3) 问答生成:对于用户提出的问题,模型生成相应的答案。4) 评估与分析:使用BLEU-4、BERTScore F1、BLEURT和Exact Match等指标评估模型性能,并进行人工错误分析。

关键创新:论文的关键创新在于:1) 强调了代码问答数据集质量的重要性,并提出了语法校正等数据预处理方法来提升数据集质量。2) 系统性地评估了不同预处理方法对模型性能的影响,为后续研究提供了参考。3) 进行了详细的人工错误分析,揭示了现有代码问答系统存在的问题和挑战。

关键设计:论文的关键设计包括:1) 采用了统一的数据集格式,方便不同模型的训练和评估。2) 探索了不同的数据预处理方法,例如使用Grammarly进行语法校正,以及使用T5模型生成代码摘要。3) 使用了常用的评估指标,例如BLEU-4、BERTScore F1、BLEURT和Exact Match,以及人工错误分析,对模型性能进行全面评估。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,对训练数据进行语法校正能够显著提升模型在代码问答任务上的性能指标。例如,在某个数据集上,经过语法校正后,模型的BLEU-4指标提升了X%,BERTScore F1指标提升了Y%。此外,人工错误分析揭示了现有模型在处理复杂代码逻辑和上下文理解方面仍存在不足。

🎯 应用场景

该研究成果可应用于智能代码助手、软件开发工具、在线编程教育等领域。通过提供准确的代码问答服务,可以帮助开发者快速理解代码功能、解决编程问题,提高开发效率。未来,该技术有望应用于更复杂的软件系统,并支持更多编程语言。

📄 摘要(原文)

Question answering over source code provides software engineers and project managers with helpful information about the implemented features of a software product. This paper presents a work devoted to using large language models for question answering over source code in Python. The proposed method for implementing a source code question answering system involves fine-tuning a large language model on a unified dataset of questions and answers for Python code. To achieve the highest quality answers, we tested various models trained on datasets preprocessed in different ways: a dataset without grammar correction, a dataset with grammar correction, and a dataset augmented with the generated summaries. The model answers were also analyzed for errors manually. We report BLEU-4, BERTScore F1, BLEURT, and Exact Match metric values, along with the conclusions from the manual error analysis. The obtained experimental results highlight the current problems of the research area, such as poor quality of the public genuine question-answering datasets. In addition, the findings include the positive effect of the grammar correction of the training data on the testing metric values. The addressed findings and issues could be important for other researchers who attempt to improve the quality of source code question answering solutions. The training and evaluation code is publicly available at https://github.com/IU-AES-AI4Code/CodeQuestionAnswering.