利索能及
我要发布
收藏
专利号: 2022104699255
申请人: 南通大学
专利类型:发明专利
专利状态:已下证
更新日期:2025-11-13
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于CodeBERT微调和检索增强的Bash代码注释生成方法,其特征在于,包括以下步骤:(1)搜集高质量的Bash代码片段以及对应注释作为原始数据,形成原始语料库,对该语料库进行去重操作,得到数据集D,设定数据集D中数据格式为,该语料库包含来自10592个Bash代码数据;

(2)使用数据集D对预训练模型CodeBERT进行微调,在微调结束后冻结CodeBRET模型的参数,得到适配Bash代码的编码器模型;

(3)使用构建的双重信息检索方法从训练集中检索出目标代码的最相似代码Csim;

(4)将目标代码Ctar和相似代码Csim作为两个输入,分别输入到微调的CodeBERT编码器中,得到对应的两个表征向量Vtar和Vsim;

(5)对两个代码的表征向量进行L2归一化操作,得到两个归一化后的表征向量Mtar和Msim;

(6)将两个归一化后的表征向量输入到构建的融合层中,融合层通过三层前馈神经网络输出将两个向量融合输出融合向量G;

(7)将融合向量G输入到Transformer中的编码器中,最终输出对应的代码注释;

所述步骤(3)中通过双重信息检索方法从训练集中检索出目标代码的相似代码,具体包括如下步骤:(2‑1)通过语义相似度检索出k个相似度最高的代码;

(2‑1‑1)对于给定的Bash代码片段,将其视为文本序列,根据空格对序列进行分割,得到输入序列W;

0

(2‑1‑2)将序列W输入到CodeBert中,提取输出中第一层隐藏状态h和最后一层的隐藏n状态h,并对它们取平均值,得到代码段的语义特征向量(2‑1‑3)通过计算目标代码段的语义特征向量 和训练集中代码段语义特征向量之间的欧式距离,计算出代码段间的语义相似度,语义相似度计算公式为,其中j为向量维度:(2‑1‑4)使用FaceBook开发的FAISS库作为向量检索工具,根据语义相似度检索训练集中排在前k位的候选相似代码;

(2‑2)通过词法相似度从k个候选代码中检索出最相似代码;

(2‑2‑1)首先将代码片段视为词元集合,对代码序列内的重复词元进行去重删除操作,获取两个代码片段的集合A和B;

(2‑2‑2)然后计算两个集合之间的文本编辑距离disA,B;

(2‑2‑3)根据计算的文本编辑距离计算得到两个代码片段之间的词法相似度lexical_similarity(A,B),计算公式为: 其中len()表示集合的规模大小;

所述步骤(5)对目标代码和相似代码的表征向量的归一化操作,具体包括如下步骤:(3‑1)得到的两个表征向量Vtar和Vsim进行L2归一化操作,对两个向量的三位空间进行归一化处理得到归一化向量Mtar和Msim,用于加快模型训练的收敛速度,提高模型的性能;

(3‑2)归一化的计算公式为:

所述步骤(6)中通过融合层将两个归一化向量Mtar和Msim融合,具体包括如下步骤:(4‑1)首先通过单层的前馈神经网络F1将两个向量融合,生成向量G1,公式表达为:G1=F1([Mtar;Msim])

其中[;]表示向量直接拼接;

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

其中[‑]表示两个向量相减,突出两个向量之间的差异性;

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

(4‑4)最后,通过单层的前馈神经网络F将上述三个向量G1,G2和G3进行融合,生成最终的融合向量G,公式表达为:G=F([G1;G2;G3])。

2.根据权利要求1所述的基于CodeBERT微调和检索增强的Bash代码注释生成方法,其特征在于,所述步骤(7)中通过Transformer的解码器对融合向量解码,生成对应的代码注释,具体包括如下步骤:(5‑1)首先选择Transformer中的解码器作为本方法的解码器模型,将融合向量G输入到解码器中进行解码,并使用Softmax函数获取每个单词生成的概率;

(5‑2)最后利用Beam Search搜索算法生成最终的文本描述为代码注释,Beam Search搜索算法在预测的每一步都保留Top‑k高概率的词作为下一次的输入,其中k表示beam size表示搜索的束宽,基于上个步长的输出序列,挑选出所有组合中条件概率最大的k个,作为时间步长下的候选输出序列,始终保持k个候选,最后从k个候选中挑出最优的词汇,本方法使用的Beam Search算法将k设置为10。