CN113126973A - 一种基于门控注意力和交互lstm的代码生成方法 - Google Patents
一种基于门控注意力和交互lstm的代码生成方法 Download PDFInfo
- 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
Links
- 230000002452 interceptive effect Effects 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 title claims abstract description 18
- 230000002457 bidirectional effect Effects 0.000 claims abstract description 5
- 230000007246 mechanism Effects 0.000 claims abstract description 4
- 239000013598 vector Substances 0.000 claims description 14
- 230000009471 action Effects 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 6
- 239000011159 matrix material Substances 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 claims description 3
- 238000013528 artificial neural network Methods 0.000 claims description 2
- 230000003993 interaction Effects 0.000 claims 5
- 238000006243 chemical reaction Methods 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- 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
-
- 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/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- 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/08—Learning 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
技术领域
本发明涉及自然语言处理领域,具体来说,本发明涉及一种针对python的代码生成方法。
背景技术
互联网技术、人工智能的发展给软件开发带来了新的机遇。开源状态下数以亿计的代码可以快速,免费的获得。基于大规模代码与数据,如何在节约开发成本的同时,保证开发软件的效率与质量成为值得探索的研究方向。研究者将目光放在了从自然语言到程序语言的转换,即代码生成又称为程序自动生成。自动生成代码将减轻开发者的人工工作,也使程序遵循相同规范,可读性与维护性也将大幅提升,因而得到学术界和工业界的广泛关注。
在代码生成的早期,研究者基于语法规则匹配进行了各种尝试,如组合类型语法CCG,依存组合语法DCS等。这些方法的局限性在于只适用于生成特定领域的逻辑生成。随着神经网络在机器翻译,图像识别等各方面取得突破,编码器-解码器(Seq2Seq)框架也同样逐渐崭露头角。基于该框架采用机器翻译方法可实现不同自然语言和目标语言的转换。但与自然语言相比,程序语言间往往包含着更多的结构信息。对于代码结构问题,可引入抽象语法树对代码结构进行表示,先从自然语言生成抽象语法树,结合注意力再通过语法树生成所需代码语言。但在实现不同语言间转换的时候,自然语言信息在生成代码过程中可能逐渐丢失。
发明内容:
针对目前存在的问题,本发明提出基于门控注意力和交互LSTM的代码生成方法。本发明旨在利用改进的注意力和拓展的LSTM提升生成代码的质量和准确度,步骤如下:
步骤1:采用双向GRU网络对输入信息进行编码,对信息进行正向和反向编码;
步骤1.1:GRU在保持LSTM效果的同时,减少约1/3参数量。同时正向和反向的编码方式,可以更完整地捕捉序列间各单元关联。
步骤1.3:编码器长度根据输入信息长度相应改变,因此使用各个时刻隐状态,编码信息可表示为S=(s1,s2.....sn)。
步骤2:采用门控注意力机制,该注意力包含GAT层和ATT层。
步骤2.2.1:上述公式可分解为如下表示:
rjt=σ(wrccj-1+wrsst+br)
zjt=σ(wzccj-1+wzsst+bz)
其中:cj-1为解码单元状态,st为第t个编码信息,rjt为重置门和zjt为更新门,σ、tanh、w*和b*分别表示sigmod函数和双曲正切函数以及权值矩阵和偏置,*表示的是矩阵对应元素相乘。
步骤2.3:ATT层注意力与软注意力保持一致,整体公式如下:
步骤3:采用交互LSTM网络作为模型解码器,交互LSTM为原始LSTM的拓展。
步骤3.1:将Python语法规则:引入到代码生成中,每一时间步即为对语法规则的预测。
步骤3.1.1:编码器最后隐状态作为解码器的是始状态,结合门控注意力计算对应的上下文向量attj作为交互LSTM的输入。
步骤3.2:注意到原始LSTM中每个门的输入attj和hj-1是完全独立的,这可能致使语义信息的丢失,因此引入拓展LSTM即交互LSTM,即输入信息在输入解码器前进行交互。原本LSTM输入attj和hj-1将用初始化,根据参数i的奇偶性控制attj和进行交互计算,X与H是额外定义的权值矩阵:
步骤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.3:编码器长度应根据输入信息长度相应改变,因此使用各个时刻隐状态,则编码信息可表示为S=(s1,s2.....sn)。
步骤2:采用门控注意力机制,如图3中间部分所示。
步骤2.2:若时间步为j,那么在S被输入到ATT层前将解码中前一单元状态cj-1引入GAT层,通过细化S打破这种不变性,GAT层整体计算公式如下:
步骤2.2.1:上述公式可分解为如下表示:
rjt=σ(wrccj-1+wrsst+br)
zjt=σ(wzccj-1+wzsst+bz)
其中:cj-1为解码单元状态,st为第t个编码信息,rjt为重置门和zjt为更新门,σ、tanh、w*和b*分别表示sigmod函数和双曲正切函数以及权值矩阵和偏置,*表示的是矩阵对应元素相乘。
步骤2.3:ATT层注意力与软注意力保持一致,整体公式如下:
步骤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将用初始化,根据参数i的奇偶性控制attj和进行交互计算,X与H是额外定义的权值矩阵:
步骤3.3:运用函数sofmax对交互LSTM输出进行动作预测paction,每个时间步t均触发动作ApplyRule和GetToken。ApplyRule将语法规则应用到非叶子节点,GetToken为叶子节点进行赋值。
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.3:编码器长度根据输入信息长度相应改变,编码信息可表示为S=(s1,s2.....sn);
步骤2:采用门控注意力机制,该注意力包含GAT层和ATT层;
步骤3:采用交互LSTM网络作为解码单元,将编码信息解码构建抽象语法树。
4.如权利要求1所述的基于门控注意力和交互LSTM的代码生成方法,其特征在于,所述步骤3具体方法如下:
步骤3.1:将Python语法规则:引入到代码生成中,每一时间步即为对语法规则的预测;
步骤3.3:运用函数sofmax对交互LSTM输出进行动作预测paction,每个时间步t均触发动作ApplyRule和GetToken;
步骤3.4:抽象语法树按照从上往下,从左往右的顺序执行;
步骤3.5:随着动作ApplyRule和GetToken的执行,最终模型会扩展完成语法树;
步骤3.6:解码器相应的生成的语法树后,将AST转换为所需的代码表示。
5.如权利1-4任一所述的基于门控注意力和交互LSTM的代码生成方法,其特征在于,所述模型包含三部分,编码器-注意力-解码器;模型双向GRU编码让信息关联紧密,门控注意力打破编码信息的不变性让生成上下文向量有了区分度,交互LSTM使输入信息进入解码单元前交互计算;作为不定长输入到不定长输出的任务,通过不断的对权重进行调整来实现对神经网络的训练,使输入与输出形成多对多关系,接着生成抽象语法树表示,最终将语法树转为相应代码。
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)
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 | 南京工业大学 | 基于机器学习的源程序自动标注方法 |
-
2021
- 2021-04-30 CN CN202110487654.1A patent/CN113126973A/zh active Pending
Patent Citations (5)
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)
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 |