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

一种基于CodeBERT微调和检索增强的Bash代码注释生成方法技术

技术编号:34475461 阅读:12 留言:0更新日期:2022-08-10 08:50
本发明专利技术提供了一种基于CodeBERT微调和检索增强的Bash代码注释生成方法,属于计算机技术领域,解决了Bash代码开发过程中需要耗费人工成本手动编写注释的问题。其技术方案为:(1)使用构建的数据集对预训练模型CodeBERT进行微调;(2)在代码注释生成阶段,使用构建的双重信息检索方法检索出目标代码的最相似代码;(4)将目标代码和相似代码输入到微调后的CodeBERT编码器中,对得到的两个表征向量经过归一化操作;(5)将两个表征向量输入到融合层得到融合向量;(6)将融合向量输入到解码器中得到代码注释。本发明专利技术的有益效果为:快速根据现有Bash代码生成对应注释,提高Bash代码可读性和理解性。性和理解性。性和理解性。

【技术实现步骤摘要】
一种基于CodeBERT微调和检索增强的Bash代码注释生成方法


[0001]本专利技术涉及计算机
,尤其涉及一种基于CodeBERT微调和检索增强的Bash代码注释生成方法。

技术介绍

[0002]Shell是开发人员和Linux操作系统之间进行交互的接口。开发人员在许多任务中使用shell命令,例如文件系统管理、网络控制和进程管理等。其中Bash是Linux默认的shell命令语言,在Linux操作系统的开发和维护中起着重要的作用。除此之外,Bash语言具有应用领域广泛以及语言灵活等特点。因此对于不熟悉Bash语言的开发人员来说,经常会遇到Bash代码的理解问题。
[0003]高质量的代码注释可以提高Bash代码的可读性和可理解性,并在软件开发和维护中发挥着重要的作用。而在开发过程中,经常会出现注释缺失或者注释过时的现象,因此,因此,针对Bash代码亟需可以生成相关代码注释的自动方法,从而协助开发人员理解Bash代码。
[0004]目前,已有的针对Bash代码的注释自动生成方法主要集中在信息检索方法。虽然使用信息检索方法可以通过复用代码注释的方法生成代码注释,但是仅仅复用注释生成的代码注释的可读性和相关性并不高,针对Bash代码而言效果并不突出。最近研究将代码注释生成建模为神经机器翻译问题,提出了基于深度学习的方法并取得了很好的效果。然而,这种方法通常需要大量的计算资源来训练模型,且需要较多的时间成本,效率较低。
[0005]如何解决上述技术问题成为本专利技术面临的课题。

技术实现思路

[0006]本专利技术的目的在于提供一种基于CodeBERT微调和检索增强的Bash代码注释生成方法,该方法可以根据Bash代码片段生成对应的高质量代码注释。
[0007]本专利技术的思想为:本专利技术提出了一种基于CodeBERT微调和检索增强的Bash代码注释生成方法,通过微调后的CodeBERT模型作为编码器,构建包含融合层的编码器

解码器架构的模型;使用构建的双重信息检索方法从代码存储库中检索出相似代码,然后将相似代码和目标代码输入到包含有融合层的编码器

解码器的模型中,相似代码的语义信息可以增强编码器

解码器模型的学习能力,从而生成质量更高的Bash代码注释;本专利技术提出的方法在相同的语料库中取得了比基准方法更好的性能。
[0008]本专利技术是通过如下措施实现的:一种基于CodeBERT微调和检索增强的Bash代码注释生成方法,其中,包括以下步骤:
[0009](1)搜集来自NL2Bash语料库的数据以及NLC2CMD竞赛提供的数据得到一个高质量语料库,对该语料库进行去重操作,得到数据集D,设定数据集D中数据格式为<代码,注释>,该数据集包含了来自10592个数据。
[0010](2)将数据集按8:1:1的比例划分为训练集、测试集以及验证集。使用数据集D对预
训练模型CodeBERT进行微调,在微调结束后冻结CodeBRET模型的参数,得到适合Bash代码的编码器模型M
encoder

[0011](3)通过构建的双重信息检索方法根据语义相似度以及词法相似度检索从训练集中检索出与目标代码C
tar
最相似的相似代码C
sim

[0012](3

1)将目标代码序列C
tar
输入到编码器模型M
encoder
中,提取输出中第一层和最后一层的隐藏状态,并将其求和后进行平均,得到最终的表征向量X
tar

[0013](3

2)使用步骤(3

1)依次计算出训练集中代码片段的表征向量Y,通过欧式距离计算目标代码段的向量X
tar
以及训练集中的代码段的向量得到代码段之间的语义相似度计算公式为:其中j为向量维度,使用FAISS库作为向量检索工具,根据计算出的语义相似度semantic_similarity从训练集中检索出k个语义最相似的代码片段作为候选代码C
can

[0014](3

3)通过计算目标代码C
tar
与候选代码C
can
之间的词法相似度检索出最相似代码C
sim
,即根据计算的编辑距离计算词法相似度lexical_similarity(C
tar
,C
can
),计算公式为lexical_similarity(C
tar
,C
can
)=1

dis
A,B
/max(len(C
tar
),len(C
can
),其中len()表示代码集合长度;
[0015](4)将目标代码C
tar
最相似的相似代码C
sim
输入到两个编码器模型M
encoder
中,得到两个表征V
tar
和V
sim

[0016](5)对两个代码的表征向量V
tar
和V
sim
进行L2归一化操作,得到两个归一化后的表征向量M
tar
和M
sim

[0017](6)使用三个前馈神经网络构建融合层,用于融合两个归一化后的表征向量M
tar
和M
sim
最终得到融合向量G;
[0018](6

1)首先通过单层的前馈神经网络F1将两个向量融合,生成向量G1,公式表达为:
[0019]G1=F1([M
tar
;M
sim
])
[0020]其中[;]表示向量直接拼接。
[0021](6

2)然后通过单层的前馈神经网络F2将两个向量融合,生成向量G2,公式表达为:
[0022]G2=F2([M
tar

M
sim
])
[0023]其中[

]表示两个向量相减,从而突出两个向量之间的差异性;
[0024](6

3)接着,通过单层的前馈神经网络F3将两个向量融合,生成向量G3,公式表达为:
[0025][0026]其中表示向量的点乘运算,从而突出两个向量之间的相似性;
[0027](6

4)最后,通过单层的前馈神经网络F将上述三个融合子向量G1,G2和G3进行融合,生成最终的融合向量G,公式表达为:
[0028]G=F([G1;G2;G3])
[0029](7)将融合向量G输入到Transformer中的编码器中,最终输出对应的代码本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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...

【专利技术属性】
技术研发人员:陈翔于池杨光刘珂周彦琳顾亚锋夏鸿崚胡新宇
申请(专利权)人:南通大学
类型:发明
国别省市:

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

1