转载自:量子位

在ImageNet频频出现在计算机视觉研究的今天,IBM也为智能编码(AI for Code)带来了它的专属数据集——CodeNet

1400万个编程项目,5亿行代码,超过55种的不同编码语言。研究人员希望这一数据集能为编码自动化领域(比如大型项目代码的调试、维护和迁移)带来便利。

下载链接见文末

独一无二的数据基础

CodeNet的数据基础来自两个OJ(Online Judge)平台AIZUAtCoder所提交的实例。

大声告诉我世界上最好的语言是什么?

在这种在线编程平台上提交的解决方案,除了大规模的代码数据之外,还有许多高质量的元数据(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种语言|开源相关推荐

  1. IBM开源了5亿行代码数据集,里面最多的编程语言却不是Python

    谷歌服务包含 20 亿行代码,一辆汽车的系统包含 1 亿行代码--写代码.debug 这么大的工作量不交给 AI 来做能行? 机器之心报道,编辑:小舟.陈萍. 让 AI 自动生成代码,是很多开发者的梦 ...

  2. 12亿行代码,阿里巴巴这一年的技术报告和梦想报告

    78年前,图灵用代码编译出的情报破解系统,让二战至少提前2年结束,挽救了2000万人的生命:50年前,登月科学家敲下的一行关键代码,启动了阿波罗号的着陆,成就了人类的一大步:30年前,蒂姆·伯纳斯·李 ...

  3. 1100亿行代码!华为是如何管理的?

    二十年前,我第一次写代码的时候,用记事本写的ASP程序,写完手工复制到IIS服务器上,然后检查下页面的基本功能,就算是测试通过了. 那个时候,业务简单,系统也简单,可以用这种手工作坊的方式来干,随着软 ...

  4. 谷歌为什么把几十亿行代码放在一个库?

    <ACM通信>有一篇论文<为什么 Google 要把几十亿行代码放在一个库?>,作者是谷歌基础设施小组的工程师.作者详细讲述了Google的代码为什么全部放在一个库里面. 一. ...

  5. Python 在腾讯研发排第 5,鹅厂 2019 年新增 12.9 亿行代码

    综合整理:程序员的那些事(id:iProgrammer) 2020 年元旦,蚂蚁金服在其元旦微博中提到,支付宝在 2019 年一共新增了 4 亿代码. 近日,腾讯发布了<2019 年腾讯研发大数 ...

  6. 2020 年腾讯新增 20 亿行代码,鹅厂第一编程语言还是它

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 近日,腾讯发布了<20 ...

  7. Google 为什么把几十亿行代码放在一个库

    <ACM通信>有一篇论文<为什么 Google 要把几十亿行代码放在一个库?>,作者是谷歌基础设施小组的工程师.作者详细讲述了Google的代码为什么全部放在一个库里面. 一. ...

  8. 13万张表+数亿行代码,迁移只需数小时,还是异构数据库

    摘要:而对企业来说,构建统一的数据底座,才能让数据供应和业务端更高效.更安全.更易共享.随着技术的日新月异,上云已非难事,但异构数据库(转换数据库类型)迁移上云在业界仍是一个巨大的挑战. 本文分享自华 ...

  9. 30分钟扫描一亿行代码库,bug漏洞都能找,这款Facebook神器黑粉都赞叹不已

    Facebook,拥有数十亿用户规模的超级大厂,代码总行数高达一亿行. Bug,可能藏在一亿行代码中的每一行里,而且Facebook的工程师们还一直在添加新的代码进去,这要是出了什么问题,影响超多用户 ...

最新文章

  1. SQL IN 一定走索引吗?
  2. TFS2012 服务器安装
  3. 开源一些Delphi系统:诗词成语字典
  4. Html中如何让超链接a、图片img居中
  5. phpFpm加载php,php-fpm添加service服务的例子
  6. ZooKeeper的十二连问,你顶得了嘛?
  7. JavaScript 存储Cookie
  8. 关于bootstrap和webinf下访问其它文件的方法 2021-04-17
  9. Cookie、Session和自定义分页
  10. C++ 获取URL图片、html文件,CInternetSession 【转】
  11. ecplise里的run as里只有run configurations是怎么回事?
  12. 拉普拉斯变换部分公式证明
  13. 如何开启计算机cpu虚拟化,电脑开启虚拟化设置的方法 如何开启虚拟化设置
  14. 工控硬件芯片级电路板维修方法
  15. oracle otm运输管理系统_OTM服务中国十年-Oracle.PDF
  16. mysql别名引号与引用问题
  17. 如何生成题注和表注目录
  18. 《博客园精华集---CLR/C#分册》第三轮筛选结果
  19. 【JS】1410- 一行 Object.keys() 引发的思考
  20. 《Python从入门到实践》读书笔记——第六章 字典

热门文章

  1. Hibernate一级缓存
  2. angular例子笔记
  3. C#: static关键字的作用
  4. linux下使用inotify实时监控文件变更,做完整性检查
  5. IIS6的PHP最佳配置方法
  6. 让你工作变得更加有趣
  7. 无法打开此程序因为计算机丢失,解决X-Scan安装后“无法启动此程序,因为计算机丢失NPPTools.dll”...
  8. 浙江科技学院转专业到计算机,2021年浙江科技学院新生入学考试科目,大一新生转专业相关规定...
  9. 算法-判断是否是完全二叉树
  10. python导入同级目录 上级目录文件