一行一行地敲代碼就像是徒手搬磚,聰明的程序猿們表示:我們要解放生產(chǎn)力! 比如像這樣: 在機(jī)器學(xué)習(xí)的時(shí)代,AI智能補(bǔ)全代碼早已不是夢(mèng)想,各種IDE和插件都在努力幫助程序猿減少擊鍵次數(shù),延長(zhǎng)鍵盤壽命(霧。 有位來(lái)自斯里蘭卡的程序猿也加入了關(guān)愛(ài)鍵盤協(xié)會(huì),他嘗試用簡(jiǎn)單的深度學(xué)習(xí)模型來(lái)實(shí)現(xiàn)自動(dòng)補(bǔ)全Python代碼這個(gè)目標(biāo),效果意外的不錯(cuò)。該項(xiàng)目現(xiàn)已開源! 簡(jiǎn)單的模型也強(qiáng)大抱著實(shí)驗(yàn)的心態(tài),在這個(gè)項(xiàng)目中,斯里蘭卡小哥用到的只是一個(gè)簡(jiǎn)單的LSTM(Long Short-Term Memory)模型。 用來(lái)進(jìn)行預(yù)測(cè)的算法是集束搜索(beam search),這是一種啟發(fā)式圖搜索算法。在進(jìn)行每一步深度擴(kuò)展時(shí),集束搜索僅保留一些質(zhì)量較高的節(jié)點(diǎn),減少空間消耗,提高時(shí)間效率。采用集束搜索算法最多可以實(shí)現(xiàn)10個(gè)字符的預(yù)測(cè)。 而投喂給模型的數(shù)據(jù)是標(biāo)記化的Python代碼,這些代碼里的注釋、字符串和空行事先清理掉了。 訓(xùn)練效果是這樣的: 綠色的字母就是自動(dòng)補(bǔ)全開始的位置,按下TAB鍵選擇補(bǔ)全,高亮標(biāo)注為灰色的部分就是AI補(bǔ)充的代碼。 小哥表示,如此簡(jiǎn)單的模型下,使用深度學(xué)習(xí)來(lái)自動(dòng)補(bǔ)全Python代碼,仍可以減少30-50%的擊鍵次數(shù),真的是surprise! 在GitHub上,小哥提供了一個(gè)Python的解析器,而只要寫一個(gè)其他語(yǔ)言的解析器,這個(gè)方案完全可以推廣到其他語(yǔ)言上,實(shí)現(xiàn)Java自動(dòng)補(bǔ)全,C自動(dòng)補(bǔ)全等等。 使用方法想要親測(cè)一下效果? 沒(méi)問(wèn)題,只需五步,你就可以訓(xùn)練自己的自動(dòng)補(bǔ)全模型。 1、安裝進(jìn)行機(jī)器學(xué)習(xí)的實(shí)驗(yàn)環(huán)境(lab,地址見文末)。 2、將數(shù)據(jù)復(fù)制到 ./data/source。 3、運(yùn)行 extract_code.py 來(lái)收集所有的python文件,編碼并將其合并到 all.py。 4、運(yùn)行 evaluate.py 對(duì)模型進(jìn)行評(píng)估。 5、運(yùn)行 train.py 訓(xùn)練模型。 仍需成長(zhǎng)方法簡(jiǎn)單,效果還挺好,聽上去這個(gè)項(xiàng)目很有潛力啊。不過(guò)理想很豐滿,現(xiàn)實(shí)還是有點(diǎn)骨感的。這個(gè)新生的AI還是面臨著許多成長(zhǎng)挑戰(zhàn)的。 挑戰(zhàn)一:效率太低 首先是它的性能尚未能滿足實(shí)際使用的需要。由于編輯集成器的限制,集束搜索算法效率低下,有等它補(bǔ)全代碼的時(shí)間,手動(dòng)都可以敲好幾行代碼了。 對(duì)此斯里蘭卡小哥表示,下一步他們會(huì)嘗試用不同的架構(gòu)來(lái)提高推理性能,也歡迎大家向他們分享想法和建議。 挑戰(zhàn)二:前輩強(qiáng)大 Reddit網(wǎng)友們還指出,用機(jī)器學(xué)習(xí)來(lái)補(bǔ)全代碼這個(gè)想法早已有比較成功的實(shí)現(xiàn)方案,比如獲得了Trith Ventures投資的Kite。 全球有超過(guò)3萬(wàn)名Python開發(fā)人員使用Kite,它被譽(yù)為當(dāng)前最好用的Python自動(dòng)補(bǔ)全工具。不僅能補(bǔ)全代碼,Kite還能幫你跳過(guò)文檔了解到別人是如何實(shí)時(shí)使用函數(shù)的,同時(shí),它也能提供你的自定義代碼庫(kù)里的定義和用法。 連Python之父都忍不住為Kite點(diǎn)贊:這可真夠酷的。 比起Kite這位前輩,小哥的這個(gè)項(xiàng)目還是非常稚嫩的,不過(guò)Kite并沒(méi)有開源,其作為補(bǔ)充使用的云引擎也引起了有關(guān)安全性的質(zhì)疑,有網(wǎng)友表示:
此外,還有網(wǎng)友好奇AI跟Pycharm比起來(lái)又如何?畢竟Pycharm的自動(dòng)補(bǔ)全就已經(jīng)挺好用了。 傳送門Github:https://github.com/vpj/python_autocomplete Lab:https://github.com/vpj/lab — 完 — |
|
來(lái)自: 長(zhǎng)沙7喜 > 《編程》