一种基于最大熵模型的代码摘要生成方法

文档序号:8430522阅读:150来源:国知局
一种基于最大熵模型的代码摘要生成方法
【技术领域】
[0001] 本发明涉及一种基于最大熵模型的代码摘要生成方法。
【背景技术】
[0002] 在软件生命周期的各个阶段,开发人员需要花费大量的时间阅读程序代码。在此 期间,开发人员倾向于避免去理解整个系统,而选择仅关注代码中与任务相关的某个片断。 为了实现这一目标,开发人员通常会略读代码(例如仅阅读方法签名)。当通过略读获取的 知识不足于理解代码片断时,他们就不得不花费精力去阅读代码的具体信息(例如方法体 中的内容)。前一种方式的效率虽高,但容易丢失代码中的有效信息,而后一种方式则过于 耗时,并且,通过略读代码获得的知识难于与其他开发人员共享。
[0003] 作为略读的一种常见替代方案,开发人员往往还会通过阅读代码摘要以理解代 码,代码摘要包含一些能够描述代码特性或功能的关键词或简短的语句,例如"draw blue rectangle"或"modify config file"。
[0004] 现有绝大多数的代码摘要都是手工创建,不仅创建摘要时需要占用开发人员的大 量精力而且其维护成本非常高昂,虽然学术界和工业界也提出了一些基于词频的代码摘要 生成技术,但是这些技术往往仅考虑了不同词项出现的次数和频率,而忽略了词所处的位 置。大量的研宄表明,代码中不同词的重要性与其所属代码元素的类型(类、方法、变量等) 密切相关;例如:相对于出现在注释中的词项,那些位于类名的词项的重要性往往要高得 多;并且,在现有的技术方案中,开发人员无法指定某些他们需要着重关注或忽略的词项, 例如:在一些年代较久的遗留代码中,代码中的注释有可能早已失去了与代码的一致性,而 现有的技术仍然会将注释视为与代码一样重要,并可能将从注释中抽取过时的词而成为代 码摘要的一部份。最近似的实现方案是美国韦恩州立大学的Haiduc等学者提出的基于词 频的代码摘要技术,但是该技术方案只关注词出现的次数与频率,而忽略了词所处位置所 产生的影响,导致其代码摘要不准确。

【发明内容】

[0005] 本发明要解决的技术问题,在于提供一种基于最大熵模型的代码摘要生成方法, 得到更加准确的代码摘要。
[0006] 本发明是这样实现的:一种基于最大熵模型的代码摘要生成方法,包括如下步 骤:
[0007] 步骤1、根据限定的样本模板,采集训练样本;
[0008] 步骤2、根据训练样本构建基于最大熵模型的代码元素分类器;
[0009]步骤3、将源代码输入到分类器,识别其中的代码元素,并获取各代码元素所包含 的词项,以及各个词项的出现次数;
[0010] 步骤4、将获取到的词项进行降噪;
[0011] 步骤5、根据降噪后的词项所属的代码元素类型,分配其权重;
[0012] 步骤6、根据降噪后的词项的权重和出现次数,评估词项的重要性;
[0013] 步骤7、根据重要性评估结果以及用户限定的摘要约束,生成代码摘要。
[0014] 进一步地,所述步骤1进一步具体为:根据限定的样本模板,用抽象语法树解析代 码,根据限定的模板采集训练样本。
[0015] 进一步地,步骤2进一步具体为:根据训练样本,用广义迭代缩放算法来构建代码 元素分类器。
[0016] 进一步地,所述步骤4进一步具体为:去除获取到的词项中的保留字,并对剩余的 词项进行分词和词干化处理。
[0017] 进一步地,所述步骤6进一步具体为:根据降噪后的词项的权重和出现次数,用 TF-IDF算法对降噪后的词项进行重要性评估。
[0018] 进一步地,所述步骤7进一步具体为:根据指定代码摘要中包含的最大词项数、重 要性评估以及限定的排序方式,生成代码摘要。
[0019] 本发明具有如下优点:本发明一种基于最大熵模型的代码摘要生成方法,能够根 据用户指定的训练样本生成基于最大熵模型的代码元素类型分类器,以识别用户所关注的 代码元素,并从中抽取最可能刻画代码功能和特性的关键词,以自动生成代码摘要,从而极 大地减少开发人员创建和维护代码摘要的工作量,有效地利用代码中的代码元素类型信 息,从而有效地识别代码中的关键词,而不再仅关注代码中不同词出现的频次,提供良好的 扩展性,开发人员可以根据具体的需要生成不同的代码元素识别模型,从而能够有针对性 地识别出不同软件系统所关注的关键词,从而最终得到更加个性化和更符合具体要求的代 码摘要。
【附图说明】
[0020] 下面参照附图结合实施例对本发明作进一步的说明。
[0021 ] 图1为本发明方法执行流程图。
【具体实施方式】
[0022] 如图1所示,本发明基于最大熵模型的代码摘要生成方法,包括如下步骤:
[0023] 步骤1、根据限定的样本模板,用抽象语法树解析代码,采集训练样本;
[0024] 步骤2、根据训练样本,用通用迭代算法来构建代码元素分类器;
[0025] 对于分类问题,用A表示所有可能的代码元素类型,B是代码元素所在 上下文信息构成的集合,则可定义一个{〇, 1}域上的一个二值函数来表示特征:
【主权项】
1. 一种基于最大熵模型的代码摘要生成方法,其特征在于:包括如下步骤: 步骤1、根据限定的样本模板,采集训练样本; 步骤2、根据训练样本构建基于最大熵模型的代码元素分类器; 步骤3、将源代码输入到分类器,识别其中的代码元素,并获取各代码元素所包含的词 项,以及各个词项的出现次数; 步骤4、将获取到的词项进行降噪; 步骤5、根据降噪后的词项所属的代码元素类型,分配其权重; 步骤6、根据降噪后的词项的权重和出现次数,评估词项的重要性; 步骤7、根据重要性评估结果以及用户限定的摘要约束,生成代码摘要。
2. 根据权利要求1所述的一种基于最大熵模型的代码摘要生成方法,其特征在于:所 述步骤1进一步具体为:根据限定的样本模板,用抽象语法树解析代码,根据限定的模板采 集训练样本。
3. 根据权利要求1所述的一种基于最大熵模型的代码摘要生成方法,其特征在于:步 骤2进一步具体为:根据训练样本,用广义迭代缩放算法来构建代码元素分类器。
4. 根据权利要求1所述的一种基于最大熵模型的代码摘要生成方法,其特征在于:所 述步骤4进一步具体为:去除获取到的词项中的保留字,并对剩余的词项进行分词和词干 化处理。
5. 根据权利要求1所述的一种基于最大熵模型的代码摘要生成方法,其特征在于:所 述步骤6进一步具体为:根据降噪后的词项的权重和出现次数,用TF-IDF算法对降噪后的 词项进行重要性评估。
6. 根据权利要求1所述的一种基于最大熵模型的代码摘要生成方法,其特征在于:所 述步骤7进一步具体为:根据指定代码摘要中包含的最大词项数、重要性评估以及限定的 排序方式,生成代码摘要。
【专利摘要】本发明提供一种基于最大熵模型的代码摘要生成方法,根据限定的样本模板采集训练样本;根据训练样本构建基于最大熵模型的代码元素分类器;将待分析的源代码输入到分类器,以识别其中的代码元素,并获取各代码元素所包含的词项;将获取到的词项进行降噪;根据词项所属的代码元素类型,并指定各个词项的权重;根据权重和出现次数,评估词项的重要性;根据重要性评估结果以及用户指定的摘要约束,生成代码摘要,使得得到的代码摘要更加的准确。
【IPC分类】G06F9-44
【公开号】CN104750484
【申请号】CN201510127501
【发明人】王金水, 郑建生, 邹复民, 赵钊林, 薛醒思, 黄丽丽, 唐郑熠, 杨荣华, 聂明星
【申请人】福建工程学院
【公开日】2015年7月1日
【申请日】2015年3月23日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1