Applying Convolutional Neural Networks With Different Word Representation Techniques to Recommend Bug Fixers
- 论文下载地址: 下载链接
- 作者: Syed Farhan Alam Zaidi, Faraz Malik Awan, Minspo Lee, Honguk Woo, and Chan-Gun Lee
- 学校: 韩国中央大学,计算机科学与工程学院
- 发表: IEEE Access
- 发表年份: 2020年
- 关键词: convolutional neural networks, word representation techniques, bug fixers, deep learning
摘要
本文介绍了一种应用不同词表示技术的卷积神经网络(CNN)来推荐bug修复者的方法。在软件开发过程中,将错误报告分配给适当的开发人员是一个关键的任务。首先,文章回顾了相关研究,包括基于机器学习和深度学习的bug修复推荐方法。然后,介绍了三种不同的词表示技术:Word2Vec、GloVe和ELMo。这些技术可以将代码和开发者的信息表示为向量,以便在CNN模型中进行处理。接下来,文章描述了CNN模型的架构和训练过程。通过将错误报告映射到相应的开发者,CNN模型可以推荐适当的bug修复者。实验结果显示,使用ELMo词表示技术的CNN模型在bug修复推荐任务上取得了最佳性能。这表明使用上下文敏感的词表示技术可以提高模型的准确性。
创新点与借鉴点
- 本文提出了一种基于深度学习的bug修复推荐方法,通过使用卷积神经网络(CNN)和三种不同的词表示技术(Word2Vec、GloVe和ELMo),实现了对错误报告的自动分配和开发者的推荐。这种方法利用了深度学习在自动特征学习和模式识别方面的优势,同时通过采用不同的词表示技术来处理代码和开发者的信息,从而提高了推荐的准确性。
- 文章对过去的bug修复推荐研究进行了综述,包括基于监督学习、信息检索和机器学习方法,以及基于深度学习的方法。这为读者提供了对该领域的相关工作的概览和理解,并为进一步研究提供了参考。
- 文章对模型训练过程中的批量大小和过滤器数量进行了探讨,并提出了对于不同数据集和模型的可参考的策略。这为读者提供了对模型调参的指导和启示,以及在处理不同类型数据集时的设计决策依据。
实验方法
- 数据集:使用了三个开源软件项目的错误报告数据集,分别是Firefox、JDT和Platform。这些数据集包含了大量错误报告和开发者信息,用于训练和评估模型的性能。
- 方法概述:本文采用了基于深度学习的bug修复推荐方法,其中卷积神经网络(CNN)被用作主要模型。CNN模型接收错误报告和开发者信息的词表示作为输入,并通过多层卷积和池化操作提取特征。然后,通过Softmax分类器对开发者进行分类,从而进行错误修复推荐。
- 词表示技术:采用了三种不同的词表示技术,分别是Word2Vec、GloVe和ELMo。这些技术将文本数据转换为向量表示,其中每个单词都对应一个向量。这些向量捕捉了单词之间的语义和上下文关系,用于表示错误报告和开发者信息。
- 实验设置:实验过程中,将数据集划分为训练集、验证集和测试集。使用训练集对CNN模型进行训练,并通过优化准则来更新模型参数。通过验证集对模型进行调优,选择最佳的超参数设置。最后,使用测试集评估模型的性能,包括准确率、召回率等指标。
- 实验结果:通过实验评估,对比比较了不同词表示技术的CNN模型的性能。评估指标包括准确率、召回率和F1-score等。同时,还与其他相关研究进行了比较,验证了所提出方法的有效性和优越性。
总结
- (1): 这篇文章的研究背景是错误修复推荐问题,即如何在软件开发过程中推荐给适当的开发人员,以便快速修复错误。
- (2): 过去的方法包括基于监督学习、信息检索和机器学习方法,以及基于深度学习的方法。然而,现有方法存在一些问题,如缺乏上下文敏感性,难以处理复杂且大型的数据集。本文提出了基于深度学习的bug修复推荐方法,并使用不同的词表示技术来解决这些问题。
- (3): 本文提出了一种基于卷积神经网络(CNN)的bug修复推荐技术。使用三种不同的词表示技术(Word2Vec、GloVe和ELMo)来表示代码和开发者的信息。通过训练CNN模型,将错误报告映射到相应的开发者。
- (4): 通过实验评估,本文提出的方法在bug修复推荐任务上取得了较高的性能表现。通过比较不同词表示技术,实验结果显示ELMo-CNN具有最高的准确率。这表明使用上下文敏感的词表示可以提高模型的性能,并更好地适应复杂且大型的数据集。因此,本文所提出的方法在推荐错误修复者方面具有潜在的应用价值。