| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 代码摘要生成:《Summarizing Source Code with Transferred API Knowledge》论文笔记 -> 正文阅读 |
|
[人工智能]代码摘要生成:《Summarizing Source Code with Transferred API Knowledge》论文笔记 |
IJCAI2018 以往的代码摘要自动生成技术主要有基于信息检索(IR)和基于深度学习(DL)的方法,基于IR方法的弊端是标识符和方法命名很糟糕时无法提取关键字,且如果不存在相似的代码段,就无法输出准确的摘要;基于DL生成注释的弊端是大多方法将代码视为纯文本,会丢失很多有用信息,如约定的标识符命名和应用程序编程接口(API)的使用模式。因此论文提出了一种新的代码摘要生成方法——TL-CodeSum(也是针对JAVA的),受迁移学习的启发,模型学习不同但相关方法的API知识,最终成功利用源代码中潜在的API知识来帮助代码摘要生成。 论文贡献:
一、方法原理API能大大提高编程效率,程序员在开发时也会经常使用一些API。可见,代码片段的功能往往与其使用的API序列有关,开发人员通常会调用一个特定的API序列来实现一个新特性。与具有不同编码约定的源代码相比,API序列往往是规则的。于是作者推断,在API序列中蕴含的信息有助于生成代码摘要,基于这个思想,提出了TL-CodeSum。 1.整体框架
2. API Sequence Summarization Task采用基于seq2seq的模型来实现API序列摘要的生成,如下图: 可以发现主要包含两部分工作:API序列的编码和解码。 解码器是另一个RNN,用于预测输出生成摘要下一个单词的条件概率,同样,由之前生成的单词d,当前隐藏状态s和语义向量C决定。g是一个非线性函数。 3. Code Summarization Task利用从API序列摘要模型中学习到的API知识辅助生成代码摘要,代码摘要模型是基于Seq2Seq模型的一个变体,用迁移学习思想,用到了训练好的API序列摘要模型的encoder部分。如下图: 二、实验1.数据集
来源:github 2.数据预处理
最终获得340,922对(API sequence, summary),69,708对(API sequence, code, summary)。按8:1:1划分训练集,验证集,测试集。 三、结果1.评价指标
2.对比结果(1)消融实验的设置
无论是仅用API-Only还是Code-Only模型,精度都要比CODE-NN要好(好太多了),两者结合API+CODE又有了直观的提升。然后使用TL-CodeSum又有了很好的提升(预训练还是很有用的)。 (2)MT评估结果 3.质量分析(1)API embedding质量 (2)API和代码的相关性 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 20:26:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |