AI幫你寫Python,安裝只需5步,還能任你調教 | 開源

本文經AI新媒體量子位(公衆號ID:QbitAI)授權轉載,轉載請聯繫出處。

一行一行地敲代碼就像是徒手搬磚,聰明的程序猿們表示:我們要解放生產力!

比如像這樣:

在機器學習的時代,AI智能補全代碼早已不是夢想,各種IDE和插件都在努力幫助程序猿減少擊鍵次數,延長鍵盤壽命(霧。

有位來自斯里蘭卡的程序猿也加入了關愛鍵盤協會,他嘗試用簡單的深度學習模型來實現自動補全Python代碼這個目標,效果意外的不錯。該項目現已開源

簡單的模型也強大

抱着實驗的心態,在這個項目中,斯里蘭卡小哥用到的只是一個簡單的LSTM(Long Short-Term Memory)模型。

用來進行預測的算法是集束搜索(beam search),這是一種啓發式圖搜索算法。在進行每一步深度擴展時,集束搜索僅保留一些質量較高的節點,減少空間消耗,提高時間效率。採用集束搜索算法最多可以實現10個字符的預測。

而投餵給模型的數據是標記化的Python代碼,這些代碼裏的註釋、字符串和空行事先清理掉了。

訓練效果是這樣的:

綠色的字母就是自動補全開始的位置,按下TAB鍵選擇補全,高亮標註爲灰色的部分就是AI補充的代碼。

小哥表示,如此簡單的模型下,使用深度學習來自動補全Python代碼,仍可以減少30-50%的擊鍵次數,真的是surprise!

在GitHub上,小哥提供了一個Python的解析器,而只要寫一個其他語言的解析器,這個方案完全可以推廣到其他語言上,實現Java自動補全,C自動補全等等。

使用方法

想要親測一下效果?

沒問題,只需五步,你就可以訓練自己的自動補全模型。

1、安裝進行機器學習的實驗環境(lab,地址見文末)。

2、將數據複製到 ./data/source。

3、運行 extract_code.py 來收集所有的python文件,編碼並將其合併到 all.py。

4、運行 evaluate.py 對模型進行評估。

5、運行 train.py 訓練模型。

仍需成長

方法簡單,效果還挺好,聽上去這個項目很有潛力啊。不過理想很豐滿,現實還是有點骨感的。這個新生的AI還是面臨着許多成長挑戰的。

挑戰一:效率太低

首先是它的性能尚未能滿足實際使用的需要。由於編輯集成器的限制,集束搜索算法效率低下,有等它補全代碼的時間,手動都可以敲好幾行代碼了。

對此斯里蘭卡小哥表示,下一步他們會嘗試用不同的架構來提高推理性能,也歡迎大家向他們分享想法和建議。

挑戰二:前輩強大

Reddit網友們還指出,用機器學習來補全代碼這個想法早已有比較成功的實現方案,比如獲得了Trith Ventures投資的Kite

全球有超過3萬名Python開發人員使用Kite,它被譽爲當前最好用的Python自動補全工具。不僅能補全代碼,Kite還能幫你跳過文檔瞭解到別人是如何實時使用函數的,同時,它也能提供你的自定義代碼庫裏的定義和用法。

連Python之父都忍不住爲Kite點贊:這可真夠酷的。

比起Kite這位前輩,小哥的這個項目還是非常稚嫩的,不過Kite並沒有開源,其作爲補充使用的雲引擎也引起了有關安全性的質疑,有網友表示:

要是在工作上用了Kite,貴公司的法務部門怕不是要瘋。

此外,還有網友好奇AI跟Pycharm比起來又如何?畢竟Pycharm的自動補全就已經挺好用了。

傳送門

Github:https://github.com/vpj/python_autocomplete

Lab:https://github.com/vpj/lab

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章