← 返回列表

一种基于词级对齐的代码搜索方法及装置

申请号: CN202311723167.6
申请人: 武汉大学
申请日期: 2023/12/15

摘要文本

本发明公开了一种基于词级对齐的代码搜索方法及装置,其中的方法包括如下步骤:输入带描述的代码;使用对齐工具对代码进行词级对齐处理;分别对代码和描述进行单独的嵌入,构建词级信息流图,用词级信息流图提取时序‑结构高度关联的特征;用Transformer分别计算代码和描述的表示向量;预测每个候选代码片段的余弦相似度分数,使用分数对所有候选代码片段进行重新排序,得到检索代码列表。本发明为了提升源代码与AST之间的关联性,使用对齐工具明确建立它们之间的词级别对应关系;基于自注意力机制的图生成网络,用于为每个源代码预测一个词级信息流图,通过阈值化处理去除相关性较低的冗余词。

专利详细信息

项目 内容
专利名称 一种基于词级对齐的代码搜索方法及装置
专利类型 发明授权
申请号 CN202311723167.6
申请日 2023/12/15
公告号 CN117421392B
公开日 2024/3/8
IPC主分类号 G06F16/33
权利人 武汉大学
发明人 蔡波; 刘司芮; 郭伟榕; 罗剑; 于耀翔
地址 湖北省武汉市武昌区珞珈山

专利主权项内容

1.一种基于词级对齐的代码搜索方法,其特征在于,包括:输入带描述的代码;使用对齐工具对代码进行词级对齐处理,建立代码与抽象语法树之间的词级别对应关系;基于代码与抽象语法树之间的词级别对应关系,采用基于自注意力机制的图生成网络对代码进行嵌入,获得代码段的词级信息流图,采用自注意力机制对描述进行嵌入,获得描述的词级信息流图,其中,代码段的词级信息流图用以提取时序与结构关联的特征;分别以代码段的词级信息流图和描述的词级信息流图作为掩码矩阵,利用Transformer编码器计算代码的表示向量和描述的表示向量;根据代码的表示向量与描述的表示向量之间的余弦相似度,得到检索代码列表;其中,使用对齐工具对代码进行词级对齐处理,包括:将输入的代码解析为抽象语法树,以抽象语法树为指导将代码切分为代码序列;将每个代码序列添加到对应的抽象语法树的叶节点上,得到具有对应关系的抽象语法树与代码序列,建立代码与抽象语法树之间的词级别对应关系;基于代码与抽象语法树之间的词级别对应关系,采用基于自注意力机制的图生成网络对代码进行嵌入,获得代码段的词级信息流图,包括:采用图神经网络GNN对抽象语法树进行嵌入得到稠密表示,然后将对应的AST叶节点和代码序列拼接后作为代码段的词级信息流图的节点:其中,表示代码段的词级信息流图的节点向量集合,/>表示第/>个节点向量,/>表示AST中第/>个叶节点向量,/>表示第/>个代码序列向量,/>与/>是一对具有对应关系的叶节点和代码序列;使用自注意力机制构建的相关性矩阵,设定第一阈值/>,将相关性矩阵中不大于/>的位置置零,其余位置置一,得到代码段的词级信息流图的邻接矩阵/>;其中,表示矩阵中第i行第j列的元素,/>表示代码序列长度;>为节点,/>为边,构建代码段的词级信息流图/>,其中/>为代码段的词级信息流图的边的二元组集合。。 (更多数据,详见马克数据网)