CN112381280B - 一种基于人工智能的算法预测方法 - Google Patents

一种基于人工智能的算法预测方法 Download PDF

Info

Publication number
CN112381280B
CN112381280B CN202011231861.2A CN202011231861A CN112381280B CN 112381280 B CN112381280 B CN 112381280B CN 202011231861 A CN202011231861 A CN 202011231861A CN 112381280 B CN112381280 B CN 112381280B
Authority
CN
China
Prior art keywords
distance
syntax tree
abstract syntax
path
code
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
CN202011231861.2A
Other languages
English (en)
Other versions
CN112381280A (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 CN202011231861.2A priority Critical patent/CN112381280B/zh
Publication of CN112381280A publication Critical patent/CN112381280A/zh
Application granted granted Critical
Publication of CN112381280B publication Critical patent/CN112381280B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Development Economics (AREA)
  • Biophysics (AREA)
  • Game Theory and Decision Science (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种基于人工智能的算法预测方法,包括:将待预测代码转化为距离抽象语法树;抽取距离抽象语法树中的距离抽象语法树路径;将距离抽象语法树路径转换为元组,对元组元素进行编码,合成token的向量表示;根据距离抽象语法树路径之间的相关性,整合其他路径信息到每一条路径上,获得具有长距离依赖的距离抽象语法树路径向量;构建神经网络模型,根据具有长距离依赖的距离抽象语法树路径预测代码名含义。本发明提供的基于人工智能的算法预测方法,可以有效地克服高信息熵代码的信息丢失问题,从而提高代码名含义预测的准确率,缓解命名不一致以及描述性差的问题,提高编程者的工作效率。

Description

一种基于人工智能的算法预测方法
技术领域
本发明涉及一种预测方法,具体涉及一种基于人工智能的算法预测方法,属于计算机技术领域。
背景技术
对于编程者来说,代码命名是一件非常重要的工作。一个描述性强的函数名可以使得其他人在理解或维护这段代码时非常容易。然而,由于不同的命名习惯,编程者对同一段代码往往会有不同的命名方式,这会使得代码的维护以及理解效率十分低下,甚至引发软件的缺陷。比如常用的FindBugs分析器,由命名不一致引起的漏洞多达十种。
代码的命名通常是基于其功能来进行的,如果机器可以理解代码的功能并根据功能完成命名的工作,即对所有代码应用同一套命名规则,则可以很好得解决代码命名不一致的问题,因此,在计算机语言领域,通过机器对代码进行名预测是一个很有意义的任务。
目前,代码名的预测方法主要为三类:序列化、路径化和图化。对于序列化的方法,代码首先将被转化为一段序列,随后被送入到在自然语言处理任务中有着良好表现的工具中,即将程序语言当作自然语言来处理;对于路径化的方法,代码首先被转化为AST(Abstract Syntax Tree,抽象语法树)的形式,随后提取AST中的AST路径以表示这段代码,并进行预测;对于图化的方法,在代码转化为AST后,模仿图像处理任务重的卷积方式,对AST进行卷积,并进行预测。然而,这三类方法中,如果待测程序信息熵较高,即含有的token(将程序的语句进行分词后得到的单词)较多,将导致信息丢失,从而导致代码名预测的准确率降低。
由于上述原因,本发明人对现有的代码名的预测方法进行了锐意研究,提出了一种通过寻找长距离依赖解决信息熵代码的信息丢失问题的算法预测方法,以提高代码名预测的准确率,缓解命名不一致以及描述性差的问题,从而提高编程者的工作效率。
发明内容
为了克服上述问题,本发明人进行了锐意研究,设计出一种基于人工智能的算法预测方法,该方法通过构建神经网络模型寻找长距离依赖,从大量样本中自动学习预测代码名,可以有效地克服高信息熵代码的信息丢失问题,从而提高代码名含义预测的准确率,缓解命名不一致以及描述性差的问题,提高编程者的工作效率。
具体来说,本发明采用如下技术方案:一种基于人工智能的算法预测方法,通过构建神经网络模型对代码名含义进行预测。
该方法包括以下步骤:
S1、将待预测代码转化为距离抽象语法树;
S2、抽取距离抽象语法树中的距离抽象语法树路径;
S3、将距离抽象语法树路径转换为元组,对元组元素进行编码,合成token的向量表示;
S4、根据距离抽象语法树路径之间的相关性,整合其他路径信息到每一条路径上,获得具有长距离依赖的距离抽象语法树路径向量;
S5、构建神经网络模型,根据具有长距离依赖的距离抽象语法树路径预测代码名含义。
在步骤S1中,所述距离抽象语法树以树状的形式表现了编程语言的语法结构,树上的每个节点都表示源代码中的一种结构,一段代码的DAST可以表示为(N,T,X,d,s,δ,φ)的集合,其中N为非叶节点的集合,T为叶节点的集合,X为各个节点的实际值,d为任意两叶节点之间距离的集合,s为根节点,δ与φ为父节点与子节点;
通过Python中的javalang包对java程序进行AST的解析,在解析后遍历AST以获得任意两叶节点之间的距离信息,从而得到DAST中的两叶节点之间距离的集合d。
在步骤S2中,对于一条距离抽象语法树路径,以start(p)来表示起始节点n1,以end(p)来表示终止节点nk+1,以p来表示序列中除去n1,d1,dk,nk+1的部分。
在步骤S3中,所述元组为能够进行运算的元组,所述元组的形式为<xs,p,xt>,其中,xs=φ(start(p)),xt=φ(end(p)),
φ表示算符,其计算过程可包括以下步骤:
S31、将构成token的全部基础字符ci编码为独热向量,其中,ci为大小写英文字母、数字以及下划线等字符的集合,将编码后的基础字符向量记为emb(ci);
S32、根据token中的基础字符以及每个基础字符出现的位置,按照如下方式计算每个基础字符向量的系数:
Figure BDA0002765480550000031
Figure BDA0002765480550000032
其中,Integer表示整数,i代表基础字符在token中的位置,t为token的长度,α为常数;
S33、合成每个token的向量表示并对其进行编码,完成对元组元素的编码,其中,合成及编码可通过下式表示:
Figure BDA0002765480550000041
emb(token)即为token的向量表示。
在步骤S4中,所述整合过程为将距离抽象语法树路径的集合
Figure BDA0002765480550000042
作为输入,将具有长距离依赖的距离抽象语法树路径向量z作为每条路径的输出,其中,xh表示不同的距离抽象语法树路径,Np是距离抽象语法树路径的数量。
在一个优选的实施方式中,步骤S4包括以下子步骤:
S41、获得所有距离抽象语法树路径之间的相关系数Cor,具体地,通过下式获得:
Figure BDA0002765480550000043
其中,Wk表示线性变换;
j表示不同的距离抽象语法树路径编号;
L表示该距离抽象语法树路径的长度,L=len(p)=k-1;
S42、根据相关性整合其他路径信息到每一条路径上,获得具有长距离依赖的距离抽象语法树路径向量:
Figure BDA0002765480550000044
j∈[1,Np]且j≠h
其中,Wv为线性变换。
优选地,Wk和Wv在计算过程中采用1×1的卷积核实现。
在步骤S5中,构建神经网络模型,将所有具有长距离依赖的距离抽象语法树路径向量作为神经网络模型的输入,将所有具有长距离依赖的距离抽象语法树路径向量沿第一维相加,经过线性变换及非线性变换后通过Softmax()函数得到距离抽象语法树特征向量,选取输出向量中最大值所对应的索引为最终的预测结果,输出预测的代码名。
进一步地,所述线性变换及非线性变换由神经网络模型中的两层全连接层以及tanh()函数实现,神经网络模型中全连接层的输入神经元数为280,隐藏输出层神经元数为512,输出层神经元数为所有可能答案的个数。
本发明所具有的有益效果包括:
(1)根据本发明所述的基于人工智能的算法预测方法,极大提高机器预测代码名的准确度,尤其是熵较高的待测程序信息代码名含义的预测准确度;
(2)根据本发明所述的基于人工智能的算法预测方法,可以有效地克服高信息熵代码的信息丢失问题;
(3)根据本发明所述的基于人工智能的算法预测方法,有效缓解了代码命名不一致的问题,提高编程者的工作效率。
附图说明
图1示出根据本发明一种优选实施方式的基于人工智能的算法预测方法示意图;
图2示出根据本发明一种优选实施方式的抽取距离抽象语法树中的距离抽象语法树路径流程示意图;
图3示出根据本发明一种优选实施方式的对元组元素的编码流程示意图;
图4示出根据本发明一种优选实施方式的获得具有长距离依赖的距离抽象语法树路径向量流程示意图。
具体实施方式
下面通过附图和实施例对本发明进一步详细说明。通过这些说明,本发明的特点和优点将变得更为清楚明确。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
根据本发明提供的一种基于人工智能的算法预测方法,如图1所示,包括以下步骤:
S1、将待预测代码转化为距离抽象语法树;
S2、抽取距离抽象语法树中的距离抽象语法树路径;
S3、将距离抽象语法树路径转换为元组,对元组元素进行编码,合成token的向量表示;
S4、根据距离抽象语法树路径之间的相关性,整合其他路径信息到每一条路径上,获得具有长距离依赖的距离抽象语法树路径向量;
S5、构建神经网络模型,根据具有长距离依赖的距离抽象语法树路径预测代码名含义。
在步骤S1中,所述距离抽象语法树可以简称为DAST(Distance Abstract SyntaxTree),是源代码语法结构的一种抽象表示,是在AST语法树的基础上在端节点之间增加距离信息,成为一种具有节点间距离信息的抽象语法树。
所述距离抽象语法树以树状的形式表现了编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。具体地,一段代码的DAST可以表示为(N,T,X,d,s,δ,φ)的集合,其中N为非叶节点的集合,T为叶节点的集合,X为各个节点的实际值,d为任意两叶节点之间距离的集合,s为根节点,δ与φ为父节点与子节点,进一步地,δ为N→(N∪T)*的映射,表示某一节点与其子节点的对应关系,φ为T→X的映射,表示每个节点和其对应值的对应关系。
在一个优选的实施方式中,通过Python中的javalang包对java程序进行AST的解析,在解析后遍历AST以获得任意两叶节点之间的距离信息,从而得到DAST中的两叶节点之间距离的集合d,进而获得DAST。
相较于传统的将代码转换为AST形式,DAST能够获取两叶节点之间的距离,从而找到这些信息间的长距离依赖,获得综合考量的代码语义表示,从而提高预测的准确率。
在步骤S2中,每一条距离抽象语法树路径是一个长度为2k+1的序列n1,d1,n2,d2,…,nk,dk,nk+1,其中,n1和nk+1是距离抽象语法树中的两个叶节点,分别为该路径在T集合中的对应的两个节点;ni为非叶节点,i∈[2,k],表示该路径在N集合中所有对应的节点;di代表着路径的运动方向,di∈{↑,↓},i∈[1,k],如果di是↑,则ni是ni+1的子节点,如果di是↓,则ni+1是ni的子节点。
进一步地,对于一条距离抽象语法树路径,以start(p)来表示起始节点n1,以end(p)来表示终止节点nk+1,以p来表示序列中除去n1,d1,dk,nk+1的部分。则一条距离抽象语法树路径起始于一个叶节点,终止于另一个叶节点,并途经一系列非叶节点,例如,“y=8”这条语句所对应的DAST路径如图2所示,其路径可以表示为以下序列:
start(p),↑,p,↓,end(p);由于start(p)之后路径的运动方向必然为↑,end(p)前的路径必然为↓,则路径可以简化为以下序列:start(p),p,end(p)。
在步骤S3中,所述元组为能够进行运算的元组。
优选地,所述元组的形式为<xs,p,xt>,其中,xs=φ(start(p)),xt=φ(end(p)),其中,φ与DAST集合中相同,表示每个节点和其对应值的对应关系。
在一个优选的实施方式中,对于路径元组中p的编码,采用PyTorch框架下Embedding函数将其编码为128维向量。
进一步地,对于φ的计算方式,由于起始节点和终止节点的token均由基本字符构成,将所有基本字符ci以独热向量的形式进行编码得到emb(ci),随后根据字符及其出现位置来合成token的向量表示,具体包括以下步骤:
S31、将构成token的全部基础字符ci编码为独热向量,其中,ci为大小写英文字母、数字以及下划线等字符的集合,将编码后的基础字符向量记为emb(ci)。
S32、根据token中的基础字符以及每个基础字符出现的位置,按照如下方式计算每个基础字符向量的系数:
Figure BDA0002765480550000081
Figure BDA0002765480550000082
其中,Integer表示整数,i代表基础字符在token中的位置,t为token的长度,α为常数,优选为10000。
S33、合成每个token的向量表示并对其进行编码,完成对元组元素的编码,在本发明中,合成及编码可通过下式表示:
Figure BDA0002765480550000083
emb(token)即为token的向量表示,在本发明中,任何token均可以由一个76维的向量进行表示。
例如,token为“ArrayList”时,其基础字符ci分别为A、r、r、a、y、L、i、s、t,按字符独热向量(One-hot)编码,如图3所示,token的长度t=9,则第一个基础字符c1的系数为
Figure BDA0002765480550000091
第二个基础字符c2的系数为
Figure BDA0002765480550000092
将系数与emb(ci)相乘后求和,即可得到“ArrayList”的向量表示。
在步骤S4中,将距离抽象语法树路径的集合
Figure BDA0002765480550000093
作为输入,将具有长距离依赖的距离抽象语法树路径向量z作为每条路径的输出,其中,xh表示不同的距离抽象语法树路径,Np是距离抽象语法树路径的数量,如图4所示,具体地,包括以下子步骤:
S41、获得所有距离抽象语法树路径之间的相关系数Cor,具体地,通过下式获得:
Figure BDA0002765480550000094
其中,Wk表示线性变换,优选地,在计算过程中采用1×1的卷积核实现;
j表示不同的距离抽象语法树路径编号;
L表示该距离抽象语法树路径的长度,L=len(p)=k-1,
优选地,式中
Figure BDA0002765480550000095
采用PyTorch框架下的Softmax函数实现。
S42、根据相关性整合其他路径信息到每一条路径上,获得具有长距离依赖的距离抽象语法树路径向量:
Figure BDA0002765480550000096
j∈[1,Np]且j≠h
其中,Wv为线性变换,优选地,在计算过程中采用1×1的卷积核实现。
在步骤S5中,构建神经网络模型,将所有具有长距离依赖的距离抽象语法树路径向量作为神经网络模型的输入,输出预测的代码名。
具体地,将所有具有长距离依赖的距离抽象语法树路径向量沿第一维相加,经过线性变换及非线性变换后通过Softmax()函数得到距离抽象语法树特征向量,选取输出向量中最大值所对应的索引为最终的预测结果。
在一个优选的实施方式中,所述线性变换及非线性变换由神经网络模型中的两层全连接层以及tanh()函数实现,神经网络模型中全连接层的输入神经元数为280,隐藏输出层神经元数为512,输出层神经元数为所有可能答案的个数。
在一个优选的实施方式中,利用java14m数据集对所述神经网络模型进行训练。
java14m数据集中的数据来源于10,072个GitHub中的项目,共计包含12,636,998个训练样本,371,362个验证样本以及368,445个测试样本,并且其中克隆的代码已被剔除,因此具有较强的专业性及严谨性。
在一个优选的实施方式中,训练过程中使用Adams优化器,并设定初始学习率为0.01,在对整个数据集训练10次后得到训练完成的深度学习模型,在训练过程使用PyTorch框架。发明人经过大量实验以及经验,确定的上述参数,训练后的神经网络模型具有较好的预测结果准确度。
实施例
实施例1
对一段代码中的代码名进行预测。
在预测过程中,先将待预测的代码转化为距离抽象语法树的形式,表示为(N,T,X,d,s,δ,φ)的集合,集合中,两叶节点之间距离的集合d为通过Python中的javalang包对java程序进行AST的解析,在解析后遍历AST以获得任意两叶节点之间的距离信息获得。
在获得距离抽象语法树后,在其中抽取所有的距离抽象语法树路径,对于一条距离抽象语法树路径,以start(p)来表示起始节点n1,以end(p)来表示终止节点nk+1,以p来表示序列中除去n1,d1,dk,nk+1的部分,将路径可以表示为以下序列形式:start(p),p,end(p),其中p的编码为采用PyTorch框架下Embedding函数将其编码为128维向量。
将获得的序列转换为<xs,p,xt>形式的元组,其中xs=φ(start(p)),xt=φ(end(p)),φ的计算过程为:
将构成token的全部基础字符ci编码为独热向量,其中,ci为大小写英文字母、数字以及下划线等字符的集合,将编码后的基础字符向量记为emb(ci);
根据token中的基础字符以及每个基础字符出现的位置,按照如下方式计算每个基础字符向量的系数:
Figure BDA0002765480550000111
Figure BDA0002765480550000112
其中α为10000;
可通过下式合成每个token的向量表示并对其进行编码,完成对元组元素的编码:
Figure BDA0002765480550000113
通过下式获得所有距离抽象语法树路径之间的相关系数Cor:
Figure BDA0002765480550000121
其中,Wk表示线性变换,在计算过程中采用1×1的卷积核实现;
Figure BDA0002765480550000122
其中,Wk表示线性变换,在计算过程中采用1×1的卷积核实现。
构建神经网络模型,将所有具有长距离依赖的距离抽象语法树路径向量作为神经网络模型的输入,将所有具有长距离依赖的距离抽象语法树路径向量沿第一维相加,经过线性变换及非线性变换后通过Softmax()函数得到距离抽象语法树特征向量,选取输出向量中最大值所对应的索引为最终的预测结果,输出预测的代码名,其中,线性变换及非线性变换由神经网络模型中的两层全连接层以及tanh()函数实现,神经网络模型中全连接层的输入神经元数为280,隐藏输出层神经元数为512,输出层神经元数为所有可能答案的个数。
利用java14m数据集对所述神经网络模型进行训练,训练过程中使用Adams优化器,并设定初始学习率为0.01,在对整个数据集训练10次后得到训练完成的深度学习模型,在训练过程使用PyTorch框架。
通过训练完成的深度学习模型输出该段代码名的预测结果。
对比例1
采用Alon U,Zilberstein M,Levy O,et al.code2vec:learning distributedrepresentations of code[J].Proceedings of the ACM on Programming Languages,2019,3(POPL):1-29.中的记载的序列化法对与实施例1中相同的代码中的代码名进行预测。
实验例1
对比实施例1中预测结果和对比例1中的预测结果,如表一所示。
表一
Figure BDA0002765480550000131
通过表一可知,实施例1中无论是预测召回率、精确度还是F1分数均较高,也就是说,实施例1中的预测方式,可有效缓解程序中代码命名不一致的问题,提高编程者的工作效率。
在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”、“前”、“后”等指示的方位或位置关系为基于本发明工作状态下的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”、“第四”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”“相连”“连接”应作广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体的连接普通;可以是机械连接,也可以是电连接;可以是直接连接,也可以通过中间媒介间接连接,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
以上结合了优选的实施方式对本发明进行了说明,不过这些实施方式仅是范例性的,仅起到说明性的作用。在此基础上,可以对本发明进行多种替换和改进,这些均落入本发明的保护范围内。

Claims (8)

1.一种基于人工智能的算法预测方法,其特征在于,通过构建神经网络模型对代码名含义进行预测,所述代码名基于代码功能命名,使得编程者能够理解代码功能;
该方法包括以下步骤:
S1、将待预测代码转化为距离抽象语法树;
S2、抽取距离抽象语法树中的距离抽象语法树路径;
S3、将距离抽象语法树路径转换为元组,对元组元素进行编码,合成token的向量表示;
S4、根据距离抽象语法树路径之间的相关性,整合其他路径信息到每一条路径上,获得具有长距离依赖的距离抽象语法树路径向量;
S5、构建神经网络模型,根据具有长距离依赖的距离抽象语法树路径预测代码名含义;
在步骤S1中,所述距离抽象语法树以树状的形式表现了编程语言的语法结构,树上的每个节点都表示源代码中的一种结构,一段代码的DAST可以表示为
Figure DEST_PATH_IMAGE001
的集合,其中
Figure DEST_PATH_IMAGE002
为非叶节点的集合,
Figure 239407DEST_PATH_IMAGE003
为叶节点的集合,
Figure DEST_PATH_IMAGE004
为各个节点的实际值,
Figure 422126DEST_PATH_IMAGE005
为任意两叶节点之间距离的集合,
Figure DEST_PATH_IMAGE006
为根节点,
Figure 356191DEST_PATH_IMAGE007
为父节点与子节点;
通过Python中的javalang包对java程序进行AST的解析,在解析后遍历AST以获得任意两叶节点之间的距离信息,从而得到DAST中的两叶节点之间距离的集合
Figure 485821DEST_PATH_IMAGE005
2.根据权利要求1所述的基于人工智能的算法预测方法,其特征在于,
在步骤S2中,对于一条距离抽象语法树路径,以
Figure DEST_PATH_IMAGE008
来表示起始节点
Figure 690406DEST_PATH_IMAGE009
,以
Figure DEST_PATH_IMAGE010
来表示终止节点
Figure 575186DEST_PATH_IMAGE011
,以
Figure DEST_PATH_IMAGE012
来表示序列中除去
Figure 671580DEST_PATH_IMAGE013
的部分。
3.根据权利要求1所述的基于人工智能的算法预测方法,其特征在于,
在步骤S3中,所述元组为能够进行运算的元组,所述元组的形式为,
Figure DEST_PATH_IMAGE014
,其中,
Figure DEST_PATH_IMAGE015
Figure DEST_PATH_IMAGE016
表示算符,其计算过程可包括以下步骤:
S31、将构成token的全部基础字符
Figure DEST_PATH_IMAGE017
编码为独热向量,其中,
Figure 791852DEST_PATH_IMAGE017
为大小写英文字母、数字以及下划线等字符的集合,将编码后的基础字符向量记为
Figure DEST_PATH_IMAGE018
S32、根据token中的基础字符以及每个基础字符出现的位置,按照如下方式计算每个基础字符向量的系数:
Figure 293021DEST_PATH_IMAGE019
Figure DEST_PATH_IMAGE020
其中,
Figure 348702DEST_PATH_IMAGE021
表示整数,
Figure DEST_PATH_IMAGE022
代表基础字符在token中的位置,
Figure 165348DEST_PATH_IMAGE023
为token的长度,
Figure DEST_PATH_IMAGE024
为常数;
S33、合成每个token的向量表示并对其进行编码,完成对元组元素的编码,其中,合成及编码可通过下式表示:
Figure 964677DEST_PATH_IMAGE025
Figure DEST_PATH_IMAGE026
即为token的向量表示。
4.根据权利要求1所述的基于人工智能的算法预测方法,其特征在于,
在步骤S4中,整合过程为将距离抽象语法树路径的集合
Figure 51844DEST_PATH_IMAGE027
作为输入,将具有长距离依赖的距离抽象语法树路径向量
Figure DEST_PATH_IMAGE028
作为每条路径的输出,其中,
Figure 747267DEST_PATH_IMAGE029
表示不同的距离抽象语法树路径,
Figure DEST_PATH_IMAGE030
是距离抽象语法树路径的数量。
5.根据权利要求4所述的基于人工智能的算法预测方法,其特征在于,
步骤S4包括以下子步骤:
S41、获得所有距离抽象语法树路径之间的相关系数
Figure 51210DEST_PATH_IMAGE031
,具体地,通过下式获得:
Figure DEST_PATH_IMAGE032
Figure 480660DEST_PATH_IMAGE033
其中,
Figure DEST_PATH_IMAGE034
表示线性变换;
Figure 186448DEST_PATH_IMAGE035
表示不同的距离抽象语法树路径编号;
Figure DEST_PATH_IMAGE036
表示该距离抽象语法树路径的长度,
Figure 583932DEST_PATH_IMAGE037
S42、根据相关性整合其他路径信息到每一条路径上,获得具有长距离依赖的距离抽象语法树路径向量:
Figure DEST_PATH_IMAGE038
,
Figure 375170DEST_PATH_IMAGE039
其中,
Figure DEST_PATH_IMAGE040
为线性变换。
6.根据权利要求5所述的基于人工智能的算法预测方法,其特征在于,
Figure 17766DEST_PATH_IMAGE034
Figure 984585DEST_PATH_IMAGE041
在计算过程中采用
Figure DEST_PATH_IMAGE042
的卷积核实现。
7.根据权利要求4所述的基于人工智能的算法预测方法,其特征在于,
在步骤S5中,构建神经网络模型,将所有具有长距离依赖的距离抽象语法树路径向量作为神经网络模型的输入,将所有具有长距离依赖的距离抽象语法树路径向量沿第一维相加,经过线性变换及非线性变换后通过Softmax()函数得到距离抽象语法树特征向量,选取输出向量中最大值所对应的索引为最终的预测结果,输出预测的代码名。
8.根据权利要求7所述的基于人工智能的算法预测方法,其特征在于,
所述线性变换及非线性变换由神经网络模型中的两层全连接层以及tanh()函数实现,神经网络模型中全连接层的输入神经元数为280,隐藏输出层神经元数为512,输出层神经元数为所有可能答案的个数。
CN202011231861.2A 2020-11-06 2020-11-06 一种基于人工智能的算法预测方法 Active CN112381280B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011231861.2A CN112381280B (zh) 2020-11-06 2020-11-06 一种基于人工智能的算法预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011231861.2A CN112381280B (zh) 2020-11-06 2020-11-06 一种基于人工智能的算法预测方法

Publications (2)

Publication Number Publication Date
CN112381280A CN112381280A (zh) 2021-02-19
CN112381280B true CN112381280B (zh) 2023-01-24

Family

ID=74578033

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011231861.2A Active CN112381280B (zh) 2020-11-06 2020-11-06 一种基于人工智能的算法预测方法

Country Status (1)

Country Link
CN (1) CN112381280B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114722780A (zh) * 2022-04-13 2022-07-08 北京无忧创想信息技术有限公司 一种试题难度预测模型的实现装置及方法
CN116302089B (zh) * 2023-05-23 2023-08-18 华中科技大学 基于图片相似度的代码克隆检测方法、系统及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109214191A (zh) * 2018-09-18 2019-01-15 北京理工大学 一种利用深度学习预测软件安全漏洞的方法
CN110018820A (zh) * 2019-04-08 2019-07-16 浙江大学滨海产业技术研究院 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法
CN110597735A (zh) * 2019-09-25 2019-12-20 北京航空航天大学 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法
CN111090461A (zh) * 2019-11-18 2020-05-01 中山大学 一种基于机器翻译模型的代码注释生成方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11334467B2 (en) * 2019-05-03 2022-05-17 International Business Machines Corporation Representing source code in vector space to detect errors

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109214191A (zh) * 2018-09-18 2019-01-15 北京理工大学 一种利用深度学习预测软件安全漏洞的方法
CN110018820A (zh) * 2019-04-08 2019-07-16 浙江大学滨海产业技术研究院 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法
CN110597735A (zh) * 2019-09-25 2019-12-20 北京航空航天大学 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法
CN111090461A (zh) * 2019-11-18 2020-05-01 中山大学 一种基于机器翻译模型的代码注释生成方法

Also Published As

Publication number Publication date
CN112381280A (zh) 2021-02-19

Similar Documents

Publication Publication Date Title
CN109189925B (zh) 基于点互信息的词向量模型和基于cnn的文本分类方法
CN111090461B (zh) 一种基于机器翻译模型的代码注释生成方法
JP4325877B2 (ja) 行列の高速高精度特異値分解方法、プログラムおよび装置
CN112381280B (zh) 一种基于人工智能的算法预测方法
CN114091450B (zh) 一种基于图卷积网络的司法领域关系抽取方法和系统
CN112926337B (zh) 一种结合重构句法信息的端到端方面级情感分析方法
CN115033890A (zh) 一种基于对比学习的源代码漏洞检测方法及系统
CN112183104B (zh) 编码推荐方法、系统及相应设备和存储介质
CN113190219A (zh) 一种基于递归神经网络模型的代码注释生成方法
CN113065322B (zh) 一种代码段注释生成方法、系统及可读存储介质
Eremeev On proportions of fit individuals in population of mutation-based evolutionary algorithm with tournament selection
CN114913938B (zh) 一种基于药效团模型的小分子生成方法、设备及介质
CN116661852A (zh) 一种基于程序依赖图的代码搜索方法
CN114065769B (zh) 情感原因对抽取模型的训练方法、装置、设备及介质
CN116701582A (zh) 一种智能问答方法及存储介质
CN111831624A (zh) 数据表创建方法、装置、计算机设备及存储介质
CN117573096A (zh) 一种融合抽象语法树结构信息的智能代码补全方法
CN116881471B (zh) 一种基于知识图谱的大语言模型微调方法及装置
CN112698831A (zh) 一种代码自动生成质量评估方法
CN111259176B (zh) 融合有监督信息的基于矩阵分解的跨模态哈希检索方法
CN113177107A (zh) 一种基于句法树匹配的智能合约相似性检测方法
CN111695574A (zh) 可生成依存树的图像描述生成方法和装置
CN116187437A (zh) 一种基于对比学习的数学应用题求解系统及方法
CN114328924A (zh) 一种基于预训练模型结合句法子树的关系分类方法
Groschwitz et al. Efficient techniques for parsing with tree automata

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