皮盼资讯网移动版

皮盼资讯网 > 潮流时尚 >

基于动宾短语和主题模型的相似缺陷报告识别方法

摘要:近年来,随着软件技术的蓬勃发展,软件系统及开发团队的规模也随之迅速增长。若能识别出与新的待修复缺陷报告相似的缺陷报告集合,则对修复缺陷的方法以及修复者指派具有指导性意见;识别相似的代码文件对修复相似的缺陷也有着重要意义,另外对于大型的软件项目,从投入使用到维护阶段,其历史缺陷报告及历史代码文件也会越来越多,其中可用的信息也会越来越多。

本文提出一种基于动宾短语和主题模型的相似缺陷报告识别方法。除了利用通常使用的向量空间模型方法表示文本信息外,通过句法分析提取缺陷报告的结构化信息作为衡量报告间相似度的重要依据。

关键字:相似缺陷;缺陷报告;句法分析

0 引言

随着软件系统的发展,代码数量与日俱增,系统规模及开发人员数量也随之增加。因此,在软件开发及测试的过程中,开发人员会得到大量的缺陷报告。这些缺陷报告中,也会存在更多的重复或相似的缺陷报告。当开发人员处理这样的缺陷报告时,必然会降低其工作效率,甚至引入一些不必要的错误;而相似的缺陷报告往往可通过相同或相似的方法予以解决,因此,相似缺陷报告的出现从某种程度上可为开发人员处理新的待修复缺陷报告提供部分解决思路和方法。

1 背景

缺陷报告中的缺陷信息是用自然语言描述的,因此,需要将缺陷报告中的摘要及描述等文字信息转换成计算机能够识别的信息。目前使用最广泛且较适合于提取缺陷报告文本信息的方法是G Salton等人提出的向量空间模型(VSM:Vector Space Model),且目前较为流行也是效果较好的两种表示方式为TF-IDF以及word2vec两种方法,这两种方法也广泛用于很多其他的自然语言处理的问题上,并取得了较好效果[1,2,3]。

但仅依据以上两种方法构建的向量空间模型仅是将缺陷报告中的文本转化为向量,而没有考虑到结构化信息以及语序对向量模型的影响。若要对缺陷报告文本进行客观、准确的相似度评价,还要参考实验文本中语句的词序、语句结构、文本结构等因素对实验结果的影响。

因此,本文结合缺陷报告的文本特点,在计算词汇间相似度的基础上加入文本的结构化信息从而构建出每份缺陷报告的特征向量,之后将三部分特征向量拼接在一起得到用来表征每份缺陷报告的特征向量,最后使用目前常用的几种机器学习分类算法对缺陷报告集合分类。该部分相似缺陷报告提取方法如图所示。

得到每份缺陷报告的特征向量后,可以基于每个特征向量间的欧氏距离、皮尔森相关系数、余弦相似度等方法衡量其相似度。

2 基于白名单的特征向量构建

本文采用的数据集均为基于Java语言的软件工程及项目,而每种高级程序语言均由其独有的词汇表示。这些词汇在不同类型的缺陷报告中出现的频率不尽相同,也就是说,在某种类型的缺陷报告集合中某个词或某几个词出现的概率较大、次数较多,而其他词语出现的概率较小、次数较少。因此,每一份缺陷报告都可以基于其文本中特定的某些词出现的频率分布预测该缺陷报告的类别。

本文基于Java语言的特点,预先找出其相关的专业词汇列表(即白名单),对每一份缺陷报告统计列表中词语在该缺陷报告的摘要及描述信息中出现的次数,即用one-hot的形式对每一份缺陷报告统计某些词出现的次数以构建该部分特征向量。

另外,由于每份缺陷报告中文本的长度不同,每个文本中包含的词汇量有时差异会很大,因此每个词出现的次数差别较大,为避免该因素对实验结果的影响,对每份缺陷报告得到的特征向量均作归一化处理。也就是说,特征向量的每一维都转化为表示该词汇在该缺陷报告中的频率,即该词在这份缺陷报告中的重要程度,这其实更符合本文要求。

3 基于结构化信息的特征向量构建

对于每一份缺陷报告,并不是文本中的每一个词语对文本来说都非常重要,如果将这些词也考虑进去势必会影响预测结果的准确性。因此,需要利用某种方法提取出文本中最重要的那些词语。

在本文使用的数据集中,缺陷报告均由英文书写。基于英文特殊的表述方式,可以观察到,当用户或测试人员编写缺陷报告时,需要依托于动宾短语的表述形式描述软件的缺陷现象以及该缺陷的重现方法等等。因此,本文对每份缺陷报告的摘要及描述信息文本句法分析并提取其中的动宾短语,找到该缺陷报告文本中最能表征缺陷内容的文本片段,再基于这些文本片段构建其对应的特征向量。

3.1句法分析

(责任编辑:admin)