0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Facebook AI发布了一个包含编码问题和代码片段答案的数据集

倩倩 来源:新经网 2020-03-22 16:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Facebook AI发布了一个包含编码问题和代码片段答案的数据集,旨在评估基于AI的自然语言代码搜索系统。该版本还包括Facebook自己的几种代码搜索模型的基准测试结果,以及来自24,000个GitHub存储库的超过400万种Java方法的训练语料库。

在arXiv上发表的一篇论文中,研究人员描述了他们收集数据的技术。训练数据语料库是从最受欢迎的GitHub Android代码存储库中收集的,按星数排序。解析存储库中的每个Java文件,以标识各个方法。Facebook在培训代码搜索系统的研究中使用了所得的语料库。为了创建评估数据集,他们从Stack Overflow 的问答数据转储开始,仅选择同时具有“ Java”和“ Android”的问题研究人员说:“其中,他们只保留答案被投票的问题,这些问题也与训练数据语料库中确定的一种方法相匹配。结果将518个问题手动过滤为最终的287个问题。研究人员表示:

我们的数据集不仅是当前可用于Java的最大数据集,而且还是唯一以自动化(一致)方式针对Stack Overflow的真实答案进行验证的数据集。

Facebook最近发表了几篇关于神经代码搜索的论文,这是一种用于训练神经网络回答“如何”编码问题的机器学习技术。软件开发人员通常会使用Stack Overflow来学习如何解决特定的编码问题,例如,如何解决 Android应用程序中的错误。但是,在处理使用专有API或较不常见的编程语言的代码时,这不是一个选择。在这种情况下,程序员自己的组织之外的专家很少(或没有)。相反,Facebook和其他公司探索了使用源代码本身作为培训数据来产生可以回答编码问题的自然语言处理(NLP)系统的想法。

去年,Facebook发表了一篇关于无监督学习方法的论文,称为神经代码搜索(NCS),该方法接受了从GitHub收集的数据的培训。该技术从源代码中提取单词,并学习将每个单词映射到高维空间中的向量的嵌入。嵌入通常具有向量的性质,向量在向量空间中彼此“接近”,表示具有相似含义的词,并且词之间的关系可用向量算术表示。一个例子是在Wikipedia上训练的word2vec模型,当给定向量表达式“ Paris-France + Spain”时,该模型将返回“ Madrid”。

学习了嵌入之后,使用“ 词袋 ”模型将语料库中的每个Java方法转换为嵌入空间中的向量;通过嵌入将代码中的每个单词转换为向量,并将向量的加权总和分配给该方法作为其索引。这会将每个Java方法映射到嵌入空间中的一个点。为了回答编码问题,通过将查询中的每个单词都通过嵌入转换并产生加权和,可以将该问题类似地映射到嵌入空间中的某个点。问题的“答案”是Java方法,其索引最接近该点。关键思想是查询和代码都使用相同的嵌入,并且训练不需要在输入数据中出现任何问题;它仅从源代码中学习。

这种技术的一个缺点是它不会学习源代码中没有的单词的嵌入。Facebook研究人员发现,在Stack Overflow上,有问题的单词中也只有不到一半的单词包含在源代码中。这促使研究人员通过监督学习扩展了NCS,“以弥合自然语言单词和源代码单词之间的鸿沟”。产生的系统称为嵌入统一(UNIF),学习查询词的单独嵌入。在此培训过程中,团队使用类似于收集基准数据集的过程从Stack Overflow中提取了一组问题标题和代码段。该训练数据集包含451k个问题-答案对,但都不在基准测试中。在基准上进行评估时,对这一数据进行培训的联合国系统的性能略优于NCS。两种系统都以大约三分之一的时间作为最高结果返回“正确”答案,并以一半的时间以“前五项”结果返回“正确”答案。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Facebook
    +关注

    关注

    3

    文章

    1432

    浏览量

    58342
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73145
  • 数据集
    +关注

    关注

    4

    文章

    1230

    浏览量

    26046
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NVIDIA推出多语种语音AI开放数据与模型

    发布的 Granary 数据包含约 100 万小时音频,可用于训练高精度、高吞吐量的 AI 音频转录与翻译模型。
    的头像 发表于 09-23 15:34 602次阅读

    HarmonyOSAI编程智能代码解读

    CodeGenie提供智能AI能力对框选的代码片段进行逐条解释,总结代码段含义,帮助开发者提升阅读代码的速度和效率。 选中.ets文件或者.
    发表于 09-02 16:29

    HarmonyOSAI编程编辑区代码续写

    利用AI大模型分析并理解开发者在代码编辑区的上下文信息或自然语言描述信息,智能生成符合上下文的ArkTS或C++代码片段。 使用约束 建议在编辑区内已有较丰富上下文,能够使模型对编程场
    发表于 08-21 15:43

    AI Cube如何导入数据

    我从在线平台标注完并且下载数据,也按照ai cube的要求修改了文件夹名称,但是导入提示 不知道是什么原因,我该怎么办? 以下是我修改后的文件夹目录
    发表于 08-11 08:12

    HarmonyOS AI辅助编程工具(CodeGenie)代码智能解读

    本功能从DevEco CodeGenie 5.1.0 Beta版本开始支持。 CodeGenie提供智能AI能力对框选的代码片段进行逐条解释,总结代码段含义,帮助开发者提升阅读
    发表于 07-17 17:02

    HarmonyOS AI辅助编程工具(CodeGenie)代码续写

    利用AI大模型分析并理解开发者在代码编辑区的上下文信息或自然语言描述信息,智能生成符合上下文的ArkTS或C++代码片段、使用约束 建
    发表于 07-15 16:15

    【HarmonyOS 5】鸿蒙CodeGenie AI辅助编程工具详解

    菜单View布局。主界面主要由编码助手的介绍和知识问答与生成代码入门组成。 当我们点击两入门其中
    发表于 06-11 16:34

    DevEco Studio AI辅助开发工具两大升级功能 鸿蒙应用开发效率再提升

    开发过程中常见的代码问题,CodeGenie此次新增代码解释功能,进步降低开发门槛。用户在选中代码
    发表于 04-18 14:43

    TDengine 发布时序数据分析 AI 智能体 TDgpt,核心代码开源

    2025 年 3 月 26 日,涛思数据通过线上直播形式正式发布其新代时序数据分析 AI
    的头像 发表于 03-27 10:30 561次阅读
    TDengine <b class='flag-5'>发布</b>时序<b class='flag-5'>数据</b>分析 <b class='flag-5'>AI</b> 智能体 TDgpt,核心<b class='flag-5'>代码</b>开源

    Banana Pi 发布 BPI-AI2N &amp; BPI-AI2N Carrier,助力 AI 计算与嵌入式开发

    和 Renesas直致力于推动开源生态的发展,并积极合作打造高效、开放的计算平台。BPI-AI2N & BPI-AI2N Carrier 的发布,不仅为开发者提供
    发表于 03-19 17:54

    请问NanoEdge AI数据该如何构建?

    我想用NanoEdge来识别异常的声音,但我目前没有办法生成模型,我感觉可能是数据的问题,请问我该怎么构建数据?或者生成模型失败还会有哪些原因?
    发表于 03-10 08:20

    AI Agent 应用与项目实战》阅读心得3——RAG架构与部署本地知识库

    。RAG技术建立在向量数据库的基础上,通过高维向量空间中的相似度计算来实现语义层面的匹配,这比传统的关键词搜索更能捕捉文本的深层语义关联。 第七章通过本地知识库的搭建案例展示RA
    发表于 03-07 19:49

    Microchip推出MPLAB AI编码助手

    Microchip Technology Inc.(微芯科技公司)宣布推出MPLAB AI编码助手,利用人工智能(AI)技术为软件开发和嵌入式工程师提供代码编写与调试支持。这款免费工具
    的头像 发表于 02-20 16:55 1332次阅读

    用于 SPI 绝对编码器的 Arduino 示例代码

    作者:Damon Tarry, Design Applications Engineer, Same Sky 本 Arduino 示例代码教程旨在为用户提供坚实的起点,以便通过串行外设接口
    的头像 发表于 01-26 21:35 1294次阅读
    用于 SPI 绝对<b class='flag-5'>编码</b>器的 Arduino 示例<b class='flag-5'>代码</b>

    三星贴片电容识别容值代码方法

    三星贴片电容的容值代码识别方法主要基于其型号编码中的特定部分。以下是详细的识别步骤和说明:    、识别容值
    的头像 发表于 12-13 16:17 1305次阅读
    三星贴片电容识别容值<b class='flag-5'>代码</b>方法