用AI实现C++、Java、Python代码互译
|
例如,Python中的except和Java、C++中的catch都用于获取异常,它们被映射到非常相似的嵌入空间位置。 对于映射的实现(map和dict)、用于将字符串转换为字符数组(c_str和toCharArray)以及类似的变量类型(例如long、int和Integer),也可以观察到相同的现象。 那么以上这些关键词的嵌入是如何获得的? Facebook提出了实现无监督编程语言机器翻译的三个原则。
首先,通过跨语言掩码语言模型(MLM)预处理来初始化模型,这有些类似于自然语言的填空题。结果是表达相同指令的代码片段被映射到与编程语言无关的相同表示。 其次是去噪自动编码,它能训练解码器始终生成有效序列,即使在输入有噪声的数据时也是如此,提高了编码器对输入噪声的鲁棒性。 最后是反向翻译,它允许模型生成可用于训练的并行数据。每当Python转C++模型变得更好时,它就会为C++转Python模型生成更精确的数据,反之亦然。 通过以上步骤,TransCoder在训练后获得了之前提到的跨语言嵌入。 我们观察到,TransCoder成功地理解了每种语言特有的语法、数据结构、函数库和方法。 在上面的图中,展示了Java和C++独有的三元运算符X ? A : B,翻译到Python中就变成了if X then A else B。
以下是一个从Python翻译到C++的实例。TransCoder推断变量和函数返回值的类型,将Python的deque()容器映射到C++中类似的实现deque<>,并使用C++的front、back、pop_back和push_back方法来检索和插入deque中的元素,而不是使用Python方括号、pop和append方法。 (编辑:怀化站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

