Page 292 - 《软件学报》2024年第6期
P. 292

2868                                                       软件学报  2024  年第  35  卷第  6  期


                  2.1.2    文本图的构建
                    自然语言特定的顺序使得人们可以应用序列编码模型学习其语义, 但它们内部的结构信息也十分重要. 本文
                 基于选区解析树      [17] 和词序特征来构建文本图, 与代码片段基于抽象语法树构建代码图有着类似的思想, 它们的表
                 示都是高度分层的, 最后一层终端节点都是有意义的代码令牌或句子单词, 并且有明确的边类型关系, 相似的图结
                 构表示使得模型更容易捕捉文本与代码片段的匹配关系.

                    选区解析根据上下文无关文法创建句法表示的树. 具体来说, 自然语言的上下文无关文法由四元组                                (V,Σ,R,S )
                                                                                  V → (V ∪Σ)∗ , 将非终端节点
                 表示.    V  是非终端节点的集合,    Σ 是与  V  不相交的一组终端节点.       R 是一组文法规则
                 映射到子节点, 子节点来自于无穷集合            (V ∪Σ)∗ S  是开始变量, 用来表示整个句子. 另外, 为了表达文本的完整语
                                                      .
                 义, 图构建时我们还考虑了文本的词序信息. 具体做法是将句子中的词                      (即选区树中的终端节点) 链接起来, 这样
                 可以捕捉到句子前向和后向的上下文信息. 对于实现欧几里得算法的代码片段, 其注释文本为“Implements the Euclidean
                 algorithm”, 相应的文本图构造结果如图      5  所示.

                                                   S
                                                                          选区标志
                                                 定义图中每个节点
                                                                          单词标记
                                                   VP
                                                                          选区的边
                                                             NP           词序的边

                                          Implements   the    Euclidean  algorithm
                                                     图 5 文本图的示例

                  2.2   图嵌入模块
                    图卷积网络    [18] 由于其对非欧几里得数据强大的建模能力受到了研究人员的大量关注. 关系图卷积网络                        (RGCN) [19]
                 是图卷积网络     (GCN) 在多关系型数据建模中的应用, 特别是在链接预测和实体分类任务中展现了良好的效果. 在
                 图卷积网络中, 图中的每个节点         i 在第  l+1 层的隐藏层表示如下:
                                                                   
                                                          ∑  1      
                                                          
                                                                 (l) (l)
                                                    h l+1  = σ    W h                            (2)
                                                     i            j 
                                                                   
                                                              c i
                                                           j∈N i
                 其中,   c i  是归一化常数. RGCN  和  GCN  的主要区别在于, 在     RGCN  中, 边可以表示不同的关系. 在        GCN  中, 公
                 式  (2) 中的权重  W  (l)  由第  l    层中的所有边共享. 相比之下, 在 RGCN  中, 不同的边类型使用不同的权重, 并且只
                 有相同关系类型的边与相同的投影权重                W r (l)  相关联. 因此  RGCN  中第  l+1 层实体的隐藏状态可以表示为公
                 式  (3):
                                                                        
                                                           ∑∑           
                                                                1      
                                                                      (l) (l) 
                                                       (l) (l)
                                               h l+1  = σ  W h +    W h                         (3)
                                                     
                                                i      0  i         r  j  
                                                                  r    
                                                            r∈R j∈N r N
                                                                   i
                                                                i

                       r                              N  是归一化常数. 由于文本图和代码图都是有向图, 而且有多种
                                                        r
                                         i

                 其中,   N  表示  r ∈ R 关系下节点   的邻居索引集,
                       i                                i
                 类型的边关系. 因此采用关系图卷积网络来学习文本图和代码图的节点嵌入是非常合适的. 给定构建的文本图
                 G q = V q ,E q ,R q  , 关系图卷积网络  RGCN           q i ∈ V q  的更新嵌入向量的传播模型如下:
                     (
                            )
                                                                          
                                                            ∑∑    1       
                                                         (l) (l)
                                                                        (l) (l) 
                                                       
                                             q (l+1)  = ReLU   W q +    W q                   (4)
                                              i          Θ  i         r  j 
                                                                    r    
                                                              r∈R q j∈N r N
                                                                     i
                                                                  i
                                                                                      (l)
                 其中,   q (l+1)   表示文本图的节点   q i  在第   (l+1) 层的更新嵌入向量,    R q  表示边类型的集合,    W   和  W  (l)  是  RGCN  模型
                       i                                                              Θ    r
                                                                    (
                                                                            )
                 的可学习参数,     ReLU  表示激活函数. 对于给定构建的代码图           G q = V q ,E q ,R q  , 同样使用上述  RGCN  模型对图中
                                                                          M    (M,d)     G p  的所有节点嵌入
                 的每个节点邻域信息更新传播, 得到了文本图              G q  的所有节点嵌入    H q = {q i }  ∈ R   和代码图
                                                                          i=1
                     { } N
                          ∈ R (N,d)  M  和                               d  代表每个节点的维度.
                 H p = p j j=1   , 其中   N  分别代表文本图和代码图的节点个数,
   287   288   289   290   291   292   293   294   295   296   297