gpt4 book ai didi

machine-learning - 用于生成新编程语言语法的神经网络

转载 作者:行者123 更新时间:2023-11-30 08:24:04 26 4
gpt4 key购买 nike

我最近需要为转译器(将一种脚本语言转换为另一种脚本语言)的目的创建 ANTLR 语言语法。我认为谷歌翻译在翻译自然语言方面做得相当好。我们拥有各种递归神经网络模型、LSTM,并且 GPT-2 正在生成语法正确的文本。

问题:是否有一个模型足以训练语法/代码示例组合,以便在给定任意示例源代码的情况下输出新的语法文件?

最佳答案

我怀疑是否存在这样的模型。

主要问题是语言是从语法生成的,并且由于解析器树的数量无限,几乎不可能转换回来 code>(组合)可用于各种源代码。

因此,就您的情况而言,假设您在 python 代码(1000 个示例代码)上进行训练,则训练的结果语法将是相同的。因此,无论示例源代码如何,模型都将始终生成相同的语法。

如果您使用多种语言的训练样本,模型仍然无法生成语法,因为它包含无限多种可能性。

您的 Google 翻译示例适用于现实生活中的翻译,因为小错误是可以接受的,但这些模型并不依赖于为每种语言生成根语法。有一些可以翻译编程语言的工具 example ,但它们不生成语法,而是根据语法工作。

更新

如何从代码学习语法

在与一些 NLP 概念进行比较之后,我列出了可能出现的问题以及解决这些问题的方法。

  • 处理变量名称编码结构标记

    为了理解语法,我们必须将代码分解为其最低限度的形式。这意味着理解代码中每个术语的含义。看看这个例子

Syntax tree

已经很简单的表达式被简化为解析树。我们可以看到树分解了表达式,并将每个数字标记作为一个因子。这对于摆脱代码中的人为因素(例如变量名等)并深入了解实际语法非常重要。在 NLP 中,这个概念被称为 Part of Speech tagging 。您必须开发自己的方法来进行标记,因为只要您了解该语言的语法,这很容易。

  • 理解关系

    为此,您可以对简化的代码进行标记化,并使用基于您要查找的输出的模型进行训练。如果您想编写代码,请使用使用 LSTMngram 模型,如下所示 example 。模型将学习语法,但提取语法并不是一项简单的任务。您必须运行单独的代码来尝试提取模型学到的所有可能的关系。

示例

代码片段

# Sample code
int a = 1 + 2;
cout<<a;

标签

# Sample tags and tokens
int a = 1 + 2 ;
[int] [variable] [operator] [factor] [expr] [factor] [end]

如果存在足够的数据,保留运算符expr关键字应该没有关系,但它们将成为语法。

这是一个帮助理解我的想法的示例。您可以通过更深入地查看Theory of Computation来改进这一点。并了解自动机的工作原理和不同的语法

关于machine-learning - 用于生成新编程语言语法的神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56140879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com