【论文阅读-ASE 2020】利用单词重叠信息的代码检索 OCoR: An Overlapping-Aware Code Retriever

2023-10-27

OCoR: An Overlapping-Aware Code Retriever

Conference: ASE 2020

Authors:
在这里插入图片描述

摘要

代码搜索任务是通过给出一段自然语言描述,模型能够找到一系列最相关的代码片段,由此来帮助开发人员重用代码。

然而现有的方法都无法来专门捕获一个重要的特征:单词重叠(overlaps)。

有不同的开发人员写的使用的不同名称可能是相关联的,比如“message”和“msg”它们表达的意思很可能是相同的。而且对于程序语言的变量名称和相应的自然语言描述之间的overlap也可能说明两者之间的相关程度。

本文提出的解决方案–OCoR:

  • embds names by characters to capture overlaps
  • introduces overlap matrix to represent the degree of overlaps

实验结果:

相比较于原来的SOTA,从13.1%提升到了22.3%。

简介

如下图所展示的例子,单词“join_table_b”与自然语言描述中的“join”和“table”存在重叠部分,以前的方法无法捕获这种overlap信息,而这篇论文中使用了字符级别的embedding来处理这种重叠信息,使得表达更加丰富。

在这里插入图片描述

下图展示了一个计算字符级别embedding和重叠矩阵的过程:

在这里插入图片描述

如图所示,在a图中,除了最后一个字符的向量外,这两个标识符的组合向量几乎是由相同的向量计算的。因此,这些标识符的最终嵌入在高维空间中是距离相近的。在b图中,展示了部分的重叠矩阵,可以看出单词“join_table_b”与自然语言描述中的“join”的匹配程度相对于其它单词较高。

模型

下图展示了模型的整体结构图:
在这里插入图片描述

其中 A ( C O D E , N L ) A(CODE, NL) A(CODE,NL) A ( N L , C O D E ) A(NL,CODE) A(NL,CODE) 是重叠矩阵(Overlap Matrices)。

模型输入

模型的输入可以分为3部分:

  • 自然语言描述
  • 代码片段
  • 重叠矩阵

其中重叠矩阵是根据自然语言描述和代码片段计算而来。

在此模型中考虑了NL和CODE的两种重叠矩阵,因为矩阵 A ( C O D E , N L ) A(CODE, NL) A(CODE,NL) A ( N L , C O D E ) A(NL,CODE) A(NL,CODE) 的形状并不相同,所以此模型由此也分开了2个支线分别处理,后面再连接在一起。

Encoder

可以看出在模型框架图中的左上角和右上角展示了对于模型NL和CODE的分别编码。

编码器是一个包含了多个mechanism的栈,每一个mechanism中包含了3个sub-layers:

  • self attention
  • gating layer
  • convoluational layer

在每一个mechanism之后,都用到有一个残差连接和正则化层。

编码信息连接

在Encoder多个mechanism之后,另外使用了max pooling进行池化。之后使用self attention关联两个编码的信息,在具体的关联中,会把另一边的编码信息作为Query输入到self attention中。

最后将输入的4个向量进行拼接,作为最后的MLP的输入信息,进而再进行预测。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文阅读-ASE 2020】利用单词重叠信息的代码检索 OCoR: An Overlapping-Aware Code Retriever 的相关文章

  • 春日

    春河日语风中雪 山花烂漫无旧人 朝看青川山岳早 屋棚夜下早还家 粉黛陶冠春暖意 笑含茹妆玉着衫 望风巍然而却下 不知天外九重天 潇潇暮雨冬来去 莺鸟桃花又一春 文人墨客山茶草 酸草含嚼苦味深 羽墨掸空不见色 横刀断水水无痕

随机推荐

  • Thinkpad VMware 安装虚拟机出现此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态(问题解决方法)

    今天在使用VMware打算在机器中安装新的虚拟机时 出现 此主机支持 Intel VT x 但 Intel VT x 处于禁用状态 错误如下 提示信息 此主机支持 Intel VT x 但 Intel VT x 处于禁用状态 如果已在 BI
  • mysql中innodb和myisam对比及索引原理区别

    InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型 这两个表类型各有优劣 5 7之后就不一样了 1 事务和外键 InnoDB具有事务 支持4个事务隔离级别 回滚 崩溃修复能力和多版本并发的事务安全 包括ACID 如果应用
  • 【Linux】磁盘或内存 占用比较高要怎么排

    当 Linux 磁盘空间满了时 请注意 在进行任何删除操作之前 请确保你知道哪些文件可以安全删除 并备份重要文件 以免意外丢失数据 当 Linux 磁盘空间满了时 可以按照以下步骤进行排查 检查磁盘使用情况 运行 df h 命令来查看磁盘使
  • 【愉快的使用go.mod应用自己开发的package包(库)】

    GO引用自己写的模块1 仅使用 根 路径的go mod 在go中开启了GO111MODULE on 就可以使用go语言自带的mod来管理自己开发的项目的依赖 从而可以摆脱传统的必须把依赖的模块放在GOROOT或者GOPATH下的src pk
  • js数据结构之队列及其应用

    对列 刚好和栈相反 它是先进先出的 只允许在队列的一头添加元素 另一头删除元素 class queue constructor this arr 插入元素 enqueue ele this arr push ele 删除元素 dequeue
  • GLM:ChatGLM的基座模型

    介绍 ChatGLM 6B https github com THUDM ChatGLM 6B 主要是能够让我们基于单卡自己部署 ChatGLM的基座是GLM General Language Model Pretraining with
  • 手把手教你solidworks中的齿轮配合

    手把手教你solidworks中的齿轮配合 1 建立装配图 在装配体中导入两个齿轮 2 把齿轮1固定改为浮动 3 如下图所示选中隐藏 显示主要基准面 4 选中上视基准面和右视基准面 点击参考面之下的基准轴如下图所示 打上勾 建立基准轴后 点
  • SQL注入--报错和盲注

    目录 报错注入 floor函数报错注入 extractvalue 函数报错注入 updatexml 函数报错注入 盲注 布尔盲注 时间盲注 报错注入 文章内容篇幅较长 请认真研读 回顾之前的文章 sql注入基础 了解到sql注入的分类有 基
  • EXCEL-VBA:弹出对话框,打开文件(指定扩展名)两种方法

    方法一 Dim FileName As String FileName Application GetOpenFilename Excel 文件 xls xlsx 方法二 With Application FileDialog msoFil
  • Shell脚本入门 07:进程与信号

    文章目录 目的 进程相关 子进程 子Shell 进程替换 信号相关 发送信号 捕获信号 总结 目的 进程与信号中Linux中比较重要的内容 Shell脚本编写调试时也会涉及一些进程与信号相关的内容 这篇文章将对相关内容做个简单的记录 进程相
  • 多线程中递归锁的实现

    多线程中递归锁的实现 在上一篇文章中 我已经阐述了多线程中简单锁的实现 可在结束的时候 我就提了那么一个问题 那就是如果在一个链表中进行插入时 要进行查询的操作 如果只是简单的锁 是没法实现的 所以 递归锁 就浮现于世了 可能有些人看到递归
  • html动态加载js方法,原生JS实现动态加载js文件并在加载成功后执行回调函数的方法...

    本文实例讲述了原生JS实现动态加载js文件并在加载成功后执行回调函数的方法 分享给大家供大家参考 具体如下 有的时候需要动态加载一个javascript文件 并且在加载成功后执行回调函数 例如文件中保存了json数据之类的 要实现这样的功能
  • rclone 命令大全

    rclone 命令大全 使用google翻译 这描述了每个 rclone 命令 分为两组 非后端和后端标志 可用的全局标志 非后端标志 这些标志可用于每个命令 ask password 允许提示输入加密配置的密码 默认为 true auto
  • 肘部法和轮廓系数法确定K-means中的k值

    目录 1 K Means 算法 2 肘部法 3 轮廓系数法 1 K Means 算法 k means算法 详解k means算法原理 是机器学习中常用的聚类算法 原理简单实现容易 内存占用量也比较小 但使用这个方法时 需要事先指定将要聚合成
  • 【Python递归练习】

    1 出售金鱼问题第一次卖出全部金鱼的一半加二分之一条金鱼 第二次卖出乘余金鱼的三分之一加三分之一条金鱼 第三次卖出剩余金鱼的四分之一加四分之一条金鱼 第四次卖出剩余金鱼的五分之一加五分之一条金鱼 现在还剩下11条金鱼 问这鱼缸里原有多少条金
  • 模块定义qmldir文件

    Module Definition qmldir Files 模块定义qmldir文件 There are two distinct types of qmldir files qmldir文件有两种不同的类型 QML document d
  • ubuntu查看系统资源占用(内存,cpu和进程)

    转载自网易博客 http bluexp29 blog 163 com blog static 33858148201071534450856 bluexp29的博客 linux真是太强大了 查看ubuntu的资源占用的命令为 top top
  • odoo第三方模块审批模块的使用

    1 激活超级用户 因为里面的domain限制了一些字段非超级用户只读 2 依次点击 设置 gt gt 审批流设置 设置审批流 审批流设置完成后 进入所绑定模型的form视图 可以看到多了三个动作
  • python 自(1)定义变量 数据类型 判断数据类型 转换数据类型 算数运算符 复合运算符 比较运算符 逻辑运算符 赋值运算符

    注释 注释 就是一个 也可以 ctrl 也可以出来注释 命名规范 标识符 由字母 下划线 数字 组成 数字不能开头 不可以使用 关键字 严格区分大小写 定义变量 变量定义 重复利用 例如 cons 你好小周 print cons print
  • 【论文阅读-ASE 2020】利用单词重叠信息的代码检索 OCoR: An Overlapping-Aware Code Retriever

    OCoR An Overlapping Aware Code Retriever Conference ASE 2020 Authors 摘要 代码搜索任务是通过给出一段自然语言描述 模型能够找到一系列最相关的代码片段 由此来帮助开发人员重