CN113126973A - 一种基于门控注意力和交互lstm的代码生成方法 - Google Patents

一种基于门控注意力和交互lstm的代码生成方法 Download PDF

Info

Publication number
CN113126973A
CN113126973A CN202110487654.1A CN202110487654A CN113126973A CN 113126973 A CN113126973 A CN 113126973A CN 202110487654 A CN202110487654 A CN 202110487654A CN 113126973 A CN113126973 A CN 113126973A
Authority
CN
China
Prior art keywords
lstm
attention
att
information
interactive
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.)
Pending
Application number
CN202110487654.1A
Other languages
English (en)
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.)
Nanjing Tech University
Original Assignee
Nanjing Tech 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 Nanjing Tech University filed Critical Nanjing Tech University
Priority to CN202110487654.1A priority Critical patent/CN113126973A/zh
Publication of CN113126973A publication Critical patent/CN113126973A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • 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
    • 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/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明涉及一种针对python的代码生成方法,该方法基于门控注意力和交互LSTM将自然语言信息映射为计算机可执行的代码片段。包括:采用双向GRU编码单元对输入信息进行提取。使用门控注意力机制,将上一时刻解码器单元状态与编码信息相融。使用交互LSTM对模型进行解码,实现自然语言到代码的转换。与已有的技术相比,本发明的具有简单、快速的特点,能够较好地提高代码生成的质量。

Description

一种基于门控注意力和交互LSTM的代码生成方法
技术领域
本发明涉及自然语言处理领域,具体来说,本发明涉及一种针对python的代码生成方法。
背景技术
互联网技术、人工智能的发展给软件开发带来了新的机遇。开源状态下数以亿计的代码可以快速,免费的获得。基于大规模代码与数据,如何在节约开发成本的同时,保证开发软件的效率与质量成为值得探索的研究方向。研究者将目光放在了从自然语言到程序语言的转换,即代码生成又称为程序自动生成。自动生成代码将减轻开发者的人工工作,也使程序遵循相同规范,可读性与维护性也将大幅提升,因而得到学术界和工业界的广泛关注。
在代码生成的早期,研究者基于语法规则匹配进行了各种尝试,如组合类型语法CCG,依存组合语法DCS等。这些方法的局限性在于只适用于生成特定领域的逻辑生成。随着神经网络在机器翻译,图像识别等各方面取得突破,编码器-解码器(Seq2Seq)框架也同样逐渐崭露头角。基于该框架采用机器翻译方法可实现不同自然语言和目标语言的转换。但与自然语言相比,程序语言间往往包含着更多的结构信息。对于代码结构问题,可引入抽象语法树对代码结构进行表示,先从自然语言生成抽象语法树,结合注意力再通过语法树生成所需代码语言。但在实现不同语言间转换的时候,自然语言信息在生成代码过程中可能逐渐丢失。
发明内容:
针对目前存在的问题,本发明提出基于门控注意力和交互LSTM的代码生成方法。本发明旨在利用改进的注意力和拓展的LSTM提升生成代码的质量和准确度,步骤如下:
步骤1:采用双向GRU网络对输入信息进行编码,对信息进行正向和反向编码;
步骤1.1:GRU在保持LSTM效果的同时,减少约1/3参数量。同时正向和反向的编码方式,可以更完整地捕捉序列间各单元关联。
步骤1.2:若输入信息为(x1,x2...xn),由步骤1.1可知信息将被映射为正向隐状态
Figure BSA0000241142170000021
和后向隐状态
Figure BSA0000241142170000022
将前后隐状态拼接得到此时刻的整体隐状态。若时刻为i,则整体隐状态如下:
Figure BSA0000241142170000023
步骤1.3:编码器长度根据输入信息长度相应改变,因此使用各个时刻隐状态,编码信息可表示为S=(s1,s2.....sn)。
步骤2:采用门控注意力机制,该注意力包含GAT层和ATT层。
步骤2.1:注意力权值的改变不会带来编码信息S任何变化,不变性导致上下文向量间相似性高进而影响生成质量,引入门控注意力通过GAT层将S细分为
Figure BSA0000241142170000024
步骤2.2:若时间步为j,那么在S被输入到ATT层前将解码中前一单元状态cj-1引入GAT层,通过细化S打破这种不变性,GAT层整体计算公式如下:
Figure BSA0000241142170000025
步骤2.2.1:上述公式可分解为如下表示:
rjt=σ(wrccj-1+wrsst+br)
zjt=σ(wzccj-1+wzsst+bz)
Figure BSA0000241142170000026
Figure BSA0000241142170000027
其中:cj-1为解码单元状态,st为第t个编码信息,rjt为重置门和zjt为更新门,σ、tanh、w*和b*分别表示sigmod函数和双曲正切函数以及权值矩阵和偏置,*表示的是矩阵对应元素相乘。
步骤2.2.2:GAT层通过门控GRU将编码信息S经过被细化为
Figure BSA0000241142170000031
改变了编码信息的不变性增强了信息间区分度。接着
Figure BSA0000241142170000032
被输入ATT层得到j时刻上下文向量Attj
步骤2.3:ATT层注意力与软注意力保持一致,整体公式如下:
Figure BSA0000241142170000033
Figure BSA0000241142170000034
输入ATT层后不同时间步分配不同的注意力,通过对所有时间步的隐状态的加权和得到此刻的上下文向量Attj
步骤3:采用交互LSTM网络作为模型解码器,交互LSTM为原始LSTM的拓展。
步骤3.1:将Python语法规则:引入到代码生成中,每一时间步即为对语法规则的预测。
步骤3.1.1:编码器最后隐状态作为解码器的是始状态,结合门控注意力计算对应的上下文向量attj作为交互LSTM的输入。
步骤3.2:注意到原始LSTM中每个门的输入attj和hj-1是完全独立的,这可能致使语义信息的丢失,因此引入拓展LSTM即交互LSTM,即输入信息在输入解码器前进行交互。原本LSTM输入attj和hj-1将用
Figure BSA0000241142170000035
初始化,根据参数i的奇偶性控制attj
Figure BSA0000241142170000036
进行交互计算,X与H是额外定义的权值矩阵:
Figure BSA0000241142170000037
Figure BSA0000241142170000038
步骤3.3:运用函数sofmax对交互LSTM输出进行动作预测paction,每个时间步t均触发动作ApplyRule和GetToken。ApplyRule将语法规则应用到非叶子节点,GetToken为叶子节点进行赋值。
步骤3.4:语法树生成按箭头表示生成,虚线框表示GetToken,实线框为ApplyRule。注意到图中有2个t4,表明t3节点有2个子节点,t3为他们的父节点。抽象语法树按照从上往下,从左往右的顺序执行,优先执行的左侧t4节点用实线连接。
步骤3.5:随着动作ApplyRule和GetToken的执行,最终模型会扩展完成语法树。
步骤3.6:解码器相应的生成的语法树后,将AST转换为所需的代码表示。
附图说明:
结合附图对本发明的具体实施方式作进一步描述:
图1是基于注意力的编码器-解码器框架;
图2是python抽象语法树规则示例;
图3是本发明模型框架图;
图4是交互LSTM解码器模型图;
具体实施方式:
以下结合附图说明基于门控注意力和交互LSTM的代码生成方法实施方式。
如图1所示,本发明总体上是结合注意力的编码器-解码器模型。编码器将输入的自然语言序列进行编码,其编码为对应长度的向量。结合注意力解码器将编码后的信息解码抽象语法树的生成。
步骤1:采用双向GRU网络对输入信息进行编码,图3中的左边表示对信息进行正向和反向编码;
步骤1.1:GRU在保持LSTM效果的同时,减少约1/3参数量,同时正向和反向的编码方式,可以更完整地捕捉序列间各单元关联。
步骤1.1.1:采用one-hot编码对输入信息进行向量转换。one-hot编码后,单词将使用二进制代替,向量维度对应全部词汇。第n个词xn表示方法为,第n个索引值为1,其他索引值为0,即{0,...,0...,0,1}。
步骤1.2:若输入信息为(x1,x2...xn),由步骤1.1可知信息将被映射为正向隐状态
Figure BSA0000241142170000051
和后向隐状态
Figure BSA0000241142170000052
将前后隐状态拼接得到此时刻的整体隐状态。若时刻为i,则整体隐状态如下:
Figure BSA0000241142170000053
步骤1.3:编码器长度应根据输入信息长度相应改变,因此使用各个时刻隐状态,则编码信息可表示为S=(s1,s2.....sn)。
步骤2:采用门控注意力机制,如图3中间部分所示。
步骤2.1:注意权值的改变不会带来编码信息S任何变化,不变性导致上下文向量间相似性高影响生成质量,引入门控注意力通过GAT层将S细分为
Figure BSA0000241142170000054
步骤2.2:若时间步为j,那么在S被输入到ATT层前将解码中前一单元状态cj-1引入GAT层,通过细化S打破这种不变性,GAT层整体计算公式如下:
Figure BSA0000241142170000055
步骤2.2.1:上述公式可分解为如下表示:
rjt=σ(wrccj-1+wrsst+br)
zjt=σ(wzccj-1+wzsst+bz)
Figure BSA0000241142170000056
Figure BSA0000241142170000061
其中:cj-1为解码单元状态,st为第t个编码信息,rjt为重置门和zjt为更新门,σ、tanh、w*和b*分别表示sigmod函数和双曲正切函数以及权值矩阵和偏置,*表示的是矩阵对应元素相乘。
步骤2.2.2:GAT层通过门控GRU将编码信息S经过被细化为
Figure BSA0000241142170000069
改变了编码信息的不变性增强了信息间区分度。接着
Figure BSA0000241142170000062
被输入ATT层得到j时刻上下文向量Attj
步骤2.3:ATT层注意力与软注意力保持一致,整体公式如下:
Figure BSA0000241142170000063
Figure BSA0000241142170000064
输入ATT层后不同时间步分配不同的注意力,通过对所有时间步的隐状态的加权和得到此刻的上下文向量Attj
步骤3:采用交互LSTM网络作为模型解码器,图3中的右边表示。
步骤3.1:将Python语法规则:引入到代码生成中,每一时间步即为对语法规则的预测如图2所示。
步骤3.1.1:编码器最后隐状态作为解码器的是始状态,结合门控注意力计算对应的上下文向量attj作为交互LSTM的输入,如图4所示。
步骤3.2:注意到原始LSTM中每个门的输入attj和hj-1是完全独立的,这可能致使语义信息的丢失,引入拓展LSTM即交互LSTM。原本LSTM输入attj和hj-1将用
Figure BSA0000241142170000065
初始化,根据参数i的奇偶性控制attj
Figure BSA0000241142170000066
进行交互计算,X与H是额外定义的权值矩阵:
Figure BSA0000241142170000067
Figure BSA0000241142170000068
步骤3.3:运用函数sofmax对交互LSTM输出进行动作预测paction,每个时间步t均触发动作ApplyRule和GetToken。ApplyRule将语法规则应用到非叶子节点,GetToken为叶子节点进行赋值。
Figure BSA0000241142170000071
paction=sof max(wjhj+bj)
步骤3.4:如图2所示,语法树生成按箭头表示生成,虚线框表示GetToken,实线框为ApplyRule。注意到图中有2个t4,表明t3节点有2个子节点,t3为他们的父节点。抽象语法树按照从上往下,从左往右的顺序执行,优先执行的左侧t4节点用实线连接。
步骤3.5:随着动作ApplyRule和GetToken的执行,最终模型会扩展完成语法树。
步骤3.6:解码器相应的生成的语法树后,将AST转换为所需的代码表示。

Claims (5)

1.一种基于门控注意力和交互LSTM的代码生成方法,其特征在于,所述方法包括以下步骤:
步骤1:采用双向GRU网络对输入信息进行编码,对信息进行正向和反向编码;
步骤1.1:正向和反向的编码方式
Figure FSA0000241142160000011
Figure FSA0000241142160000012
可以更完整地捕捉序列间各单元关联;
步骤1.2:将前向和后向隐状态拼接得此时刻的整体隐状态
Figure FSA0000241142160000013
步骤1.3:编码器长度根据输入信息长度相应改变,编码信息可表示为S=(s1,s2.....sn);
步骤2:采用门控注意力机制,该注意力包含GAT层和ATT层;
步骤2.1:GAT层通过门控GRU将编码信息S转化为
Figure FSA0000241142160000014
改变编码信息的不变性;
步骤2.2:
Figure FSA0000241142160000015
被输入ATT层得到此时刻上下文向量Attj
步骤3:采用交互LSTM网络作为解码单元,将编码信息解码构建抽象语法树。
2.如权利要求1所述的基于门控注意力和交互LSTM的代码生成方法,其特征在于,所述的步骤2.1具体方法如下:
步骤2.1.1:编码信息S被输入到ATT层前将解码中前一单元状态cj-1引入GAT层,通过细化S打破这种不变性,GAT层整体计算公式如下:
Figure FSA0000241142160000016
步骤2.1.2:上述公式可分解为如下表示:
rjt=σ(wrccj-1+wrsst+br)
zjt=σ(wzccj-1+wzsst+bz)
Figure FSA0000241142160000017
Figure FSA0000241142160000018
其中:cj-1为解码单元状态,st为第t个编码信息,rjt为重置门和zjt为更新门,σ、tanh、w*和b*分别表示sigmod函数和双曲正切函数以及权值矩阵和偏置,*表示的是矩阵对应元素相乘。
3.如权利要求1和2所述的基于门控注意力和交互LSTM的代码生成方法,其特征在于,所述的步骤2.2具体方法如下:
步骤2.2.1:将所得
Figure FSA0000241142160000019
输入ATT层得到j时刻上下文向量Attj,ATT层注意力与软注意力保持一致,整体公式如下:
Figure FSA00002411421600000110
4.如权利要求1所述的基于门控注意力和交互LSTM的代码生成方法,其特征在于,所述步骤3具体方法如下:
步骤3.1:将Python语法规则:引入到代码生成中,每一时间步即为对语法规则的预测;
步骤3.2:引入拓展LSTM即交互LSTM将原始输入attj和hj-1
Figure FSA0000241142160000021
初始化,根据参数i的奇偶性控制attj
Figure FSA0000241142160000022
进行交互计算;
步骤3.3:运用函数sofmax对交互LSTM输出进行动作预测paction,每个时间步t均触发动作ApplyRule和GetToken;
步骤3.4:抽象语法树按照从上往下,从左往右的顺序执行;
步骤3.5:随着动作ApplyRule和GetToken的执行,最终模型会扩展完成语法树;
步骤3.6:解码器相应的生成的语法树后,将AST转换为所需的代码表示。
5.如权利1-4任一所述的基于门控注意力和交互LSTM的代码生成方法,其特征在于,所述模型包含三部分,编码器-注意力-解码器;模型双向GRU编码让信息关联紧密,门控注意力打破编码信息的不变性让生成上下文向量有了区分度,交互LSTM使输入信息进入解码单元前交互计算;作为不定长输入到不定长输出的任务,通过不断的对权重进行调整来实现对神经网络的训练,使输入与输出形成多对多关系,接着生成抽象语法树表示,最终将语法树转为相应代码。
CN202110487654.1A 2021-04-30 2021-04-30 一种基于门控注意力和交互lstm的代码生成方法 Pending CN113126973A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110487654.1A CN113126973A (zh) 2021-04-30 2021-04-30 一种基于门控注意力和交互lstm的代码生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110487654.1A CN113126973A (zh) 2021-04-30 2021-04-30 一种基于门控注意力和交互lstm的代码生成方法

Publications (1)

Publication Number Publication Date
CN113126973A true CN113126973A (zh) 2021-07-16

Family

ID=76781207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110487654.1A Pending CN113126973A (zh) 2021-04-30 2021-04-30 一种基于门控注意力和交互lstm的代码生成方法

Country Status (1)

Country Link
CN (1) CN113126973A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109670036A (zh) * 2018-12-17 2019-04-23 广州大学 一种新闻评论自动生成方法及其装置
US20190287012A1 (en) * 2018-03-16 2019-09-19 Microsoft Technology Licensing, Llc Encoder-decoder network with intercommunicating encoder agents
CN110489102A (zh) * 2019-07-29 2019-11-22 东北大学 一种从自然语言自动生成Python代码的方法
CN111190600A (zh) * 2019-12-31 2020-05-22 中国银行股份有限公司 基于gru注意力模型的前端代码自动生成的方法及系统
CN112463209A (zh) * 2019-09-09 2021-03-09 南京工业大学 基于机器学习的源程序自动标注方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190287012A1 (en) * 2018-03-16 2019-09-19 Microsoft Technology Licensing, Llc Encoder-decoder network with intercommunicating encoder agents
CN109670036A (zh) * 2018-12-17 2019-04-23 广州大学 一种新闻评论自动生成方法及其装置
CN110489102A (zh) * 2019-07-29 2019-11-22 东北大学 一种从自然语言自动生成Python代码的方法
CN112463209A (zh) * 2019-09-09 2021-03-09 南京工业大学 基于机器学习的源程序自动标注方法
CN111190600A (zh) * 2019-12-31 2020-05-22 中国银行股份有限公司 基于gru注意力模型的前端代码自动生成的方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张海同 等: "基于门控化上下文感知网络的词语释义生成方法", 《中文信息学报》, vol. 34, no. 7, pages 107 - 108 *

Similar Documents

Publication Publication Date Title
CN109344391B (zh) 基于神经网络的多特征融合中文新闻文本摘要生成方法
CN110765966B (zh) 一种面向手写文字的一阶段自动识别与翻译方法
CN111382582B (zh) 一种基于非自回归的神经机器翻译解码加速方法
CN110489102B (zh) 一种从自然语言自动生成Python代码的方法
CN109492113B (zh) 一种面向软件缺陷知识的实体、关系联合抽取方法
CN110472238A (zh) 基于层级交互注意力的文本摘要方法
CN113901847B (zh) 基于源语言句法增强解码的神经机器翻译方法
CN110059324A (zh) 基于依存信息监督的神经网络机器翻译方法及装置
CN112560456B (zh) 一种基于改进神经网络的生成式摘要生成方法和系统
CN111382574A (zh) 一种虚拟现实与增强现实场景下结合句法的语义解析系统
CN113971837A (zh) 一种基于知识的多模态特征融合的动态图神经手语翻译方法
CN115147931A (zh) 基于detr的人物成对解码交互的人与物交互检测方法
CN115034228A (zh) 一种用于情感分析模型的优化方法
CN111309896A (zh) 基于二级注意力的深度学习文本摘要生成方法
CN114677631A (zh) 一种基于多特征融合及多阶段训练的文化资源视频中文描述生成方法
CN112287641B (zh) 一种同义句生成方法、系统、终端及存储介质
CN117573084B (zh) 一种基于逐层融合抽象语法树的代码补全方法
CN113392929A (zh) 一种基于词嵌入与自编码器融合的生物序列特征提取方法
CN117235256A (zh) 一种多类知识体系下的情感分析分类方法
CN113126973A (zh) 一种基于门控注意力和交互lstm的代码生成方法
CN110674647A (zh) 一种基于Transformer模型的层融合方法及计算机设备
CN111857728B (zh) 一种代码摘要生成方法和装置
CN113239166B (zh) 一种基于语义知识增强的自动化人机互动方法
CN112464673B (zh) 融合义原信息的语言含义理解方法
CN116681087B (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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20210716

WD01 Invention patent application deemed withdrawn after publication