一行行敲代码,就像徒手搬砖一样。聪明的程序员说:我们要解放生产力!比如像这样:在机器学习时代,AI智能代码补全不再是梦想。各种IDE和插件都在努力帮助程序员减少击键次数,延长键盘的使用寿命。一位来自斯里兰卡的程序员也加入了键盘保养协会。他尝试用一个简单的深度学习模型来达到自动补全Python代码的目的,效果出奇的好。该项目现已开源!具有实验心态的简单模型也很强大。在这个项目中,斯里兰卡小哥只使用了一个简单的LSTM(长短期记忆)模型。用于进行预测的算法是波束搜索,一种启发式图搜索算法。beamsearch在进行每一步深度扩展时,只保留部分优质节点,减少了空间消耗,提高了时间效率。采用beamsearch算法可以实现最多10个字符的预测。提供给模型的数据是标记化的Python代码,这些代码中的注释、字符串和空行会被提前清理。训练效果如下:绿色字母为开始自动补全的位置,按TAB键选择补全,灰色高亮部分为AI补全的代码。小哥说在这么简单的模型下,用深度学习自动补全Python代码,依然可以减少30-50%的击键次数,真是惊喜!在GitHub上,小弟提供了一个Python的解析器,你只要写一个其他语言的解析器,这个方案就可以扩展到其他语言,实现Java自动补全,C自动补全等。如何使用旺旺测试效果?没问题,只需五步,你就可以训练出属于自己的自动补全模型。1、安装机器学习的实验环境(lab,地址见文末)。2.将数据复制到./data/source。3.运行extract_code.py收集所有python文件,编码并合并到all.py中。4.运行evaluate.py来评估模型。5.运行train.py训练模型。还是要养方法简单,效果还不错,感觉这个项目很有潜力。然而,理想很丰满,现实还是有些骨感。这种新生的人工智能仍然面临许多增长挑战。挑战一:效率太低首先,它的性能还不能满足实际使用的需要。由于编辑集成商的限制,beamsearch算法的效率较低,完成代码有时间,可能需要手动敲几行代码。对此,斯哥表示,下一步他们会尝试使用不同的架构来提升推理性能,欢迎大家与他们分享想法和建议。挑战二:实力前辈Reddit网友也指出,利用机器学习完成代码的想法已经成功落地,比如Kite,已经获得了TrithVentures的投资。全球有超过30,000名Python开发者使用Kite,它被誉为目前最好用的Python自动补全工具。不仅可以完成代码,Kite还可以帮你跳过文档,实时了解别人是如何使用功能的。同时,它还可以提供您自定义代码库中的定义和用法。连Python之父都忍不住称赞Kite:这真酷。和前辈Kite相比,小弟的这个项目还很不成熟,但是Kite不开源,作为补充的云引擎也引发了安全问题。有网友表示:如果在工作中使用Kite,恐怕你们公司法务部要疯了。另外,有网友很好奇AI和Pycharm相比如何?毕竟Pycharm的自动补全已经非常好用了。传送门Github:https://github.com/vpj/python_autocomplete实验室:https://github.com/vpj/lab
