【技术实现步骤摘要】
一种基于CodeBERT微调和检索增强的Bash代码注释生成方法
[0001]本专利技术涉及计算机
,尤其涉及一种基于CodeBERT微调和检索增强的Bash代码注释生成方法。
技术介绍
[0002]Shell是开发人员和Linux操作系统之间进行交互的接口。开发人员在许多任务中使用shell命令,例如文件系统管理、网络控制和进程管理等。其中Bash是Linux默认的shell命令语言,在Linux操作系统的开发和维护中起着重要的作用。除此之外,Bash语言具有应用领域广泛以及语言灵活等特点。因此对于不熟悉Bash语言的开发人员来说,经常会遇到Bash代码的理解问题。
[0003]高质量的代码注释可以提高Bash代码的可读性和可理解性,并在软件开发和维护中发挥着重要的作用。而在开发过程中,经常会出现注释缺失或者注释过时的现象,因此,因此,针对Bash代码亟需可以生成相关代码注释的自动方法,从而协助开发人员理解Bash代码。
[0004]目前,已有的针对Bash代码的注释自动生成方法主要集中在信息检索方法。虽然使用信息检索方法可以通过复用代码注释的方法生成代码注释,但是仅仅复用注释生成的代码注释的可读性和相关性并不高,针对Bash代码而言效果并不突出。最近研究将代码注释生成建模为神经机器翻译问题,提出了基于深度学习的方法并取得了很好的效果。然而,这种方法通常需要大量的计算资源来训练模型,且需要较多的时间成本,效率较低。
[0005]如何解决上述技术问题成为本专利技术面临的课题。
专 ...
【技术保护点】
【技术特征摘要】
1.一种基于CodeBERT微调和检索增强的Bash代码注释生成方法,其特征在于,包括以下步骤:(1)搜集高质量的Bash代码片段以及对应注释作为原始数据,形成原始语料库,对该语料库进行去重操作,得到数据集D,设定数据集D中数据格式为<Bash代码,代码注释>,该语料库包含来自10592个Bash代码数据;(2)使用数据集D对预训练模型CodeBERT进行微调,在微调结束后冻结CodeBRET模型的参数,得到适配Bash代码的编码器模型;(3)使用构建的双重信息检索方法从训练集中检索出目标代码的最相似代码C
sim
;(4)将目标代码C
tar
和相似代码C
sim
作为两个输入,分别输入到微调的CodeBERT编码器中,得到对应的两个表征向量V
tar
和V
sim
;(5)对两个代码的表征向量进行L2归一化操作,得到两个归一化后的表征向量M
tar
和M
sim
;(6)将两个归一化后的表征向量输入到构建的融合层中,融合层通过三层前馈神经网络输出将两个向量融合输出融合向量G;(7)将融合向量G输入到Transformer中的编码器中,最终输出对应的代码注释。2.根据权利要求1所述的基于CodeBERT微调和检索增强的Bash代码注释生成方法,其特征在于,所述步骤(3)中通过双重信息检索方法从训练集中检索出目标代码的相似代码,具体包括如下步骤:(2
‑
1)通过语义相似度检索出k个相似度最高的代码;(2
‑1‑
1)对于给定的Bash代码片段,将其视为文本序列,根据空格对序列进行分割,得到输入序列W;(2
‑1‑
2)将序列W输入到CodeBert中,提取输出中第一层隐藏状态h0和最后一层的隐藏状态h
n
,并对它们取平均值,得到代码段的语义特征向量(2
‑1‑
3)通过计算目标代码段的语义特征向量和训练集中代码段语义特征向量之间的欧式距离,计算出代码段间的语义相似度,语义相似度计算公式为,其中j为向量维度:(2
‑1‑
4)使用FaceBook开发的FAISS库作为向量检索工具,根据语义相似度检索训练集中排在前k位的候选相似代码;(2
‑
2)通过词法相似度从k个候选代码中检索出最相似代码;(2
‑2‑
1)首先将代码片段视为词元集合,对代码序列内的重复词元进行去重删除操作,获取两个代码片段的集合A和B;(2
‑2‑
2)然后计算两个集合之间的文本编辑距离dis
A,B
;(2
‑2‑
3)根据计算的文本编辑距离计算得到两个代码片段之间的词法相似度lexical_similarity(A,B...
【专利技术属性】
技术研发人员:陈翔,于池,杨光,刘珂,周彦琳,顾亚锋,夏鸿崚,胡新宇,
申请(专利权)人:南通大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。