99精品在线观看-99精品在线免费观看-99精品在线视频观看-99精品这里只有精品高清视频-99九九精品国产高清自在线

x

你是一個成熟的AI了,應該自己學會補全Python代碼了

2019-07-09 10:44:29 機器之心
點擊關注->創芯網公眾號,后臺告知EETOP論壇用戶名,獎勵200信元
在項目開發中,優秀的代碼自動補全工具可以提升工作效率。然而,近來的 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.jetbrains.com/help/pycharm/auto-completing-code.html
 

深度學習怎樣腦補缺失 TF 代碼
 

最常用的 PyCharm 自動補全也能省很多功夫,但它需要 IDE 能檢索到你的代碼文件或庫,而且補全會提供多個可能的選項。但是在本項目實驗的工具中,LSTM 會根據上下文語義確定最可能調用的函數,因此它能節省更多的成本。作者表示如果使用束搜索,那么一次能預測 10 多個字符,不過這樣對于實際使用還是有點低效。
 

在訓練深度補全模型前,我們需要先建立訓練集。開發者會在清洗評論、標注和空行后,構建比較干凈的 Python 代碼。然后,模型會在這些數據上進行訓練與預測。在數據預處理上,開發者發現通過 tokenizing Python 代碼,模型效果比通過 BPE 編碼的字符級預測效果還要好。作者提供了一個簡單的預訓練模型,它是在整個 TensorFlow 項目的 models 代碼中訓練的。
 

下圖就是作者在驗證集中測試的驗證樣本。綠色的字符表示自動補全的起始位置,用戶需要按下 Tab 鍵選擇開始補全。綠色及后面高亮的灰色字符是自動補全的結果。
 


如上所示為驗證樣本中的自動補全效果。與代碼生成類似,粗略看起來,似乎效果非常不錯,但實際上會有很多不合理的地方。不過有意思的是,自動補全中所有字符串都只有一個占位操作,這也是非常合理的處理方法。
 

樣本中自動補全的起始和結束位置都是隨機的,也就是說代碼可能補全到「tensorfl」就結束了,并不會補全完整的標識符「tensorflow」。這在實際場景中用處非常有限,因此作者將生成結束位置限制為終止 token 而修復問題。目前自動補全能完成多種 operator,且當我們增加束搜索的長度時,它完成的代碼長度會更多。
 

整個模型的主體都是 LSTM,它在 TensorFlow 模型代碼庫訓練后能捕捉非常豐富的 TensorFlow API。如下所示為自動補全模型的主體代碼,基本上簡單的一個 LSTM 就能搞定:
 


網友評價
 

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


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

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

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


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


免責聲明:本文由作者原創。文章內容系作者個人觀點,轉載目的在于傳遞更多信息,并不代表EETOP贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請及時聯系我們,我們將在第一時間刪除!

關鍵詞: 人工智能 AI

  • EETOP 官方微信

  • 創芯大講堂 在線教育

  • 半導體創芯網 快訊

全部評論

主站蜘蛛池模板: 久久久久婷婷国产综合青草| 久久视频在线免费观看| 久久三级网站| 亚洲欧美日韩综合一区久久 | 成人精品综合免费视频| 窝窝午夜精品一区二区| 女人被两根一起进3p在线观看| 毛片不卡一区二区三区| 欧美成人tv| 看一级特黄a大片国产| www.婷婷| 国产在线播放拍拍拍| 一级黄色在线视频| 老黄网站在线观看免费| 国产精品国产欧美综合一区| free麻豆| 国产精品综合一区二区| 久久久久久国产精品免费| 亚洲成人自拍| 1024免费观看| 一级黄色片免费的| 尤物视频在线免费| 可以看的黄色网址| 在线观看一区二区三区视频| 欧美18性欧美丶黑吊| 国产线路 中文字幕| 黄色片在线免费看| 999zyz色资源站在线观看| 日韩在线亚洲| 亚洲欧洲视频在线观看| 日韩国产免费一区二区三区| 欧美一级做一级做片性十三| 国产在线一区二区三区在线| 国产精品第4页| 看a级毛片| 特黄特黄视频| 爱逼综合网| 黄片毛片在线看| 啪啪自拍视频| 萌白酱福利视频在线网站| 精品亚洲成a人片在线观看|