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