当前位置: 首页 > 专利查询>东北大学专利>正文

一种基于预训练模型的代码搜索系统及方法技术方案

技术编号:41269764 阅读:24 留言:0更新日期:2024-05-11 09:24
本发明专利技术提供一种基于预训练模型的代码搜索系统及方法,涉及代码搜索技术领域。该系统及方法首先提取每段代码的自然语言描述序列以及每一段代码片段的Token序列;再提取Token序列T中的特征,得到Token序列的特征向量;并对每段代码对应的自然语言描述序列N进行特征提取,从而生成对应的自然语言描述的特征向量;然后计算代码片段的特征向量和自然语言描述的特征向量之间的相似度;迭代执行以上过程最终产出每个代码片段的特征向量;再将各代码片段的特征向量通过聚类算法聚类成M个向量簇;对于用户的查询语句,在经过训练后的CodeBERT模型、聚类后的特征向量以及代码库中存储的代码片段序列P的基础上进行代码搜索工作。

【技术实现步骤摘要】

本专利技术涉及代码搜索,尤其涉及一种基于预训练模型的代码搜索系统及方法


技术介绍

1、代码搜索任务是帮助开发人员可以通过搜索一个大规模的代码库来重用以前编写的代码片段的行为。代码搜索需要用户输入一段描述代码功能的自然语言,然后模型输出相对应的编程语言供用户使用。代码搜索技术可以大大降低开发人员编写代码的时间,提升工作效率,并且提升软件质量。

2、在早期,编程语言和自然语言的搜索主要通过检索技术实现。codenn模型第一次将代码片段和自然语言描述联合嵌入到高维向量空间中,这样代码片段及其相应的描述就具有相似的向量。使用统一的向量表示,可以根据其向量检索与自然语言查询相关的代码片段。语义相关的单词也可以被识别,在查询中可以处理无关/有噪声的关键字。其性能相比于传统的检索技术有较大提升。更为重要的是,codenn提出了统一编程语言和自然语言到同一维度的概念,为后来的模型指出一条新的方向。

3、如今基于转换器的预训练语言模型,如bert模型、roberta模型等,在自然语言处理(nlp)任务中取得了巨大的成功。codebert模型是一个结本文档来自技高网...

【技术保护点】

1.一种基于预训练模型的代码搜索系统,其特征在于:包括数据采集模块、代码片段预处理模块、Token特征提取模块、自然语言预处理模块、自然语言特征提取模块、自注意力嵌入模块、句子相似度计算模块、相似度计算模块;

2.根据权利要求1所述的一种基于预训练模型的代码搜索系统,其特征在于:还包括聚类模块;所述聚类模块利用聚类算法在高维空间中评估代码片段之间的相似性,并基于这些相似性把相近的代码片段归集成簇;在用户发起搜索请求时,首先确定用户的自然语言描述与哪个向量簇的相似度最高;然后,通过自注意力嵌入模块以及相似度计算模块将特定的向量簇进行相似度分析并识别出最匹配的代码片段,最后把最匹...

【技术特征摘要】

1.一种基于预训练模型的代码搜索系统,其特征在于:包括数据采集模块、代码片段预处理模块、token特征提取模块、自然语言预处理模块、自然语言特征提取模块、自注意力嵌入模块、句子相似度计算模块、相似度计算模块;

2.根据权利要求1所述的一种基于预训练模型的代码搜索系统,其特征在于:还包括聚类模块;所述聚类模块利用聚类算法在高维空间中评估代码片段之间的相似性,并基于这些相似性把相近的代码片段归集成簇;在用户发起搜索请求时,首先确定用户的自然语言描述与哪个向量簇的相似度最高;然后,通过自注意力嵌入模块以及相似度计算模块将特定的向量簇进行相似度分析并识别出最匹配的代码片段,最后把最匹配的代码片段作为结果反馈给用户。

3.一种基于预训练模型的代码搜索方法,基于权利要求1所述系统实现,其特征在于:包括以下步骤:

4.根据权利要求3所述的一种基于预训练模型的代码搜索方法,其特征在于:所述步骤2使用分词工具对每一段代码片段对应的自然语言描述进行分词处理,并过滤掉分词结果中包含的特殊符号,得到每一代码片段的自然语言描述序列n;其中,n={n1,n2,...,nn}表示自然语言描述序列中所有单词的集合,自然语言描述序列的长度为n。

5.根据权利要求4所述的一种基于...

【专利技术属性】
技术研发人员:印莹杨四海赵宇海
申请(专利权)人:东北大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1