這個庫厲害了,自動補全Python代碼,節省50%敲碼時間

摘要: 介紹一個優秀代碼自動補全工具庫。

近日,Reddit 上的一篇帖子引起了網友的熱議。帖子作者「mlvpj」稱:

「我們使用深度學習完成了一個簡單的項目,可以自動進行 Python 代碼補全。」

根據介紹,該項目基於 LSTM 模型,訓練後,負責對代碼的缺失部分進行補全。評價模型的方法是判斷節省了多少的按鍵信息——即模型給出長度爲 L 的代碼建議,如果和真實的代碼匹配,則節省 L - 1 個鍵入操作。實驗結果說明,大約可 以節省 30%-50% 的 時間鍵入成本 。

作者在帖子中表示,他們接下來會嘗試不同的架構,並提高推斷的表現。而現在的模型推斷很慢,不能實際使用。作者已在 GitHub 開源了項目代碼:

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

在項目開發中,優秀的代碼自動補全工具可以提升工作效率。然而,近來的 IDE 基本都使用搜索方法進行補全,在一些場景下效果不佳。近日,有開源項目用深度學習模型進行代碼補全,顯示出非常有潛力的效果。

我們知道很多 IDE 提供自動補全功能,這款工具又有什麼區別呢?

和 IDE 的自動補全有什麼區別

該項目對 Python 代碼的自動補全與傳統 IDE(如 PyCharm)等不同。IDE 補全基於檢索方法,需要從已有代碼中進行搜索。

以 PyCharm 中的基本補全(Basic Completion)方法爲例。基本補全可幫助補全可見區域的類、方法、關鍵詞代碼。使用時,PyCharm 會分析補全使用情況,並提供當前位置可能的選擇。如果是對空間、參數或變量聲明進行補全,則 PyCharm 會基於類別提供一系列可能的命名。

當出現已定義的類、函數、模塊和變量時,基本補全就會啓動。

此外,PyCharm 也提供智能補全等其他補全功能,但基本上都需要對已有文本進行搜索,根據位置和類型判斷補全的方法。這些方法都沒有配置機器學習模型。

Pycharm 的自動補全介紹:https://www.jetbrains.com/help/pycharm/auto-completing-code.html

網友評價

項目開源後,有些網友對作者提出了質疑:

「我們已經有很多很好用的自動補全工具了,比如 kite(一個可以在 IDE 上使用的插件),爲什麼還要費心搞個機器學習模型?」

在討論中,有人提出,一些無良的自動補全工具會悄悄上傳代碼到他們的服務器中,(而自行訓練的深度學習模型不存在這個問題)。

也有人提出,其實不一定要用 LSTM 模型,隱馬爾科夫模型在處理序列數據上效果也很好。

此外,也有網友建議使用 CuDNN 加速 LSTM 的推斷過程。這樣能大大提升推斷速度,集成到 IDE 中也就有了可能。

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