CN109656545A - 一种基于事件日志的软件开发活动聚类分析方法 - Google Patents

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

Info

Publication number
CN109656545A
CN109656545A CN201910042718.XA CN201910042718A CN109656545A CN 109656545 A CN109656545 A CN 109656545A CN 201910042718 A CN201910042718 A CN 201910042718A CN 109656545 A CN109656545 A CN 109656545A
Authority
CN
China
Prior art keywords
software development
event
event log
log
cluster
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910042718.XA
Other languages
English (en)
Other versions
CN109656545B (zh
Inventor
唐明靖
文斌
王俊
陈建兵
邹伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yunnan University YNU
Yunnan Normal University
Original Assignee
Yunnan Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yunnan Normal University filed Critical Yunnan Normal University
Priority to CN201910042718.XA priority Critical patent/CN109656545B/zh
Publication of CN109656545A publication Critical patent/CN109656545A/zh
Application granted granted Critical
Publication of CN109656545B publication Critical patent/CN109656545B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/289Phrasal analysis, e.g. finite state techniques or chunking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

一种基于事件日志的软件开发活动聚类分析方法
技术领域
本发明涉及一种基于事件日志的软件开发活动聚类分析方法,属于软件工程、过程挖掘技术领域。
背景技术
在软件开发过程中会产生一系列的软件开发活动和事件日志数据,这些不断增长的事件日志数据记录了软件开发活动实施的具体详情,对规避软件开发项目风险、提高软件开发项目成熟度和控制软件产品质量具有重要意义。然而,由于对事件日志数据重视程度不够、原始事件日志数据繁杂和难以被理解等原因,软件开发过程中的事件日志没有充分发挥其价值。利用过程挖掘的方法对软件开发活动进行挖掘与分析,将有助于揭示事件日志数据蕴含的信息,更好地理解、规范和指导软件开发行为,为软件开发提供技术支持。
发明内容
本发明要解决的技术问题是以软件开发过程中的事件日志数据为基础,提供一种基于事件日志的软件开发活动聚类分析方法。通过该方法可以增强软件开发事件日志的可理解性、便于发现软件开发活动及其关系并指导和规范软件开发行为。
本发明的技术方案是:一种基于事件日志的软件开发活动聚类分析方法,利用自然语言处理技术对软件开发过程版本控制系统的事件日志数据进行文本解析和特征词提取,并基于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接口,构建Continuous Bag-of-Words Model(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接口,构建Continuous Bag-of-Words Model(CBOW)连续词袋模型,对软件开发事件日志特征词进行词向量训练;
Step2.3、将词向量训练后的软件开发活动事件日志特征向量归一化到[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、最后得到基于相似度的软件开发活动事件日志聚类结果。
实施例1:如图1所示,一种基于事件日志的软件开发活动聚类分析方法,本实施例以开源软件ArgoUML的开发日志文件为例,对其进行软件开发活动聚类分析。该软件下载量达10万余次,其日志文件详细记录了1998年至2015年间共17795个事件信息,具有较强代表性。具体过程包括:提取事件日志特征词(Step1),对事件日志进行向量化(Step2),对事件日志进行聚类(Step3),根据聚类结果完成软件开发过程事件与软件开发活动的关联(Step4)。
所述软件开发活动聚类分析方法的具体步骤如下(具体程序实现采用Python语言):
Step1、事件日志特征词抽取。
Step1.1、调用Python语言的XML文件解析接口ElementTree,提取revision、author、paths、msg等属性子节点内容;
Step1.2、调用Python语言的自然语言处理工具NLTK,去除介词、形容词和副词和含义较少的停用词,保留动词和名词等实体词汇;
Step1.3、调用Python语言的自然语言处理工具NLTK,各种时态的词汇转化为一般形式。
Step2、事件日志向量化;
Step2.1、根据事件属性子节点与软件开发活动的相关性,分别对所属特征词赋不同权重值。将revision、author、paths和msg分别赋权重0.2、0.2、0.2、0.4;
Step2.2、载入Python的gensim库,通过调用Word2vec接口,构建词向量训练模型,对软件开发事件日志特征词进行词向量训练;
Step2.3、将Step2.2步骤的输出结果(软件开发活动事件日志特征向量)归一化到[0,1]区间;
Step2.4、得到软件开发活动事件日志加权向量矩阵,示意如下:
Step3、软件开发活动事件日志聚类;
为了取得最佳聚类效果,需要多次调用聚类算法以确定最佳初始簇数k,每次聚类依次执行Step3.1-Step3.3,具体步骤为:
Step3.1、载入Python的sklearn库,设定一个聚类初始簇数k值,调用K-means聚类算法对软件开发活动事件日志向量矩阵进行聚类;
Step3.2、计算个体轮廓系数;
利用公式(1)计算软件开发活动事件日志个体轮廓系数Si
Step3.3、计算整体轮廓系数;
利用公式(2)计算软件开发活动事件日志整体轮廓系数SC。
Step3.4、执行m次Step3.1-Step3.3步骤后,根据计算所得个体轮廓系数和整体轮廓系数确定最优聚类效果的初始簇数k值;
Step4、通过Step3可以得到基于相似度的软件开发活动事件日志聚类结果,并对聚类结果进行PCA降维后调用Python的MATLAB包matplotlib,对聚类效果进行可视化分析。通过分析,分类簇数k值为16时,聚类效果最佳。至此,实现了把ArgoUML软件开发日志中的17795个事件映射到16个软件开发活动,其中,一个软件开发活动最多包含了3856个事件。
以上结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

Claims (2)

1.一种基于事件日志的软件开发活动聚类分析方法,其特征在于:利用自然语言处理技术对软件开发过程版本控制系统的事件日志数据进行文本解析和特征词提取,并基于word2vec实现软件开发活动事件日志向量化,然后基于K-means聚类算法对向量化后的软件开发活动事件进行聚类,并利用轮廓系数法得到最优聚类簇数,最终获得软件开发活动以及事件与活动的关联关系。
2.根据权利要求1所述的基于事件日志的软件开发活动聚类分析方法,其特征在于具体步骤为:
Step1、事件日志特征词抽取;
Step1.1、解析xml文件,提取节点元素文本内容;
Step1.2、去除停用词,保留实体词汇,所述停用词包括介词、形容词和副词,所述实体词汇包括动词和名词;
Step1.3、把各种时态的词汇转化为一般形式,做词性还原;
Step2、事件日志向量化;
Step2.1、根据事件属性子节点与软件开发活动的相关性,分别对所属特征词赋不同权重值;
Step2.2、通过调用Word2vec接口,构建Continuous Bag-of-Words Model连续词袋模型,对软件开发事件日志特征词进行词向量训练;
Step2.3、将词向量训练后的软件开发活动事件日志特征向量归一化到[0,1]区间;
Step2.4、得到软件开发活动事件日志加权向量矩阵,假设整个事件日志具有n个事件,通过向量化后得到如下软件开发活动事件日志加权向量矩阵:
其中,n为软件开发活动事件日志中的事件个数,m为软件开发活动事件日志的特征词个数;
Step3、软件开发活动事件日志聚类;
Step3.1、设定一个聚类初始簇数k值,调用K-means聚类算法对软件开发活动事件日志向量矩阵进行聚类;
Step3.2、计算个体轮廓系数;
对于软件开发活动事件日志数据的个体轮廓系数Si通过公式计算:
其中,假设样本数据i被聚类到λ簇,ai为i到λ簇内其它样本的平均距离,bi为i到非λ簇其它样本的平均距离最小值;
Step3.3、计算整体轮廓系数;
对于软件开发活动事件日志数据的体轮廓系数SC通过公式计算:
其中,n为软件开发活动事件日志数据样本总数;
Step3.4、执行m次Step3.1-Step3.3步骤后,根据计算所得个体轮廓系数和整体轮廓系数确定最优聚类效果的簇数k值;
Step4、最后得到基于相似度的软件开发活动事件日志聚类结果。
CN201910042718.XA 2019-01-17 2019-01-17 一种基于事件日志的软件开发活动聚类分析方法 Active CN109656545B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910042718.XA CN109656545B (zh) 2019-01-17 2019-01-17 一种基于事件日志的软件开发活动聚类分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910042718.XA CN109656545B (zh) 2019-01-17 2019-01-17 一种基于事件日志的软件开发活动聚类分析方法

Publications (2)

Publication Number Publication Date
CN109656545A true CN109656545A (zh) 2019-04-19
CN109656545B CN109656545B (zh) 2022-03-25

Family

ID=66120430

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910042718.XA Active CN109656545B (zh) 2019-01-17 2019-01-17 一种基于事件日志的软件开发活动聚类分析方法

Country Status (1)

Country Link
CN (1) CN109656545B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110348133A (zh) * 2019-07-15 2019-10-18 西南交通大学 一种高速列车三维产品结构技术功效图构建系统及方法
CN112507778A (zh) * 2020-10-16 2021-03-16 天津大学 一种基于线特征的改进词袋模型的回环检测方法
CN112860362A (zh) * 2021-02-05 2021-05-28 达而观数据(成都)有限公司 一种机器人自动化流程的可视化调试方法及调试系统
CN113821630A (zh) * 2020-06-19 2021-12-21 菜鸟智能物流控股有限公司 一种数据聚类的方法和装置
CN114511039A (zh) * 2022-02-28 2022-05-17 智汇(中山)信息技术有限公司 一种软件开发行为监控系统
CN114896393A (zh) * 2022-04-15 2022-08-12 中国电子科技集团公司第十研究所 一种数据驱动的文本增量聚类方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107015901A (zh) * 2016-01-28 2017-08-04 苏宁云商集团股份有限公司 一种日志分析方法及装置
US10140287B2 (en) * 2015-09-09 2018-11-27 International Business Machines Corporation Scalable and accurate mining of control flow from execution logs across distributed systems
CN109062763A (zh) * 2018-07-31 2018-12-21 云南大学 一种从svn日志事件流中动态实时挖掘软件过程活动的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10140287B2 (en) * 2015-09-09 2018-11-27 International Business Machines Corporation Scalable and accurate mining of control flow from execution logs across distributed systems
CN107015901A (zh) * 2016-01-28 2017-08-04 苏宁云商集团股份有限公司 一种日志分析方法及装置
CN109062763A (zh) * 2018-07-31 2018-12-21 云南大学 一种从svn日志事件流中动态实时挖掘软件过程活动的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
朱锐: "数据驱动的软件开发过程挖掘与分析研究", 《中国博士学位论文全文数据库》 *
李璐: "基于大数据的事件数据模式挖掘研究", 《中国优秀硕士学位论文全文数据库》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110348133A (zh) * 2019-07-15 2019-10-18 西南交通大学 一种高速列车三维产品结构技术功效图构建系统及方法
CN110348133B (zh) * 2019-07-15 2022-08-19 西南交通大学 一种高速列车三维产品结构技术功效图构建系统及方法
CN113821630A (zh) * 2020-06-19 2021-12-21 菜鸟智能物流控股有限公司 一种数据聚类的方法和装置
CN113821630B (zh) * 2020-06-19 2023-10-17 菜鸟智能物流控股有限公司 一种数据聚类的方法和装置
CN112507778A (zh) * 2020-10-16 2021-03-16 天津大学 一种基于线特征的改进词袋模型的回环检测方法
CN112860362A (zh) * 2021-02-05 2021-05-28 达而观数据(成都)有限公司 一种机器人自动化流程的可视化调试方法及调试系统
CN112860362B (zh) * 2021-02-05 2022-10-04 达而观数据(成都)有限公司 一种机器人自动化流程的可视化调试方法及调试系统
CN114511039A (zh) * 2022-02-28 2022-05-17 智汇(中山)信息技术有限公司 一种软件开发行为监控系统
CN114896393A (zh) * 2022-04-15 2022-08-12 中国电子科技集团公司第十研究所 一种数据驱动的文本增量聚类方法

Also Published As

Publication number Publication date
CN109656545B (zh) 2022-03-25

Similar Documents

Publication Publication Date Title
CN109656545A (zh) 一种基于事件日志的软件开发活动聚类分析方法
CN107229610B (zh) 一种情感数据的分析方法及装置
Demšar et al. Orange: data mining toolbox in Python
CN110210032B (zh) 文本处理方法及装置
CN110377913B (zh) 一种情感分析方法及其装置、电子设备和存储介质
KR20180062321A (ko) 딥러닝-기반 키워드에 연관된 단어를 도출하는 방법과 컴퓨터프로그램
Sun et al. Efficient multimodal transformer with dual-level feature restoration for robust multimodal sentiment analysis
CN112420024B (zh) 一种全端到端的中英文混合空管语音识别方法及装置
CN109815336A (zh) 一种文本聚合方法及系统
CN106202395A (zh) 文本聚类方法和装置
CN115860006B (zh) 一种基于语义句法的方面级情感预测方法及装置
CN108491389A (zh) 点击诱饵标题语料识别模型训练方法和装置
CN110851650B (zh) 一种评论输出方法、装置、以及计算机存储介质
CN117349675B (zh) 一种多种信息源的多模态大模型构建系统
Li et al. Inferring user emotive state changes in realistic human-computer conversational dialogs
CN115357719A (zh) 基于改进bert模型的电力审计文本分类方法及装置
CN117216234A (zh) 基于人工智能的话术改写方法、装置、设备及存储介质
CN116661805A (zh) 代码表示的生成方法和装置、存储介质及电子设备
CN114022192A (zh) 一种基于智能营销场景的数据建模方法及系统
CN113761875A (zh) 事件抽取方法、装置、电子设备及存储介质
CN109684640B (zh) 一种语义提取方法及装置
JP2019133563A (ja) 情報処理装置および情報処理システム
CN115510230A (zh) 一种基于多维特征融合与比较增强学习机制的蒙古语情感分析方法
CN111625623B (zh) 文本主题提取方法、装置、计算机设备、介质和程序产品
CN114398076A (zh) 一种基于深度学习的面向对象程序方法命名异味检测方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
OL01 Intention to license declared
OL01 Intention to license declared