一种面向多源异构编程语言的智能源码翻译方法及系统

文档序号:26101467发布日期:2021-07-30 18:12阅读:72来源:国知局
一种面向多源异构编程语言的智能源码翻译方法及系统

本发明涉及互联网技术领域,并且更具体地,涉及一种面向多源异构编程语言的智能源码翻译方法及系统。



背景技术:

随着计算机的迅猛发展,编程语言类型不断衍变,从面向机器语言到面向过程语言,到面向对象语言。如,在github网站搜索分类算法时,各编程语言占比分别:c语言2.5%,c++语言6.9%,java语言5.2%,python语言67.1%,其他语言18.3%。其中,海量多源异构编程语言实现相似功能,从而浪费软件开发成本。如:澳大利亚联邦银行用了5年时间迁移cobol系统,花费8亿美金。可以看出,单纯依赖人工移植工作量巨大,收效甚微。

目前,传统源码转换方法利用不同层次的源语言表征,主要分为基于文本、单词、抽象语法树、程序依赖图、度量元和混合多种表示等六类,但是针对字面相似度较低的克隆类型,则有效性不足。

目前用户对多源异构编程语言的翻译需求主要体现在三方面:

(1)目前国产超算进行众核化对面向过程c语言支持性更强,而海量科学计算程序是基于c++或fortran等编程语言实现,不仅面临程序迁移的问题,而且存在程序众核化的难题。

(2)由于多类型编程语言之间人工翻译具有极高的复杂性,技术人员不但具备源编程语言与目标编程语言的专业知识,而且还需要具备解决本科学问题的逻辑能力,从而增加代码翻译项目成本。

(3)目前传统的编程语言翻译智能化程度不高,最终的翻译结果通常缺乏代码可读性,需要手动修改后才能正常工作。

因此,需要一种能够将多源异构编程语言和深度学习技术有效结合,实现快速高效地将源编程语言翻译为用户需求的目标编程语言的方法。



技术实现要素:

本发明提出一种面向多源异构编程语言的智能源码翻译方法及系统,以解决如何地实现不同编程语言的源码的翻译问题。

为了解决上述问题,根据本发明的一个方面,提供了一种面向多源异构编程语言的智能源码翻译方法,所述方法包括:

获取能够实现相同功能的至少两种编码语言类型的编码源文件,并对获取的至少两种编码语言类型的编码源文件进行预处理,以获取bpecodes文件;

对每个编码源文件进行二进制化处理,以获取与每个编码源文件对应的二进制编码文件;

基于去噪自编码器构建初始的智能源码翻译模型,并利用所述二进制编码文件和bpecodes文件对所述初始的智能源码翻译模型进行预训练,以确定经过预训练的智能源码翻译模型;

利用所述二进制编码文件和bpecodes文件对所述经过预训练的智能源码翻译模型进行翻译训练,直至相邻两次的翻译后的数据和所述获取的至少两种编码语言类型的编码源文件的损失值的绝对误差值小于预设的绝对误差阈值时,确定当前的智能源码翻译模型为最终智能源码翻译模型;

根据目标编码语言类型,利用所述最终智能源码翻译模型进行待翻译源码文件的翻译,以确定与所述待翻译源码文件对应的目标编码语言类型的编码文件。

优选地,其中所述对获取的至少两种编码语言类型的编码源文件进行预处理,以获取bpecodes文件,包括:

根据编码语言类型对每个编码源文件的内容进行分词,并进行所有的词的统计,以生成vocab词典;

基于字节对编码方法对所述vocab词典和分词后的编码源文件进行处理,以获取bpecodes文件;其中,所述bpecodes文件,包括:单词名称和每个单词出现的次数。

优选地,其中所述利用所述二进制编码文件和bpecodes文件对所述初始的智能源码翻译模型进行预训练,以确定经过预训练的智能源码翻译模型,包括:

在所述二进制编码文件中加入基于所述bpecodes文件确定的随机噪声,并依次将加入随机噪声的二进制编码文件输入到所述初始的智能源码翻译模型中,对所述初始的智能源码翻译模型进行预训练,使得智能源码翻译模型能够输出未加入随机噪声的二进制编码文件,以确定经过与训练的智能源码翻译模型。

优选地,其中在确定最终智能源码翻译模型时,使用seq2seq网络同时训练两个模型,一个为源语言到目标语言的第一模型,所述第一模型能够输入有噪声的源语言句子,输出正确的目标语言,一个为目标语言到源语言的第二模型,所述第二模型能够输入目标语言的句子,输出预测的存在噪声的源语言。

优选地,其中所述方法还包括:

主控服务器根据接收的客户端发送的登录账号和密码对用户身份进行验证,待验证通过后,接收并解析客户端发送的翻译请求,以获取目标编码语言类型和待翻译的源码文件,并进行翻译,反馈与所述待翻译源码文件对应的目标编码语言类型的编码文件至所述客户端。

根据本发明的另一个方面,提供了一种面向多源异构编程语言的智能源码翻译系统,所述系统包括:

预处理单元,用于获取能够实现相同功能的至少两种编码语言类型的编码源文件,并对获取的至少两种编码语言类型的编码源文件进行预处理,以获取bpecodes文件;

二进制化处理单元,用于对每个编码源文件进行二进制化处理,以获取与每个编码源文件对应的二进制编码文件;

预训练单元,用于基于去噪自编码器构建初始的智能源码翻译模型,并利用所述二进制编码文件和bpecodes文件对所述初始的智能源码翻译模型进行预训练,以确定经过预训练的智能源码翻译模型;

智能源码翻译模型确定单元,用于利用所述二进制编码文件和bpecodes文件对所述经过预训练的智能源码翻译模型进行翻译训练,直至相邻两次的翻译后的数据和所述获取的至少两种编码语言类型的编码源文件的损失值的绝对误差值小于预设的绝对误差阈值时,确定当前的智能源码翻译模型为最终智能源码翻译模型;

翻译单元,用于根据目标编码语言类型,利用所述最终智能源码翻译模型进行待翻译源码文件的翻译,以确定与所述待翻译源码文件对应的目标编码语言类型的编码文件。

优选地,其中所述预处理单元,对获取的至少两种编码语言类型的编码源文件进行预处理,以获取bpecodes文件,包括:

根据编码语言类型对每个编码源文件的内容进行分词,并进行所有的词的统计,以生成vocab词典;

基于字节对编码系统对所述vocab词典和分词后的编码源文件进行处理,以获取bpecodes文件;其中,所述bpecodes文件,包括:单词名称和每个单词出现的次数。

优选地,其中所述预训练单元,利用所述二进制编码文件和bpecodes文件对所述初始的智能源码翻译模型进行预训练,以确定经过预训练的智能源码翻译模型,包括:

在所述二进制编码文件中加入基于所述bpecodes文件确定的随机噪声,并依次将加入随机噪声的二进制编码文件输入到所述初始的智能源码翻译模型中,对所述初始的智能源码翻译模型进行预训练,使得智能源码翻译模型能够输出未加入随机噪声的二进制编码文件,以确定经过与训练的智能源码翻译模型。

优选地,其中在确定最终智能源码翻译模型时,使用seq2seq网络同时训练两个模型,一个为源语言到目标语言的第一模型,所述第一模型能够输入有噪声的源语言句子,输出正确的目标语言,一个为目标语言到源语言的第二模型,所述第二模型能够输入目标语言的句子,输出预测的存在噪声的源语言。

优选地,其中所述系统还包括:

验证单元,用于主控服务器根据接收的客户端发送的登录账号和密码对用户身份进行验证,待验证通过后,接收并解析客户端发送的翻译请求,以获取目标编码语言类型和待翻译的源码文件,并进行翻译,反馈与所述待翻译源码文件对应的目标编码语言类型的编码文件至所述客户端。

本发明提供了一种面向多源异构编程语言的智能源码翻译方法及系统,包括:对获取的编码源文件进行预处理,以获取bpecodes文件,对每个编码源文件进行二进制化处理,以获取二进制编码文件;基于去噪自编码器构建初始的智能源码翻译模型,并将预处理完成的数据中加入随机噪声,通过预训练获得经过预训练的智能源码翻译模型;再重新读取多种语言预处理完成的数据,加入更多的噪声,通过自编码器输出无噪声的语句,把多语言之间对应片段映射在相近的潜在空间,获取能够实现多语言翻译的最终智能源码翻译模型;并利用所述最终智能源码翻译模型进行待翻译源码文件的翻译;整个翻译过程对用户来说是完全透明化的,当用户需要翻译源代码时仅需输入源代码即可,大大降低了开发人员复现代码功能的时间成本,极大地提高了开发人员的效率。

附图说明

通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:

图1为根据本发明实施方式的面向多源异构编程语言的智能源码翻译方法100的流程图;

图2为根据本发明实施方式的智能源码翻译模型训练过程的示意图;

图3为根据本发明实施方式的客户端使用智能源码翻译系统进行翻译的流程图;

图4为根据本发明实施方式的面向多源异构编程语言的智能源码翻译系统400的结构示意图。

具体实施方式

现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。

除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。

图1为根据本发明实施方式的面向多源异构编程语言的智能源码翻译方法100的流程图。如图1所示,本发明实施方式提供的面向多源异构编程语言的智能源码翻译方法,整个翻译过程对用户来说是完全透明化的,当用户需要翻译源代码时仅需输入源代码即可,大大降低了开发人员复现代码功能的时间成本,极大地提高了开发人员的效率。本发明实施方式提供的面向多源异构编程语言的智能源码翻译方法100,从步骤101处开始,在步骤101获取能够实现相同功能的至少两种编码语言类型的编码源文件,并对获取的至少两种编码语言类型的编码源文件进行预处理,以获取bpecodes文件。

优选地,其中所述对获取的至少两种编码语言类型的编码源文件进行预处理,以获取bpecodes文件,包括:

根据编码语言类型对每个编码源文件的内容进行分词,并进行所有的词的统计,以生成vocab词典;

基于字节对编码方法对所述vocab词典和分词后的编码源文件进行处理,以获取bpecodes文件;其中,所述bpecodes文件,包括:单词名称和每个单词出现的次数。

在步骤102,对每个编码源文件进行二进制化处理,以获取与每个编码源文件对应的二进制编码文件。

本发明通过采集大量的不同编码语言类型的源代码文件作为训练集,服务器把训练集作为输入数据,首先对该输入数据进行预处理,之后,送入无监督源码翻译系统进行训练得到智能源码翻译模型,最后,服务器把待翻译的源语言输入该模型既可以直接反馈输出需求的目标语言的代码文件。

在本发明分钟,采集的数据都是程序,如c语言的程序、python语言的程序、或者java、c++等语言的程序。经过晒选,挑出不同的编程语言中,实现同一种的功能的程序。例如,有1000个c语言的程序,实现了1000种功能,同时有100个python语言的程序,实现了100个功能,然后c语言数据集和python的数据集之间功能相同的有98个程序,因此,训练集就是这98个c语言程序和98个python程序。

在获取到训练数据后,根据编码语言类型对上述c语言、python等语言程序中的内容分别进行分词,并进行所有的词的统计,以生成一个vocab词典。然后,基于字节对编码方法bpecodes对所述vocab词典和分词后的编码源文件进行处理,以获取bpecodes文件;其中,所述bpecodes文件,包括:单词名称和每个单词出现的次数。

另外,本发明还需要对每个编码源文件进行二进制化处理,以获取与每个编码源文件对应的二进制编码文件。

在本发明中,训练集中的程序爬虫爬取下来后,根据编程语言类型分类,把相同编程语言类型的程序全部放进一个json文件中,以json的格式存储,json中的内容为一个一个的程序,一行表示一个程序。以c语言程序为例,json文件中包含着每个c语言程序的名称,路径,以及程序等内容。数据集准备好之后,对数据集进行预处理,生成vocab字典,再生成bpecodes文件。其中,通过把源编码程序转换成二进制,可以提高程序读取数据集的速度。

在步骤103,基于去噪自编码器构建初始的智能源码翻译模型,并利用所述二进制编码文件和bpecodes文件对所述初始的智能源码翻译模型进行预训练,以确定经过预训练的智能源码翻译模型。

优选地,其中所述利用所述二进制编码文件和bpecodes文件对所述初始的智能源码翻译模型进行预训练,以确定经过预训练的智能源码翻译模型,包括:

在所述二进制编码文件中加入基于所述bpecodes文件确定的随机噪声,并依次将加入随机噪声的二进制编码文件输入到所述初始的智能源码翻译模型中,对所述初始的智能源码翻译模型进行预训练,使得智能源码翻译模型能够输出未加入随机噪声的二进制编码文件,以确定经过与训练的智能源码翻译模型。

因为直接训练的话,效果会十分的差。因此,在本发明中,首先要进行模型的第一次训练,也是跨语言翻译预训练过程。

结合图2所示,在本发明中,基于去噪自编码器构建初始的智能源码翻译模型,然后在预训练过程中,会先读取c语言的二进制数据,然后在读取的数据中加入一些随机噪声,如,sheisateacher,加入噪声后,会变成sheisamask,通过预训练这个模型,让它最后能输出被打掩码的单词,即最后正确的输出应该为teacher。当该模型收敛之后,这个模型就可以用来进行下一步的真正训练,此时的模型为经过与训练的智能源码翻译模型。

本发明通过深度缩放法对模型参数进行初始化,以减少参数之间的方差,同时随机遮盖输入文本序列的部分词语,在输出层获得该位置的概率分布,通过深度强化学习算法,进而极大化似然概率来调整模型参数依赖不同语言中一些具有明显含义的相同分词,编程语言本身保留关键字具有大量重合,可以很自然地建立不同编程语言之间的联系,使模型有很好的语义抽取能力。

在步骤104,利用所述二进制编码文件和bpecodes文件对所述经过预训练的智能源码翻译模型进行翻译训练,直至相邻两次的翻译后的数据和所述获取的至少两种编码语言类型的编码源文件的损失值的绝对误差值小于预设的绝对误差阈值时,确定当前的智能源码翻译模型为最终智能源码翻译模型。

优选地,其中在确定最终智能源码翻译模型时,使用seq2seq网络同时训练两个模型,一个为源语言到目标语言的第一模型,所述第一模型能够输入有噪声的源语言句子,输出正确的目标语言,一个为目标语言到源语言的第二模型,所述第二模型能够输入目标语言的句子,输出预测的存在噪声的源语言。

在本发明中,这一步开始新一轮的训练,这一步的训练会生成两个模型,这两个模型其实是相对于3种语言来说的,如果语言种类增多,那这一步需要生成的模型就越多,但是可能效果也会变差,一般两种三种语言就可以了。具体地,重新读取二进制的编码文件,也同样是加入随机噪声。跟上一步不一样的是,上一步只是预测一个词,而这一次是预测一整句,这一步就是去噪自编码器翻译训练,同时,还会加入一个回译的过程,c语言程序翻译为python语言,以及python语言翻译为c语言。反复训练后,模型的翻译效果基本已经达到一种极限,然后再进一步使用深度强化学习的方法,优化最终的翻译效果,确定最终智能源码翻译模型。

本发明中去噪自编码翻译训练时,读取训练数据,并在数据中加入一些随机噪声,输入到去噪自编码器中,以获得原训练数据,通过训练多种编程语言,以获得多语言翻译模型,把多语言之间对应片段映射在相近的潜在空间。在回译的过程中,使用seq2seq网络同时训练两个模型,一个源语言到目标语言模型,一个目标语言到源语言模型。输入有噪声的源语言句子,输出正确的目标语言,输入目标语言的句子,输出可能有噪声的源语言。深度强化学习的过程为:以seq2seq网络输出的翻译结果为深度强化学习算法的输入,优化代码的可读性。当相邻两次的翻译后的数据和所述获取的至少两种编码语言类型的编码源文件的损失值的绝对误差值小于预设的绝对误差阈值时,表示此时完成了模型的训练,确定当前的智能源码翻译模型为最终智能源码翻译模型。

在步骤105,根据目标编码语言类型,利用所述最终智能源码翻译模型进行待翻译源码文件的翻译,以确定与所述待翻译源码文件对应的目标编码语言类型的编码文件。

优选地,其中所述方法还包括:

主控服务器根据接收的客户端发送的登录账号和密码对用户身份进行验证,待验证通过后,接收并解析客户端发送的翻译请求,以获取目标编码语言类型和待翻译的源码文件,并进行翻译,反馈与所述待翻译源码文件对应的目标编码语言类型的编码文件至所述客户端。

在本发明中,客户端向所述主控服务器发送登录账号和密码,所述主控服务器在所述用户身份数据库内进行验证,待验证通过,所述客户端生成一个下载请求信息,将该下载请求信息发送至所述主控服务器,所述主控服务器根据请求下载的存储地址访问数据存储服务器,数据存储服务器检索至对应的信息,供所述主控服务器下载,所述主控服务器将下载的已训练完成的模型返回给所述客户端。在进行不同编码类型的源码翻译时,如图3所示,主控服务器根据接收的客户端发送的登录账号和密码对用户身份进行验证,待验证通过后,接收并解析客户端发送的翻译请求,以获取目标编码语言类型和待翻译的源码文件,并进行翻译,反馈与所述待翻译源码文件对应的目标编码语言类型的编码文件至所述客户端。

本发明的面向多源异构编程语言的智能源码翻译系统,围绕序列到序列(seq2seq)模型、深度强化学习算法以及策略网络设计,该系统能够深度挖掘不同编程语言之间深层次特征相似性,更好的描述多源异构编程语言的语义。将编程源码数据进行数据预处理,并将预处理完成的数据发送至智能源码翻译系统。智能源码翻译系统根据数据特征,将预处理完成的数据中加入随机噪声,通过预训练获得单语言翻译模型,之后,重新读取多种语言预处理完成的数据,加入更多的噪声,通过自编码器输出无噪声的语句,把多语言之间对应片段映射在相近的潜在空间,获取多语言翻译模型,之后,通过使用seq2seq网络进行回译训练以及深度强化学习训练,提升翻译的准确率和代码的可读性。

利用本发明的模型能自动对用户输入的代码进行翻译,整个过程省去了人工尝试代码编写调整和模型生成的时间,对用户来说是一劳永逸的,也就是说,当用户下一次再用这个系统实现代码翻译时就可以直接使用训练好的模型进行翻译即可。

图4为根据本发明实施方式的面向多源异构编程语言的智能源码翻译系统400的结构示意图。如图4所示,本发明实施方式提供的面向多源异构编程语言的智能源码翻译系统400,包括:预处理单元401、二进制化处理单元402、预训练单元403、智能源码翻译模型确定单元404和翻译单元405。

优选地,所述预处理单元401,用于获取能够实现相同功能的至少两种编码语言类型的编码源文件,并对获取的至少两种编码语言类型的编码源文件进行预处理,以获取bpecodes文件。

优选地,其中所述预处理单元401,对获取的至少两种编码语言类型的编码源文件进行预处理,以获取bpecodes文件,包括:

根据编码语言类型对每个编码源文件的内容进行分词,并进行所有的词的统计,以生成vocab词典;

基于字节对编码系统对所述vocab词典和分词后的编码源文件进行处理,以获取bpecodes文件;其中,所述bpecodes文件,包括:单词名称和每个单词出现的次数。

优选地,所述二进制化处理单元402,用于对每个编码源文件进行二进制化处理,以获取与每个编码源文件对应的二进制编码文件。

优选地,所述预训练单元403,用于基于去噪自编码器构建初始的智能源码翻译模型,并利用所述二进制编码文件和bpecodes文件对所述初始的智能源码翻译模型进行预训练,以确定经过预训练的智能源码翻译模型。

优选地,其中所述预训练单元403,利用所述二进制编码文件和bpecodes文件对所述初始的智能源码翻译模型进行预训练,以确定经过预训练的智能源码翻译模型,包括:

在所述二进制编码文件中加入基于所述bpecodes文件确定的随机噪声,并依次将加入随机噪声的二进制编码文件输入到所述初始的智能源码翻译模型中,对所述初始的智能源码翻译模型进行预训练,使得智能源码翻译模型能够输出未加入随机噪声的二进制编码文件,以确定经过与训练的智能源码翻译模型。

优选地,所述智能源码翻译模型确定单元404,用于利用所述二进制编码文件和bpecodes文件对所述经过预训练的智能源码翻译模型进行翻译训练,直至相邻两次的翻译后的数据和所述获取的至少两种编码语言类型的编码源文件的损失值的绝对误差值小于预设的绝对误差阈值时,确定当前的智能源码翻译模型为最终智能源码翻译模型。

优选地,其中在确定最终智能源码翻译模型时,使用seq2seq网络同时训练两个模型,一个为源语言到目标语言的第一模型,所述第一模型能够输入有噪声的源语言句子,输出正确的目标语言,一个为目标语言到源语言的第二模型,所述第二模型能够输入目标语言的句子,输出预测的存在噪声的源语言。

优选地,所述翻译单元405,用于根据目标编码语言类型,利用所述最终智能源码翻译模型进行待翻译源码文件的翻译,以确定与所述待翻译源码文件对应的目标编码语言类型的编码文件。

优选地,其中所述系统还包括:

验证单元,用于主控服务器根据接收的客户端发送的登录账号和密码对用户身份进行验证,待验证通过后,接收并解析客户端发送的翻译请求,以获取目标编码语言类型和待翻译的源码文件,并进行翻译,反馈与所述待翻译源码文件对应的目标编码语言类型的编码文件至所述客户端。

本发明的实施例的面向多源异构编程语言的智能源码翻译系统400与本发明的另一个实施例的面向多源异构编程语言的智能源码翻译方法100相对应,在此不再赘述。

已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。

通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1