博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言 vscode代码自动补全_这个库厉害了,自动补全Python代码,节省50%敲码时间!...
阅读量:6643 次
发布时间:2019-06-25

本文共 1098 字,大约阅读时间需要 3 分钟。

「我们使用深度学习完成了一个简单的项目,可以自动进行 Python 代码补全。」

根据介绍,该项目基于 LSTM 模型,训练后,负责对代码的缺失部分进行补全。评价模型的方法是判断节省了多少的按键信息——即模型给出长度为 L 的代码建议,如果和真实的代码匹配,则节省 L - 1 个键入操作。实验结果说明,大约可 以节省 30%-50% 的 时间键入成本

作者在帖子中表示,他们接下来会尝试不同的架构,并提高推断的表现。而现在的模型推断很慢,不能实际使用。作者已在 GitHub 开源了项目代码:

链接地址: https://github.com/vpj/python_autocomplete

在项目开发中,优秀的代码自动补全工具可以提升工作效率。然而,近来的 IDE 基本都使用搜索方法进行补全,在一些场景下效果不佳。近日,有开源项目用深度学习模型进行代码补全,显示出非常有潜力的效果。

99fb3559ad20a7bccee6720687fa83cf.png

我们知道很多 IDE 提供自动补全功能,这款工具又有什么区别呢?

和 IDE 的自动补全有什么区别

该项目对 Python 代码的自动补全与传统 IDE(如 PyCharm)等不同。IDE 补全基于检索方法,需要从已有代码中进行搜索。

以 PyCharm 中的基本补全(Basic Completion)方法为例。基本补全可帮助补全可见区域的类、方法、关键词代码。使用时,PyCharm 会分析补全使用情况,并提供当前位置可能的选择。如果是对空间、参数或变量声明进行补全,则 PyCharm 会基于类别提供一系列可能的命名。

141c0aef30f99f2353c4f6d40bf1f926.png

当出现已定义的类、函数、模块和变量时,基本补全就会启动。

此外,PyCharm 也提供智能补全等其他补全功能,但基本上都需要对已有文本进行搜索,根据位置和类型判断补全的方法。这些方法都没有配置机器学习模型。

Pycharm 的自动补全介绍:https://www.jetbrains.com/help/pycharm/auto-completing-code.html

网友评价

项目开源后,有些网友对作者提出了质疑:

65e33c6c2c815c6748a0b42d0778f9a7.png

「我们已经有很多很好用的自动补全工具了,比如 kite(一个可以在 IDE 上使用的插件),为什么还要费心搞个机器学习模型?」

在讨论中,有人提出,一些无良的自动补全工具会悄悄上传代码到他们的服务器中,(而自行训练的深度学习模型不存在这个问题)。

也有人提出,其实不一定要用 LSTM 模型,隐马尔科夫模型在处理序列数据上效果也很好。

1ae6f9e04acb270390ffae0235cc0846.png

此外,也有网友建议使用 CuDNN 加速 LSTM 的推断过程。这样能大大提升推断速度,集成到 IDE 中也就有了可能。

转载地址:http://cuevo.baihongyu.com/

你可能感兴趣的文章
mysql group replication 安装&配置详解
查看>>
深拷贝和浅拷贝
查看>>
java版sqlhelper(转)
查看>>
android搭建环境错误 daemon not running. starting it now on port 5037 ADB server didn't ACK
查看>>
我的第一本著作:Spark技术内幕上市!
查看>>
现实世界的Windows Azure:采访Gridsum的Sr.业务发展总监Yun Xu
查看>>
公开发布版的Windows Azure 基础结构服务中的 SQL Server – 文档和最佳实践(已更新),还有即将发布的博客...
查看>>
UVa 494 - Kindergarten Counting Game
查看>>
java中IO操作
查看>>
Python 值传递和引用传递
查看>>
hdu4405Aeroplane chess 概率dp水题
查看>>
jq查找父类元素三个函数的区别
查看>>
1.27eia原油
查看>>
vue loading 插件编写与实战
查看>>
Linux I/O多路转接之select函数
查看>>
Android深度探索第二章总结
查看>>
matlab练习程序(单源最短路径Bellman-Ford)
查看>>
深入理解Java的接口和抽象类
查看>>
JavaScript 简介
查看>>
随写内部类
查看>>