发明名称 一种基于LDA模型的多粒度层次软件聚类方法
摘要 本发明公开了软件工程技术领域内的一种基于LDA模型的多粒度层次软件聚类方法,旨在解决现有技术中软件聚类技术忽略了软件功能特征导致开发人员不能根据聚类结果快速理解软件系统的技术问题。本发明通过LDA模型在类和方法两个不同层次提取主题,实现了粗粒度层次到细粒度层次的聚类,为开发人员建立一个更加易于理解的系统结构,使得聚类的结果更加有效、更加实用化;通过本发明提供的方法开发人员可清楚的了解软件程序的功能点,快速找到所需的功能源代码。本方法应用于辅助软件维护与演化过程中的程序理解,可为开发人员提供一个从系统到方法的逐步理解的过程,具有聚类性能好、实用性强、工作效率高的特点。
申请公布号 CN103729197B 申请公布日期 2017.01.18
申请号 CN201410028677.6 申请日期 2014.01.22
申请人 扬州大学 发明人 孙小兵;刘湘月;李斌;杨智松
分类号 G06F9/44(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 南京苏科专利代理有限责任公司 32102 代理人 董旭东
主权项 一种基于LDA模型的多粒度层次软件聚类方法,其特征在于,包括以下步骤:(1)从待聚类的软件系统中选取类名、方法名以及注释作为筛选对象,对所述软件系统进行筛选,运用LDA模型从已经过筛选的软件系统中提取k个系统主题,k为自定义值;(2)计算各所述系统主题的主题词数目与所述软件系统文档总词数的比例,若所述比例等于1,则将对应主题词所在的类分配到和相应系统主题匹配的类层次的初始聚类;若所述比例小于1,则按从大到小排列各比例,选取比例排在前M位的主题词所在的类,将所述类分配到和相应系统主题匹配的类层次的初始聚类,其中,M为自定义值;(3)逐一分析所述软件系统中未分配的类与已分配的类之间的关系,若未分配的类与已分配的类存在依赖关系,则将未分配的类分配到所述已分配的类所在的初始聚类中,直至所有未分配的类全部被分配于相应的初始聚类中,得到所述软件系统在类层次的基于系统主题的聚类结果;(4)根据步骤(3)的聚类结果,运用LDA模型从类中提取j个类主题,j为自定义值;(5)计算各所述类主题的主题词数目与所述类的文档总词数的比例,若所述比例等于1,则将对应主题词所在的方法分配到和相应类主题匹配的方法层次的初始聚类;若所述比例小于1,则按从大到小排列各比例,选取比例排在前N位的主题词所在的方法,将所述方法分配到和相应类主题匹配的方法层次的初始聚类,其中,N为自定义值;(6)逐一分析所述类中未分配的方法与已分配的方法之间的关系,若未分配的方法与已分配的方法存在依赖关系,则将未分配的方法分配到所述已分配的方法所在的初始聚类中,直至所有未分配的方法全部被分配于相应的初始聚类中,得到所述类在方法层次的基于类主题的聚类结果。
地址 225009 江苏省扬州市大学南路88号