中文

以两阶段范式重访代码搜索

软件工程 2024-03-29 v3

摘要

借助良好的代码搜索引擎,开发者可复用现有代码片段并加速软件开发过程。当前代码搜索方法可分为两类:传统的基于信息检索(IR)的方法与基于深度学习(DL)的方法。基于DL的方法包括交叉编码器范式与双编码器范式。然而,两类方法均存在一定局限。IR基与双编码器模型推理快,但精度不足;而交叉编码器模型可达更高搜索精度却更耗时。本工作中,我们提出TOSS,一种可结合不同代码搜索方法优势的两阶段融合代码搜索框架。TOSS首先使用IR基与双编码器模型高效召回少量top-k代码候选,然后使用细粒度交叉编码器进行更精细排序。此外,我们在不同代码候选规模与多种编程语言上开展广泛实验以验证TOSS有效性,并将TOSS与六种数据融合方法比较。实验结果表明TOSS不仅高效,且以0.763的总体平均倒数排名(MRR)分数达到最优精度,优于CodeSearchNet基准上最佳基线结果0.713。我们的源代码与实验数据见:https://github.com/fly-dragon211/TOSS。

关键词

引用

@article{arxiv.2208.11274,
  title  = {Revisiting Code Search in a Two-Stage Paradigm},
  author = {Fan Hu and Yanlin Wang and Lun Du and Xirong Li and Hongyu Zhang and Shi Han and Dongmei Zhang},
  journal= {arXiv preprint arXiv:2208.11274},
  year   = {2024}
}

备注

Accepted by WSDM 2023