Pre-training Code Representation with Semantic Flow Graph for Effective Bug Localization使用语义流图进行预训练代

全文摘要

本文旨在解决自然语言处理中预训练模型在编程语言中的应用问题,并提出了针对代码语义和对比学习的新方法。传统的基于BERT的bug定位技术存在两个问题:一是无法充分捕捉程序代码的深层语义;二是忽略了大规模负样本在对比学习中的重要性以及bug报告与变更集之间的词汇相似度。为了解决这些问题,作者提出了一个名为Semantic Flow Graph(SFG)的新型有向、多标签代码图表示,可以紧凑地、充分地捕获代码语义。此外,作者还设计并训练了SemanticCodeBERT,并提出了一种新的层次化动量对比式bug定位技术(HMCBL)。实验结果表明,该方法在bug定位方面取得了最先进的性能。

论文方法

方法描述

该论文提出了一种基于深度学习的bug定位方法,其主要流程包括三个部分:表示学习、相似度估计和离线索引与检索。其中,表示学习使用了预训练的语言模型(如BERT)和代码模型(如SemanticCodeBERT),将自然语言描述和编程语言代码转化为向量表示;相似度估计算法采用了层次化对比损失函数,同时考虑了特征级、模型级和记忆库级的相似度;离线索引与检索则采用了IVFPQ算法实现快速检索。

方法改进

相比于传统的基于规则或统计学方法的bug定位方法,该方法通过深度学习的方式可以更好地捕捉语义信息,并且能够自适应地学习到不同项目之间的差异性。此外,该方法还引入了大规模负样本和记忆库机制,提高了模型的泛化能力和鲁棒性。

解决的问题

该方法解决了传统bug定位方法中无法有效处理复杂场景和大量数据的问题,同时也为后续的研究提供了新的思路和方向。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值