| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 《CommtPst: Deep learning source code for commenting positions prediction》论文笔记 -> 正文阅读 |
|
[人工智能]《CommtPst: Deep learning source code for commenting positions prediction》论文笔记 |
年份:2020(The Journal of Systems & Software期刊) 背景:?一个智能的代码注释器应该是能够首先根据一段给定的代码,找出应该注释的正确位置,然后为这段代码生成一段注释。 论文主要贡献:?提出了一个叫CommtPst的模型。其能够有效地识别出代码段中的合理注释位置。采用了AST提取代码的语法信息,以及对代码做预处理后提取到了用于表示代码语义信息的文本元素。然后随机打乱整合每一句代码的语法和语义信息,利用word2vec将其向量化。最后就是?利用Bi-LSTM模型来建模代码语句之间的逻辑关系,以进一步识别出代码段中的注释位置。实验部分,通过和其他模型的对比以及一些对比实验,证明了论文提出的模型的有效性和可行性。 数据集:?论文调查了10个Github上的大型开源软件项目(都是Java语言)。
?由于header comment只出现于类或函数的声明之前,所以没必要识别预测它。所以论文只对internal header做识别预测。
?这种显然是开发者丢弃或用来测试的代码语句。
?然后这两种不需要的注释,论文结合AST以及一些基于关键词的方法将其滤除。 代码语法信息的提取:?利用AST进行代码语法信息的提取(工具:Eclipse JDT)。最后每行代码都可提取得到它的syntax tokens。如下图: 代码语义信息的提取:?代码语句中有些词会影响其代码的语义。所以制定了一些预处理规则对代码行进行预处理: 两种特征信息的融合以及量化:?由于语法信息时由AST解析得出的syntax tokens,而语义信息则是通过预处理代码得到的文本元素。它们是两者不同方式表示的特征,难以直接将它们进行融合。 ?对于这两种特征信息的融合,论文是这样做的: Bi-LSTM模型的引入:?Bi-LSTM模型不仅可以有效保留序列的长期依赖关系,而且能够双向地学习代码上下文周围信息的关系。Bi-LSTM原理就不做解释了,它是NLP领域较为常见的模型。如下图: 实验配置:?因为函数越短,它可能包含的注释越少,论文经过统计,最后滤除了代码行少于5行的函数。并增加了2000份完全没有注释的函数。所以最后一共有16942份函数数据。按大约8:1:1的比例切分成训练集,验证集,测试集。 实验的评估指标:
实验部分:?实验主要围绕以下4个问题展开:
RQ1: What is the accuracy of CommtPst in predicting commenting positions? ?下面是对比了5种随机种子生成的数据集对模型性能的影响,额。。影响不大。 RQ2: What are the impacts of structural and semantic features on the accuracy? RQ3: Does the method size (i.e., code amount) affect the accuracy of CommtPst? RQ4: Does the number of comments per method affect the accuracy of CommtPst? ?由于拥有小于等于4个注释的函数占比81%。所以这一部分实验只利用这一部分数据。 讨论:FN是真的FN吗??FN即假阴性,为验证假阴性样本是否真的不需要注释。论文请了5个资深程序员验证,最后得出了:32%的FN样本应该被注释。即这32%的FN应该是TP。
?所以修正评估指标的公式,如下: 讨论:语法和语义信息是否要随机打乱整合??实验对比结果如下。明显随机打乱效果更好咯。。论文将其归因于:随机打乱语法和语义信息进行融合能够使word embedding更有效地挖掘这两种信息的整体关系。牛哦~ 相关工作:?主要分为两部分(具体看论文里介绍啦):
?以上相关工作中有很多方法,很多都结合了DL,比如有些结合AST和CNN一起的呀,有些用RNN编码解码器的呀,等等。论文作者从以上相关工作中获得了许多启发,所以提出了论文中的方法。 对有效性的威胁?1.实验指标的选取。因为论文的问题实际上可以看成是一个二分类问题(标注为注释或未注释)。所以采用这几个实验指标是较为合适的,威胁性不大。 ?2.模型泛化性的威胁。由于数据集都是Java代码,当用到别的代码语言结果可能不太好。所以未来研究中将会分析更多其他代码语言编写的函数去减轻这个威胁。 ?3.注释的质量问题。因为数据集中不可避免的有一些低质量的注释没有完全去除,所以在未来研究中将会进一步调查研究这些注释的质量,更有效地将其过滤。 未来方向:?完善代码注释位置预测模型,建立一个更为智能的注释模型,能够自预测出合理的代码注释位置,然后生成对应代码段的注释。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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:45:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |