一种基于事件日志的软件开发活动聚类分析方法技术

技术编号:20915048 阅读:26 留言:0更新日期:2019-04-20 09:24
本发明专利技术涉及一种基于事件日志的软件开发活动聚类分析方法,属于软件工程、过程挖掘技术领域。首先利用自然语言处理技术对软件开发过程版本控制系统的事件日志数据进行文本解析和特征词提取,并基于word2vec实现软件开发活动事件日志向量化,然后基于K‑means聚类算法对向量化后的软件开发活动事件进行聚类,并利用轮廓系数法得到最优聚类簇数,最终获得软件开发活动以及事件与活动的关联关系。本发明专利技术能增强软件开发事件日志的可理解性、揭示事件日志数据蕴含的信息,便于发现软件开发活动并指导和规范软件开发行为,为软件开发提供技术支持。

A Clustering Analysis Method for Software Development Activities Based on Event Log

The invention relates to a clustering analysis method for software development activities based on event log, which belongs to the technical field of software engineering and process mining. Firstly, natural language processing technology is used to parse and extract feature words from event log data of software development process version control system. Then, software development activity log is vectorized based on Word2vec. Then, software development activity events after vectorization are clustered based on K_means clustering algorithm. Finally, the optimal clustering cluster number is obtained by contour coefficient method. Obtain software development activities and the relationship between events and activities. The invention can enhance the comprehensibility of software development event log, reveal the information contained in event log data, facilitate the discovery of software development activities, guide and standardize software development behavior, and provide technical support for software development.

【技术实现步骤摘要】
一种基于事件日志的软件开发活动聚类分析方法
本专利技术涉及一种基于事件日志的软件开发活动聚类分析方法,属于软件工程、过程挖掘

技术介绍
在软件开发过程中会产生一系列的软件开发活动和事件日志数据,这些不断增长的事件日志数据记录了软件开发活动实施的具体详情,对规避软件开发项目风险、提高软件开发项目成熟度和控制软件产品质量具有重要意义。然而,由于对事件日志数据重视程度不够、原始事件日志数据繁杂和难以被理解等原因,软件开发过程中的事件日志没有充分发挥其价值。利用过程挖掘的方法对软件开发活动进行挖掘与分析,将有助于揭示事件日志数据蕴含的信息,更好地理解、规范和指导软件开发行为,为软件开发提供技术支持。
技术实现思路
本专利技术要解决的技术问题是以软件开发过程中的事件日志数据为基础,提供一种基于事件日志的软件开发活动聚类分析方法。通过该方法可以增强软件开发事件日志的可理解性、便于发现软件开发活动及其关系并指导和规范软件开发行为。本专利技术的技术方案是:一种基于事件日志的软件开发活动聚类分析方法,利用自然语言处理技术对软件开发过程版本控制系统的事件日志数据进行文本解析和特征词提取,并基于word2vec实现软件开发活动事件日志向量化,然后基于K-means聚类算法对向量化后的软件开发活动事件进行聚类,并利用轮廓系数法得到最优聚类簇数,最终获得软件开发活动以及事件与活动的关联关系。Step1、事件日志特征词抽取;软件开发过程事件日志数据是一个扩展的XML文件存储格式,相关的节点及子节点记录了事件的id、作者、事件信息等数据。如,logentry属性节点表示事件信息,包含revision、author、paths、msg等属性子节点。revision表示事件的id,author表示事件的发起者,paths表示事件所操作的文件及路径,msg表示事件的描述。针对每个事件节点执行Step1.1-Step1.3,具体步骤为:Step1.1、解析xml文件,提取节点元素文本内容;Step1.2、去除介词、形容词和副词等含义较少的停用词,保留动词和名词等实体词汇;Step1.3、把各种时态的词汇转化为一般形式,做词性还原;Step2、事件日志向量化;在完成软件开发过程事件日志特征词抽取后,为了进行事件间相似度的度量,进而实现软件开发活动聚类,需要对事件日志的每个事件信息进行向量化。所述步骤Step2的具体步骤为:Step2.1、根据事件属性子节点与软件开发活动的相关性,分别对所属特征词赋不同权重值。Step2.2、通过调用Word2vec接口,构建ContinuousBag-of-WordsModel(CBOW)连续词袋模型,对软件开发事件日志特征词进行词向量训练;Step2.3、将Step2.2步骤的输出结果(软件开发活动事件日志特征向量)归一化到[0,1]区间;Step2.4、得到软件开发活动事件日志加权向量矩阵。假设整个事件日志具有n个事件,通过向量化后得到如下软件开发活动事件日志加权向量矩阵:其中,n为软件开发活动事件日志中的事件个数,m为软件开发活动事件日志的特征词个数。Step3、软件开发活动事件日志聚类;通过Step2步骤完成软件开发活动事件日志向量化后,可以得到每个事件对应的特征向量,从而可以通过聚类算法对事件间的相似性进行度量,实现软件开发活动事件的关联与区分。为了取得最佳聚类效果,需要多次调用聚类算法以确定最佳初始簇数k,每次聚类依次执行Step3.1-Step3.3,具体步骤为:Step3.1、设定一个聚类初始簇数k值,调用K-means聚类算法对软件开发活动事件日志向量矩阵进行聚类;Step3.2、计算个体轮廓系数;对于软件开发活动事件日志数据的个体轮廓系数Si通过公式计算:其中,假设样本数据i被聚类到λ簇,ai为i到λ簇内其它样本的平均距离,bi为i到非λ簇其它样本的平均距离最小值。由公式(1)可以看出,个体轮廓系数Si的值范围为[-1,1]区间,若值越趋于1,则表明簇内距离远小于簇间距离,聚类效果最佳。Step3.3、计算整体轮廓系数;对于软件开发活动事件日志数据的体轮廓系数SC通过公式计算:其中,n为软件开发活动事件日志数据样本总数。由公式(2)可以看出,SC的值越大,聚类簇数k越合适,聚类效果最佳。Step3.4、执行m次Step3.1-Step3.3步骤后,根据计算所得个体轮廓系数和整体轮廓系数确定最优聚类效果的簇数k值;Step4、通过Step3可以得到基于相似度的软件开发活动事件日志聚类结果,从而发现软件开发过程事件与软件开发活动的关系映射,进而为软件开发活动管理和流程优化提供支持。本专利技术的有益效果是:本专利技术所采用的构建词向量方法(word2vec),是基于三层神经网络进行词向量训练,并根据向量空间余弦距离做向量间的相似度计算,能有效降低向量空间维度、提高训练效率;所采用的K-means聚类算法和基于轮廓系数的初始k值选定方法,有效解决了聚类初始簇数目无法确定的问题;通过以上两个步骤实现了软件开发过程事件与软件开发活动的关联,揭示了事件日志信息所蕴含的开发行为,为软件开发活动管理和过程优化提高了支持。附图说明图1是本专利技术的流程图。具体实施方式下面结合附图和具体实施方式,对本专利技术作进一步说明。一种基于事件日志的软件开发活动聚类分析方法,首先利用自然语言处理技术对软件开发过程版本控制系统的事件日志数据进行文本解析和特征词提取,并基于word2vec实现软件开发活动事件日志向量化,然后基于K-means聚类算法对向量化后的软件开发活动事件进行聚类,并利用轮廓系数法得到最优聚类簇数,最终获得软件开发活动以及事件与活动的关联关系。具体步骤为:Step1、事件日志特征词抽取;软件开发过程事件日志数据是一个扩展的XML文件存储格式,相关的节点及子节点记录了事件的id、作者、事件信息等数据。如,logentry属性节点表示事件信息,包含revision、author、paths、msg等属性子节点。revision表示事件的id,author表示事件的发起者,paths表示事件所操作的文件及路径,msg表示事件的描述。针对每个事件节点执行Step1.1-Step1.3,具体步骤为:Step1.1、解析xml文件,提取节点元素文本内容;Step1.2、去除停用词,保留实体词汇,所述停用词包括介词、形容词和副词,所述实体词汇包括动词和名词;Step1.3、把各种时态的词汇转化为一般形式,做词性还原;Step2、事件日志向量化;在完成软件开发过程事件日志特征词抽取后,为了进行事件间相似度的度量,进而实现软件开发活动聚类,需要对事件日志的每个事件信息进行向量化。所述步骤Step2的具体步骤为:Step2.1、根据事件属性子节点与软件开发活动的相关性,分别对所属特征词赋不同权重值;Step2.2、通过调用Word2vec接口,构建ContinuousBag-of-WordsModel(CBOW)连续词袋模型,对软件开发事件日志特征词进行词向量训练;Step2.3、将词向量训练后的软件开发活动事件日志特征向量归一化到[0,1]区间;Step2.4、得到软件开发活动事件日志加权向量矩阵,假设整个事件日志具有n个事件本文档来自技高网...

【技术保护点】
1.一种基于事件日志的软件开发活动聚类分析方法,其特征在于:利用自然语言处理技术对软件开发过程版本控制系统的事件日志数据进行文本解析和特征词提取,并基于word2vec实现软件开发活动事件日志向量化,然后基于K‑means聚类算法对向量化后的软件开发活动事件进行聚类,并利用轮廓系数法得到最优聚类簇数,最终获得软件开发活动以及事件与活动的关联关系。

【技术特征摘要】
1.一种基于事件日志的软件开发活动聚类分析方法,其特征在于:利用自然语言处理技术对软件开发过程版本控制系统的事件日志数据进行文本解析和特征词提取,并基于word2vec实现软件开发活动事件日志向量化,然后基于K-means聚类算法对向量化后的软件开发活动事件进行聚类,并利用轮廓系数法得到最优聚类簇数,最终获得软件开发活动以及事件与活动的关联关系。2.根据权利要求1所述的基于事件日志的软件开发活动聚类分析方法,其特征在于具体步骤为:Step1、事件日志特征词抽取;Step1.1、解析xml文件,提取节点元素文本内容;Step1.2、去除停用词,保留实体词汇,所述停用词包括介词、形容词和副词,所述实体词汇包括动词和名词;Step1.3、把各种时态的词汇转化为一般形式,做词性还原;Step2、事件日志向量化;Step2.1、根据事件属性子节点与软件开发活动的相关性,分别对所属特征词赋不同权重值;Step2.2、通过调用Word2vec接口,构建ContinuousBag-of-WordsModel连续词袋模型,对软件开发事件日志特征词进行词向量训练;Step2....

【专利技术属性】
技术研发人员:唐明靖文斌王俊陈建兵邹伟
申请(专利权)人:云南师范大学
类型:发明
国别省市:云南,53

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

1