CN112381280B - 一种基于人工智能的算法预测方法 - Google Patents
一种基于人工智能的算法预测方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 20
- 239000013598 vector Substances 0.000 claims abstract description 60
- 238000003062 neural network model Methods 0.000 claims abstract description 28
- 230000002194 synthesizing effect Effects 0.000 claims abstract description 10
- 230000009466 transformation Effects 0.000 claims description 24
- 230000006870 function Effects 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 14
- 210000002569 neuron Anatomy 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 7
- 210000002364 input neuron Anatomy 0.000 claims description 4
- 230000015572 biosynthetic process Effects 0.000 claims description 2
- 230000010354 integration Effects 0.000 claims description 2
- 238000003786 synthesis reaction Methods 0.000 claims description 2
- CSJLBAMHHLJAAS-UHFFFAOYSA-N diethylaminosulfur trifluoride Substances CCN(CC)S(F)(F)F CSJLBAMHHLJAAS-UHFFFAOYSA-N 0.000 claims 2
- 238000012549 training Methods 0.000 description 8
- 238000013136 deep learning model Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000052 comparative effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations 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中的基础字符以及每个基础字符出现的位置,按照如下方式计算每个基础字符向量的系数:
其中,Integer表示整数,i代表基础字符在token中的位置,t为token的长度,α为常数;
S33、合成每个token的向量表示并对其进行编码,完成对元组元素的编码,其中,合成及编码可通过下式表示:
emb(token)即为token的向量表示。
在一个优选的实施方式中,步骤S4包括以下子步骤:
S41、获得所有距离抽象语法树路径之间的相关系数Cor,具体地,通过下式获得:
其中,Wk表示线性变换;
j表示不同的距离抽象语法树路径编号;
L表示该距离抽象语法树路径的长度,L=len(p)=k-1;
S42、根据相关性整合其他路径信息到每一条路径上,获得具有长距离依赖的距离抽象语法树路径向量:
其中,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中的基础字符以及每个基础字符出现的位置,按照如下方式计算每个基础字符向量的系数:
其中,Integer表示整数,i代表基础字符在token中的位置,t为token的长度,α为常数,优选为10000。
S33、合成每个token的向量表示并对其进行编码,完成对元组元素的编码,在本发明中,合成及编码可通过下式表示:
emb(token)即为token的向量表示,在本发明中,任何token均可以由一个76维的向量进行表示。
例如,token为“ArrayList”时,其基础字符ci分别为A、r、r、a、y、L、i、s、t,按字符独热向量(One-hot)编码,如图3所示,token的长度t=9,则第一个基础字符c1的系数为第二个基础字符c2的系数为将系数与emb(ci)相乘后求和,即可得到“ArrayList”的向量表示。
在步骤S4中,将距离抽象语法树路径的集合作为输入,将具有长距离依赖的距离抽象语法树路径向量z作为每条路径的输出,其中,xh表示不同的距离抽象语法树路径,Np是距离抽象语法树路径的数量,如图4所示,具体地,包括以下子步骤:
S41、获得所有距离抽象语法树路径之间的相关系数Cor,具体地,通过下式获得:
其中,Wk表示线性变换,优选地,在计算过程中采用1×1的卷积核实现;
j表示不同的距离抽象语法树路径编号;
L表示该距离抽象语法树路径的长度,L=len(p)=k-1,
S42、根据相关性整合其他路径信息到每一条路径上,获得具有长距离依赖的距离抽象语法树路径向量:
其中,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中的基础字符以及每个基础字符出现的位置,按照如下方式计算每个基础字符向量的系数:
其中α为10000;
可通过下式合成每个token的向量表示并对其进行编码,完成对元组元素的编码:
通过下式获得所有距离抽象语法树路径之间的相关系数Cor:
其中,Wk表示线性变换,在计算过程中采用1×1的卷积核实现;
其中,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中的预测结果,如表一所示。
表一
通过表一可知,实施例1中无论是预测召回率、精确度还是F1分数均较高,也就是说,实施例1中的预测方式,可有效缓解程序中代码命名不一致的问题,提高编程者的工作效率。
在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”、“前”、“后”等指示的方位或位置关系为基于本发明工作状态下的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”、“第四”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”“相连”“连接”应作广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体的连接普通;可以是机械连接,也可以是电连接;可以是直接连接,也可以通过中间媒介间接连接,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
以上结合了优选的实施方式对本发明进行了说明,不过这些实施方式仅是范例性的,仅起到说明性的作用。在此基础上,可以对本发明进行多种替换和改进,这些均落入本发明的保护范围内。
Claims (8)
1.一种基于人工智能的算法预测方法,其特征在于,通过构建神经网络模型对代码名含义进行预测,所述代码名基于代码功能命名,使得编程者能够理解代码功能;
该方法包括以下步骤:
S1、将待预测代码转化为距离抽象语法树;
S2、抽取距离抽象语法树中的距离抽象语法树路径;
S3、将距离抽象语法树路径转换为元组,对元组元素进行编码,合成token的向量表示;
S4、根据距离抽象语法树路径之间的相关性,整合其他路径信息到每一条路径上,获得具有长距离依赖的距离抽象语法树路径向量;
S5、构建神经网络模型,根据具有长距离依赖的距离抽象语法树路径预测代码名含义;
在步骤S1中,所述距离抽象语法树以树状的形式表现了编程语言的语法结构,树上的每个节点都表示源代码中的一种结构,一段代码的DAST可以表示为的集合,其中 为非叶节点的集合,为叶节点的集合,为各个节点的实际值,为任意两叶节点之间距离的集合,为根节点,为父节点与子节点;
3.根据权利要求1所述的基于人工智能的算法预测方法,其特征在于,
S32、根据token中的基础字符以及每个基础字符出现的位置,按照如下方式计算每个基础字符向量的系数:
S33、合成每个token的向量表示并对其进行编码,完成对元组元素的编码,其中,合成及编码可通过下式表示:
7.根据权利要求4所述的基于人工智能的算法预测方法,其特征在于,
在步骤S5中,构建神经网络模型,将所有具有长距离依赖的距离抽象语法树路径向量作为神经网络模型的输入,将所有具有长距离依赖的距离抽象语法树路径向量沿第一维相加,经过线性变换及非线性变换后通过Softmax()函数得到距离抽象语法树特征向量,选取输出向量中最大值所对应的索引为最终的预测结果,输出预测的代码名。
8.根据权利要求7所述的基于人工智能的算法预测方法,其特征在于,
所述线性变换及非线性变换由神经网络模型中的两层全连接层以及tanh()函数实现,神经网络模型中全连接层的输入神经元数为280,隐藏输出层神经元数为512,输出层神经元数为所有可能答案的个数。
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)
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)
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)
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 |
-
2020
- 2020-11-06 CN CN202011231861.2A patent/CN112381280B/zh active Active
Patent Citations (4)
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 |