CN109101235B - 一种软件程序的智能解析方法 - Google Patents

一种软件程序的智能解析方法 Download PDF

Info

Publication number
CN109101235B
CN109101235B CN201810568286.1A CN201810568286A CN109101235B CN 109101235 B CN109101235 B CN 109101235B CN 201810568286 A CN201810568286 A CN 201810568286A CN 109101235 B CN109101235 B CN 109101235B
Authority
CN
China
Prior art keywords
vector
state
ast
nodes
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810568286.1A
Other languages
English (en)
Other versions
CN109101235A (zh
Inventor
王旭
孙海龙
张建
刘旭东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN201810568286.1A priority Critical patent/CN109101235B/zh
Publication of CN109101235A publication Critical patent/CN109101235A/zh
Priority to PCT/CN2019/072463 priority patent/WO2019233112A1/zh
Priority to US17/059,320 priority patent/US11256487B2/en
Application granted granted Critical
Publication of CN109101235B publication Critical patent/CN109101235B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提出一种软件程序的智能解析方法,所述智能解析方法为基于AST的序列化神经网络,所述基于AST的序列化神经网络是一种层次化的向量表示方法,其实现步骤为,步骤1‑1:在最底层,将原始程序转化成AST之后进一步分割得到对应的代码块序列,所述代码块之间是有次序之分的,且与原始的语句顺序相吻合;步骤1‑2:每个代码块由一种递归式的编码器来将这种子树编码成向量e1,e2,...,et;步骤1‑3:将得到的向量序列经过双向循环层以提取代码块之间的依赖特征;步骤1‑4:所有的时间步的多维特征经过池化层采样得到最终的单个向量表示形式。

Description

一种软件程序的智能解析方法
技术领域
本发明涉及一种解析方法,尤其涉及一种软件程序的智能解析方法。
背景技术
程序理解(Program Comprehension)在许多软件工程的应用中起到至关重 要的作用。一方面能够帮助开发者提高开发效率和代码质量,另一方面也有助 于软件维护。典型的应用包括代码分类,代码克隆检测,缺陷预测以及代码摘 要生成等。其中,实现程序理解很重要同时也是较为困难的一部分是如何建立 有效的程序表示方法以尽可能地捕捉程序本身蕴含的语义,比如某程序的功能。
虽然我们可以以人工的方式去设计或提取程序的特征来实现诸多相关的应 用,这种方法的缺点在于需要耗费大量的劳动力且得出的特征往往局限于特定 的任务。因此现有技术往往直接采用传统的信息检索中的一些方法来提取程序 中的特征。比如,将程序看作词的集合或者序列来实现代码的克隆检测。此外, 主题模型如潜在语义分析(LatentSemantic Indexing,LSI)或隐含狄利克雷 分布(Latent Dirichlet Allocation,LDA)也被广泛应用于程序分析与处理。 然而这些应用的共同问题是把代码当做自然语言进而套用自然语言处理 (Natural Language Processing,NLP)中的方法。实际上,代码中包含丰富 的结构信息,而上述的方法并不能捕捉到这种信息。
最新的技术使用解析工具将程序代码转换成抽象语法树(Abstract SyntaxTree,AST)来结构化地表示程序。在此基础上,结合神经网路的方法来自动的 获取程序的向量表示,用于不同的任务和场景。比如,在得到某个程序的AST 之后,可以直接利用递归神经网络(Recursive Neural Network)对整个语法 树进行自底向上的递归式的编码,进而得到最终的语义向量。类似地,现有的 研究也结合了基于树的卷积神经网络(Convolutional Neural Network,CNN) 或者长短时记忆网络(Long Short Term Memory,LSTM)来增强结构信息的表 示能力。但是这些方法仍然存在三个主要问题:
1.仅依赖于树结构的神经网络容易导致梯度消失的问题;
2.自底向上或使用滑动窗口遍历整个AST的方法容易丢失原始的程序 中所包含的代码块之间的依赖信息;
3.现有的基于树的方法大多将原始的AST转换成二叉树的形式,这破坏 了原始的结构信息,并且会导致树的深度大大增加而进一步带来捕捉依赖的困 难。
发明内容
针对现有技术存在的问题,本发明提出了一种软件程序的智能解析方法。 所述智能解析方法为基于AST的序列化神经网络。首先,对于获取到的AST, 将其分割成一系列的代码块也就是子树并保持原始的语句顺序,而不是对整个 树结构进行编码计算。每个代码块为池化层为根的子树。其次,在得到这种代 码块序列之后,利用循环神经网络(Recurrent Neural Network,RNN)来捕捉 这种上下文依赖关系。最后,对于子树的计算使用批量计算算法来避免破坏原 始的结构信息。经过端到端的训练,学习到的向量可以更好地解决不同的软件 分析任务。
附图说明
图1为本发明基于AST的序列化神经网络的整体架构图。
图2为本发明中节点迭代更新示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅 仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实 施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示为本发明基于AST的序列化神经网络的整体架构,本发明的神 经网络结构是一种层次化的向量表示方法。该方法的步骤如下:
步骤1:在最底层,将原始程序转化成AST之后进一步分割得到对应的 代码块序列。这些代码块之间是有次序之分的,且与原始的语句顺序相吻合;
步骤2:每个代码块由一种递归式的编码器来将这种子树编码成向量 e1,e2,...,et,t为正整数;
步骤3:上述得到的向量序列经过双向循环层以提取代码块之间的依赖 特征;
步骤4:所有的时间步的多维特征经过池化层采样得到最终的单个向量 表示形式,来表达该程序的语义信息。
在将程序转化成AST之后,我们首先以前序遍历的方式得到此树的标识符 序列,并利用现有的词嵌入技术(如Word2Vec)将每个标识符转化成向量的形 式,以便于上层的编码。接下来将原始的AST分割成代码块序列。该方法包括 两个部分:遍历器(Traverser)与构造器(Constructor)。
在该方法中,遍历器用于深度优先地遍历原始的AST,而构造器则遵循规 则构造代码块的子树。具体步骤为,输入某个程序的AST的根节点,当遍历器 访问到的某个元素为复合语句的头部如函数定义或者控制语句等,调用构造器 将此头部语句的不包含嵌套的复合语句元素的子树形式构造出来。如果当前访 问的元素是复合语句,则对于其中的所有的单个语句递归地调用遍历器或者构 造子树。最终,所有的构造出来的子树被存入到了一个全局的有序集合中,也 就是所说的代码块序列。
上述得到的每个代码块是一种多叉树的形式,树的每个节点是一个标识符。 对于给定的代码块t,n表示其中的非终结点,C表示其子节点的集合,则具体 的编码步骤为:
步骤1:根据公式vn=Wexn得到该节点的词向量,其中We是经过词向量训 练方法Word2vec得到的预训练的权重,xn是该节点的one-hot向量表示形式。
步骤2:对节点n的向量表示与其子节点的向量表示组合计算,
Figure BDA0001685092340000041
其中,Wn是权重矩阵,bn是偏置项,hi是子节点的向量表示,σ是激活函 数,如tanh函数或者恒等函数。
步骤3:经过递归计算,每个节点都有了其向量表示。对于代码块中的N 个节点,利用池化对其进行特征采样,以得到该代码块的向量表示et。其计算 方式为:
et=[max(hi1),...,max(hik)],i∈[1,N],这里k表示向量的k个元素,i为 N个节点的索引。
一般来说,由于每个代码块是多叉树的形式,其结构是多变的,因此难以 进行批量计算。为了提高计算效率,本发明设计了一种动态的批量计算方法。 该方法的具体实现如下所描述。在此方法中,批量计算L个代码块,并且以深 度优先的方式从每个代码块的根节点开始计算。首先,对于当前的所有节点, 利用矩阵相乘的方式根据步骤1批量计算其所有的词向量,然后检查每个节点 是否有子节点并且按照节点所属的索引进行迭代更新。更新的方式图2所示, 当前批处理的节点为灰色节点,在检查其子节点之后,将子节点分成新的多批 节点并记录其索引,以此进行迭代批量计算。这样递归地批量计算其子节点的 向量后,按照步骤2中的公式进行向量的隐藏状态更新。所有的以向量表示的 节点被置入一个全局的张量中。最后对该张量进行池化,得到每个代码块的最 终向量表示。
在循环层中,使用双向门控循环单元(Gated Recurrent Unit,GRU)来表征 代码块之间的依赖信息。假设一个序列中有T个代码块,其表达形式为 [e1,...,et],t∈[1,T]。在t时刻,其隐藏状态的向量计算方式为:
rt=σ(Wret+Urht-1+br)
zt=σ(Wzet+Uzht-1+bz)
Figure BDA0001685092340000052
Figure BDA0001685092340000053
其中,rt表示重置门,用于控制前一个状态对当前状态的影响;zt表示更新门, 用于将历史状态与当前状态结合;
Figure BDA0001685092340000054
是候选状态,用于与历史状态以及当前更 新的状态进行线性组合计算,以决定最终的当前状态ht。这里所有的W和U 是权重矩阵,b是对应的偏置项。σ是sigmoid激活函数。在进行迭代计算之后,
Figure BDA0001685092340000061
Figure BDA0001685092340000062
Figure BDA0001685092340000063
前向的依赖信息便自动获取到。除此之外,使用了反向的GRU,其计算公式与 前向的GRU一致。不同点在于,计算顺序与之相反,也就是其起始位置为最 后一个代码块的向量,结束位置为第一个代码块的向量。并且将这两个方向计 算得到的隐藏状态连接到一起组成某时刻的状态。此过程用公式表述如下:
最终,再用最大池化或平均池化来对每一时刻的隐藏状态进行采样,得到 整个程序的向量表示r。
本方案中提出的软件程序向量表示方法可用于不同任务的训练与预测,如 代码分类任务以及代码克隆检测。
对于代码分类,假设有M个类别,首先根据
Figure BDA0001685092340000064
得到与M个类别的映 射,这里Wo为权重矩阵。于是损失函数可定义为交叉熵:
Figure BDA0001685092340000065
这里Θ表示模型中所有的待优化的权重参数,y表示真实的类别,i表示样 本的索引编号,j表示类别编号。
对于代码克隆检测,用r1和r2分别代表两个程序的向量,则可以用|r1-r2| 来度量其向量之间的相似度,然后利用上述同样的方式得到
Figure BDA0001685092340000066
Figure BDA0001685092340000067
于是损失函数定义为:
Figure BDA0001685092340000068
训练上述模型即优化其损失函数,使之最小化。我们利用现有的优化器如AdaMax。
在得到训练后的模型之后,便可用于不同任务的预测。对于代码分类, 其预测值p为对应于多个标签的概率。取最大概率对应的类别即可,如
Figure BDA0001685092340000071
同样地,对于代码克隆检测,p是在[0,1]范围内的实数。根据阈值便可以 判断结果,即若p大于δ,则认为是克隆,否则认为不是克隆。一般地,δ取值 为0.5。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限 制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员 应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中 部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本 质脱离本发明各实施例技术方案的精神和范围。

Claims (4)

1.一种软件程序的智能解析方法,所述智能解析方法为基于AST的序列化神经网络,所述基于AST的序列化神经网络是一种层次化的向量表示方法,其实现步骤为,步骤1-1:在最底层,将原始程序转化成AST之后进一步分割得到对应的代码块序列,所述代码块之间是有次序之分的,且与原始的语句顺序相吻合;步骤1-2:每个代码块由一种递归式的编码器来将子树编码成向量
Figure DEST_PATH_IMAGE001
,所述t是向量长度为正整数;步骤1-3:将得到的向量序列经过双向循环层以提取代码块之间的依赖特征;步骤1-4:所有的时间步的多维特征经过池化层采样得到最终的单个向量表示形式;
所述所有的时间步的多维特征经过池化层采样得到最终的单个向量的方法为,序列中代码块的表达形式为
Figure 169951DEST_PATH_IMAGE002
,所述T为一个序列中代码块的数量,t为正整数,在t时刻,序列中代码块隐藏状态的向量计算方式为:
Figure 502975DEST_PATH_IMAGE004
Figure 552839DEST_PATH_IMAGE006
Figure 606508DEST_PATH_IMAGE008
Figure 58218DEST_PATH_IMAGE010
其中,
Figure DEST_PATH_IMAGE011
表示重置门,用于控制前一个状态对当前状态的影响;
Figure 171930DEST_PATH_IMAGE012
表示更新门,用于将历史状态与当前状态结合;
Figure DEST_PATH_IMAGE013
是候选状态,用于与历史状态以及当前更新的状态进行线性组合计算,以决定最终的当前状态
Figure 804031DEST_PATH_IMAGE014
,所述
Figure DEST_PATH_IMAGE015
Figure 582762DEST_PATH_IMAGE016
Figure DEST_PATH_IMAGE017
Figure 792375DEST_PATH_IMAGE018
Figure DEST_PATH_IMAGE019
是权重矩阵,所述
Figure 326256DEST_PATH_IMAGE020
Figure DEST_PATH_IMAGE021
Figure 180073DEST_PATH_IMAGE022
是偏置项,
Figure DEST_PATH_IMAGE023
是sigmoid激活函数,
Figure 762496DEST_PATH_IMAGE024
是t-1时刻的状态,
Figure DEST_PATH_IMAGE025
是最终的当前状态,
Figure 392060DEST_PATH_IMAGE026
为当前更新的状态;在进行迭代计算之后,前向的依赖信息便自动获取到,除此之外,使用了反向的GRU,并且将这两个方向计算得到的隐藏状态连接到一起组成t时刻的状态,所述用于与历史状态以及当前更新的状态进行线性组合计算,以决定t时刻状态的过程用公式表述如下:
Figure DEST_PATH_IMAGE027
最终,再用最大池化或平均池化来对每一时刻的隐藏状态进行采样,得到整个程序的向量表示r。
2.如权利要求1所述的方法,其特征在于,在将程序转化成AST之后,首先以前序遍历的方式得到树的标识符序列,并利用现有的词嵌入技术将每个标识符转化成向量的形式,然后将原始的AST分割成代码块序列;所述 AST分割成代码块序列的方法为,输入某个程序的AST的根节点,当遍历器访问到的某个元素为复合语句的头部,所述头部包括函数定义,控制语句;调用构造器将此头部语句的不包含嵌套的复合语句元素的子树形式构造出来;如果当前访问的元素是复合语句,则对于其中的所有的单个语句递归地调用遍历器或者构造子树;最终,所有的构造出来的子树被存入到了一个全局的有序集合中,即为所述的代码块序列。
3.如权利要求2所述的方法,其特征在于,所述代码块的编码方法为, 对于给定的代码块t,n表示其中的非终节点,C表示其子节点的集合,具体的编码步骤为:
步骤3-1:根据公式
Figure 926203DEST_PATH_IMAGE028
得到所述非终节点的词向量,其中
Figure DEST_PATH_IMAGE029
是经过词向量训练方法得到的预训练的权重,
Figure 110060DEST_PATH_IMAGE030
是该节点的one-hot向量表示形式;
步骤3-2:对节点n的向量表示与其子节点的向量表示组合计算,
Figure DEST_PATH_IMAGE031
其中,
Figure 496173DEST_PATH_IMAGE032
是权重矩阵,
Figure DEST_PATH_IMAGE033
是偏置项,
Figure 465397DEST_PATH_IMAGE034
是子节点的向量表示,
Figure DEST_PATH_IMAGE035
是激活函数;
步骤3-3:经过递归计算,每个节点都有了其向量表示,对于代码块中的N个节点,利用池化对其进行特征采样,以得到该代码块的向量表示
Figure 735886DEST_PATH_IMAGE036
,所述特征采样的计算方式为:
Figure DEST_PATH_IMAGE037
所述k表示向量的k个元素,i为N个节点的索引。
4.如权利要求2所述的方法,其特征在于,包括一种对代码块的批量计算方法批量计算多个代码块,以深度优先的方式从每个代码块的根节点开始计算,首先,对于所有节点,利用矩阵相乘的方式根据步骤3-1批量计算所有节点的所有的词向量,然后检查每个节点是否有子节点并且按照节点所属的索引进行迭代更新,递归地批量计算其子节点的向量后,按照步骤3-2中的公式进行向量的隐藏状态更新,将所有的以向量表示的节点置入一个全局的张量中,最后对该张量进行池化,得到每个代码块的最终向量表示。
CN201810568286.1A 2018-06-05 2018-06-05 一种软件程序的智能解析方法 Active CN109101235B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201810568286.1A CN109101235B (zh) 2018-06-05 2018-06-05 一种软件程序的智能解析方法
PCT/CN2019/072463 WO2019233112A1 (zh) 2018-06-05 2019-01-21 一种软件源代码的向量化表征方法
US17/059,320 US11256487B2 (en) 2018-06-05 2019-01-21 Vectorized representation method of software source code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810568286.1A CN109101235B (zh) 2018-06-05 2018-06-05 一种软件程序的智能解析方法

Publications (2)

Publication Number Publication Date
CN109101235A CN109101235A (zh) 2018-12-28
CN109101235B true CN109101235B (zh) 2021-03-19

Family

ID=64796678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810568286.1A Active CN109101235B (zh) 2018-06-05 2018-06-05 一种软件程序的智能解析方法

Country Status (3)

Country Link
US (1) US11256487B2 (zh)
CN (1) CN109101235B (zh)
WO (1) WO2019233112A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109101235B (zh) 2018-06-05 2021-03-19 北京航空航天大学 一种软件程序的智能解析方法
SG11202107620QA (en) * 2019-01-17 2021-08-30 Visa Int Service Ass A deep learning model for learning program embeddings
CN109977205B (zh) * 2019-03-08 2021-06-22 中南大学 一种计算机自主学习源代码的方法
CN110737466B (zh) * 2019-10-16 2021-04-02 南京航空航天大学 基于静态程序分析的源代码编码序列表示方法
CN110851176B (zh) * 2019-10-22 2023-07-04 天津大学 一种自动构造并利用伪克隆语料的克隆代码检测方法
US11514171B2 (en) * 2019-10-29 2022-11-29 Dell Products L.P. Code vulnerability detection and remediation
CN111625276B (zh) * 2020-05-09 2023-04-21 山东师范大学 基于语义与语法信息融合的代码摘要生成方法及系统
WO2021227059A1 (zh) * 2020-05-15 2021-11-18 深圳市世强元件网络有限公司 一种基于多叉树的搜索词推荐方法及系统
US11301218B2 (en) * 2020-07-29 2022-04-12 Bank Of America Corporation Graph-based vectorization for software code optimization references
CN112162775A (zh) * 2020-10-21 2021-01-01 南通大学 一种基于Transformer和混合代码表示的Java代码注释自动生成方法
CN112100387B (zh) * 2020-11-13 2021-02-19 支付宝(杭州)信息技术有限公司 用于文本分类的神经网络系统的训练方法及装置
CN112433756B (zh) * 2020-11-24 2021-09-07 北京京航计算通讯研究所 基于加权递归自编码器的快速代码克隆检测方法及装置
CN112698831B (zh) * 2020-12-25 2022-08-09 昆明理工大学 一种代码自动生成质量评估方法
US11928009B2 (en) * 2021-08-06 2024-03-12 International Business Machines Corporation Predicting a root cause of an alert using a recurrent neural network
CN113656066B (zh) * 2021-08-16 2022-08-05 南京航空航天大学 一种基于特征对齐的克隆代码检测方法
CN113553041B (zh) * 2021-09-22 2021-12-10 武汉江民网安科技有限公司 二进制程序中函数代码形式化结构生成方法、设备及介质
KR20230147908A (ko) * 2022-04-15 2023-10-24 삼성전자주식회사 오픈 소스 라이선스를 검증하는 전자 장치 및 방법
CN115268994B (zh) * 2022-07-26 2023-06-09 中国海洋大学 一种基于tbcnn和多头自注意力机制的代码特征提取方法
CN115983719B (zh) * 2023-03-16 2023-07-21 中国船舶集团有限公司第七一九研究所 一种软件综合质量评价模型的训练方法及系统
CN116661805B (zh) * 2023-07-31 2023-11-14 腾讯科技(深圳)有限公司 代码表示的生成方法和装置、存储介质及电子设备
CN117573096B (zh) * 2024-01-17 2024-04-09 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种融合抽象语法树结构信息的智能代码补全方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107220180A (zh) * 2017-06-08 2017-09-29 电子科技大学 一种基于神经网络语言模型的代码分类方法
CN107516041A (zh) * 2017-08-17 2017-12-26 北京安普诺信息技术有限公司 基于深度神经网络的WebShell检测方法及其系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007139840A2 (en) * 2006-05-24 2007-12-06 Syver, Llc Method and tool for automatic verification of software protocols
TWI390443B (zh) * 2009-08-04 2013-03-21 Univ Nat Taiwan Science Tech 使用在可擴展性標示語言之串流路徑查詢機制系統與方法
US9146957B2 (en) * 2012-12-20 2015-09-29 Business Objects Software Ltd. Method and system for generating optimal membership-check queries
US8984485B2 (en) 2013-05-01 2015-03-17 International Business Machines Corporation Analysis of source code changes
EP3314541A1 (en) * 2015-06-26 2018-05-02 Sentiance NV Deriving movement behaviour from sensor data
US20170212829A1 (en) * 2016-01-21 2017-07-27 American Software Safety Reliability Company Deep Learning Source Code Analyzer and Repairer
WO2017134665A1 (en) * 2016-02-03 2017-08-10 Cocycles System for organizing, functionality indexing and constructing of a source code search engine and method thereof
US10922604B2 (en) * 2016-09-09 2021-02-16 Cylance Inc. Training a machine learning model for analysis of instruction sequences
WO2018184102A1 (en) * 2017-04-03 2018-10-11 Royal Bank Of Canada Systems and methods for malicious code detection
CN107169358B (zh) 2017-05-24 2019-10-08 中国人民解放军信息工程大学 基于代码指纹的代码同源性检测方法及其装置
US10581888B1 (en) * 2017-07-31 2020-03-03 EMC IP Holding Company LLC Classifying software scripts utilizing deep learning networks
CN109101235B (zh) 2018-06-05 2021-03-19 北京航空航天大学 一种软件程序的智能解析方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107220180A (zh) * 2017-06-08 2017-09-29 电子科技大学 一种基于神经网络语言模型的代码分类方法
CN107516041A (zh) * 2017-08-17 2017-12-26 北京安普诺信息技术有限公司 基于深度神经网络的WebShell检测方法及其系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Language-Independent Information Flow Tracking Engine for Program Comprehension Tools;Mohammad Reza Azadmanesh等;《2017 IEEE 25th International Conference on Program Comprehension》;20171231;全文 *
基于静态分析的高精度程序日志解析技术;范惊 等;《计算机工程》;20131031;第39卷(第10期);全文 *

Also Published As

Publication number Publication date
US20210232376A1 (en) 2021-07-29
WO2019233112A1 (zh) 2019-12-12
CN109101235A (zh) 2018-12-28
US11256487B2 (en) 2022-02-22

Similar Documents

Publication Publication Date Title
CN109101235B (zh) 一种软件程序的智能解析方法
Yang et al. Learn to explain efficiently via neural logic inductive learning
CN114398491A (zh) 一种基于知识图谱的语义分割图像实体关系推理方法
Zhou A review of text classification based on deep learning
CN113342318B (zh) 基于多视图代码特征的细粒度代码自动生成方法及系统
CN109447261B (zh) 一种基于多阶邻近相似度的网络表示学习的方法
CN109840322A (zh) 一种基于强化学习的完形填空型阅读理解分析模型及方法
CN112000770B (zh) 面向智能问答的基于语义特征图的句子对语义匹配方法
CN107220180A (zh) 一种基于神经网络语言模型的代码分类方法
CN113761893B (zh) 一种基于模式预训练的关系抽取方法
CN106844327B (zh) 文本编码方法及系统
CN112306494A (zh) 一种基于卷积和循环神经网络的代码分类及聚类方法
CN106776729B (zh) 一种大规模知识图谱路径查询预测器构造方法
CN114218389A (zh) 一种基于图神经网络的化工制备领域长文本分类方法
CN116661805B (zh) 代码表示的生成方法和装置、存储介质及电子设备
CN112749191A (zh) 一种应用于数据库的智能代价估计方法、系统及电子设备
CN112860904A (zh) 一种融入外部知识的生物医疗关系抽取方法
CN114327483A (zh) 图张量神经网络模型建立方法及源代码语义识别方法
CN117349311A (zh) 一种基于改进RetNet的数据库自然语言查询方法
CN114510576A (zh) 一种基于BERT和BiGRU融合注意力机制的实体关系抽取方法
CN117171354A (zh) 用于回答医疗知识图谱复杂查询的递归路径查询编码方法
CN114997360B (zh) 神经架构搜索算法的演化参数优化方法、系统及存储介质
CN115618929A (zh) Ast处理方法、神经网络模型训练方法、装置和存储介质
CN112905599A (zh) 基于端到端的分布式深度哈希检索方法
CN111666772A (zh) 一种基于深度图神经网络的关键词抽取方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant