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

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

Info

Publication number
CN109101235A
CN109101235A CN201810568286.1A CN201810568286A CN109101235A CN 109101235 A CN109101235 A CN 109101235A CN 201810568286 A CN201810568286 A CN 201810568286A CN 109101235 A CN109101235 A CN 109101235A
Authority
CN
China
Prior art keywords
vector
code block
node
ast
sequence
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.)
Granted
Application number
CN201810568286.1A
Other languages
English (en)
Other versions
CN109101235B (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 US17/059,320 priority patent/US11256487B2/en
Priority to PCT/CN2019/072463 priority patent/WO2019233112A1/zh
Application granted granted Critical
Publication of CN109101235B publication Critical patent/CN109101235B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/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
    • 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的向量表示与其子节点的向量表示组合计算,
其中,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)
其中,rt表示重置门,用于控制前一个状态对当前状态的影响;zt表示更新门, 用于将历史状态与当前状态结合;是候选状态,用于与历史状态以及当前更 新的状态进行线性组合计算,以决定最终的当前状态ht。这里所有的W和U 是权重矩阵,b是对应的偏置项。σ是sigmoid激活函数。在进行迭代计算之后,
前向的依赖信息便自动获取到。除此之外,使用了反向的GRU,其计算公式与 前向的GRU一致。不同点在于,计算顺序与之相反,也就是其起始位置为最 后一个代码块的向量,结束位置为第一个代码块的向量。并且将这两个方向计 算得到的隐藏状态连接到一起组成某时刻的状态。此过程用公式表述如下:
最终,再用最大池化或平均池化来对每一时刻的隐藏状态进行采样,得到 整个程序的向量表示r。
本方案中提出的软件程序向量表示方法可用于不同任务的训练与预测,如 代码分类任务以及代码克隆检测。
对于代码分类,假设有M个类别,首先根据得到与M个类别的映 射,这里Wo为权重矩阵。于是损失函数可定义为交叉熵:
这里Θ表示模型中所有的待优化的权重参数,y表示真实的类别,i表示样 本的索引编号,j表示类别编号。
对于代码克隆检测,用r1和r2分别代表两个程序的向量,则可以用|r1-r2| 来度量其向量之间的相似度,然后利用上述同样的方式得到于是损失函数定义为:
训练上述模型即优化其损失函数,使之最小化。我们利用现有的优化器如AdaMax。
在得到训练后的模型之后,便可用于不同任务的预测。对于代码分类, 其预测值p为对应于多个标签的概率。取最大概率对应的类别即可,如
同样地,对于代码克隆检测,p是在[0,1]范围内的实数。根据阈值便可以 判断结果,即若p大于δ,则认为是克隆,否则认为不是克隆。一般地,δ取值 为0.5。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限 制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员 应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中 部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本 质脱离本发明各实施例技术方案的精神和范围。

Claims (5)

1.一种软件程序的智能解析方法,所述智能解析方法为基于AST的序列化神经网络,所述基于AST的序列化神经网络是一种层次化的向量表示方法,其实现步骤为,步骤1-1:在最底层,将原始程序转化成AST之后进一步分割得到对应的代码块序列,所述代码块之间是有次序之分的,且与原始的语句顺序相吻合;步骤1-2:每个代码块由一种递归式的编码器来将这种子树编码成向量e1,e2,...,et;步骤1-3:将得到的向量序列经过双向循环层以提取代码块之间的依赖特征;步骤1-4:所有的时间步的多维特征经过池化层采样得到最终的单个向量表示形式。
2.如权利要求1所述的方法,其特征在于,在将程序转化成AST之后,首先以前序遍历的方式得到此树的标识符序列,并利用现有的词嵌入技术将每个标识符转化成向量的形式,然后将原始的AST分割成代码块序列;所述AST分割成代码块序列的方法为,输入某个程序的AST的根节点,当遍历器访问到的某个元素为复合语句的头部,所述头部包括如函数定义,控制语句,调用构造器将此头部语句的不包含嵌套的复合语句元素的子树形式构造出来;如果当前访问的元素是复合语句,则对于其中的所有的单个语句递归地调用遍历器或者构造子树;最终,所有的构造出来的子树被存入到了一个全局的有序集合中,即为所述的代码块序列。
3.如权利要求2所述的方法,其特征在于,所述代码块的编码方法为,对于给定的代码块t,n表示其中的非终结点,C表示其子节点的集合,具体的编码步骤为:
步骤3-1:根据公式vn=Wexn得到该节点的词向量,其中We是经过词向量训练方法得到的预训练的权重,xn是该节点的one-hot向量表示形式;
步骤3-2:对节点n的向量表示与其子节点的向量表示组合计算,
其中,Wn是权重矩阵,bn是偏置项,hi是子节点的向量表示,σ是激活函数;
步骤3-3:经过递归计算,每个节点都有了其向量表示,对于代码块中的N个节点,利用池化对其进行特征采样,以得到该代码块的向量表示et,所述特征采样的计算方式为:
et=[max(hi1),...,max(hik)],i∈[1,N],所述k表示向量的k个元素,i为N个节点的索引。
4.如权利要求2所述的方法,其特征在于,包括一种对代码块的批量计算方法批量计算多个代码块,以深度优先的方式从每个代码块的根节点开始计算,首先,对于所有节点,利用矩阵相乘的方式根据步骤3-1批量计算其所有的词向量,然后检查每个节点是否有子节点并且按照节点所属的索引进行迭代更新,递归地批量计算其子节点的向量后,按照步骤3-2中的公式进行向量的隐藏状态更新,将所有的以向量表示的节点置入一个全局的张量中,最后对该张量进行池化,得到每个代码块的最终向量表示。
5.如权利要求2所述的方法,其特征在于,所述提取代码块之间的依赖特征的方法为,其表达形式为[e1,...,et],t∈[1,T],所述T为一个序列中代码块的数量,t为正整数,在t时刻,其隐藏状态的向量计算方式为:
rt=σ(Wret+Urht-1+br)
zt=σ(Wzet+Uzht-1+bz)
其中,rt表示重置门,用于控制前一个状态对当前状态的影响;zt表示更新门,用于将历史状态与当前状态结合;是候选状态,用于与历史状态以及当前更新的状态进行线性组合计算,以决定最终的当前状态ht。所述W和U是权重矩阵,b是对应的偏置项,σ是sigmoid激活函数;在进行迭代计算之后,前向的依赖信息便自动获取到,除此之外,使用了反向的GRU,并且将这两个方向计算得到的隐藏状态连接到一起组成某时刻的状态。此过程用公式表述如下:
最终,再用最大池化或平均池化来对每一时刻的隐藏状态进行采样,得到整个程序的向量表示r。
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 一种软件程序的智能解析方法
US17/059,320 US11256487B2 (en) 2018-06-05 2019-01-21 Vectorized representation method of software source code
PCT/CN2019/072463 WO2019233112A1 (zh) 2018-06-05 2019-01-21 一种软件源代码的向量化表征方法

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 true CN109101235A (zh) 2018-12-28
CN109101235B 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)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109977205A (zh) * 2019-03-08 2019-07-05 中南大学 一种计算机自主学习源代码的方法
WO2019233112A1 (zh) * 2018-06-05 2019-12-12 北京航空航天大学 一种软件源代码的向量化表征方法
CN110737466A (zh) * 2019-10-16 2020-01-31 南京航空航天大学 基于静态程序分析的源代码编码序列表示方法
CN110851176A (zh) * 2019-10-22 2020-02-28 天津大学 一种自动构造并利用伪克隆语料的克隆代码检测方法
CN112100387A (zh) * 2020-11-13 2020-12-18 支付宝(杭州)信息技术有限公司 用于文本分类的神经网络系统的训练方法及装置
CN112162775A (zh) * 2020-10-21 2021-01-01 南通大学 一种基于Transformer和混合代码表示的Java代码注释自动生成方法
CN112433756A (zh) * 2020-11-24 2021-03-02 北京京航计算通讯研究所 基于加权递归自编码器的快速代码克隆检测方法及装置
CN112698831A (zh) * 2020-12-25 2021-04-23 昆明理工大学 一种代码自动生成质量评估方法
CN113553041A (zh) * 2021-09-22 2021-10-26 武汉江民网安科技有限公司 二进制程序中函数代码形式化结构生成方法、设备及介质
CN113656066A (zh) * 2021-08-16 2021-11-16 南京航空航天大学 一种基于特征对齐的克隆代码检测方法
CN117573096A (zh) * 2024-01-17 2024-02-20 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种融合抽象语法树结构信息的智能代码补全方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020149897A1 (en) * 2019-01-17 2020-07-23 Visa International Service Association A deep learning model for learning program embeddings
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
US11928009B2 (en) * 2021-08-06 2024-03-12 International Business Machines Corporation Predicting a root cause of an alert using a recurrent neural network
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 腾讯科技(深圳)有限公司 代码表示的生成方法和装置、存储介质及电子设备

Citations (3)

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

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
WO2016206765A1 (en) * 2015-06-26 2016-12-29 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
CA3058010A1 (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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070277163A1 (en) * 2006-05-24 2007-11-29 Syver, Llc Method and tool for automatic verification of software protocols
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
MOHAMMAD REZA AZADMANESH等: "Language-Independent Information Flow Tracking Engine for Program Comprehension Tools", 《2017 IEEE 25TH INTERNATIONAL CONFERENCE ON PROGRAM COMPREHENSION》 *
范惊 等: "基于静态分析的高精度程序日志解析技术", 《计算机工程》 *

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019233112A1 (zh) * 2018-06-05 2019-12-12 北京航空航天大学 一种软件源代码的向量化表征方法
US11256487B2 (en) 2018-06-05 2022-02-22 Beihang University Vectorized representation method of software source code
CN109977205A (zh) * 2019-03-08 2019-07-05 中南大学 一种计算机自主学习源代码的方法
CN109977205B (zh) * 2019-03-08 2021-06-22 中南大学 一种计算机自主学习源代码的方法
CN110737466A (zh) * 2019-10-16 2020-01-31 南京航空航天大学 基于静态程序分析的源代码编码序列表示方法
CN110737466B (zh) * 2019-10-16 2021-04-02 南京航空航天大学 基于静态程序分析的源代码编码序列表示方法
CN110851176A (zh) * 2019-10-22 2020-02-28 天津大学 一种自动构造并利用伪克隆语料的克隆代码检测方法
CN110851176B (zh) * 2019-10-22 2023-07-04 天津大学 一种自动构造并利用伪克隆语料的克隆代码检测方法
CN112162775A (zh) * 2020-10-21 2021-01-01 南通大学 一种基于Transformer和混合代码表示的Java代码注释自动生成方法
CN112100387A (zh) * 2020-11-13 2020-12-18 支付宝(杭州)信息技术有限公司 用于文本分类的神经网络系统的训练方法及装置
CN112433756B (zh) * 2020-11-24 2021-09-07 北京京航计算通讯研究所 基于加权递归自编码器的快速代码克隆检测方法及装置
CN112433756A (zh) * 2020-11-24 2021-03-02 北京京航计算通讯研究所 基于加权递归自编码器的快速代码克隆检测方法及装置
CN112698831A (zh) * 2020-12-25 2021-04-23 昆明理工大学 一种代码自动生成质量评估方法
CN112698831B (zh) * 2020-12-25 2022-08-09 昆明理工大学 一种代码自动生成质量评估方法
CN113656066A (zh) * 2021-08-16 2021-11-16 南京航空航天大学 一种基于特征对齐的克隆代码检测方法
CN113656066B (zh) * 2021-08-16 2022-08-05 南京航空航天大学 一种基于特征对齐的克隆代码检测方法
CN113553041A (zh) * 2021-09-22 2021-10-26 武汉江民网安科技有限公司 二进制程序中函数代码形式化结构生成方法、设备及介质
CN113553041B (zh) * 2021-09-22 2021-12-10 武汉江民网安科技有限公司 二进制程序中函数代码形式化结构生成方法、设备及介质
CN117573096A (zh) * 2024-01-17 2024-02-20 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种融合抽象语法树结构信息的智能代码补全方法
CN117573096B (zh) * 2024-01-17 2024-04-09 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种融合抽象语法树结构信息的智能代码补全方法

Also Published As

Publication number Publication date
CN109101235B (zh) 2021-03-19
US20210232376A1 (en) 2021-07-29
US11256487B2 (en) 2022-02-22
WO2019233112A1 (zh) 2019-12-12

Similar Documents

Publication Publication Date Title
CN109101235A (zh) 一种软件程序的智能解析方法
CN108073711B (zh) 一种基于知识图谱的关系抽取方法和系统
CN114169330B (zh) 融合时序卷积与Transformer编码器的中文命名实体识别方法
CN110673840B (zh) 一种基于标签图嵌入技术的自动代码生成方法及系统
CN109522411A (zh) 一种基于神经网络的写作辅助方法
CN108491372B (zh) 一种基于seq2seq模型的中文分词方法
CN110418210A (zh) 一种基于双向循环神经网络和深度输出的视频描述生成方法
CN110969020A (zh) 基于cnn和注意力机制的中文命名实体识别方法、系统及介质
CN112487807A (zh) 一种基于膨胀门卷积神经网络的文本关系抽取方法
CN101751385B (zh) 一种采用层次管道过滤器体系结构的多语言信息抽取方法
CN108665506A (zh) 图像处理方法、装置、计算机存储介质及服务器
CN106844327B (zh) 文本编码方法及系统
CN106909537B (zh) 一种基于主题模型和向量空间的一词多义分析方法
CN113761893B (zh) 一种基于模式预训练的关系抽取方法
CN112000770B (zh) 面向智能问答的基于语义特征图的句子对语义匹配方法
CN111625276B (zh) 基于语义与语法信息融合的代码摘要生成方法及系统
CN111400494B (zh) 一种基于GCN-Attention的情感分析方法
CN109299479A (zh) 通过门控机制将翻译记忆融入神经机器翻译的方法
CN114443827A (zh) 基于预训练语言模型的局部信息感知对话方法及系统
Zhou A review of text classification based on deep learning
CN116661805B (zh) 代码表示的生成方法和装置、存储介质及电子设备
CN111881256B (zh) 文本实体关系抽取方法、装置及计算机可读存储介质设备
CN116524593A (zh) 一种动态手势识别方法、系统、设备及介质
CN115543437A (zh) 一种代码注释生成方法和系统
CN114969269A (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