Page 290 - 《软件学报》2024年第6期
P. 290
2866 软件学报 2024 年第 35 卷第 6 期
有更丰富的语义, 弥补了其他基线模型未对文本和代码进行细粒度匹配操作的不足. 图层面的匹配策略用于捕捉
代码和文本的全局关系, 首先基于注意力机制得到代码图和文本图全局上下文感知的图嵌入表示, 然后利用神经
张量网络得到代码图和文本图全局视角的相似性向量, 解决了其他基线模型没有进一步探索文本图和代码图全局
语义信息的关系的问题.
表 1 符合及其含义
符号 含义或描述
代码图
G p
文本图
G q
{ } N (N,d)
H p = p j j=1 ∈ R 代码图的初始节点嵌入表示, 嵌入维度为 d
M (M,d) d
H q = {q i } i=1 ∈ R 文本图的初始节点嵌入表示, 嵌入维度为
多视角匹配函数
f m
{ } N (N, ˜ d) ˜
H p = ˆp j j=1 ∈ R 代码图的更新节点嵌入表示, 嵌入维度为 d
M (M, ˜ d) d ˜
H q = {ˆq i } i=1 ∈ R 文本图的更新节点嵌入表示, 嵌入维度为
h p ∈ R d 代码图全局上下文感知的嵌入表示
h q ∈ R d 文本图全局上下文感知的嵌入表示
NTN ( h p ,h q) ∈ R k 经过神经张量网络得到的相似性向量
• 最后是相似性搜索阶段, 根据基于多视角匹配函数的节点层面的匹配策略和基于神经张量网络的图层面的
匹配策略分别得到的相似度分数, 计算一对代码图和文本图的最终相似度得分. 本文提出的 GraphCS 模型的整体
模型框架如图 2 所示.
FullyConnected-
layer
W [1]
sim 2
V
b
Attention ReLU ··· f m
+
+
W [k]
Average score(p, q)
h p
Query RGCN Neural tensor network
weight sharing q i f m maxpooling
FC-
Code a i , j =cos(q i , p j ) ~ 1 N Cosine sim 1
i
h P = ∑ α i, j p j similarity
RGCN N j
h q
FC-
p j maxpooling
Attention
图 2 模型的整体框架图
2.1 图构建模块
本节详细介绍代码图和文本图是如何构建的. 如图 3 所示是一个 Java 语言编写的代码片段, 其函数功能是实
现欧几里得算法, 计算得到两个整数的最大公约数. 这是一个可用于训练代码搜索任务的范例, 因为它包含了规范
的代码实现和函数功能相应的注释文本.
2.1.1 代码图的构建
Allamanis 等人 [16] 提出的 Program Graph 是表示代码结构语义最流行的一种图构建方法, 基于此方法本文构