【技术实现步骤摘要】
一种基于多模态的代码摘要生成方法与系统
[0001]本专利技术涉及计算机软件工程
,主要涉及基于多模态的代码摘要生成方法与系统。
技术介绍
[0002]在软件开发和维护过程中,编程理解非常重要。在软件工程中,软件开发人员面对众多大规模复杂的软件系统,需要快速准确地读取代码。但最近的一项研究表明,开发人员在程序理解上花费了大约59%的时间。源代码摘要可以帮助开发人员和维护人员更快地阅读源代码,更好地理解代码的思想和行为。因此,代码摘要可以大大节省开发人员和维护人员的宝贵时间,从而提高工作效率。然而,由于手工编写摘要既耗时又费力,因此有许多尝试自动生成源代码摘要。
[0003]在代码摘要的早期阶段,研究人员更多地关注基于模板的方法。随着开源代码语料库的出现,研究人员开始探索基于信息检索的方法。基于信息检索的方法挖掘代码仓库,找到与目标代码相似的代码片段,并利用这些相似代码的摘要。这种方法可以生成高质量的摘要,但由于目标代码和类似代码之间的差异,检索而来的摘要不能直接用作结果摘要,并且现有的代码摘要检索方法多使用词汇级的检索器,仅关注了代码表面上的相似性,导致检索出含义上不相关的代码,继而降低最终生成摘要的表现。近年来,随着深度学习技术的快速发展,许多研究人员开始将该任务建模为神经机器翻译任务。他们主要采用序列到序列的神经网络将代码翻译成摘要。虽然这种方法可以产生更通用的摘要,但它仍然面临跨模态翻译的挑战。代码摘要模型需要能够表示和生成两种不同的模态:源代码和自然语言摘要。虽然它们表达相同的语义,但结构不同。 ...
【技术保护点】
【技术特征摘要】
1.一种基于多模态的代码摘要生成方法,其特征在于,包括以下步骤:步骤S1、收集带有注释文档的代码方法,提取代码摘要;从源代码中提取抽象语法树AST,并将其转换为序列信息;将代码转换为token序列;步骤S2、构建基于孪生网络架构的检索器模型及检索器训练数据集,将每一个代码方法与其对应摘要构成代码
‑
摘要对,将摘要最为相似的两对代码
‑
摘要对视为相似样本,对于一个代码
‑
摘要对,选取相似样本作为其正样本,随机抽取一个样本为负样本,以代码token序列为输入,使用对比学习策略对检索器进行训练;步骤S3、将待生成摘要的代码与候选代码的token序列输入到训练好的检索器,检索相似度分数最高的代码为相似代码,提取对应摘要作为相似摘要;步骤S4、将代码token序列、AST序列和检索而来的相似摘要token序列拼接后作为生成器模型的输入,输出相应的代码摘要。2.根据权利要求1所述的基于多模态的代码摘要生成方法,其特征在于,所述步骤S2中对于一个代码
‑
摘要对,选取摘要BM25分数最高的代码
‑
摘要对作为其相似样本;其中,BM25分数的计算方式如下:其中Q表示一个摘要,q
i
表示摘要中的一个单词,d表示一个搜索结果摘要;W
i
表示一个词q
i
与候选摘要d的相关性权重;R(q
i
,d)代表一个词q
i
与候选摘要d的相关性得分。3.根据权利要求1所述的基于多模态的代码摘要生成方法,其特征在于,所述步骤S2中检索器模型构造方式如下:检索器模型包括两个基于Transformer的编码器,分别是E
x
和E
y
,分别将源代码token序列x和候选代码token序列y映射到嵌入向量e
x
和e
y
:e
x
=E
x
(x)=MaxPool(Trans
x
(x))e
y
=E
y
(y)=MaxPool(Trans
y
(y))其中Trans
x
和Trans
y
是Transformer编码器,编码器之间共享参数,MaxPool表示最大池层;相似度分数计算为:检索具有最高sim(x,y)分数的候选代码,取其摘要作为相似摘要。4.根据权利要求3所述的基于多模态的代码摘要生成方法,其特征在于,所述步骤S2中使用对比学习策略对检索器进行训练,样本x
i
的训练目标损失函数为:其中x
i
和是一对正样本,x
i
和是一对负样本,N是批大小;τ是温度参数。5.根据权利要求1所述的基于多模态的代码摘要生成方法,其特征在于,所述步骤S4中生成器采用Transformer模型,输入端的代码多模态表征形式为:将代码的token序列,AST序列与代码的相似摘要序列拼接成一个完整...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。