一种基于机器学习的源代码注释质量评估方法技术

技术编号:13841125 阅读:63 留言:0更新日期:2016-10-16 11:23
本发明专利技术涉及一种基于机器学习的源代码注释质量评估方法。该方法首先对原始的代码注释进行预处理,清洗掉干扰信息,然后利用特征项选择和提取技术生成特征向量,将不同类别的特征向量输入文本分类器进行训练和调优,使用了多种不同特性的分类器并最终进行分类器融合,得出较为完善和准确的质量评估分类结果。本发明专利技术填补了以往只分析代码质量而无注释质量分析方法的空白,克服了代码注释质量依靠个人经验和手工方式评估的低效、主观性强等问题,可用于分析和评估手工编写的代码注释、利用文档自动生成的注释以及挖掘工具自动生成注释等多种来源的注释质量,有效的保证了代码注释质量和可理解性,降低软件维护的成本。

【技术实现步骤摘要】

本专利技术涉及机器学习技术,特别涉及源代码注释质量评估方法,提出了一种实用的基于机器学习的源代码注释质量评估方法
技术介绍
机器学习是一门多领域交叉学科,目前存在如下多种定义。机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。机器学习是对能通过经验自动改进的计算机算法的研究。机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。机器学习已经有了十分广泛的应用,例如数据挖掘、自然语言处理、搜索引擎等。源代码注释是为了提高源码可读性而进行的自然语言对应性文本描述,主要目的为了辅助程序员进行代码理解,提高软件系统的可维护性。源代码注释产生的途径多种多样,包括最基本的程序员手工编写、基于软件文档的工具自动生成、基于开放资源(如git log、开源社区和问答系统等)的自动提取和生成等,这些不同来源的注释均需要进行质量评估和度量。本专利技术涉及的机器学习技术主要包括特征项提取和文本分类,特征项提取具体包括针对注释的格式、自然语言专业词库和文本内容方面的特征抽象和计算,文本分类具体包括基于向量空间的k邻近(KNN)分类方法、朴素贝叶斯(NB)分类方法和支持向量机(SVM)分类方法。
技术实现思路
本专利技术的目的在于提供一种基于机器学习的源代码注释质量评估方法。通过这种方法可以高效的客观的评估人工标注的注释、基于文档生成的注释和自动挖掘的注释等不同来源的注释质量,为注释进行自动质量分级,支撑软件源代码的可维护性和可理解性。本专利技术的基于机器学习的源代码注释质量评估方法,包括三部分,如图1所示,第一部分是注释数据预处理,第二部分是注释特征项提取,第三部分是注释质量分类,具体描述如下:1)注释数据预处理:通过对源代码注释数据进行清洗,过滤图片信息、格式和样式信息、超链接和无效字段等信息,保留有效的纯文本注释信息;2)注释特征项提取:利用特征项提取技术结合源代码注释实际情况进行特征提取和计算,针对注释的格式、计算机自然语言专业词库和注释文本内容等方面进行提取和分类器训练;3)注释质量分类:结合文本分类技术和分类器融合方法进行注释质量分类,主要采用的分类器包括基于向量空间的k邻近(KNN)分类方法、朴素贝叶斯(NB)分类方法和支持向量机(SVM)分类方法。下面对本专利技术方法进行具体说明。1)注释数据预处理对原始注释数据库中的注释数据进行逐条清洗和预处理,将预处理后注释依次存入质量评估数据库中。由于注释可能包含富文本信息,如基本的段落格式、字体样式、图片(调用图、流程图、时序图等)、超链接等干扰信息,需要逐步进行去除。在保留的纯文本信息中进行进一步清洗,对文本进行分词和去除停用词,从而提高训练和搜索效率。2)注释特征项提取主要针对注释的几大类特征进行分类提取和训练,包括注释格式、对应性特征、语言相关特征、文本内容等方面。a)格式相关特征项提取,根据函数分析注释的特征,提取了包括“函数名”、“参数”,“返回值”等特征项。b)对应性特征项提取,首先根据编码风格对代码进行切片得到词项集合s,计算s中所有词项在对应注释中的tf-idf(term frequency-inverse document frequency)权重,以集合s中各词项的tf-idf权重的算术平均值作为代码和注释对应性的量化取值。c)语言相关特征项提取,根据分析注释的特点共提取“是否含有图片”、“计算机词汇比例”、“注释长度”、“词性数目”、“动词比例”、“形容词比例”等特征项。d)文本内容相关特征项提取,利用NLPIR/ICTCLAS2014分词系统对清洗后的注释文本进行分词处理,同时利用《百度停用词表》和《哈工大停用词表》进行停用词剔除,共计获取若干词项(如在一个实施例中,获取了1268个词项),计算各注释中词项的tf-idf权重。3)注释质量分类利用训练集中获取的分类特征向量,对测试集中的大量数据使用多种分类器进行分类以及分类融合,测试集中的数据同样进行了清洗以及去除停用词等操作。a)首先将人工标记好的数据按照一定的比例(如7:3)随机分成A,B两组,A组数据作为训练集分别通过NB分类器、KNN分类器、SVM分类器进行训练分类模型。b)B组数据作为测试集对已经训练好的分类模型进行测试,同时调整各分类器,反复迭代试验使其结果最优,计算并保存各个分类器在结果最优情况下的准确率。c)通过a)和b)两个步骤已经得到了各分类器最优的模型。将用向量空间模型表示的待标记的注释数据作为各分类器的输入,以步骤b)中获取的各分类器准确率作为权重值,对各分类器的结果进行投票融合,具体过程是将前面的多个分类器结果作为最后一个分类器的输入,最后一个分类器输出即为最终的分类结果(前面多个分类器进行并联,并联分类器整体再和最后一个融合分类器串联)。具体的步骤如下:1)注释数据预处理,图2是注释数据预处理流程图,包括:1a)进入注释质量评估系统,检索是否已经完成注释数据预处理。1b)如果未完成注释数据清洗,进入1c),否则进入1e)。1c)逐条去除格式、图片和停用词等信息。i.逐条去除格式,包括字体字号等样式、空格和回车。ii.逐条去除图片信息,包括调用图、时序图和流程图等各类图片。iii.去除超链接、英文单词和缩写等字母信息。iv.去除标点符号并进行汉语分词,根据词库去除停用词。1d)将1c)处理得到的注释信息入库,分别录入质量评估数据库的路径和内容字段,进入1b)。1e)进入注释特征项提取。2)注释特征项提取,图3是注释特征项提取流程图,包括:2a)选择训练样本,进行特征项提取和训练。2b)如果未完成注释格式特征项训练,进入2c),否则进入2d)。2c)提取注释格式特征并存入训练集,进入2b)。2d)如果未完成注释对应性特征项训练,进入2e),否则进入2f)。2e)提取注释对应性特征并存入训练集,进入2d)。2f)如果未完成注释文本内容特征项训练,进入2g),否则进入2h)。2g)提取注释文本内容特征并存入训练集,进入2f)。2h)计算生成特征向量。3)注释质量分类,图4是注释质量分类流程图,包括:3a)进行测试集文本分类。3b)如果未完成测试集的向量空间KNN分类,进入3c),否则进入3d)。3c)执行KNN分类器,进入3b)。3d)如果未完成测试集的多项式朴素贝叶斯NB分类,进入3e),否则进入3f)。3e)执行NB分类器,进入3d)。3f)如果未完成测试集的支持向量机SVM分类,进入3g),否则进入3h)。3g)执行SVM分类器,进入3f)。3h)进行分类器融合,综合各分类器的特点进行投票(具体投票过程如前所述),产生均衡的质量分级评估结果。本专利技术结合机器学习中特征项选择和提取技术、文本分类技术和具体的注释文本特点,提出了一种实用的基于机器学习的源代码注释质量评估方法。该方法首先对原始的代码注释进行预处理,清洗掉格式、图片和停用词等干扰信息,然后利用特征项选择和提取技术生成特征向量并进行训练,结合训练得到的特征向量采用文本分类技术进行质量分级,使用了多种不同特性的分类器并最终进行分类器融合,得出较为完善和准确的质量评估分类结果。以往的质量分析主要集中在软件的源代码,该专利技术及评估方法填补了源代码注释质量分析和评估的空白,本文档来自技高网...

【技术保护点】
一种基于机器学习的源代码注释质量评估方法,包括以下步骤:1)对源代码注释数据进行预处理,得到有效的纯文本注释信息;2)对预处理后的源代码注释数据进行特征提取,生成特征向量,并进行分类器训练;3)利用提取的特征向量,使用多种分类器对源代码注释数据进行质量分类,并将各分类器的质量分类结果进行融合,得出最终的源代码注释质量评估结果。

【技术特征摘要】
1.一种基于机器学习的源代码注释质量评估方法,包括以下步骤:1)对源代码注释数据进行预处理,得到有效的纯文本注释信息;2)对预处理后的源代码注释数据进行特征提取,生成特征向量,并进行分类器训练;3)利用提取的特征向量,使用多种分类器对源代码注释数据进行质量分类,并将各分类器的质量分类结果进行融合,得出最终的源代码注释质量评估结果。2.如权利要求1所述的方法,其特征在于,步骤1)所述预处理是对源代码注释数据进行清洗,过滤图片信息、格式和样式信息、超链接和无效字段。3.如权利要求2所述的方法,其特征在于,步骤1)所述预处理的具体步骤包括:1a)进入注释质量评估系统,检索是否已经完成注释数据预处理;1b)如果未完成注释数据清洗,进入1c),否则进入1e);1c)逐条去除格式、图片和停用词信息:i.逐条去除格式,包括字体字号等样式、空格和回车;ii.逐条去除图片信息,包括调用图、时序图和流程图;iii.去除超链接、英文单词和缩写;iv.去除标点符号并进行汉语分词,根据词库去除停用词;1d)将1c)处理得到的注释信息入库,分别录入质量评估数据库的路径和内容字段,进入1b);1e)进入注释特征项提取。4.如权利要求1所述的方法,其特征在于,步骤2)所述特征提取包括格式相关特征项提取、对应性特征项提取、语言相关特征项提取、文本内容相关特征项提取。5.如权利要求4所述的方法,其特征在于,步骤2)进行特征提取的具体步骤包括:2a)选择训练样本,进行特征项提取和训练...

【专利技术属性】
技术研发人员:李斌余海贺也平
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1