摘要
软件开发者在开发项目过程中往往需要引用大量由其他开发者开发的基础软件包。为获取除基础软件包开发文档外的使用方式,软件开发者需将代码关键词输入到代码搜索引擎搜索代码片段。文章提出一种基于向量表示的代码搜索方法,该方法收集Github和Stack Overflow数据集中的代码片段训练一个扩充代码词的skip-gram模型,并使用这个模型扩充从搜索文本中提取的与代码词关联的搜索关键词,得到搜索关键词上下文代码片段向量组,将搜索关键词上下文代码片段向量组和待匹配代码片段向量组编码后,计算余弦相似度并排序生成搜索结果。为验证算法的有效性,分别在Github数据集和Stack Overflow上验证。在Stack Overflow数据集上测试表明:58%的搜索能在第1个搜索结果找到正确答案; 65%的搜索能在前5个答案中找到正确答案; 72%的搜索能在前10个答案中找到正确答案,并在召回率和F值也有一定程度的提升。在Github数据集上测试表明:59%的搜索能在第1个搜索结果找到正确答案; 67%的搜索能在前5个答案中找到正确答案; 74%的搜索能在前10个答案中找到正确答案,并在召回率和F值也有一定程度的提升。针对大量数据的代码检索,本算法效果优于典型方法的搜索结果。
- 单位