机器之心整理
参与:思源、一鸣
在项目开发中,优秀的代码自动补全工具可以提升工作效率。然而,近来的 IDE 基本都使用搜索方法进行补全,在一些场景下效果不佳。近日,有开源项目用深度学习模型进行代码补全,显示出非常有潜力的效果。
近日,Reddit 上的一篇帖子引起了网友的热议。帖子作者「mlvpj」称:
「我们使用深度学习完成了一个简单的项目,可以自动进行 Python 代码补全。」
根据介绍,该项目基于 LSTM 模型,训练后,负责对代码的缺失部分进行补全。评价模型的方法是判断节省了多少的按键信息即模型给出长度为 L 的代码建议,如果和真实的代码匹配,则节省 L - 1 个键入操作。实验结果说明,大约有 30%-50% 的键入成本可以节省下来。
作者在帖子中表示,他们接下来会尝试不同的架构,并提高推断的表现。而现在的模型推断很慢,不能实际使用。作者已在 GitHub 开源了项目代码:
链接地址: https://github.com/vpj/python_autocomplete
和 IDE 的自动补全有什么区别
该项目对 Python 代码的自动补全与传统 IDE(如 PyCharm)等不同。IDE 补全基于检索方法,需要从已有代码中进行搜索。
以 PyCharm 中的基本补全(Basic Completion)方法为例。基本补全可帮助补全可见区域的类、方法、关键词代码。使用时,PyCharm 会分析补全使用情况,并提供当前位置可能的选择。如果是对空间、参数或变量声明进行补全,则 PyCharm 会基于类别提供一系列可能的命名。
当出现已定义的类、函数、模块和变量时,基本补全就会启动。
此外,PyCharm 也提供智能补全等其他补全功能,但基本上都需要对已有文本进行搜索,根据位置和类型判断补全的方法。这些方法都没有配置机器学习模型。
Pycharm 的自动补全介绍:https://www.jetpains.com/help/pycharm/auto-completing-code.html
深度学习怎样脑补缺失 TF 代码
最常用的 PyCharm 自动补全也能省很多功夫,但它需要 IDE 能检索到你的代码文件或库,而且补全会提供多个可能的选项。但是在本项目实验的工具中,LSTM 会根据上下文语义确定最可能调用的函数,因此它能节省更多的成本。作者表示如果使用束搜索,那么一次能预测 10 多个字符,不过这样对于实际使用还是有点低效。