摘要

抽象语法树包含了源码中的全部信息,其树形结构中的层级关系中包含源代码中的结构信息,但如何提取抽象语法树中的结构信息一直是源代码表示学习的关键问题。当前的方法要么破坏了完整抽象语法树中的关键结构信息,要么存在大量递归遍历操作,影响模型的检测效率。针对这些问题,提出了通过自注意力机制关节点之间父子关系和抽象语法树的层级关系的表示方法,在保留抽象语法树结构特征的同时,节省了对于同一层节点的多次计算。实验结果表明,该方法相比于基于树的卷积神经网络(Tree-Based Convolutional Neural Network, TBCNN)在精确率和召回率方面均提高了2.8%;相比于基于树的卷积神经网络(AST-based Neural Network, ASTNN),在F1值上提高了1.3%的同时,模型训练和预测阶段的时间开销只有13.9%。

  • 单位
    信息工程大学