Deep Learning and Data Augmentation for Detecting Self-Admitted Technical Debt

📄 arXiv: 2410.15804v1 📥 PDF

作者: Edi Sutoyo, Paris Avgeriou, Andrea Capiluppi

分类: cs.SE, cs.AI, cs.LG

发布日期: 2024-10-21

备注: Accepted to be published at the 2024 31st Asia-Pacific Software Engineering Conference (APSEC)

DOI: 10.1109/APSEC65559.2024.00022


💡 一句话要点

提出基于数据增强的深度学习方法,提升自述技术债务检测与分类性能

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

关键词: 自述技术债务 SATD检测 数据增强 深度学习 BiLSTM BERT 类别不平衡 自然语言处理

📋 核心要点

  1. 现有SATD检测方法在处理不平衡数据集时性能不佳,尤其是在测试和需求债务等特定类型上。
  2. 论文提出一种基于大型语言模型的数据增强策略,结合BiLSTM和BERT模型,以改善SATD的识别和分类。
  3. 实验结果表明,该方法在SATD识别和分类性能上显著优于基线方法,并提供了一个平衡的数据集。

📝 摘要(中文)

自述技术债务(SATD)指的是开发者使用文本工件来解释现有实现并非最优的情况。过去检测SATD的研究主要集中在识别SATD(将SATD项分类为SATD或非SATD)或对SATD进行分类(将实例标记为与需求、设计、代码、测试债务等相关的SATD)。然而,这些方法的性能仍然欠佳,特别是对于特定类型的SATD,如测试和需求债务,这主要是由于数据集极度不平衡。为了应对这些挑战,我们基于先前的研究,利用BiLSTM架构进行SATD的二元识别,并利用BERT架构对不同类型的SATD进行分类。尽管它们有效,但两种架构都难以处理不平衡的数据。因此,我们采用了一种大型语言模型数据增强策略来缓解这个问题。此外,我们还引入了一种两步法来识别和分类来自不同工件的各种数据集中的SATD。我们的贡献包括为未来的SATD研究人员提供一个平衡的数据集,并证明我们的方法与基线方法相比,显著提高了SATD的识别和分类性能。

🔬 方法详解

问题定义:论文旨在解决自述技术债务(SATD)的自动检测与分类问题。现有方法,特别是基于深度学习的方法,在处理类别不平衡的SATD数据集时表现不佳,导致对某些类型(如测试债务和需求债务)的识别精度较低。这种不平衡性是由于这些类型的SATD样本数量相对较少造成的。

核心思路:论文的核心思路是通过数据增强来平衡数据集,从而提高深度学习模型在SATD识别和分类任务中的性能。具体而言,利用大型语言模型(LLM)生成更多少数类别的SATD样本,以缓解类别不平衡问题。同时,采用两阶段方法,先识别SATD,再进行分类。

技术框架:整体框架包含两个主要阶段:1) SATD识别:使用BiLSTM模型进行二元分类,判断文本是否为SATD;2) SATD分类:使用BERT模型将SATD文本分类到不同的债务类型(如需求债务、设计债务、代码债务、测试债务等)。在训练前,使用LLM进行数据增强,生成更多少数类别的样本。

关键创新:关键创新在于使用大型语言模型进行数据增强,以解决SATD数据集的类别不平衡问题。与传统的过采样或欠采样方法相比,LLM能够生成更具语义一致性的新样本,从而更好地提升模型的泛化能力。此外,两阶段方法也提高了整体的准确性。

关键设计:BiLSTM模型用于SATD识别,BERT模型用于SATD分类。数据增强阶段,使用LLM(具体模型未知)生成新的SATD样本,并将其添加到训练集中。损失函数和优化器等细节未在摘要中明确说明,属于未知信息。

🖼️ 关键图片

fig_0
fig_1

📊 实验亮点

论文通过实验证明,提出的数据增强方法显著提高了SATD的识别和分类性能。具体性能数据和对比基线未在摘要中给出,属于未知信息。但论文强调,该方法优于现有的基线方法,并提供了一个平衡的数据集供未来研究使用。

🎯 应用场景

该研究成果可应用于软件开发过程中的技术债务管理。通过自动检测和分类SATD,可以帮助开发人员更好地理解代码中的技术债务,并制定相应的重构计划,从而提高软件质量和可维护性。此外,该方法还可以用于代码审查和知识共享等场景。

📄 摘要(原文)

Self-Admitted Technical Debt (SATD) refers to circumstances where developers use textual artifacts to explain why the existing implementation is not optimal. Past research in detecting SATD has focused on either identifying SATD (classifying SATD items as SATD or not) or categorizing SATD (labeling instances as SATD that pertain to requirement, design, code, test debt, etc.). However, the performance of these approaches remains suboptimal, particularly for specific types of SATD, such as test and requirement debt, primarily due to extremely imbalanced datasets. To address these challenges, we build on earlier research by utilizing BiLSTM architecture for the binary identification of SATD and BERT architecture for categorizing different types of SATD. Despite their effectiveness, both architectures struggle with imbalanced data. Therefore, we employ a large language model data augmentation strategy to mitigate this issue. Furthermore, we introduce a two-step approach to identify and categorize SATD across various datasets derived from different artifacts. Our contributions include providing a balanced dataset for future SATD researchers and demonstrating that our approach significantly improves SATD identification and categorization performance compared to baseline methods.