教AI開發(fā)軟件:IBM開源數(shù)據(jù)集Project CodeNet,含有1400萬個代碼示例
藍色巨人希望為基于AI的編程工具創(chuàng)建含有豐富訓(xùn)練資源的ImageNet。
IBM已組建了一個龐大的源代碼庫,用于教機器學(xué)習(xí)程序?qū)W習(xí)編程。
這個數(shù)據(jù)集名為Project CodeNet,含有1400萬個代碼示例,共5億行代碼,涉及的編程語言超過55種:從Java、C和Go到COBOL、Pascal和FORTRAN,不一而足。老實講,其中四分之三以上的代碼是用C ++和Python編寫的。
這些源代碼不是從生產(chǎn)級應(yīng)用程序或開發(fā)中的應(yīng)用程序獲取的,而是從參賽者向在日本組辦的兩大編程競賽:Aizu和AtCoder提交的軟件作品收集而來的。在這些競賽中,參賽者需要編寫必要的代碼,以便將一組特定的輸入轉(zhuǎn)換成一組所需的輸出。大約一半的代碼示例按預(yù)期的那樣運行,其余被標(biāo)記為是錯誤的解決方案、非構(gòu)建(non-building)或有缺陷。
比如說,理想情況下,您將訓(xùn)練一個AI工具,可以識別出好的程序、拒絕壞的程序。700萬個代碼示例包括了輸入和所需的輸出。
IBM希望CodeNet仿效ImageNet(用于訓(xùn)練計算機視覺應(yīng)用程序的圖片和標(biāo)簽數(shù)據(jù)庫),并成為教軟件明白軟件開發(fā)藍圖的領(lǐng)先數(shù)據(jù)集——即代碼實際上外觀如何、與其他代碼相比如何。IBM希望CodeNet可以用于訓(xùn)練諸如此類的開發(fā)工具:可以搜索應(yīng)用程序和庫來源以查找所需的例程,可以將一種語言轉(zhuǎn)換成另一種語言,或者識別錯誤或正確的實現(xiàn)機制。
IBM在本周召開Think線上大會時宣布了該項目,稱:“IBM相信CodeNet項目將充當(dāng)頗有價值的基準(zhǔn)數(shù)據(jù)集,用于源碼到源碼的轉(zhuǎn)換,并將遺留代碼庫轉(zhuǎn)換成現(xiàn)代代碼語言,從而幫助公司企業(yè)加快AI的應(yīng)用。”
IBM和MIT-IBM Watson AI實驗室團隊聯(lián)合開發(fā)了該數(shù)據(jù)集,撰寫了一篇論文介紹相關(guān)工作,并將所有整理后的材料放在了該項目在GitHub的頁面(https://github.com/IBM/Project_CodeNet)上。
“該數(shù)據(jù)集不僅在規(guī)模上很獨特,在它有助于基準(zhǔn)測試的編程任務(wù)的多樣性上也很獨特:從代碼相似性和分類以獲得代碼推薦算法方面的進步,到一大批編程語言之間的代碼轉(zhuǎn)換,再到代碼性能改進技術(shù)方面的進步,”研究人員在報告中這樣總結(jié)道。