CN114385178A - 基于抽象语法树结构信息增强的代码生成方法 - Google Patents
基于抽象语法树结构信息增强的代码生成方法 Download PDFInfo
- Publication number
- CN114385178A CN114385178A CN202111531597.9A CN202111531597A CN114385178A CN 114385178 A CN114385178 A CN 114385178A CN 202111531597 A CN202111531597 A CN 202111531597A CN 114385178 A CN114385178 A CN 114385178A
- Authority
- CN
- China
- Prior art keywords
- syntax tree
- abstract syntax
- node
- code generation
- information
- 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
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012549 training Methods 0.000 claims abstract description 29
- 238000006243 chemical reaction Methods 0.000 claims abstract description 5
- 230000007246 mechanism Effects 0.000 claims description 13
- 230000009471 action Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 5
- 230000009467 reduction Effects 0.000 claims description 5
- 238000001914 filtration Methods 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 claims description 3
- 230000011218 segmentation Effects 0.000 claims description 3
- 238000010200 validation analysis Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 230000015654 memory Effects 0.000 description 3
- 230000001537 neural effect Effects 0.000 description 3
- 230000008447 perception Effects 0.000 description 3
- 230000006403 short-term memory Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation 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/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
- G06F40/58—Use of machine translation, e.g. for multi-lingual retrieval, for server-side translation for client devices or for real-time translation
Abstract
本发明公开了一种基于抽象语法树结构信息增强的代码生成方法和介质,其中方法包括:获取人工标注的代码生成数据,其中,代码生成数据包括自然语言句子和对应的目标代码;采用解析器对目标代码进行解析,以得到目标代码对应的抽象语法树,以便根据抽象语法树得到抽象语法树的预测序列,并将自然语言句子和抽象语法树的预测序列作为训练数据;建立代码生成模型,并使用训练数据对代码生成模型进行训练,其中,代码生成模型包括编码器、解码器、历史信息增强模块和未来信息增强模块;将获取的待处理的自然语言句子输入到训练好的代码生成模型进行转换,以生成待处理的自然语言句子对应的目标代码和抽象语法树,从而减小模型的预测误差。
Description
技术领域
本发明涉及机器翻译技术领域,特别涉及一种基于抽象语法树结构信息增强的代码生成方法和一种计算机可读存储介质。
背景技术
相关技术中,现有的代码生成方法在神经网络编码器-解码器的框架下,通过模型将输入的源语言转化为目标代码的抽象语法树,对比序列到序列的模型,该模型可以更好的保证代码的语法正确;然而该模型通常在生成抽象语法树的当前节点时,仅考虑父亲节点和上一个预测节点的信息,这种方法并没有感知整棵抽象语法树的结构,强化模型解码器对抽象语法树的感知,从而导致模型的预测效果差。
发明内容
本发明旨在至少在一定程度上解决上述技术中的技术问题之一。为此,本发明的一个目的在于提出一种基于抽象语法树结构信息增强的代码生成方法,能够充分利用生成的抽象语法树,生成全局结构感知更好的节点,减小模型的预测误差。
本发明的第二个目的在于提出一种计算机可读存储介质。
为达到上述目的,本发明第一方面实施例提出了一种基于抽象语法树结构信息增强的代码生成方法,包括以下步骤:获取人工标注的代码生成数据,其中,所述人工标注的代码生成数据包括自然语言句子和对应的目标代码;采用所述目标代码对应的解析器对所述目标代码进行解析,以得到所述目标代码对应的抽象语法树,以便根据所述抽象语法树得到所述抽象语法树的预测序列,并将所述自然语言句子和所述抽象语法树的预测序列作为训练数据;建立基于抽象语法树结构信息增强的代码生成模型,并使用所述训练数据对所述基于抽象语法树结构信息增强的代码生成模型进行训练,以得到训练好的基于抽象语法树结构信息增强的代码生成模型,其中,所述基于抽象语法树结构信息增强的代码生成模型包括编码器、解码器、历史信息增强模块和未来信息增强模块;获取待处理的自然语言句子,并将所述待处理的自然语言句子输入到所述训练好的基于抽象语法树结构信息增强的代码生成模型进行转换,以生成所述待处理的自然语言句子对应的目标代码和抽象语法树。
根据本发明实施例的基于抽象语法树结构信息增强的代码生成方法,首先,获取人工标注的代码生成数据,其中,人工标注的代码生成数据包括自然语言句子和对应的目标代码;接着,采用目标代码对应的解析器对目标代码进行解析,以得到目标代码对应的抽象语法树,以便根据抽象语法树得到抽象语法树的预测序列,并将自然语言句子和抽象语法树的预测序列作为训练数据;然后,建立基于抽象语法树结构信息增强的代码生成模型,并使用训练数据对基于抽象语法树结构信息增强的代码生成模型进行训练,以得到训练好的基于抽象语法树结构信息增强的代码生成模型,其中,基于抽象语法树结构信息增强的代码生成模型包括编码器、解码器、历史信息增强模块和未来信息增强模块;接着,获取待处理的自然语言句子,并将待处理的自然语言句子输入到训练好的基于抽象语法树结构信息增强的代码生成模型进行转换,以生成待处理的自然语言句子对应的目标代码和抽象语法树;由此,通过基于抽象语法树结构信息增强的代码生成模型充分利用生成的抽象语法树生成全局结构感知更好的节点,从而减小模型的预测误差。
另外,根据本发明上述实施例提出的基于抽象语法树结构信息增强的代码生成方法还可以具有如下附加的技术特征:
可选地,在获取人工标注的代码生成数据之后,还包括:对所述人工标注的代码生成数据进行预处理,其中,预处理包括符号标准化、大小写统一和分词。
可选地,在使用所述训练数据对所述基于抽象语法树结构信息增强的代码生成模型进行训练的过程中,在所述解码器生成隐状态时调用所述历史信息增强模块和所述未来信息增强模块增强当前隐状态包含的抽象语法树的信息,以得到更新后的隐状态;并使用梯度反向传播算法在训练中更新模型所有模块的参数。
可选地,根据以下公式得到更新后的隐状态:
其中,st为t时刻的隐状态,ht为t时刻的历史信息,fct为t时刻的未来信息,ct为对编码器的表示使用注意力机制得到的上下文信息,W为参数矩阵,:为向量拼接操作。
可选地,根据以下公式得到历史信息:
etj=(Wsj+E(dtj)+E(pj)+E(rtj))st
其中,dtj为语法距离,用于表示第t时刻生成的当前节点和第j时刻生成的历史节点的语法距离,即抽象语法树上的最短路径距离;pj为动作类型,可分为三类:规则类型、归约类型和单词类型;rtj为第j时刻生成的历史节点和第t时刻生成的当前节点的相对位置,可分为两类:兄弟和祖先节点、非兄弟和祖先节点;etj为注意力机制中的第t时刻生成的当前节点对第j时刻生成的历史节点的注意力分数,E为嵌入操作,得到某类型的向量表示;sj为j时刻的隐状态,etj′为注意力机制中的第t时刻生成的当前节点对第j′时刻生成的历史节点的注意力分数。
可选地,根据以下步骤得到未来信息:确定当前节点对应的需要预测的未来节点的位置;根据所述需要预测的未来节点的位置以得到所述需要预测的未来节点的信息。
可选地,确定当前节点对应的需要预测的未来节点的位置,包括:根据当前节点对应的父亲节点的域的信息,得到当前节点是否存在未预测的右边兄弟节点;如果存在,则将所述右边兄弟节点的位置作为当前节点对应的未来节点的位置;如果不存在,则递归至当前节点对应的父亲节点已经预测的未来节点的位置,并将其作为当前节点对应的预测未来节点的位置,如果当前节点为根节点,其对应的预测未来节点位置为无。
可选地,根据所述需要预测的未来节点的位置以得到所述需要预测的未来节点的信息,包括:
计算未来信息fct:
fst=tanh(W[st:fpt:ct])
gt=sigmoid(W[fst:st])
fct=tanh(W(gt·fst))
其中,fpt为未来节点的父亲节点信息,用于确定未来节点的位置,gt为门机制得到的未来信息的信息过滤权重;fst为根据未来节点上下文信息得到的隐状态表示。
可选地,根据以下公式计算损失对模型参数进行更新:
为达到上述目的,本发明第二方面实施例提出了一种计算机可读存储介质,其上存储有基于抽象语法树结构信息增强的代码生成程序,该基于抽象语法树结构信息增强的代码生成程序被处理器执行时实现如上述的基于抽象语法树结构信息增强的代码生成方法。
根据本发明实施例的计算机可读存储介质,通过存储基于抽象语法树结构信息增强的代码生成程序,以使得处理器在执行该基于抽象语法树结构信息增强的代码生成程序时,实现如上述的基于抽象语法树结构信息增强的代码生成方法,由此,通过基于抽象语法树结构信息增强的代码生成模型充分利用生成的抽象语法树生成全局结构感知更好的节点,从而减小模型的预测误差。
附图说明
图1为根据本发明实施例的基于抽象语法树结构信息增强的代码生成方法的流程示意图;
图2为根据本发明实施例的基于抽象语法树结构信息增强的代码生成模型的训练流程示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
为了更好的理解上述技术方案,下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
图1为根据本发明实施例的基于抽象语法树结构信息增强的代码生成方法的流程示意图,如图1所示,该基于抽象语法树结构信息增强的代码生成方法包括以下步骤:
S101,获取人工标注的代码生成数据,其中,人工标注的代码生成数据包括自然语言句子和对应的目标代码。
也就是说,代码生成数据包括自然语言句子和人工标注的该自然语言句子对应的目标代码。
作为一个实施例,在获取人工标注的代码生成数据之后,还对人工标注的代码生成数据进行预处理,其中,预处理包括符号标准化、大小写统一和分词。
S102,采用目标代码对应的解析器对目标代码进行解析,以得到目标代码对应的抽象语法树,以便根据抽象语法树得到抽象语法树的预测序列,并将自然语言句子和抽象语法树的预测序列作为训练数据。
也就是说,通过目标代码语言的解析器对目标进行处理,得到目标代码对应的一棵抽象语法树,进而得到构造这棵抽象语法树的预测序列。
S103,建立基于抽象语法树结构信息增强的代码生成模型,并使用训练数据对基于抽象语法树结构信息增强的代码生成模型进行训练,以得到训练好的基于抽象语法树结构信息增强的代码生成模型,其中,基于抽象语法树结构信息增强的代码生成模型包括编码器、解码器、历史信息增强模块和未来信息增强模块。
需要说明的是,编码器和解码器各为一个长短期记忆神经循环网络,编码器的输出为输入句子每一个单词的隐状态表示,解码器的输出为抽象语法树每一个节点的概率。
需要说明的是,历史信息增强模块和未来信息增强模块,对于信息的融合均采用一层前馈神经网络,并使用tanh为激活函数。
在一些实施例中,如图2所示,在使用训练数据对基于抽象语法树结构信息增强的代码生成模型进行训练的过程中,在解码器生成隐状态时调用历史信息增强模块和未来信息增强模块增强当前隐状态包含的抽象语法树的信息,以得到更新后的隐状态;并使用梯度反向传播算法在训练中更新模型所有模块的参数。
也就是说,在训练阶段包括两个扩展部分,在解码器生成隐状态时调用历史信息增强模块和未来信息增强模块;具体生成过程的信息流动如图2所示,其中图2(a)为原模型,图2(b)为提出的扩展模型,箭头为不同类型的信息流动图。
作为一个实施例,对于解码器计算的在t时刻的隐状态st,融入历史信息和未来信息,得到更新后的隐状态表示:
其中,st为t时刻的隐状态,hct为t时刻的历史信息,fct为t时刻的未来信息,ct为对编码器的表示使用注意力机制得到的上下文信息,W为参数矩阵,:为向量拼接操作。
作为一个实施例,根据以下公式得到历史信息:
etj=(Wsj+E(dtj)+E(pj)+E(rtj))st
其中,dtj为语法距离,用于表示第t时刻生成的当前节点和第j时刻生成的历史节点的语法距离,即抽象语法树上的最短路径距离;pj为动作类型,可分为三类:规则类型、归约类型和单词类型;rtj为第j时刻生成的历史节点和第t时刻生成的当前节点的相对位置,可分为两类:兄弟和祖先节点、非兄弟和祖先节点;etj为注意力机制中的第t时刻生成的当前节点对第j时刻生成的历史节点的注意力分数,E为嵌入操作,得到某类型的向量表示;sj为j时刻的隐状态,etj′为注意力机制中的第t时刻生成的当前节点对第j′时刻生成的历史节点的注意力分数。
也就是说,历史信息的表示由三个部分组成,分别是(1)语法距离dtj,用于表示第t时刻生成的当前节点和历史某个节点j的语法距离,即抽象语法树上的最短路径距离;(2)动作类型pj,由于抽象语法树的每个节点都有其具体的动作类型,具体可分为三类,规则类型、归约类型和单词类型;(3)相对位置rtj,我们将第j时刻生成的历史节点和第t时刻生成的当前节点的相对位置分为两类,一类是兄弟和祖先节点,另一类是非兄弟和祖先节点;将这三类信息加入到当前节点对未来节点的注意力机制中。
作为一个实施例,根据以下步骤得到未来信息:确定当前节点对应的需要预测的未来节点的位置;根据需要预测的未来节点的位置以得到所述需要预测的未来节点的信息。
其中,确定当前节点对应的需要预测的未来节点的位置,包括:
根据当前节点对应的父亲节点的域的信息,得到当前节点是否存在未预测的右边兄弟节点;
如果存在,则将右边兄弟节点的位置作为当前节点对应的未来节点的位置;
如果不存在,则递归至当前节点对应的父亲节点已经预测的未来节点的位置,并将其作为当前节点对应的预测未来节点的位置,如果当前节点为根节点,其对应的预测未来节点位置为无。
也就是说,在预测未来信息时,选择要预测的节点为当前节点的最近兄弟节点,如果当前最近节点不存在或为归约操作,则选择父亲节点的兄弟节点为未来预测节点,如果前节点为根节点,其对应的预测未来节点位置为无。
其中,根据需要预测的未来节点的位置以得到需要预测的未来节点的信息,包括:
计算未来信息fct:
fst=tanh(W[st:fpt:ct])
gt=sigmoid(W[fst:st])
fct=tanh(W(gt·fst))
其中,fpt为未来节点的父亲节点信息,用于确定未来节点的位置,gt为门机制得到的未来信息的信息过滤权重;fst为根据未来节点上下文信息得到的隐状态表示。
作为一个实施例,根据以下公式计算损失对模型参数进行更新:
也就是说,除了一般地预测当前节点的损失外,额外接入了预测未来节点的损失,保证模型的未来节点的信息准确。
S104,获取待处理的自然语言句子,并将待处理的自然语言句子输入到训练好的基于抽象语法树结构信息增强的代码生成模型进行转换,以生成待处理的自然语言句子对应的目标代码和抽象语法树。
作为一个实施例,此处的代码生成模型采用编码器、解码器框架。在编码器端,输入为经过处理的自然语言句子序列,使用一层长短期记忆神经循环网络(Long short-termmemory)后,得到句子序列的隐状态表示;解码器端同为一个一层长短期记忆神经循环网络,解码出构建抽象语法树的每一个节点的隐状态信息。
综上所述,根据本发明实施例的基于抽象语法树结构信息增强的代码生成方法,首先,获取人工标注的代码生成数据,其中,人工标注的代码生成数据包括自然语言句子和对应的目标代码;接着,采用目标代码对应的解析器对目标代码进行解析,以得到目标代码对应的抽象语法树,以便根据抽象语法树得到抽象语法树的预测序列,并将自然语言句子和抽象语法树的预测序列作为训练数据;然后,建立基于抽象语法树结构信息增强的代码生成模型,并使用训练数据对基于抽象语法树结构信息增强的代码生成模型进行训练,以得到训练好的基于抽象语法树结构信息增强的代码生成模型,其中,基于抽象语法树结构信息增强的代码生成模型包括编码器、解码器、历史信息增强模块和未来信息增强模块;接着,获取待处理的自然语言句子,并将待处理的自然语言句子输入到训练好的基于抽象语法树结构信息增强的代码生成模型进行转换,以生成待处理的自然语言句子对应的目标代码和抽象语法树;由此,通过基于抽象语法树结构信息增强的代码生成模型充分利用生成的抽象语法树生成全局结构感知更好的节点,从而减小模型的预测误差。
为了实现上述实施例,本发明实施例提出了一种计算机可读存储介质,其上存储有基于抽象语法树结构信息增强的代码生成程序,该基于抽象语法树结构信息增强的代码生成程序被处理器执行时实现如上述的基于抽象语法树结构信息增强的代码生成方法。
根据本发明实施例的计算机可读存储介质,通过存储基于抽象语法树结构信息增强的代码生成程序,以使得处理器在执行该基于抽象语法树结构信息增强的代码生成程序时,实现如上述的基于抽象语法树结构信息增强的代码生成方法,由此,通过基于抽象语法树结构信息增强的代码生成模型充分利用生成的抽象语法树生成全局结构感知更好的节点,从而减小模型的预测误差。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不应理解为必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种基于抽象语法树结构信息增强的代码生成方法,其特征在于,包括以下步骤:
获取人工标注的代码生成数据,其中,所述人工标注的代码生成数据包括自然语言句子和对应的目标代码;
采用所述目标代码对应的解析器对所述目标代码进行解析,以得到所述目标代码对应的抽象语法树,以便根据所述抽象语法树得到所述抽象语法树的预测序列,并将所述自然语言句子和所述抽象语法树的预测序列作为训练数据;
建立基于抽象语法树结构信息增强的代码生成模型,并使用所述训练数据对所述基于抽象语法树结构信息增强的代码生成模型进行训练,以得到训练好的基于抽象语法树结构信息增强的代码生成模型,其中,所述基于抽象语法树结构信息增强的代码生成模型包括编码器、解码器、历史信息增强模块和未来信息增强模块;
获取待处理的自然语言句子,并将所述待处理的自然语言句子输入到所述训练好的基于抽象语法树结构信息增强的代码生成模型进行转换,以生成所述待处理的自然语言句子对应的目标代码和抽象语法树。
2.如权利要求1所述的基于抽象语法树结构信息增强的代码生成方法,其特征在于,在获取人工标注的代码生成数据之后,还包括:
对所述人工标注的代码生成数据进行预处理,其中,预处理包括符号标准化、大小写统一和分词。
3.如权利要求1所述的基于抽象语法树结构信息增强的代码生成方法,其特征在于,在使用所述训练数据对所述基于抽象语法树结构信息增强的代码生成模型进行训练的过程中,在所述解码器生成隐状态时调用所述历史信息增强模块和所述未来信息增强模块增强当前隐状态包含的抽象语法树的信息,以得到更新后的隐状态;并使用梯度反向传播算法在训练中更新模型所有模块的参数。
5.如权利要求4所述的基于抽象语法树结构信息增强的代码生成方法,其特征在于,根据以下公式得到历史信息:
etj=(Wsj+E(dtj)+E(pj)+E(rtj))st
其中,dtj为语法距离,用于表示第t时刻生成的当前节点和第j时刻生成的历史节点的语法距离,即抽象语法树上的最短路径距离;pj为动作类型,可分为三类:规则类型、归约类型和单词类型;rtj为第j时刻生成的历史节点和第t时刻生成的当前节点的相对位置,可分为两类:兄弟和祖先节点、非兄弟和祖先节点;etj为注意力机制中的第t时刻生成的当前节点对第j时刻生成的历史节点的注意力分数,E为嵌入操作,得到某类型的向量表示;sj为j时刻的隐状态,etj′为注意力机制中的第t时刻生成的当前节点对第j′时刻生成的历史节点的注意力分数。
6.如权利要求5所述的基于抽象语法树结构信息增强的代码生成方法,其特征在于,根据以下步骤得到未来信息:
确定当前节点对应的需要预测的未来节点的位置;
根据所述需要预测的未来节点的位置以得到所述需要预测的未来节点的信息。
7.如权利要求6所述的基于抽象语法树结构信息增强的代码生成方法,其特征在于,确定当前节点对应的需要预测的未来节点的位置,包括:
根据当前节点对应的父亲节点的域的信息,得到当前节点是否存在未预测的右边兄弟节点;
如果存在,则将所述右边兄弟节点的位置作为当前节点对应的未来节点的位置;
如果不存在,则递归至当前节点对应的父亲节点已经预测的未来节点的位置,并将其作为当前节点对应的预测未来节点的位置,如果当前节点为根节点,其对应的预测未来节点位置为无。
8.如权利要求6所述的基于抽象语法树结构信息增强的代码生成方法,其特征在于,根据所述需要预测的未来节点的位置以得到所述需要预测的未来节点的信息,包括:
计算未来信息fct:
fst=tanh(W[st:fpt:ct])
gt=sigmoid(W[fst:st])
fct=tanh(W(gt·fst))
其中,fpt为未来节点的父亲节点信息,用于确定未来节点的位置,gt为门机制得到的未来信息的信息过滤权重;fst为根据未来节点上下文信息得到的隐状态表示。
10.一种计算机可读存储介质,其特征在于,其特征在于,其上存储有基于抽象语法树结构信息增强的代码生成程序,该基于抽象语法树结构信息增强的代码生成程序被处理器执行时实现如权利要求1-9中任一项所述的基于抽象语法树结构信息增强的代码生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111531597.9A CN114385178A (zh) | 2021-12-14 | 2021-12-14 | 基于抽象语法树结构信息增强的代码生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111531597.9A CN114385178A (zh) | 2021-12-14 | 2021-12-14 | 基于抽象语法树结构信息增强的代码生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385178A true CN114385178A (zh) | 2022-04-22 |
Family
ID=81195346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111531597.9A Pending CN114385178A (zh) | 2021-12-14 | 2021-12-14 | 基于抽象语法树结构信息增强的代码生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114385178A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579111A (zh) * | 2022-05-09 | 2022-06-03 | 中国联合重型燃气轮机技术有限公司 | 燃气轮机保护系统的代码生成方法、装置及电子设备 |
CN115080011A (zh) * | 2022-06-23 | 2022-09-20 | 北京志凌海纳科技有限公司 | 基于抽象语法树的代码生成方法及系统 |
CN115221061A (zh) * | 2022-07-22 | 2022-10-21 | 中国电信股份有限公司 | 测试代码生成方法、装置、存储介质及电子设备 |
CN116400901A (zh) * | 2023-04-12 | 2023-07-07 | 上海计算机软件技术开发中心 | 一种Python代码自动生成方法及系统 |
CN116661805A (zh) * | 2023-07-31 | 2023-08-29 | 腾讯科技(深圳)有限公司 | 代码表示的生成方法和装置、存储介质及电子设备 |
CN116909574A (zh) * | 2023-09-08 | 2023-10-20 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种检索增强的结构化代码生成系统及方法 |
CN117573084A (zh) * | 2023-08-02 | 2024-02-20 | 广东工业大学 | 一种基于逐层融合抽象语法树的代码补全方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108885545A (zh) * | 2016-03-23 | 2018-11-23 | 雾角系统公司 | 用于实时数据流编程语言的工具和方法 |
CN110032729A (zh) * | 2019-02-13 | 2019-07-19 | 北京航空航天大学 | 一种基于神经图灵机的自动摘要生成方法 |
CN110313154A (zh) * | 2017-02-14 | 2019-10-08 | 微软技术许可有限责任公司 | 具有基于意图的信息辨析的智能助理 |
CN110489766A (zh) * | 2019-07-25 | 2019-11-22 | 昆明理工大学 | 基于编码归纳-解码推敲的汉-越低资源神经机器翻译方法 |
US20200249918A1 (en) * | 2019-02-02 | 2020-08-06 | Microsoft Technology Licensing, Llc. | Deep learning enhanced code completion system |
US20200293617A1 (en) * | 2019-03-14 | 2020-09-17 | International Business Machines Corporation | Predictive natural language rule generation |
WO2021012645A1 (zh) * | 2019-07-22 | 2021-01-28 | 创新先进技术有限公司 | 推送信息的生成方法及装置 |
CN112835585A (zh) * | 2021-01-25 | 2021-05-25 | 山东师范大学 | 一种基于抽象语法树的程序理解方法及系统 |
CN113064586A (zh) * | 2021-05-12 | 2021-07-02 | 南京大学 | 一种基于抽象语法树增广图模型的代码补全方法 |
-
2021
- 2021-12-14 CN CN202111531597.9A patent/CN114385178A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108885545A (zh) * | 2016-03-23 | 2018-11-23 | 雾角系统公司 | 用于实时数据流编程语言的工具和方法 |
CN110313154A (zh) * | 2017-02-14 | 2019-10-08 | 微软技术许可有限责任公司 | 具有基于意图的信息辨析的智能助理 |
US20200249918A1 (en) * | 2019-02-02 | 2020-08-06 | Microsoft Technology Licensing, Llc. | Deep learning enhanced code completion system |
CN110032729A (zh) * | 2019-02-13 | 2019-07-19 | 北京航空航天大学 | 一种基于神经图灵机的自动摘要生成方法 |
US20200293617A1 (en) * | 2019-03-14 | 2020-09-17 | International Business Machines Corporation | Predictive natural language rule generation |
WO2021012645A1 (zh) * | 2019-07-22 | 2021-01-28 | 创新先进技术有限公司 | 推送信息的生成方法及装置 |
CN110489766A (zh) * | 2019-07-25 | 2019-11-22 | 昆明理工大学 | 基于编码归纳-解码推敲的汉-越低资源神经机器翻译方法 |
CN112835585A (zh) * | 2021-01-25 | 2021-05-25 | 山东师范大学 | 一种基于抽象语法树的程序理解方法及系统 |
CN113064586A (zh) * | 2021-05-12 | 2021-07-02 | 南京大学 | 一种基于抽象语法树增广图模型的代码补全方法 |
Non-Patent Citations (2)
Title |
---|
张文;冯洋;刘群;: "基于简单循环单元的深层神经网络机器翻译模型", 中文信息学报, no. 10, 15 October 2018 (2018-10-15) * |
虞慧群;黄家杰;范贵生;刁旭炀;: "融合定向自注意机制的代码完成方法", 小型微型计算机系统, no. 05, 15 May 2020 (2020-05-15) * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579111A (zh) * | 2022-05-09 | 2022-06-03 | 中国联合重型燃气轮机技术有限公司 | 燃气轮机保护系统的代码生成方法、装置及电子设备 |
CN114579111B (zh) * | 2022-05-09 | 2022-07-29 | 中国联合重型燃气轮机技术有限公司 | 燃气轮机保护系统的代码生成方法、装置及电子设备 |
CN115080011A (zh) * | 2022-06-23 | 2022-09-20 | 北京志凌海纳科技有限公司 | 基于抽象语法树的代码生成方法及系统 |
CN115080011B (zh) * | 2022-06-23 | 2023-03-21 | 北京志凌海纳科技有限公司 | 基于抽象语法树的代码生成方法及系统 |
CN115221061A (zh) * | 2022-07-22 | 2022-10-21 | 中国电信股份有限公司 | 测试代码生成方法、装置、存储介质及电子设备 |
CN115221061B (zh) * | 2022-07-22 | 2024-03-22 | 中国电信股份有限公司 | 测试代码生成方法、装置、存储介质及电子设备 |
CN116400901A (zh) * | 2023-04-12 | 2023-07-07 | 上海计算机软件技术开发中心 | 一种Python代码自动生成方法及系统 |
CN116661805A (zh) * | 2023-07-31 | 2023-08-29 | 腾讯科技(深圳)有限公司 | 代码表示的生成方法和装置、存储介质及电子设备 |
CN116661805B (zh) * | 2023-07-31 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 代码表示的生成方法和装置、存储介质及电子设备 |
CN117573084A (zh) * | 2023-08-02 | 2024-02-20 | 广东工业大学 | 一种基于逐层融合抽象语法树的代码补全方法 |
CN117573084B (zh) * | 2023-08-02 | 2024-04-12 | 广东工业大学 | 一种基于逐层融合抽象语法树的代码补全方法 |
CN116909574A (zh) * | 2023-09-08 | 2023-10-20 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种检索增强的结构化代码生成系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114385178A (zh) | 基于抽象语法树结构信息增强的代码生成方法 | |
US11475220B2 (en) | Predicting joint intent-slot structure | |
CN111291175B (zh) | 一种基于策略梯度算法的自动生成提交需求摘要的方法 | |
CN110807335A (zh) | 基于机器学习的翻译方法、装置、设备及存储介质 | |
CN112463989A (zh) | 一种基于知识图谱的信息获取方法及系统 | |
CN113065322B (zh) | 一种代码段注释生成方法、系统及可读存储介质 | |
CN114648015A (zh) | 一种基于依存关系注意力模型的方面级情感词识别方法 | |
CN109979461A (zh) | 一种语音翻译方法及装置 | |
JP2021524095A (ja) | 文章レベルテキストの翻訳方法及び装置 | |
CN112364659B (zh) | 一种无监督的语义表示自动识别方法及装置 | |
CN116386895B (zh) | 基于异构图神经网络的流行病舆情实体识别方法与装置 | |
CN116432611A (zh) | 文稿写作辅助方法、系统、终端及存储介质 | |
CN116383741A (zh) | 基于多源域数据的模型训练方法和跨域分析方法 | |
CN112487811B (zh) | 基于强化学习的级联信息提取系统及方法 | |
CN115700492A (zh) | 一种基于图区间神经网络的程序语义表示学习和预测方法 | |
CN111290756B (zh) | 一种基于对偶强化学习的代码-注释转换方法 | |
CN115270795A (zh) | 一种基于小样本学习的环评领域命名实体识别技术 | |
CN111126047B (zh) | 一种同义文本生成的方法及装置 | |
CN114358021A (zh) | 基于深度学习的任务型对话语句回复生成方法及存储介质 | |
CN115730568A (zh) | 抽象语义到文本的生成方法、装置、电子设备和存储介质 | |
CN113076089A (zh) | 一种基于对象类型的api补全方法 | |
De Azevedo et al. | An Approach for Learning and Construction of Expressive Ontology from Text in Natural Language | |
CN112052681A (zh) | 信息抽取模型训练方法、信息抽取方法、装置及电子设备 | |
Dorodnykh et al. | An RVML extension for modeling fuzzy rule bases. | |
CN117273085B (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 |