编程语言翻译模型的训练方法、装置、设备及存储介质转让专利

申请号 : CN202110021389.8

文献号 : CN112346737B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘玉徐国强

申请人 : 深圳壹账通智能科技有限公司

摘要 :

本申请涉及模型构建技术领域,公开了一种编程语言翻译模型的训练方法、装置、设备及存储介质,该方法包括:通过第一编码层对第一解答代码中的每个单词进行编码,得到第一解答代码中每个单词对应的第一特征向量;通过第二编码层对第二解答代码中的每个单词进行编码,得到第二解答代码中每个单词对应的第二特征向量;将第一解答代码中每个单词对应的第一特征向量和第二解答代码中对应单词的第二特征向量输入解码层,以预测第一解答代码对应的代码翻译结果;根据第一解答代码对应的代码翻译结果,调整编程语言翻译模型的模型参数,以对编程语言翻译模型进行训练。实施本申请实施例,提高了模型的构建效率。

权利要求 :

1.一种编程语言翻译模型的训练方法,其特征在于,所述编程语言翻译模型包括编码层和解码层,所述编码层包括第一编码层和第二编码层,所述编程语言翻译模型通过第一解答代码集和第二解答代码集训练得到,所述第一解答代码集和所述第二解答代码集一一对应,所述第一解答代码集中每个第一解答代码的编程语言为第一编程语言,所述第二解答代码集中每个第二解答代码的编程语言为第二编程语言,所述第一编程语言不同于所述第二编程语言,所述方法包括:

针对所述第一解答代码集中每个第一解答代码,将所述第一解答代码输入所述第一编码层,以通过所述第一编码层对所述第一解答代码中的每个单词进行编码,得到所述第一解答代码中每个单词对应的第一特征向量;

针对所述第二解答代码集中每个第二解答代码,将所述第二解答代码输入所述第二编码层,以通过所述第二编码层对所述第二解答代码中的每个单词进行编码,得到所述第二解答代码中每个单词对应的第二特征向量;

将所述第一解答代码中每个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层,以预测所述第一解答代码对应的代码翻译结果;

根据所述第一解答代码对应的代码翻译结果,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练;

在针对所述第一解答代码集中每个第一解答代码,将所述第一解答代码输入所述第一编码层,以通过所述第一编码层对所述第一解答代码中的每个单词进行编码,得到所述第一解答代码中每个单词对应的第一特征向量之前,所述方法还包括:通过网络爬虫从互联网中获取N个编程题中每个编程题对应的M个解答代码以及M个标签,所述N和所述M均为大于0的整数,所述M个解答代码和所述M个标签一一对应,所述M个标签中的每个标签用于指示所述M个解答代码中每个解答代码所采用的编程语言;

根据所述N个编程题中每个编程题对应的所述M个标签,从所述N个编程题中每个编程题对应的所述M个解答代码中,确定编程语言为所述第一编程语言的第一解答代码集和编程语言为所述第二编程语言的第二解答代码集。

2.根据权利要求1所述的方法,其特征在于,所述N个编程题中的一个编程题为第一编程题,所述根据所述N个编程题中每个编程题对应的所述M个标签,从所述N个编程题中每个编程题对应的所述M个解答代码中,确定编程语言为所述第一编程语言的第一解答代码集和编程语言为所述第二编程语言的第二解答代码集,包括:根据所述第一编程题对应的M个标签,从所述第一编程题对应的所述M个解答代码中,选择第三解答代码,所述第三解答代码为所述第一解答代码集中任意一个代码;

根据所述第一编程题对应的M‑1个标签,从所述第一编程题对应的M‑1个解答代码中,选择第四解答代码,所述第一编程题对应的M‑1个标签为所述第一编程题对应的所述M个标签中除所述第三解答代码对应的标签之外的其他标签,所述第一编程题对应的所述M‑1个解答代码为所述第一编程题对应的所述M个解答代码中除所述第三解答代码之外的其他解答代码,所述第四解答代码为所述第二解答代码集中与所述第三解答代码对应的解答代码。

3.根据权利要求1所述的方法,其特征在于,所述第一解答代码包括K个单词,所述K为大于0的整数,所述将所述第一解答代码中每个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层,以预测所述第一解答代码对应的代码翻译结果,包括:

S1:设置i的初始值为1;

S2:若所述i小于或等于所述K,则执行步骤S3;若所述i大于所述K,则执行步骤S6;

S3:将所述第一解答代码中第i个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层中,以预测所述第i个单词对应的代码翻译结果,其中,所述解码层包括第一隐向量和第二隐向量,所述第一隐向量是根据所述第一解答代码中所有单词的上下文信息确定的,所述第二隐向量是根据所述第二解答代码中所有单词的上下文信息确定的;

S4:将所述第i个单词对应的代码翻译结果保存在代码翻译结果库中;

S5:令i=i+1,返回执行步骤S2;

S6:从所述代码翻译结果库中,获取所述第一解答代码中每个单词对应的代码翻译结果,将所述第一解答代码中每个单词对应的代码翻译结果进行映射,以得到所述第一解答代码对应的代码翻译结果;

S7:结束预测所述第一解答代码对应的代码翻译结果。

4.根据权利要求3所述的方法,其特征在于,所述编程语言翻译模型还包括注意力层,所述方法还包括:

将所述第一解答代码中每个单词对应的第一特征向量和所述第一隐向量输入所述注意力层,以通过所述注意力层确定所述第一解答代码中每个单词对应的第一特征向量和所述第一隐向量之间的相似度;

根据所述第一解答代码中每个单词对应的第一特征向量和所述第一隐向量之间的相似度从高到低的顺序,对所述K个单词进行排序,得到排序后的所述K个单词。

5.根据权利要求4所述的方法,其特征在于,所述将所述第一解答代码中第i个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层中,以预测所述第一解答代码中第i个单词对应的代码翻译结果,包括:将所述排序后的所述K个单词中第i个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层中,以预测所述第i个单词对应的代码翻译结果。

6.根据权利要求1‑5任意一项所述的方法,其特征在于,所述根据所述第一解答代码对应的代码翻译结果,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练,包括:

根据预设损失函数、所述第一解答代码中每个单词对应的代码翻译结果以及所述第二解答代码中对应单词,确定所述第一解答代码中每个单词对应的损失值;

根据所述第一解答代码中每个单词对应的损失值的平均值,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练。

7.一种编程语言翻译模型的训练装置,其特征在于,所述编程语言翻译模型包括编码层和解码层,所述编码层包括第一编码层和第二编码层,所述编程语言翻译模型通过第一解答代码集和第二解答代码集训练得到,所述第一解答代码集和所述第二解答代码集一一对应,所述第一解答代码集中每个第一解答代码的编程语言为第一编程语言,所述第二解答代码集中每个第二解答代码的编程语言为第二编程语言,所述第一编程语言不同于所述第二编程语言,所述训练装置包括第一输入模块,第二输入模块、第三输入模块和处理模块,

所述第一输入模块,用于针对所述第一解答代码集中每个第一解答代码,将所述第一解答代码输入所述第一编码层,以通过所述第一编码层对所述第一解答代码中的每个单词进行编码,得到所述第一解答代码中每个单词对应的第一特征向量;

所述第二输入模块,用于针对所述第二解答代码集中每个第二解答代码,将所述第二解答代码输入所述第二编码层,以通过所述第二编码层对所述第二解答代码中的每个单词进行编码,得到所述第二解答代码中每个单词对应的第二特征向量;

所述第三输入模块,用于将所述第一解答代码中每个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层,以预测所述第一解答代码对应的代码翻译结果;

所述处理模块,用于根据所述第一解答代码对应的代码翻译结果,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练;

在针对所述第一解答代码集中每个第一解答代码,将所述第一解答代码输入所述第一编码层,以通过所述第一编码层对所述第一解答代码中的每个单词进行编码,得到所述第一解答代码中每个单词对应的第一特征向量之前,所述训练装置还包括获取模块和确定模块,

所述获取模块,用于通过网络爬虫从互联网中获取N个编程题中每个编程题对应的M个解答代码以及M个标签,所述N和所述M均为大于0的整数,所述M个解答代码和所述M个标签一一对应,所述M个标签中的每个标签用于指示所述M个解答代码中每个解答代码所采用的编程语言;

所述确定模块,用于根据所述N个编程题中每个编程题对应的所述M个标签,从所述N个编程题中每个编程题对应的所述M个解答代码中,确定编程语言为所述第一编程语言的第一解答代码集和编程语言为所述第二编程语言的第二解答代码集。

8.一种电子设备,其特征在于,包括处理器、存储器、通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被生成由所述处理器执行,以执行权利要求1‑6任一项方法中的步骤的指令。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述存储计算机程序被处理器执行,以实现权利要求1‑6任一项所述的方法。

说明书 :

编程语言翻译模型的训练方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及人工智能(Artificial Intelligence,AI)领域,尤其涉及编程语言翻译模型的训练方法、装置、设备及存储介质。

背景技术

[0002] 目前编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言。然而学习一门新的编程语言并不简单,需要花费大量的时间。而且有些编程语言语法十分复杂,
运用方式也十分灵活。因此,亟需一种可以将一种编程语言翻译为另一种编程语言的技术
手段。
[0003] 一般来说,在现有的模型中,需要由人工构建启发式的规则,以实现将一种编程语言翻译为另一种编程语言。具体的,假设需要将采用C语言编写的代码翻译为采用Python语
言编写的代码,那么就需要人工构建C语言以及Python语言涉及到的各种规则。这种模型的
构建效率低,不适用于未来更多应用场景。

发明内容

[0004] 本申请实施例提供了编程语言翻译模型的训练方法、装置、设备及存储介质,可以提高模型的构建效率。
[0005] 本申请第一方面提供了一种编程语言翻译模型的训练方法,所述编程语言翻译模型包括编码层和解码层,所述编码层包括第一编码层和第二编码层,所述编程语言翻译模
型通过第一解答代码集和第二解答代码集训练得到,所述第一解答代码集和所述第二解答
代码集一一对应,所述第一解答代码集中每个第一解答代码的编程语言为第一编程语言,
所述第二解答代码集中每个第二解答代码的编程语言为第二编程语言,所述第一编程语言
不同于所述第二编程语言,所述方法包括:
[0006] 针对所述第一解答代码集中每个第一解答代码,将所述第一解答代码输入所述第一编码层,以通过所述第一编码层对所述第一解答代码中的每个单词进行编码,得到所述
第一解答代码中每个单词对应的第一特征向量;
[0007] 针对所述第二解答代码集中每个第二解答代码,将所述第二解答代码输入所述第二编码层,以通过所述第二编码层对所述第二解答代码中的每个单词进行编码,得到所述
第二解答代码中每个单词对应的第二特征向量;
[0008] 将所述第一解答代码中每个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层,以预测所述第一解答代码对应的代码翻译结果;
[0009] 根据所述第一解答代码对应的代码翻译结果,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练。
[0010] 本申请第二方面提供了一种编程语言翻译模型的训练装置,所述编程语言翻译模型包括编码层和解码层,所述编码层包括第一编码层和第二编码层,所述编程语言翻译模
型通过第一解答代码集和第二解答代码集训练得到,所述第一解答代码集和所述第二解答
代码集一一对应,所述第一解答代码集中每个第一解答代码的编程语言为第一编程语言,
所述第二解答代码集中每个第二解答代码的编程语言为第二编程语言,所述第一编程语言
不同于所述第二编程语言,所述训练装置包括第一输入模块,第二输入模块、第三输入模块
和处理模块,
[0011] 所述第一输入模块,用于针对所述第一解答代码集中每个第一解答代码,将所述第一解答代码输入所述第一编码层,以通过所述第一编码层对所述第一解答代码中的每个
单词进行编码,得到所述第一解答代码中每个单词对应的第一特征向量;
[0012] 所述第二输入模块,用于针对所述第二解答代码集中每个第二解答代码,将所述第二解答代码输入所述第二编码层,以通过所述第二编码层对所述第二解答代码中的每个
单词进行编码,得到所述第二解答代码中每个单词对应的第二特征向量;
[0013] 所述第三输入模块,用于将所述第一解答代码中每个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层,以预测所述第一解答代码
对应的代码翻译结果;
[0014] 所述处理模块,用于根据所述第一解答代码对应的代码翻译结果,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练。
[0015] 本申请第三方面提供了一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被生成由所述处理器执
行,以执行一种编程语言翻译模型的训练方法任一项方法中的步骤的指令。
[0016] 本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述存储计算机程序被所述处理器执行,以实现一种编程语言翻译模型
的训练方法任一项所述的方法。
[0017] 可以看出,上述技术方案中,通过利用两个编码层分别对两种编程语言编写的代码进行编码,从而将编码后的特征向量输入解码层,以实现对编程语言翻译模型的训练,从
而避免了现有方案中需要人工构建规则导致的模型构建效率低的问题。同时,通过采用两
个编码层同时对不同的代码集进行处理,提高了编码效率,进而也提高了模型构建效率。

附图说明

[0018] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0019] 其中:
[0020] 图1是本申请实施例提供的一种编程语言翻译模型的示意图;
[0021] 图2是本申请实施例提供的一种编程语言翻译模型的训练方法的流程示意图;
[0022] 图3是本申请实施例提供的又一种编程语言翻译模型的训练方法的流程示意图;
[0023] 图4为本申请实施例提供的一种解码层进行预测的流程示意图;
[0024] 图5为本申请实施例提供的一种编程语言翻译模型的训练装置的示意图;
[0025] 图6为本申请的实施例涉及的硬件运行环境的电子设备结构示意图。

具体实施方式

[0026] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于
本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本申请保护的范围。
[0027] 以下分别进行详细说明。
[0028] 本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在
于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有
限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括
对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0029] 应理解的,本申请实施例提供的一种编程语言翻译模型的训练方法可以适用于电子设备,该电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、
计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(User 
Equipment,UE),移动台(Mobile Station,MS),终端设备(terminal device)等,在此不做
限制。
[0030] 参见图1,图1是本申请实施例提供的一种编程语言翻译模型的示意图。其中,如图1所示,该编程语言翻译模型100包括编码层110和解码层120,编码层110包括第一编码层
1101和第二编码层1102。其中,第一编码层1101和第二编码层1102可以为TransCoder模型
的编码层。解码层120可以为TransCoder模型的解码层。
[0031] 另外,该编程语言翻译模型100还可以包括注意力层130。
[0032] 参见图2,图2是本申请实施例提供的一种编程语言翻译模型的训练方法的流程示意图。所述编程语言翻译模型包括编码层和解码层,所述编码层包括第一编码层和第二编
码层,所述编程语言翻译模型通过第一解答代码集和第二解答代码集训练得到,所述第一
解答代码集和所述第二解答代码集一一对应,所述第一解答代码集中每个第一解答代码的
编程语言为第一编程语言,所述第二解答代码集中每个第二解答代码的编程语言为第二编
程语言,所述第一编程语言不同于所述第二编程语言。
[0033] 示例性的,若第一编程语言为C语言,第二编程语言为C++语言;若第一编程语言为C语言,第二编程语言为Java语言;若第一编程语言为C语言,第二编程语言为Python语言;
若第一编程语言为C语言,第二编程语言为PHP语言;若第一编程语言为Python语言,第二编
程语言为Java语言。
[0034] 其中,如图2所示,所述方法包括:
[0035] 201、针对所述第一解答代码集中每个第一解答代码,将所述第一解答代码输入所述第一编码层,以通过所述第一编码层对所述第一解答代码中的每个单词进行编码,得到
所述第一解答代码中每个单词对应的第一特征向量。
[0036] 需要说明,在本申请中,第一解答代码中的每个单词可以理解为第一解答代码中的一个英文单词、一个数字、一个汉字等,在此不做限制。
[0037] 可选的,步骤201可以包括:针对所述第一解答代码集中每个第一解答代码,在所述第一解答代码的起始位置插入开始符号[CLS]以及结束位置插入结束符号[SEP],得到新
的所述第一解答代码;将所述新的所述第一解答代码输入所述第一编码层,以通过所述第
一编码层对所述新的所述第一解答代码中的每个单词进行编码,得到所述新的所述第一解
答代码中每个单词对应的第一特征向量。
[0038] 其中,所述新的所述第一解答代码还包括开始符号[CLS]和结束符号[SEP]。
[0039] 可以理解的,开始符号[CLS]和结束符号[SEP]可以作为所述第一解答代码进行编码的开始信号和结束信号。
[0040] 202、针对所述第二解答代码集中每个第二解答代码,将所述第二解答代码输入所述第二编码层,以通过所述第二编码层对所述第二解答代码中的每个单词进行编码,得到
所述第二解答代码中每个单词对应的第二特征向量。
[0041] 需要说明,在本申请中,第二解答代码中的每个单词可以理解为第二解答代码中的一个英文单词、一个数字、一个汉字等,在此不做限制。
[0042] 可选的,步骤202可以包括:针对所述第二解答代码集中每个第二解答代码,在所述第二解答代码的起始位置插入开始符号[CLS],得到新的所述第二解答代码;将所述新的
所述第二解答代码输入所述第二编码层,以通过所述第二编码层对所述新的所述第二解答
代码中的每个单词进行编码,得到所述新的所述第二解答代码中每个单词对应的第二特征
向量。
[0043] 其中,所述新的所述第二解答代码还包括开始符号[CLS]。
[0044] 可以理解的,开始符号[CLS]可以作为所述第二解答代码进行编码的开始信号。
[0045] 需要说明的,在本申请中,所述第一解答代码集中每个第一解答代码包括的单词数量和所述第二解答代码集中对应第二解答代码包括的单词数量相同。因此,当第一解答
代码插入开始符号[CLS]和结束符号[SEP]时,第二解答代码集中对应第二解答代码只需要
插入开始符号[CLS],而无需插入结束符号[SEP]。
[0046] 203、将所述第一解答代码中每个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层,以预测所述第一解答代码对应的代码翻译结
果。
[0047] 可选的,步骤203可以包括:将所述新的所述第一解答代码中每个单词对应的第一特征向量和所述新的所述第二解答代码中对应单词的第二特征向量输入所述解码层,以预
测所述第一解答代码对应的代码翻译结果。
[0048] 204、根据所述第一解答代码对应的代码翻译结果,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练。
[0049] 可以看出,上述技术方案中,通过利用两个编码层分别对两种编程语言编写的代码进行编码,从而将编码后的特征向量输入解码层,以实现对编程语言翻译模型的训练,从
而避免了现有方案中需要人工构建规则导致的模型构建效率低的问题。同时,通过采用两
个编码层同时对不同的代码集进行处理,提高了编码效率,进而也提高了模型构建效率。
[0050] 参见图3,图3是本申请实施例提供的又一种编程语言翻译模型的训练方法的流程示意图。所述编程语言翻译模型包括编码层和解码层,所述编码层包括第一编码层和第二
编码层,所述编程语言翻译模型通过第一解答代码集和第二解答代码集训练得到,所述第
一解答代码集和所述第二解答代码集一一对应,所述第一解答代码集中每个第一解答代码
的编程语言为第一编程语言,所述第二解答代码集中每个第二解答代码的编程语言为第二
编程语言,所述第一编程语言不同于所述第二编程语言。
[0051] 示例性的,若第一编程语言为C语言,第二编程语言为C++语言;若第一编程语言为C语言,第二编程语言为Java语言;若第一编程语言为C语言,第二编程语言为Python语言;
若第一编程语言为C语言,第二编程语言为PHP语言;若第一编程语言为Python语言,第二编
程语言为Java语言。
[0052] 其中,如图3所示,所述方法包括:
[0053] 301、通过网络爬虫从互联网中获取N个编程题中每个编程题对应的M个解答代码以及M个标签,所述N和所述M均为大于0的整数,所述M个解答代码和所述M个标签一一对应,
所述M个标签中的每个标签用于指示所述M个解答代码中每个解答代码所采用的编程语言。
[0054] 其中,网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
[0055] 可选的,网络爬虫可以包括:通用网络爬虫(General Purpose Web Crawler)、聚焦网络爬虫(Focused Web Crawler)、增量式网络爬虫(Incremental Web Crawler)、深层
网络爬虫(Deep Web Crawler)等,在此不做限制。
[0056] 其中,所述M个标签中的不同标签用于指示所述M个解答代码中不同解答代码所采用的编程语言不同。
[0057] 示例性的,若第二编程题为N个编程题中任意一个编程题,第二编程题对应3个标签。其中,标签1用于指示第二编程题对应的解答代码1所采用的编程语言为第一编程语言;
标签2用于指示第二编程题对应的解答代码2所采用的编程语言为第二编程语言;标签3用
于指示第二编程题对应的解答代码3所采用的编程语言为不同于第一编程语言和第二编程
语言的编程语言。那么,可以根据第二编程题对应的3个标签,确定编程语言为第一编程语
言的解答代码1和编程语言为第二编程语言的解答代码2。
[0058] 可选的,在本申请中,标签可以用不同的比特来表示。示例性的,M个标签包括第一标签和第二标签,第一标签用于指示所述M个解答代码中编程语言为第一编程语言的解答
代码,第二标签用于指示所述M个解答代码中编程语言为第二编程语言的解答代码。若第一
标签为“0”比特,第二标签可以为“1”比特;或,若第一标签为“1”比特,第二标签可以为“0”
比特。
[0059] 302、根据所述N个编程题中每个编程题对应的所述M个标签,从所述N个编程题中每个编程题对应的所述M个解答代码中,确定编程语言为所述第一编程语言的第一解答代
码集和编程语言为所述第二编程语言的第二解答代码集。
[0060] 其中,第一解答代码集可以包括N个编程题中不同编程题目对应的第一编程语言编写的解答代码,第二解答代码集包括N个编程题中不同编程题目对应的第二编程语言编
写的解答代码,在此不做限制。
[0061] 可选的,所述N个编程题中的一个编程题为第一编程题,步骤302可以包括:根据所述第一编程题对应的M个标签,从所述第一编程题对应的所述M个解答代码中,选择第三解
答代码,所述第三解答代码为所述第一解答代码集中任意一个代码;根据所述第一编程题
对应的M‑1个标签,从所述第一编程题对应的M‑1个解答代码中,选择第四解答代码,所述第
一编程题对应的M‑1个标签为所述第一编程题对应的所述M个标签中除所述第三解答代码
对应的标签之外的其他标签,所述第一编程题对应的所述M‑1个解答代码为所述第一编程
题对应的所述M个解答代码中除所述第三解答代码之外的其他解答代码,所述第四解答代
码为所述第二解答代码集中与所述第三解答代码对应的解答代码。
[0062] 其中,所述第三解答代码和所述第四解答代码为同一编程题不同编程语言编写的解答代码。
[0063] 可以看出,上述技术方案中,通过基于标签来确定不同编程语言编写的解答代码,从而实现了高效确定不同编程语言编写的解答代码。
[0064] 303‑306、与图2中步骤201‑204相同,在此不加赘述。
[0065] 可以看出,上述技术方案中,通过网络爬虫获取大量编程题对应的不同解答代码,以确定不同编程语言的解答代码集,从而可以利用两个编码层分别对两种编程语言编写的
代码进行编码,并将编码后的特征向量输入解码层,以实现对编程语言翻译模型的训练,从
而避免了现有方案中需要人工构建规则导致的模型构建效率低的问题。同时,通过采用两
个编码层同时对不同的代码集进行处理,提高了编码效率,进而也提高了模型构建效率。
[0066] 可选的,所述第一解答代码包括K个单词,所述K为大于0的整数,所述将所述第一解答代码中每个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向
量输入所述解码层,以预测所述第一解答代码对应的代码翻译结果,包括:
[0067] S1:设置i的初始值为1;
[0068] S2:若所述i小于或等于所述K,则执行步骤S3;若所述i大于所述K,则执行步骤S6;
[0069] S3:将所述第一解答代码中第i个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层中,以预测所述第i个单词对应的代码翻译结
果,其中,所述解码层包括第一隐向量和第二隐向量,所述第一隐向量是根据所述第一解答
代码中所有单词的上下文信息确定的,所述第二隐向量是根据所述第二解答代码中所有单
词的上下文信息确定的;
[0070] S4:将所述第i个单词对应的代码翻译结果保存在代码翻译结果库中;
[0071] S5:令i=i+1,返回执行步骤S2;
[0072] S6:从所述代码翻译结果库中,获取所述第一解答代码中每个单词对应的代码翻译结果,将所述第一解答代码中每个单词对应的代码翻译结果进行映射,以得到所述第一
解答代码对应的代码翻译结果;
[0073] S7:结束预测所述第一解答代码对应的代码翻译结果。
[0074] 其中,所述第一隐向量是从所述第一解码层获取的,所述第二隐向量是从所述第二解码层获取的。
[0075] 其中,代码翻译结果库例如可以为数据库或区块链,在此不做限定。
[0076] 可以理解的,区块链是一种按照时间顺序将数据区块相连的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。该区块链可以包括区块链底层
平台、平台产品服务层以及应用服务层等。
[0077] 进一步的,区块链的特性有开放、共识、去中心、去信任、透明、双方匿名、不可篡改以及可追溯等。其中,开放与透明意为任何人都可以参与到区块链网络,每一台设备都能作
为一个节点,每个节点都允许获得一份完整的数据库拷贝。节点基于一套共识机制,通过竞
争计算共同维护整个区块链。任一节点失效,其余节点仍能正常工作。其中,去中心化与去
信任意为区块链由众多节点共同组成一个端到端的网络,不存在中心化的设备和管理机
构。节点之间数据交换通过数字签名技术进行验证,无需互相信任,只要按照系统既定的规
则进行,节点之间不能也无法欺骗其他节点。其中,透明与双方匿名意为区块链的运行规则
是公开的,所有的数据信息也是公开的,因此每一笔交易都对所有节点可见。由于节点与节
点之间是去信任的,因此节点之间无需公开身份,每个参与的节点都是匿名的。其中,不可
篡改和可追溯意为每个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能
控制整个网络中超过51%的节点同时修改,这是几乎不可能发生的。区块链中的,每一笔交
易都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一笔交易记录。
[0078] 具体的,区块链可以利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化
脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。因
此,区块链技术不可篡改的特性从根本上改变了中心化的信用创建方式,有效提高了数据
的不可更改性以及安全性。其中,由于智能合约使得所有的条款编写为程序,这些条款可在
区块链上自动执行,保证了当存在触发智能合约的条件时,区块链能强制根据智能合约中
的内容执行,且不受任何外力阻挡,从而保证了合约的有效性和执行力,不仅能够大大降低
成本,也能提高效率。区块链上的各个节点都有相同的账本,能够确保账本记录过程是公开
透明的。区块链技术可以实现了一种点对点的、公开透明的直接交互,使得高效率、大规模、
无中心化代理的信息交互方式成为了现实。
[0079] 示例性的,若第一解答代码包括[s1]、[s2]和[s3],其中,[s1]、[s2]和[s3]表示3个不同的单词。参见图4,图4为本申请实施例提供的一种解码层进行预测的流程示意图。如图
4所示,先将[s1]对应的第一特征向量和第二解答代码中对应单词的第二特征向量输入该
解码层,以预测[s1]对应的代码翻译结果;然后再将[s2]对应的第一特征向量和第二解答代
码中对应单词的第二特征向量输入该解码层,以预测[s2]对应的代码翻译结果;最后将[s3]
对应的第一特征向量和第二解答代码中对应单词的第二特征向量输入该解码层,以预测
[s3]对应的代码翻译结果。
[0080] 可以看出,上述技术方案中,通过第一解答代码中第i个单词对应的第一特征向量和第二解答代码中对应单词的第二特征向量输入解码层,从而实现了将不同编程语言编写
的解答代码同时输入解码层,进而使得训练后的编程语言翻译模型能够更好的进行编程语
言的翻译,提高了代码翻译的精准性,也提高了训练后的编程语言翻译模型的泛化能力。
[0081] 可选的,所述编程语言翻译模型还包括注意力层,所述方法还包括:
[0082] 将所述第一解答代码中每个单词对应的第一特征向量和所述第一隐向量输入所述注意力层,以通过所述注意力层确定所述第一解答代码中每个单词对应的第一特征向量
和所述第一隐向量之间的相似度;
[0083] 根据所述第一解答代码中每个单词对应的第一特征向量和所述第一隐向量之间的相似度从高到低的顺序,对所述K个单词进行排序,得到排序后的所述K个单词。
[0084] 其中,该方法还可以包括:将开始符号和结束符号分别对应的第一特征向量和所述第一隐向量输入所述注意力层,以通过所述注意力层确定开始符号和结束符号分别对应
的第一特征向量和所述第一隐向量之间的相似度。可以理解的,针对第一解答代码集中每
个第一解答代码,其开始符号和结束符号分别对应的第一特征向量和所述第一隐向量之间
的相似度均相同。
[0085] 其中,该方法还可以包括:将开始符号对应的第二特征向量和所述第二隐向量输入所述注意力层,以通过所述注意力层确定开始符号对应的第二特征向量和所述第二隐向
量之间的相似度。可以理解的,针对第二解答代码集中每个第二解答代码,其开始符号对应
的第二特征向量和所述第二隐向量之间的相似度均相同。
[0086] 可以看出,上述技术方案中,通过在注意力层确定相似度,从而可以按照相似度从高到低的顺序对第一解答代码中的单词进行排序,以重新调整第一解答代码中的单词的顺
序。
[0087] 可选的,所述将所述第一解答代码中第i个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层中,以预测所述第一解答代码中第i
个单词对应的代码翻译结果,包括:
[0088] 将所述排序后的所述K个单词中第i个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层中,以预测所述第i个单词对应的代码翻
译结果。
[0089] 可以看出,上述技术方案中,通过重新调整第一解答代码中的单词的顺序,从而在利用解码层进行预测时避免语序颠倒的问题。
[0090] 可选的,所述根据所述第一解答代码对应的代码翻译结果,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练,包括:
[0091] 根据预设损失函数、所述第一解答代码中每个单词对应的代码翻译结果以及所述第二解答代码中对应单词,确定所述第一解答代码中每个单词对应的损失值;
[0092] 根据所述第一解答代码中每个单词对应的损失值的平均值,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练。
[0093] 其中,预设损失函数例如可以为交叉熵损失函数,在此不做限制。
[0094] 需要说明的,当编程语言翻译模型收敛时,停止训练。
[0095] 参见图5,图5为本申请实施例提供的一种编程语言翻译模型的训练装置的示意图。其中,如图5所示,该编程语言翻译模型的训练装置500可以包括第一输入模块501,第二
输入模块502、第三输入模块503和处理模块504。
[0096] 其中,所述编程语言翻译模型包括编码层和解码层,所述编码层包括第一编码层和第二编码层,所述编程语言翻译模型通过第一解答代码集和第二解答代码集训练得到,
所述第一解答代码集和所述第二解答代码集一一对应,所述第一解答代码集中每个第一解
答代码的编程语言为第一编程语言,所述第二解答代码集中每个第二解答代码的编程语言
为第二编程语言,所述第一编程语言不同于所述第二编程语言。
[0097] 其中,所述第一输入模块501,用于针对所述第一解答代码集中每个第一解答代码,将所述第一解答代码输入所述第一编码层,以通过所述第一编码层对所述第一解答代
码中的每个单词进行编码,得到所述第一解答代码中每个单词对应的第一特征向量;
[0098] 所述第二输入模块502,用于针对所述第二解答代码集中每个第二解答代码,将所述第二解答代码输入所述第二编码层,以通过所述第二编码层对所述第二解答代码中的每
个单词进行编码,得到所述第二解答代码中每个单词对应的第二特征向量;
[0099] 所述第三输入模块503,用于将所述第一解答代码中每个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层,以预测所述第一解答
代码对应的代码翻译结果;
[0100] 所述处理模块504,用于根据所述第一解答代码对应的代码翻译结果,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练。
[0101] 可以看出,上述技术方案中,通过利用两个编码层分别对两种编程语言编写的代码进行编码,从而将编码后的特征向量输入解码层,以实现对编程语言翻译模型的训练,从
而避免了现有方案中需要人工构建规则导致的模型构建效率低的问题。同时,通过采用两
个编码层同时对不同的代码集进行处理,提高了编码效率,进而也提高了模型构建效率。
[0102] 可选的,在针对所述第一解答代码集中每个第一解答代码,将所述第一解答代码输入所述第一编码层,以通过所述第一编码层对所述第一解答代码中的每个单词进行编
码,得到所述第一解答代码中每个单词对应的第一特征向量之前,所述训练装置还包括获
取模块505和确定模块506,所述获取模块505,用于通过网络爬虫从互联网中获取N个编程
题中每个编程题对应的M个解答代码以及M个标签,所述N和所述M均为大于0的整数,所述M
个解答代码和所述M个标签一一对应,所述M个标签中的每个标签用于指示所述M个解答代
码中每个解答代码所采用的编程语言;所述确定模块506,用于根据所述N个编程题中每个
编程题对应的所述M个标签,从所述N个编程题中每个编程题对应的所述M个解答代码中,确
定编程语言为所述第一编程语言的第一解答代码集和编程语言为所述第二编程语言的第
二解答代码集。
[0103] 可以看出,上述技术方案中,通过网络爬虫获取大量编程题对应的不同解答代码,以确定不同编程语言的解答代码集。
[0104] 可选的,第一编程题为所述N个编程题中的一个编程题,所述根据所述N个编程题中每个编程题对应的所述M个标签,从所述N个编程题中每个编程题对应的所述M个解答代
码中,确定编程语言为所述第一编程语言的第一解答代码集和编程语言为所述第二编程语
言的第二解答代码集方面,所述确定模块506,具体用于根据所述第一编程题对应的M个标
签,从所述第一编程题对应的所述M个解答代码中,选择第三解答代码,所述第三解答代码
为所述第一解答代码集中任意一个代码;根据所述第一编程题对应的M‑1个标签,从所述第
一编程题对应的M‑1个解答代码中,选择第四解答代码,所述第一编程题对应的M‑1个标签
为所述第一编程题对应的所述M个标签中除所述第三解答代码对应的标签之外的其他标
签,所述第一编程题对应的所述M‑1个解答代码为所述第一编程题对应的所述M个解答代码
中除所述第三解答代码之外的其他解答代码,所述第四解答代码为所述第二解答代码集中
与所述第三解答代码对应的解答代码。
[0105] 可以看出,上述技术方案中,通过基于标签来确定不同编程语言编写的解答代码,从而实现了高效确定不同编程语言编写的解答代码。
[0106] 可选的,所述第一解答代码包括K个单词,所述K为大于0的整数,所述将所述第一解答代码中每个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向
量输入所述解码层,以预测所述第一解答代码对应的代码翻译结果方面,所述第三输入模
块503,具体用于S1:设置i的初始值为1;S2:若所述i小于或等于所述K,则执行步骤S3;若所
述i大于所述K,则执行步骤S6;S3:将所述第一解答代码中第i个单词对应的第一特征向量
和所述第二解答代码中对应单词的第二特征向量输入所述解码层中,以预测所述第i个单
词对应的代码翻译结果,其中,所述解码层包括第一隐向量和第二隐向量,所述第一隐向量
是根据所述第一解答代码中所有单词的上下文信息确定的,所述第二隐向量是根据所述第
二解答代码中所有单词的上下文信息确定的;S4:将所述第i个单词对应的代码翻译结果保
存在代码翻译结果库中;S5:令i=i+1,返回执行步骤S2;S6:从所述代码翻译结果库中,获取
所述第一解答代码中每个单词对应的代码翻译结果,将所述第一解答代码中每个单词对应
的代码翻译结果进行映射,以得到所述第一解答代码对应的代码翻译结果;S7:结束预测所
述第一解答代码对应的代码翻译结果。
[0107] 可以看出,上述技术方案中,通过第一解答代码中第i个单词对应的第一特征向量和第二解答代码中对应单词的第二特征向量输入解码层,从而实现了将不同编程语言编写
的解答代码同时输入解码层,进而使得训练后的编程语言翻译模型能够更好的进行编程语
言的翻译,提高了代码翻译的精准性,也提高了训练后的编程语言翻译模型的泛化能力。
[0108] 可选的,所述编程语言翻译模型还包括注意力层,所述处理模块504,还用于将所述第一解答代码中每个单词对应的第一特征向量和所述第一隐向量输入所述注意力层,以
通过所述注意力层确定所述第一解答代码中每个单词对应的第一特征向量和所述第一隐
向量之间的相似度;根据所述第一解答代码中每个单词对应的第一特征向量和所述第一隐
向量之间的相似度从高到低的顺序,对所述K个单词进行排序,得到排序后的所述K个单词。
[0109] 可以看出,上述技术方案中,通过在注意力层确定相似度,从而可以按照相似度从高到低的顺序对第一解答代码中的单词进行排序,以重新调整第一解答代码中的单词的顺
序,从而在利用解码层进行预测时避免语序颠倒的问题。
[0110] 可选的,所述将所述第一解答代码中第i个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层中,以预测所述第一解答代码中第i
个单词对应的代码翻译结果方面,所述第三输入模块503,具体用于将所述排序后的所述K
个单词中第i个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量
输入所述解码层中,以预测所述第i个单词对应的代码翻译结果。
[0111] 可以看出,上述技术方案中,通过重新调整第一解答代码中的单词的顺序,从而在利用解码层进行预测时避免语序颠倒的问题。
[0112] 可选的,所述根据所述第一解答代码对应的代码翻译结果,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练方面,所述处理模块504,具体用
于根据预设损失函数、所述第一解答代码中每个单词对应的代码翻译结果以及所述第二解
答代码中对应单词,确定所述第一解答代码中每个单词对应的损失值;根据所述第一解答
代码中每个单词对应的损失值的平均值,调整所述编程语言翻译模型的模型参数,以对所
述编程语言翻译模型进行训练。
[0113] 参见图6,图6为本申请的实施例涉及的硬件运行环境的电子设备结构示意图。
[0114] 本申请实施例提供了一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执
行,以执行包括任一项编程语言翻译模型的训练方法中的步骤的指令。其中,如图6所示,本
申请的实施例涉及的硬件运行环境的电子设备可以包括:
[0115] 处理器601,例如CPU。
[0116] 存储器602,可选的,存储器可以为高速RAM存储器,也可以是稳定的存储器,例如磁盘存储器。
[0117] 通信接口603,用于实现处理器601和存储器602之间的连接通信。
[0118] 本领域技术人员可以理解,图6中示出的电子设备的结构并不构成对其的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0119] 如图6所示,存储器602中可以包括操作系统、网络通信模块以及一个或多个程序。操作系统是管理和控制服务器硬件和软件资源的程序,支持一个或多个程序的运行。网络
通信模块用于实现存储器602内部各组件之间的通信,以及与电子设备内部其他硬件和软
件之间通信。
[0120] 其中,所述编程语言翻译模型包括编码层和解码层,所述编码层包括第一编码层和第二编码层,所述编程语言翻译模型通过第一解答代码集和第二解答代码集训练得到,
所述第一解答代码集和所述第二解答代码集一一对应,所述第一解答代码集中每个第一解
答代码的编程语言为第一编程语言,所述第二解答代码集中每个第二解答代码的编程语言
为第二编程语言,所述第一编程语言不同于所述第二编程语言,在图6所示的电子设备中,
处理器601用于执行存储器602中一个或多个程序,实现以下步骤:
[0121] 针对所述第一解答代码集中每个第一解答代码,将所述第一解答代码输入所述第一编码层,以通过所述第一编码层对所述第一解答代码中的每个单词进行编码,得到所述
第一解答代码中每个单词对应的第一特征向量;
[0122] 针对所述第二解答代码集中每个第二解答代码,将所述第二解答代码输入所述第二编码层,以通过所述第二编码层对所述第二解答代码中的每个单词进行编码,得到所述
第二解答代码中每个单词对应的第二特征向量;
[0123] 将所述第一解答代码中每个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层,以预测所述第一解答代码对应的代码翻译结果;
[0124] 根据所述第一解答代码对应的代码翻译结果,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练。
[0125] 本申请涉及的电子设备的具体实施可参见上述编程语言翻译模型的训练方法的各实施例,在此不做赘述。
[0126] 本申请还提供了一种计算机可读存储介质,其中,所述编程语言翻译模型包括编码层和解码层,所述编码层包括第一编码层和第二编码层,所述编程语言翻译模型通过第
一解答代码集和第二解答代码集训练得到,所述第一解答代码集和所述第二解答代码集一
一对应,所述第一解答代码集中每个第一解答代码的编程语言为第一编程语言,所述第二
解答代码集中每个第二解答代码的编程语言为第二编程语言,所述第一编程语言不同于所
述第二编程语言,所述计算机可读存储介质用于存储计算机程序,所述存储计算机程序被
所述处理器执行,以实现以下步骤:
[0127] 针对所述第一解答代码集中每个第一解答代码,将所述第一解答代码输入所述第一编码层,以通过所述第一编码层对所述第一解答代码中的每个单词进行编码,得到所述
第一解答代码中每个单词对应的第一特征向量;
[0128] 针对所述第二解答代码集中每个第二解答代码,将所述第二解答代码输入所述第二编码层,以通过所述第二编码层对所述第二解答代码中的每个单词进行编码,得到所述
第二解答代码中每个单词对应的第二特征向量;
[0129] 将所述第一解答代码中每个单词对应的第一特征向量和所述第二解答代码中对应单词的第二特征向量输入所述解码层,以预测所述第一解答代码对应的代码翻译结果;
[0130] 根据所述第一解答代码对应的代码翻译结果,调整所述编程语言翻译模型的模型参数,以对所述编程语言翻译模型进行训练。
[0131] 本申请涉及的计算机可读存储介质的具体实施可参见上述编程语言翻译模型的训练方法的各实施例,在此不做赘述。
[0132] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应所述知悉,本申请并不受所描述的动作顺序的限制,因
为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应所述
知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申
请所必须的。
[0133] 以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前
述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些
修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。