| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 代码注释生成:《Deep code comment generation with hybrid lexical and syntactical information》论文笔记 -> 正文阅读 |
|
[人工智能]代码注释生成:《Deep code comment generation with hybrid lexical and syntactical information》论文笔记 |
原文链接:点此转跳 一、背景及介绍这篇论文的工作其实是之前他们所提出的一个模型——DeepCom(DeepCom的具体介绍可看我之前的一篇笔记:点此转跳)的升级版,新名字叫混合DeepCom,可以较好地学习代码的词汇和句法信息,从而提高注释生成的质量。
主要贡献
二、模型结构及原理整体结构
Encoder混合deepcom分别用两个编码器来源码和AST序列进行编码。一个编码器学习源码中的词汇信息,另一个编码器学习AST序列中的结构信息。这次论文编码器采用的是GRU,相对于原来的LSTM,也算是一个小改动吧。 Attention没有加注意力机制的话,解码时用的都是固定的语义向量c。引入注意力机制后,固定的中间语义向量c换成了根据当前生成单词而不断变化的ci,由于混合DeepCom用到两个编码器,这里主要说一下怎么结合两个编码器的attention来计算ci,计算如下: Decoder解码器用的也是GRU,没啥好说的,没什么改动,和之前一样,贴个公式吧,加深印象: Beam SearchBeam Search是greedy Search的扩展,其返回是一个最有可能的输出序列的列表。在每个时间步长中,Beam Search会保留成本最小的k个令牌作为候选,其中k也叫 beam-width,一个简单的例子如下图,这里设置k=2,因此最后输出列表有两个候选序列。 SBT与论文之前的DeepCom提出的基本没什么不同,只不过一个细节是混合DeepCom对AST进行SBT的时候只在序列添加AST节点的type,因为节点的类型反映了代码的结构信息。 Reduce Out-of-Vocabulary Tokens代码除了固定的操作符和关键字外,还有大量用户定义的标识符,这些标识符对语言模型的词汇表有重要影响。如果直接将这些标识符添加进词汇表,其词汇量是非常大的。作者通过观察发现其实大多数标识符都是由几个单词组成的。这些词通常是常见的词,并经常被反复使用。因此,基于一个简单的思考,作者将标识符采用驼峰分词法将其划分为几个单词,以减少源代码中的Out-of-Vocabulary Tokens。经过这番操作,训练集中的tokens数量从542,680减少到47,939。 三、实验数据集数据集来自GitHub2015-2016年创建的Java仓库,保留10星以上的项目。
模型参数设置
评价指标作者用的评价指标真的过多过于复杂, 分为Information Retrieval (IR) metrics 和 Machine Translation (MT),这里就不罗列了,主要关注BLEU吧 RQ1: How effective is Hybrid-DeepCom compared with the state-of-the-art baselines?RQ2: What is the impact of source code and comments with different lengths on the performance of Hybrid-DeepCom?
RQ3: What is the impact of the vocabulary size on the performance of Hybrid-DeepCom?横轴的比例是out of vocabulary的比例,camel表示将标识符用驼峰分割后的单词被词汇表完全包含。由于deepcom没用驼峰分割(直接用AST节点的type代替没见过的AST节点单词)因此他们没有这一项的计算。 RQ4: How effective is Hybrid-DeepCom to generate comments for new projects?采用10折交叉验证,最后记录平均结果。 四、讨论与结论主要针对三方面:
这些讨论都挺有意思的,具体可以看原文作者给出的解释。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/27 6:30:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |