您现在的位置:主页 > 6654跑狗图高清图 >
代码搜索界的GLUE!GitHub推出CodeSearchNet排行榜还要搞比赛
发布日期:2019-10-09 14:43   来源:未知   阅读:

  用于代码表示学习的数据集,工具和基准,由GitHub与Microsoft Research-Cambridge的Deep Program小组合作推出。CodeSearchNet是数据集和基准的集合,用于探索使用自然语言进行代码检索的问题。这项研究是走向自然语言语义代码搜索一文中提出的一些想法的延续。 人工智能改变中国,我们还要跨越这三座大山 献礼 70 周年

  但是代码又不像文章或者图片能够非常快速的找到正确结果,目前的代码搜索引擎的效果还无法完全满足开发者的需求。

  不过随着机器学习、深度学习技术的发展,有望改善现状。作为全球最流行的代码托管网站(请忘掉“全球最大同性交友网站”这个标签好吗),GitHub觉得有必要在这方面做一些事情。

  他们最开始想用机器学习改善代码搜索结果,但是发现很难衡量高低有没有比传统的方式更好、改善程度有多大,此时需要一个代码搜索的评估基准,就好像NLP有3大评估基准一样。

  CodeSearchNet是数据集和基准的集合,用于探索使用自然语言进行代码检索的问题。旨在通过以下方式为社区研究语义代码搜索提供一个平台:

  GitHub希望CodeSearchNet能够在与源代码和自然语言之间的关系方面,与更广泛的机器学习和NLP社区互动方面,迈出坚实的一步。

  除此之外,GitHub还提供了一个大型数据集,以帮助数据科学家构建适合该任务的模型,并欢迎大家开发这个数据集在其他领域的用途。

  该数据集包含200万函数-文档对、约400万不具备对应文档的函数。具体来说,注释是顶级函数或方法注释(例如Python中的文档字符串),而代码则是整个函数或方法。当前,数据集包含Python,Java,Ruby,Go,Java和PHP代码。

  GitHub团队将该数据集按照80-10-10的比例划分为训练集/验证集/测试集,建议用户按照该比例使用此数据集,如下图:

  GitHub还提供了多个代表当前最优水平的基线模型。该排行榜使用一个 query标注数据集来评估代码搜索工具的质量。

  GitHub上正在进行的机器学习研究的关键领域之一是实体的表示学习,例如仓库,代码,issue,配置文件和用户。通过学习共享作为文本的公共向量空间的代码的表示,GitHub在实现语义搜索方面取得了重大进展。例如下图:

  请注意,即使在搜索查询和文本之间没有共同的关键字(显示的代码和注释不包含单词“Ping”,“REST”或“api”),所展示的语义搜索也会返回合理的结果!

  用语义搜索来增强关键字搜索的含义是深远的。例如,这种功能将加快将新软件工程师加入项目的过程,并总体上增强代码的可发现性。

  为了评估代码搜索模型,GitHub团队收集了一组初始的代码搜索查询,并让程序员注释了潜在结果的相关性。GitHub团队首先从必应(Bing)收集了具有较高点击率的通用搜索查询来进行编码,然后将它们与StaQC的查询相结合,从而产生了99个与代码相关的概念的查询(即,GitHub团队删除了所有仅API文档查找的内容)。

  最后,GitHub团队要求程序员,数据科学家和机器学习研究人员以从零(“完全不相关”)到三(“完全匹配”)的比例来注释提议的结果与查询的相关性。有关注释过程和数据的详细说明,请参见GitHub团队的技术报告:

  GitHub团队希望将来扩展评估数据集,以包括更多的语言,查询和注释。在接下来的几个月中,随着GitHub团队继续增加更多内容,GitHub团队的目标是将来为CodeSearchNet Challenge的下一版本提供扩展的数据集。

  • Copyright © 2002-2011 DEDECMS. 织梦科技 版权所有 Power by DedeCms