加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

如何提升代码搜索效果?GitHub团队打造代码搜索领域的GLUE数据集

发布时间:2019-09-30 00:04:39 所属栏目:移动互联 来源:机器之心编译
导读:想提升代码搜索效果?首先你得知道怎么才算提升。GitHub 团队创建 CodeSearchNet 语料库,旨在为代码搜索领域提供基准数据集,提升代码搜索结果的质量。 搜索代码进行重用、调用,或者借此查看别人处理问题的方式,是软件开发者日常工作中最常见的任务之一

为了学习这些嵌入函数,GitHub 团队在架构中加入了标准序列编码器模型,如图 3 所示。首先,根据输入序列的语义对其执行预处理:将代码 token 中的标识符分割为子 token(如变量 camelCase 变成了两个子 token:camel 和 case),使用字节对编码(byte-pair encoding,BPE)分割自然语言 token。

如何提升代码搜索效果?GitHub团队打造代码搜索领域的GLUE数据集

图 3:模型架构概览。

然后使用以下架构之一处理 token 序列,以获得(语境化的)token 嵌入。

  • 神经词袋模型:每个(子)token 都被转换为可学习嵌入(向量表示)。
  • 双向 RNN 模型:利用 GRU 单元总结输入序列。
  • 一维卷积神经网络:用于处理输入 token 序列。
  • 自注意力模型:其多头注意力用于计算序列中每个 token 的表示。

之后,使用池化函数将这些 token 嵌入组合为一个序列嵌入,GitHub 团队已经实现了 mean/max-pooling 和类注意力的加权和机制。

下图展示了基线模型的通用架构:

如何提升代码搜索效果?GitHub团队打造代码搜索领域的GLUE数据集

CodeSearchNet 挑战赛

为了评估代码搜索模型,GitHub 团队收集了一组代码搜索 query,并让程序员标注 query 与可能结果的关联程度。他们首先从必应中收集了一些常见搜索 query,结合 StaQC 中的 query 一共获得 99 个与代码概念相关的 query(GitHub 团队删除了 API 文档查询方面的问题)。

如何提升代码搜索效果?GitHub团队打造代码搜索领域的GLUE数据集

图 1:标注者指导说明。

之后,GitHub 团队使用标准 Elasticsearch 和基线模型,从 CodeSearchNet 语料库中为每个 query 获得 10 个可能的结果。最后,GitHub 团队请程序员、数据科学家和机器学习研究者按照 [0, 3] 的标准标注每个结果与 query 的关联程度(0 表示「完全不相关」,3 表示「完全匹配」)。

未来,GitHub 团队想在该评估数据集中纳入更多语言、query 和标注。接下来几个月,他们将持续添加新的数据,为下一个版本的 CodeSearchNet Challenge 制作扩展版数据集。

【编辑推荐】

  1. TextMate免费开源的老牌代码编辑器
  2. Github 上非常实用的 Vue 开源库
  3. 提高开发人员的工作效率,请牢记这些小贴士
  4. GitHub万星NLP资源大升级:Pytorch和TF深度互操作,32个最新模型
  5. 四年完成400万行Python代码检查,甚至顺手写了个编译器
【责任编辑:张燕妮 TEL:(010)68476606】
点赞 0

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读