Deep TabNine使用自然语言处理可以22种编程语言自动生成代码 | 智能技术

发布日期:2019-09-12 10:00



通过建议快速回复或完成句子,机器学习已经可以帮助您更快地编写电子邮件。但是,如果Google Smart Compose背后的概念也可以帮助人工智能软件开发人员提高效率呢?

雅各布杰克逊的目标是使用代码自动完成工具Deep TabNine。杰克逊是加拿大滑铁卢大学的计算机科学本科生,也是AI研究公司OpenAI的一名实习生,他于2018年11月首次推出TabNine作为代码完成插件,然后增加了深度学习功能来创建什么。现在称为Deep TabNine。

Deep TabNine使用由OpenAI设计的自然语言处理模型GPT-2来生成相关的编码建议并预测每行代码中的元素。类似于OpenAI在800万网页的数据集上训练GPT-2以“预测某些文本中所有先前单词的下一个单词”,杰克逊使用GPT-2训练Deep TabNine来自估计的200万个文件来自源代码托管和版本控制平台GitHub“预测给定前面的令牌的每个令牌。”

Deep TabNine可与现有代码编辑器和集成开发环境(IDE)配合使用,目前支持22种编程语言,包括C ++,CSS,HTML,Java,JavaScript,PHP,Python和SQL。

杰克逊谈到IEEE Spectrum关于Deep TabNine以及它如何帮助软件开发人员专注于解决问题,而不是导航编程语言的复杂性。

为了清楚起见,本次访谈已经过编辑。

IEEE Spectrum:什么让你了解Deep TabNine的想法?

杰克逊:我在一家软件公司工作,有两种自动完成工具可供使用:一种能很好地理解语言,但速度很慢,而且速度快但不好的一种。我想要介于两者之间的东西,它比其他工具更快但更智能。这演变为开发功能,例如使用深度学习模型对完成进行排名并尝试找出[代码]中的常见模式。那是创始人的目标,然后GPT-2发布了,我看到这种深度学习技术正朝着一个非常好的方向发展。鉴于TabNine是一个自动完成程序,我认为这是一个自然的契合。

IEEE Spectrum:您还可以告诉我们Deep TabNine的工作原理吗?

杰克逊:它基于GPT-2,而GPT-2的工作方式是你给它喂一系列令牌。您可以将一个标记视为一个单词,如果您有一个单词序列,那么它将为您分配您将要看到的单词。因此,要获得完成建议,您可以多次运行此模型,并询问它认为接下来会出现什么标记,然后再次[在实际代码上]再次运行它,那就是当您获得[建议列表]标记时。虽然它确实对文档和语法有一定的了解,但所有这些都是通过给出代码并使用它来预测接下来会发生什么来自然学习的。

IEEE Spectrum:开发Deep TabNine有什么困难?

杰克逊:应用深度学习的最大挑战是这些模型是计算密集型的,因为我们需要一个高性能和高响应系统,这是一个问题。我们开始提供Deep TabNine作为云服务,因此即使您的计算机功能不强,您仍然可以使用它。我们最近还发布了TabNine Local,它允许您在自己的计算机上运行Deep TabNine。

IEEE Spectrum:深度学习是否也使得将实现移植到不同语言更容易?

杰克逊:是的。这种与语言无关的方法的优点是它的所有知识都是从[特定编程]语言中的代码示例中获得的,因此很容易添加对新语言的支持。

IEEE Spectrum: Deep TabNine与IDE和代码编辑器的其他自动完成工具或类似功能有何不同?

杰克逊:很多工具只适用于一种语言或几种语言。另外,据我所知,这是唯一使用深度学习的自动完成器,我认为这可以提高建议质量。

IEEE Spectrum:开发人员对Deep TabNine有何期望?

杰克逊:目标是让[编码]更容易。假设您有一个想法,并且想要将其转换为代码,但是为了编写代码,您必须将其键入键盘,查看编辑器,并确保不会出错。我认为减少摩擦的工具的价值在于,它可以让你更专注于高级别的东西。您将花费更少的时间打字,它可以为您完成简单的事情。你不必浪费时间思考这个问题。

IEEE Spectrum: Deep TabNine的下一步是什么?

杰克逊:在机器学习中,您可以随时改进模型,改进数据,提出更好的建议。文档是我们正在考虑的一个领域。

使用Deep TabNine,我有时使用的类比是我们希望它就像使用键盘而不是[智能手机]键盘。它不像键盘正在为你编写代码,它更容易一些。使用键盘比使用“智能手机”键盘更高效,这基本上就是我们的目标。

Deep TabNine目前处于测试阶段,任何人都可以注册免费访问。