成熟的AI应该自己写代码,IBM发布5亿行代码数据集,包含55种语言|开源
转载自:量子位
在ImageNet频频出现在计算机视觉研究的今天,IBM也为智能编码(AI for Code)带来了它的专属数据集——CodeNet。
1400万个编程项目,5亿行代码,超过55种的不同编码语言。研究人员希望这一数据集能为编码自动化领域(比如大型项目代码的调试、维护和迁移)带来便利。
△下载链接见文末
独一无二的数据基础
CodeNet的数据基础来自两个OJ(Online Judge)平台AIZU和AtCoder所提交的实例。
△大声告诉我世界上最好的语言是什么?
在这种在线编程平台上提交的解决方案,除了大规模的代码数据之外,还有许多高质量的元数据(Metadata)和注释。
比如对于OJ平台的问题,就有如问题描述、内存限制、问题难度等信息。
用户提交的案例也一样:
而在平台自动审查机制下,提交的解决方案的不同状态同样也可以作为重要参考数据。
CodeNet能做什么?
基准测试
当在CodeNet-1K(C++ 1000基准)与最大的公开数据集之一GCJ-297上训练相同的MISIM模型,并在第三个独立的数据集POJ-104上测试这两个训练好的模型时:
△模型在CodeNet-1K上训练时的POJ-104测试分数比在GCJ-297上的高12%
这表明了CodeNet-1K拥有更好的泛化能力。
而分别使用MLP、CNN、C-BERT、GNN在CodeNet的几个基准上进行了代码分类、代码相似性评估和代码完成等实验后,大多数任务都获得了90%以上的准确率。
实际应用
基于不同编程语言间的规则,将几段代码转换成其他语言,对AI来说并非难事。
但如果是上千上万行,甚至是一个大型项目,其代码语义就会涉及到上下文,而上下文又可能牵扯到多个代码库。在这样的复杂语境下的语言翻译可是个不小的挑战。
在以前,通常先由机器完成程序50%~60%的迁移,涉及复杂规则的部分再由人力负责,非常棘手且费事费力。
可就在不久前,IBM通过基于CodeNet的AI for Code成功将一位大型汽车客户的持续代码迁移过程(多代Java技术开发的3500个Java文件,超一百万行代码),从一年缩短到了四星期。
因为在CodeNet的数据基础中,90%以上的问题的描述、输入格式说明、输出格式说明,以及50%以上的提交代码的输入和输出样本,就是确定不同语言间的代码等价与否的关键。
这就极大地推动了代码翻译的强化学习技术。
而大量于内存限制、执行时间、错误类型的元数据,也可以用来标记源代码中的潜在缺陷,并进一步训练开发代码优化系统。
CodeNet数据集提供了一套利于理解和使用的技术,在协助广大开发者和研究者开发算法,推进AI编码的同时,也为企业开启IT现代化带来了持续不断的商业价值。
技术上如何实现
在统计数据时,研究者们组织所有数据成为一个严格的目录结构:最上层是Project CodeNet目录,下方的子目录分别为:
*数据
细分为每个问题中源码、脚本语言。
*元数据
存放所有问题的problem_list.csv文件和提交案例的csv文件。
*问题描述
存放问题的HTML文件,包含文本的广泛描述。
然后使用命令行工具或像ls和grep这样的应用程序来提取,对csv文件可使用csvkit组件(如csvstat)。
对于数据集则采用bash脚本进行访问选择:
△脚本已给出。
最后通过标记器产生标记流、AST生成解析到抽象语法树、构建数据流图以分析代码,最终将代码样本转换为可被AI算法识别和使用的表现形式:
△处理过程所用到的工具。
编程自动化的未来
IBM的研究者们还在不断地改进和开发CodeNet,期望它能够加速AI编程的算法进步。
而随着机器学习领域的不断发展,不仅是代码的“实现”,连“设计”也开始向计算机一侧倾靠(比如GAN通过对抗学习寻找最优解)。
未来真的可以像DNA的自我编辑那样,实现完全的自动编程吗?
建议先封装几个人类程序员,来帮计算机完成算法第一步的“精确描述问题需求”。
参考链接:
[1]https://bdtechtalks.com/2021/05/17/ibms-codenet-machine-learning-programming/
[2]https://github.com/IBM/Project_CodeNet#tools-to-process-source-files
[3]https://developer.ibm.com/technologies/artificial-intelligence/data/project-codenet/
[4]https://research.ibm.com/blog/codenet-ai-for-code
重磅!DLer-计算机视觉交流3群已成立!
大家好,这是DLer-计算机视觉微信交流3群!首先非常感谢大家的支持和鼓励,我们的计算机视觉交流群正在不断扩大人员规模!希望以后能提供更多的资源福利给到大家!欢迎各位Cver加入DLer-计算机视觉微信交流大家庭 。
本群旨在学习交流图像分类、目标检测、目标跟踪、点云与语义分割、GAN、超分辨率、人脸检测与识别、动作行为与时空运动、模型压缩和量化剪枝、迁移学习、人体姿态估计等内容。希望能给大家提供一个更精准的研讨交流平台!!!
进群请备注:研究方向+学校/公司+昵称(如图像分类+上交+小明)
???? 长按识别添加,即可进群!
成熟的AI应该自己写代码,IBM发布5亿行代码数据集,包含55种语言|开源相关推荐
- IBM开源了5亿行代码数据集,里面最多的编程语言却不是Python
谷歌服务包含 20 亿行代码,一辆汽车的系统包含 1 亿行代码--写代码.debug 这么大的工作量不交给 AI 来做能行? 机器之心报道,编辑:小舟.陈萍. 让 AI 自动生成代码,是很多开发者的梦 ...
- 12亿行代码,阿里巴巴这一年的技术报告和梦想报告
78年前,图灵用代码编译出的情报破解系统,让二战至少提前2年结束,挽救了2000万人的生命:50年前,登月科学家敲下的一行关键代码,启动了阿波罗号的着陆,成就了人类的一大步:30年前,蒂姆·伯纳斯·李 ...
- 1100亿行代码!华为是如何管理的?
二十年前,我第一次写代码的时候,用记事本写的ASP程序,写完手工复制到IIS服务器上,然后检查下页面的基本功能,就算是测试通过了. 那个时候,业务简单,系统也简单,可以用这种手工作坊的方式来干,随着软 ...
- 谷歌为什么把几十亿行代码放在一个库?
<ACM通信>有一篇论文<为什么 Google 要把几十亿行代码放在一个库?>,作者是谷歌基础设施小组的工程师.作者详细讲述了Google的代码为什么全部放在一个库里面. 一. ...
- Python 在腾讯研发排第 5,鹅厂 2019 年新增 12.9 亿行代码
综合整理:程序员的那些事(id:iProgrammer) 2020 年元旦,蚂蚁金服在其元旦微博中提到,支付宝在 2019 年一共新增了 4 亿代码. 近日,腾讯发布了<2019 年腾讯研发大数 ...
- 2020 年腾讯新增 20 亿行代码,鹅厂第一编程语言还是它
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 近日,腾讯发布了<20 ...
- Google 为什么把几十亿行代码放在一个库
<ACM通信>有一篇论文<为什么 Google 要把几十亿行代码放在一个库?>,作者是谷歌基础设施小组的工程师.作者详细讲述了Google的代码为什么全部放在一个库里面. 一. ...
- 13万张表+数亿行代码,迁移只需数小时,还是异构数据库
摘要:而对企业来说,构建统一的数据底座,才能让数据供应和业务端更高效.更安全.更易共享.随着技术的日新月异,上云已非难事,但异构数据库(转换数据库类型)迁移上云在业界仍是一个巨大的挑战. 本文分享自华 ...
- 30分钟扫描一亿行代码库,bug漏洞都能找,这款Facebook神器黑粉都赞叹不已
Facebook,拥有数十亿用户规模的超级大厂,代码总行数高达一亿行. Bug,可能藏在一亿行代码中的每一行里,而且Facebook的工程师们还一直在添加新的代码进去,这要是出了什么问题,影响超多用户 ...
最新文章
- SQL IN 一定走索引吗?
- TFS2012 服务器安装
- 开源一些Delphi系统:诗词成语字典
- Html中如何让超链接a、图片img居中
- phpFpm加载php,php-fpm添加service服务的例子
- ZooKeeper的十二连问,你顶得了嘛?
- JavaScript 存储Cookie
- 关于bootstrap和webinf下访问其它文件的方法 2021-04-17
- Cookie、Session和自定义分页
- C++ 获取URL图片、html文件,CInternetSession 【转】
- ecplise里的run as里只有run configurations是怎么回事?
- 拉普拉斯变换部分公式证明
- 如何开启计算机cpu虚拟化,电脑开启虚拟化设置的方法 如何开启虚拟化设置
- 工控硬件芯片级电路板维修方法
- oracle otm运输管理系统_OTM服务中国十年-Oracle.PDF
- mysql别名引号与引用问题
- 如何生成题注和表注目录
- 《博客园精华集---CLR/C#分册》第三轮筛选结果
- 【JS】1410- 一行 Object.keys() 引发的思考
- 《Python从入门到实践》读书笔记——第六章 字典
热门文章
- Hibernate一级缓存
- angular例子笔记
- C#: static关键字的作用
- linux下使用inotify实时监控文件变更,做完整性检查
- IIS6的PHP最佳配置方法
- 让你工作变得更加有趣
- 无法打开此程序因为计算机丢失,解决X-Scan安装后“无法启动此程序,因为计算机丢失NPPTools.dll”...
- 浙江科技学院转专业到计算机,2021年浙江科技学院新生入学考试科目,大一新生转专业相关规定...
- 算法-判断是否是完全二叉树
- python导入同级目录 上级目录文件