选自GitHub
作者:Hamel Husain
机器之心编译
参与:魔王
想提升代码搜索效果?首先你得知道怎么才算提升。GitHub 团队创建 CodeSearchNet 语料库,旨在为代码搜索领域提供基准数据集,提升代码搜索结果的质量。
论文地址:https://arxiv.org/abs/1909.09436
语料库及基线模型地址:https://github.com/github/CodeSearchNet
挑战赛地址:https://app.wandb.ai/github/codesearchnet/benchmark
文档 d_i 被截断,仅保留第一个完整段落,以使文档长度匹配搜索 query,并删除对函数参数和返回值的深入讨论。
删除 d_i 短于三个 token 的对,因为此类注释无法提供有效信息。
删除 c_i 实现少于三行的对,因为它们通常包含未实现的方法、getters、setters 等。
删除名称中包含子字符串「test」的函数。类似地,删除构造函数和标准扩展方法,如 Python 中的 __str__、Java 中的 toString。
识别数据集中的(近似)重复函数,仅保留其中一个副本,从而删除数据集中的重复项。这就消除了出现多个版本自生成代码和复制粘贴的情况。
神经词袋模型:每个(子)token 都被转换为可学习嵌入(向量表示)。
双向 RNN 模型:利用 GRU 单元总结输入序列。
一维卷积神经网络:用于处理输入 token 序列。
自注意力模型:其多头注意力用于计算序列中每个 token 的表示。