【论文阅读记录】代码的可学习语义表示

论文阅读:Neural Code Comprehension: A Learnable Representation of Code Semantics--NeurIPS 2018 摘要: 大多数作品直接处理代码或者使用语法树表示,然而因为程序的一些结构特征,像函数调用、分支、以及语句顺序的可替换性,现有的方法没有足够地理解程序语义的鲁棒性。本文提出了一种新的技术去学习代码语义,并将其应用于各种程序分析任务中。具体来说,首先规定一个适应于人类和机器生成的程序的健壮的代码分布假设,根据这个假设定义一个基于代码中间(IR,独立于源代码编程语言)表示的嵌入空间inst2vec。利用... 阅读详情

 

 

论文标题:Neural Code Comprehension: A Learnable Representation of Code Semantics
原文链接:Neural Code Comprehension: A Learnable Representation of Code Semantics
说明:在读研究生为方便记忆梳理学习,手敲论文笔记,概括论文的主要思想

背景

在代码学习表示领域,大多数试图直接处理代码或使用句法树表示。但是,由于功能调用,分支和可互换的语句顺序等结构特征,现有方法都不足以可靠地理解程序语义。

在本文中,我们提出了一种新的处理技术来学习代码语义,并将其应用于各种程序分析任务。特别是,我们规定代码的稳健分布假设适用于人类和机器生成的程序。根据这个假设,我们基于独立于源编程语言的代码的中间表示(IR)定义一个嵌入空间inst2vec。我们利用程序的基础数据流和控制流,为此IR提供了一个新的上下文流定义。然后,我们使用类比和聚类定性分析嵌入,并评估三个不同高级任务的学习表示。

挑战

  • 源程序设计语言(或用于优化的机器代码)是固定的,这不能反映过多的语言,也不能推广到未来的语言。
  • 现有方法按顺序处理令牌(或指令),目标是无函数和无循环的代码。然而,这样的代码并不代表大多数应用程序。

贡献

  • 我们为代码制定了一个稳健的分布假设,从中我们得出了一种基于上下文流和 LLVM IR 的代码语句的新分布式表示。
  • 我们详细介绍了 XFG 的构造,这是第一个专为结合数据和控制流的语句嵌入而设计的表示。
  • 我们使用聚类、类比、语义测试和三个根本不同的高级代码学习任务来评估表示。
  • 使用一个简单的 LSTM 架构和固定的预训练嵌入,我们匹配或超过了每项任务中表现最好的方法,包括专门的 DNN 架构。

设计过程和框架

 

 

论文笔记 | code representation(代码表示学习)系列 文章目录Associating Natural language comment and source code entities研究动机本文方法Deep Learning Similarities from Different Representations of Source Code研究动机具体方法实验部分Learning Semantic Vector Representations of Source Code via a Siamese Neural Network研究动机具体方法实验部分数据N 阅读详情

相关推荐

编译原理,简单赋值语句的语义分析

这是编译原理的语义分析,对一个简单赋值语句进行翻译,翻译成逆波兰是也就是后缀式.

论文笔记:代码语义的表示(Neural Code Comprehension: A Learnable Representation of Code Semantics)

论文概况 论文链接:Neural Code Comprehension: A Learnable Representation of Code Semantics 论文作者:Tal Ben-Nun,Alice Shoshana Jakobovits,Torsten Hoefler 论文来源:32nd Conference on Neural Information Processing...

彩虹糖的博客 3247

具有丰富语法和语义信息的基于树核的语义关系提取

本文提出了一种新的基于树核的,具有丰富语法和语义信息的方法,用于提取命名实体之间的语义关系。 首先,使用一个分析树和一个实体对,我们构建一个丰富的语义关系树结构来整合语法和语义信息。 然后,我们提出了一个上下文敏感的卷积树内核,该内核通过将它们的祖先节点的路径视为上下文以在树结构中捕获结构信息来枚举无上下文子树和上下文敏感子树。 对自动内容提取/关系检测和表征(ACE RDC)语料库的评估表明,所提出的基于树核的方法优于其他最新方法。

从数组的遍历方式谈谈代码的语义性

一、前言 我之前的一篇文章介绍了几种遍历数组的方式,当然远不止这几种。不过今天想谈的是别的东西,数组遍历的具体方式和用法就不再赘述了。今天,我想以数组遍历方式为切入点,谈一下代码的语义性。当然,这只是个人理解。 首先,代码语义性是什么?从我的角度来说,语义性就是代码本身呈现的、和具体功能无关的、表达代码作用的程度,或者说是代码直观的程度。 别人看一段代码,不看代码具体的执行逻辑和过程,能理解...

weixin_42733155的博客 956

AI辅助专利撰写实战:30分钟高效产出发明专利初稿

在技术创新的浪潮中,专利撰写常常是开发者将创意转化为知识产权保护壁垒的关键一步,但这个过程往往耗时费力,需要兼顾技术深度与法律文书规范。近期,借助AI辅助工具来提升专利撰写效率已成为一个热门探索方向。本文将围绕如何利用AI工具,在30分钟内高效完成一篇具备授权潜力的发明专利初稿,进行一场从0到1的实战演练。无论你是独立开发者、初创团队的技术负责人,还是希望保护自己研究成果的学生,这套方法都能帮助你快速梳理技术方案,形成结构严谨、逻辑清晰的专利申请文档。 1. 背景与核心概念:AI辅助专利撰写的价值与边界 在

weixin_34253126的博客 494

从XSA到Linux应用:Petalinux与Vitis的嵌入式开发全流程解析

本文详细解析了从XSA文件到Linux应用的嵌入式开发全流程,重点介绍了Petalinux与Vitis工具链的使用技巧和实战经验。通过XSA硬件描述、Petalinux工程搭建、系统镜像优化及Vitis开发配置等关键步骤,帮助开发者高效完成ZYNQ平台开发,解决常见问题并提升开发效率。

weixin_29195217的博客 192

部分毕业设计的论文和代码

1、基于matlab的车牌识别 这个有论文,而且呢,做的很不错,matlab写的,7.0的matlab下可以运行,6.0的matlab有错误。 matlab的GUI程序 (车牌定位、车牌识别)下载地址http://ishare.iask.sina.com.cn/f/5280704.htmlmatlab的GUI程序 (只有车牌识别)下载地址http://ishare.iask.sina...

weixin_30386713的博客 505

10分钟上手YOLOv11:最强姿态估计模型来了,代码开源,效果炸裂!

【10分钟玩转YOLOv11实时姿态估计】🚀 YOLOv11作为YOLO家族最新成员,在速度、精度和易用性上全面升级,尤其适用于姿态估计等复杂视觉任务。本文带您快速掌握: 1️⃣ 核心概念:姿态估计即识别人体17个关键点(如关节部位)并连接成数字骨架,是智能健身、体感游戏等应用的基础。 2️⃣ 技术优势: 超轻量级(最小仅2.9M参数) 极速推理(GPU仅1.7ms) 高精度(COCO mAP@50-95达50%) 3️⃣ 三步实操: ① 安装:pip install ultralytics ② 准备人物

weixin_41246802的博客 1787

Code表示的相关文献

年份 文章 备注: 2021 Integrating Tree Path in Transformer for Code Representation 在 Transformer 结合语法树路径的代码表示方法 论文阅读笔记 2021 Unified Pre-training for Program Understanding and Generation 用于程序理解和生成的统一预训练 论文阅读笔记 2021 CodeT5: Identifier-aware Unified Pre-tra

小王同学的博客 1479

《YOLOv8:从入门到实战》报错解决 & 专栏答疑

《YOLOv8:从入门到实战》专栏上线后,部分同学在学习过程中提出了一些问题,笔者相信这些问题其他同学也有可能遇到。为了让大家可以更好地学习本专栏内容,笔者特意推出了该篇专栏答疑,针对同学们在学习过程中所提出的问题进行汇总记录,并不断实时更新,希望能够帮助到大家!🌈

小哥谈 1241

备战2025数学建模国赛(算法46):多目标优化

本篇博客将深入浅出地介绍多目标优化的核心概念、主流算法,并重点结合一个数学建模竞赛的经典案例,提供完整的Python代码实现,助你在未来的竞赛中游刃有余。它通过寻找帕累托最优解集,完美地诠释了“鱼与熊掌不可兼得”的权衡思想,为最终决策提供科学依据。这些问题都包含多个相互冲突的目标,传统的单目标优化方法(如梯度下降、单纯形法)对此无能为力,因为它们无法同时优化多个目标。在数学建模竞赛中,我们面临的绝大多数问题都不是单一的“最好”,而是充满权衡与妥协的“最优”。记住,成功的建模不仅在于解出问题,更在于清晰地。

YOLO 285

语义分割干货|7篇带有开源代码的语义分割论文

今天跟大家分享7篇带有开源代码的。

AbnerAI的博客 1473

Redis下载安装与配置(windows)

一、Redis下载 二、Redis安装 三、启动Redis临时服务并测试连接(可跳过) 四、Redis配置

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 7万+

InferCode:无监督学习代码表示 code representation learning

代码表示无监督学习论文:InferCode: Self-Supervised Learning of Code Representations by Predicting Subtrees

衣带渐宽人憔悴 2010

uniApp微信小程序:error: 60001 request:fail errcode:-101 cronet error code:-101error_msg:net::ERR CONNECTI

uni-app微信小程序域名访问报error 60001 request:fail errcode:-101,解决Uniapp微信小程序报600001错误,uni.request()接口请求报错,服务器更换SSL证书后,uniapp微信小程序出现`request:fail errcode:-101`问题分析与解决,服务器更换ssl证书后,手机访问微信小程序异常,微信小程序更换SSL证书后出现请求报错,服务器更换SSL证书,微信小程序报600001,小程序反应偶尔出现request:fail errcode:

✅ 精选推荐文章 4583

Unity 热更新技术 |(六)xLua框架学习最新系列完整教程

开始学习热更新方面系列知识,就从这一篇开始吧! 本系列教程 会从热更新基本概念出发,详细介绍热更新相关的全套知识点。 如热更新技术基本原理、热更新主流方案、AssetBundle系列教程、Lua语言编程、Lua与Unity交互教程、Xlua框架使用、热更新实战教程等方面。 热更新作为一个开发者必备技能,如果想学习的话,可以从现在开始了哦~ 接下来先从XLua学习使用 开始学习吧!

努力前行,总会成为自己心中的那道光 1万+

NIPS 2018 paper list(论文列表)

Efficient Algorithms for Non-convex Isotonic Regression through Submodular Optimization Francis Bach Structure-Aware Convolutional Neural Networks Jianlong Chang, Jie Gu, Lingfeng Wang, GAOFENG MENG, ...

人工智能技术学习与分享 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

code2seq: Generating Sequences from Structured Representations of Code笔记

文章目录前言OverviewModel ArchitectureREPRESENTING CODE AS AST PATHSEncoderABLATION STUDY 前言 这篇文章源码还未公布,方法有点编译原理的味道,这种结合语法结构的思想很好,能用编译原理的知识我觉得确实会有帮助,就是具体方法或许可以优化。 论文地址:https://arxiv.org/abs/1808.01400 作者地址,...

想写就写咯 3206

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

三维模型 检索 代码_语义源代码检索的多模态注意力网络学习

摘要代码检索技术和工具在帮助软件开发人员在给定用户查询(例如,描述检索特定代码片段的功能的简短自然语言文本)的可用开源存储库中检索现有代码片段方面发挥了关键作用。尽管目前在提高代码检索效率方面做了大量的工作,但仍有两个主要问题阻碍了它们在回答复杂查询时从大规模存储库中准确地检索出可满足要求的代码片段。首先,现有的方法只考虑源代码的浅层特征,如方法名称和代码标记,而忽略了源代码的抽象语法树(AST)...

weixin_39898380的博客 493

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

软件开发中的代码语义分析:基于预训练语言模型的代码表示学习与应用

通过代码表示学习(Code Representation Learning),模型能将代码转换为高维语义向量,实现更精准的语义理解。通过CodeBERT、GraphCodeBERT等模型,代码语义分析实现了从"语法匹配"到"语义理解"的跨越。随着模型效率提升和应用场景拓展,未来代码分析将更智能、更精准,最终推动软件开发进入"语义驱动"新阶段。预训练语言模型通过在大规模开源代码库(如GitHub)上预训练,学习通用代码表示,有效缓解上述问题。代码表示学习的关键是构建能编码语义的向量空间。

jie_kou的博客 833

理解程序语言中的语义(Semantics)

语义是程序语言的核心组成部分,它决定了代码的行为和逻辑。无论是静态语义还是动态语义,它们都确保了程序能够按照预期执行。理解语义不仅有助于编写正确的代码,还能帮助开发者更好地调试和优化程序。

大葱的田地🌱 964

编译原理笔记03

编译原理笔记03

4629

语义的特征提取及简单词频展示(WordCloud)

对于语句分析,以及词云展示,具体代码如下: # coding=utf-8 import jieba import numpy import pandas as pd from wordcloud import WordCloud import matplotlib.pyplot as plt # 将三个句子用jieba.cut处理 content1 = jieba.lcut("今天很残酷,明天更...

yanpenggong的博客 2605

语义分析的一些方法

语义分析,本文指运用各种机器学习方法,挖掘与学习文本、图片等的深层次概念。wikipedia上的解释:In machine learning, semantic analysis of a corpus is the task of building structures that approximate concepts from a large set of documents(or imag

xiaolu的专栏 3万+

所谓的语义信息

语义信息,通俗的理解就是 比如 人类能定义的一些特征 比如,图片里一个人的话,比如,眼睛,鼻子耳朵嘴巴啊,或者胳膊 腿啊,抑或 脸部肤色,皱纹等。 也就是 某个对象的一些局部特征 语义信息有高有低, 低语义信息指的是 高语义信息指的是 ...

TEDDY的博客 8808
上一篇: 【论文阅读笔记】使用结构代码嵌入检查智能合约
下一篇: 【测试开发】【postman】按顺序循环执行接口
玄月无疆
博客等级 码龄9年 34粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值