一种基于词级对齐的代码搜索方法及装置
摘要文本
本发明公开了一种基于词级对齐的代码搜索方法及装置,其中的方法包括如下步骤:输入带描述的代码;使用对齐工具对代码进行词级对齐处理;分别对代码和描述进行单独的嵌入,构建词级信息流图,用词级信息流图提取时序‑结构高度关联的特征;用Transformer分别计算代码和描述的表示向量;预测每个候选代码片段的余弦相似度分数,使用分数对所有候选代码片段进行重新排序,得到检索代码列表。本发明为了提升源代码与AST之间的关联性,使用对齐工具明确建立它们之间的词级别对应关系;基于自注意力机制的图生成网络,用于为每个源代码预测一个词级信息流图,通过阈值化处理去除相关性较低的冗余词。
申请人信息
- 申请人:武汉大学
- 申请人地址:430072 湖北省武汉市武昌区八一路299号
- 发明人: 武汉大学
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 一种基于词级对齐的代码搜索方法及装置 |
| 专利类型 | 发明授权 |
| 申请号 | CN202311723167.6 |
| 申请日 | 2023/12/15 |
| 公告号 | CN117421392B |
| 公开日 | 2024/3/8 |
| IPC主分类号 | G06F16/33 |
| 权利人 | 武汉大学 |
| 发明人 | 蔡波; 刘司芮; 郭伟榕; 罗剑; 于耀翔 |
| 地址 | 湖北省武汉市武昌区珞珈山 |
专利主权项内容
1.一种基于词级对齐的代码搜索方法,其特征在于,包括:输入带描述的代码;使用对齐工具对代码进行词级对齐处理,建立代码与抽象语法树之间的词级别对应关系;基于代码与抽象语法树之间的词级别对应关系,采用基于自注意力机制的图生成网络对代码进行嵌入,获得代码段的词级信息流图,采用自注意力机制对描述进行嵌入,获得描述的词级信息流图,其中,代码段的词级信息流图用以提取时序与结构关联的特征;分别以代码段的词级信息流图和描述的词级信息流图作为掩码矩阵,利用Transformer编码器计算代码的表示向量和描述的表示向量;根据代码的表示向量与描述的表示向量之间的余弦相似度,得到检索代码列表;其中,使用对齐工具对代码进行词级对齐处理,包括:将输入的代码解析为抽象语法树,以抽象语法树为指导将代码切分为代码序列;将每个代码序列添加到对应的抽象语法树的叶节点上,得到具有对应关系的抽象语法树与代码序列,建立代码与抽象语法树之间的词级别对应关系;基于代码与抽象语法树之间的词级别对应关系,采用基于自注意力机制的图生成网络对代码进行嵌入,获得代码段的词级信息流图,包括:采用图神经网络GNN对抽象语法树进行嵌入得到稠密表示,然后将对应的AST叶节点和代码序列拼接后作为代码段的词级信息流图的节点:其中,表示代码段的词级信息流图的节点向量集合,/>表示第/>个节点向量,/>表示AST中第/>个叶节点向量,/>表示第/>个代码序列向量,/>与/>是一对具有对应关系的叶节点和代码序列;使用自注意力机制构建的相关性矩阵,设定第一阈值/>,将相关性矩阵中不大于/>的位置置零,其余位置置一,得到代码段的词级信息流图的邻接矩阵/>;其中,表示矩阵中第i行第j列的元素,/>表示代码序列长度;>为节点,/>为边,构建代码段的词级信息流图/>,其中/>为代码段的词级信息流图的边的二元组集合。。 (更多数据,详见马克数据网)