一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法与流程

文档序号:16537707发布日期:2019-01-08 20:02阅读:163来源:国知局
一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法与流程

本发明涉及一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法,属于计算机软件工程领域。



背景技术:

在软件开发和维护的过程中,为了保证软件系统的质量,开发者通常会允许用户或者测试人员提交所遇到的软件缺陷。很多开源项目都会采用缺陷追踪系统来记录用户或测试人员提交的缺陷。如果软件系统比较复杂,则用户提交的缺陷报告也会比较多,如开源项目eclipse每天报告的缺陷高达300个。如此多的缺陷报告必然会产生大量重复的缺陷报告。为了加快缺陷的修复速度,保证系统的稳定性和安全性,同时也为了减少开发者的工作量,在大量缺陷报告中找出重复的缺陷报告就变得非常重要。

传统的方法主要采用信息检索的方法来查找相似的缺陷报告,如基于余弦相似度来计算缺陷报告的相似度。但这些方法都存在着准确度比较低的缺点,效果比较差。

词向量技术是自然语言处理中的对语言模型和特征学习的一种技术。词向量能够将高维词向量嵌入到低维的向量空间中,能够很好地表示词与词之间的关系。之前已经有工作将词向量使用到相似缺陷报告的发现中,如采用平均词向量表示缺陷报告。但由于在缺陷报告中,无论是缺陷报告的标题还是具体的描述,长度都较短,直接采用词向量不能够很好地表示缺陷报告的标题的具体描述。

tf-idf也称为词频-逆文件频率,是信息检索中常用的技术。tf-idf被用来表示一个词语对于文档或者是语料库的重要程度。tf-idf的原理是词语的重要性与该词文档中出现的次数成正比,与该词在语料库中出现的次数成反比。通过使用tf-idf作为权重,能够很好地表示在该词在报告中的重要程度。

lsi全称潜在语义索义,也称为潜在语义分析,是自然语言处理中常用的一种技术。lsi能够根据字词所在的环境分析字词的隐藏含义。其基本原理是利用奇异值分解将文档原始向量进行降维处理,所以lsi是一种基于向量空间模型的语义分析方法。lsi通过使用低维向量,有效地降低的数据的复杂程度,同时降低了数据中的噪声。



技术实现要素:

本发明所要解决的技术问题是针对当前相似软件缺陷报告推荐的准确度比较低的情况,提出一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法。

本发明为解决上述技术问题采用以下技术方案:

本发明提出一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法,具体包括以下步骤:

步骤一、分别计算每个缺陷报告的加权词向量,然后根据所述加权词向量计算缺陷报告的标题相似度sim1和描述相似度sim2;

步骤二、分别计算每个缺陷报告的lsi向量;然后根据所述lsi向量计算缺陷报告的标题相似度sim3和描述相似度sim4;

步骤三、计算不同缺陷报告所涉及的产品和组件之间的相似度sim5;

步骤四、根据步骤一至步骤三所得的相似度,计算缺陷报告之间的总相似度;

步骤五、计算要查询的缺陷报告和各候选缺陷报告之间的总相似度并进行升序排序,从候选缺陷报告中选出与要查询的缺陷报告总相似度最高的缺陷报告。

如前所述的一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法,进一步地,步骤一所述的具体步骤包括:

步骤1.1、在一篇缺陷报告中,分别计算每个词在所述缺陷报告中的权重;

步骤1.2、将所述缺陷报告中的词分别转化成固定长度的向量,得到每个词的词向量;

步骤1.3、分别计算所述缺陷报告的标题加权词向量和描述加权词向量;

步骤1.4、分别计算缺陷报告之间的标题相似度sim1和描述相似度sim2。

如前所述的一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法,进一步地,步骤1.1所述的计算得到词w在所述缺陷报告中的权重的具体步骤包括:

词w的权重weight(w)=tf(w,d)*idf(w);tf(w,d)表示词频,标题和描述的词频分别由下式得到:

其中,w表示当前词;d表示当前缺陷报告;idf(w)表示逆向文档频率,由下式得到:

如前所述的一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法,进一步地,步骤1.2所述的得到每个词的词向量的具体步骤包括:

由skip-gram模型的目标函数得到词向量v:

其中,n表示缺陷报告的标题或者描述的长度,p(wj|wi)是词的条件概率,cw表示词

w的上下文的集合;其中,词的条件概率p(wj|wi)由下式得到:

其中,向量vw为由词w转化而来的词向量,所述词向量长度为a。

如前所述的一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法,进一步地,步骤1.3所述的具体步骤包括:

首先分别对标题和描述中的词,根据词的tf-idf值从高到低排序;此时获得具有新顺序的标题和描述;

然后由下式分别计算标题加权词向量vt和描述加权词向量vc:

vt=(weightt1v1,weightt2v2,...,weighttwvw,...,weighttpvp)

vc=(weightc1v1,weightc2v2,...,weightcwvw,...,weightcqvq)

其中weightw是词w的权重,由词的tf-idf值表示,weighttw为词w在标题中的权重,weightcw为词w在描述中的权重;vw是词w的词向量;p为标题中词的数量,q为描述中词的数量。

如前所述的一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法,进一步地,步骤1.4所述的由加权词向量得到两个缺陷报告之间的相似度sim1,sim2的步骤具体包括:

其中,vt1,vc1分别为来自其中一个缺陷报告的标题加权词向量和描述加权词向量,vt2,vc2分别为来自其中另一个缺陷报告的标题加权词向量和描述加权词向量;vt1、vt2的向量长度相同;vc1,vc2的向量长度相同;若长度不同,取较长向量的长度,并且在较短的向量后面补0直到两个向量长度相同。

如前所述的一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法,进一步地,步骤二所述的具体步骤包括:

步骤2.1、由步骤一中缺陷报告的加权词向量通过奇异值分解得到lsi向量;

步骤2.2、计算两缺陷报告之间的余弦相似度,其中标题相似度sim3和描述相似度sim4为

其中,v′t1和v′c1分别为来自其中一个缺陷报告的标题lsi向量和描述lsi向量;v′t2和v′c2分别为来自其中另一个缺陷报告的标题lsi向量和描述lsi向量。

如前所述的一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法,进一步地,步骤三所述产品和组件之间的相似度sim5来自:

其中,set1和set2分别是产品和组件的集合。

如前所述的一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法,进一步地,步骤四所述的总相似度sim=(sim1+sim2+sim3+sim4)*sim5。

如前所述的一种加权词向量和潜在语义分析结合的相似缺陷报告推荐方法,进一步地,所述由词转化来的向量的固定长度为400。

本发明采用以上技术方案与现有技术相比,具有以下的优点:

1.同时采用skip-gram模型的词向量和lsi向量表示缺陷报告中的文本。skip-gram模型的词向量使向量表示能够挖掘词的上下文之间的信息。lsi向量能够分析词语的潜在语义,但无法分析词语的上下文。将两种方法结合使用,能够进行互补,充分挖掘缺陷报告中文本的含义。

2.针对软件缺陷报告中的文本多为短文本的情况,为文本的词向量引入权重。由于短文本的长度较小,无用词语在短文本中所占的比重相对于在长文本中所占的比重较大,对文本表示的精确性影响也较大。为短文本中的词向量引入权重,能够提高重要的词语在表示短文本时的比重,降低无用词语所占的比重,从而提高词向量表示短文本的准确性。

3.借助缺陷报告中的产品和组件信息计算相似度。由于在软件缺陷报告中,相似的缺陷报告基本上会出现在相同的产品和组件中。所以在计算相似度时,通过计算两份缺陷报告中涉及到的产品和组件信息的重合程度,提高相似度计算的准确性。

附图说明

图1是本发明整体的流程图。

具体实施方式

下面结合附图对本发明的技术方案做进一步的详细说明:

本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。

本发明针对当前相似软件缺陷报告推荐算法的缺陷,提出了将加权词向量和信息检索中的潜在语义索引方法相合的推荐算法。针对缺陷报告中以短文本为主的事实对传统词向量进行优化,更好地表示了缺陷报告中的短文本,同时提高推荐算法的准确性。

首先需要对软件缺陷报告进行处理。通常情况下,在系统缺陷追踪系统中缺陷报告涉及到的信息比较复杂,不仅仅包括标题、具体描述、产品及组件,所以需要将缺陷报告中这四个部分的内容提取出来。由于本发明中的推荐算法是基于词语的,所以在相关内容提取完成后,需要对标题和具体描述进行分词处理。同时,由于缺陷报告中的特殊符号和数字对相似度的计算没有作用,所以需要去除报告中的数字以及符号。如果涉及到英语单词,需要对英语单词的形式进行处理,如将大写字母转化为小写字母、单词转换为基本形式。此时完成软件缺陷告的处理。

完成数据清洗后,计算查询缺陷报告和所有候选缺陷报告之间的相似度。计算相似度的步骤如图1所示。具体包括以下步骤:

步骤一、计算加权词向量,并且根据加权词向量计算缺陷报告的相似度,具体步骤如下:

步骤1.1、在一篇缺陷报告中,分别计算每个词在所述缺陷报告中的权重:

weight(w)=tf(w,d)*idf(w);

其中,tf(w,d)表示词频,标题和描述的词频分别由下式得到:

其中,w表示当前词;d表示当前缺陷报告;idf(w)表示逆向文档频率,由下式得到:

步骤1.2、将所述缺陷报告中的词分别转化成固定长度的向量,得到每个词的词向量:

由skip-gram模型的目标函数得到词向量v:

其中,n表示缺陷报告的标题或者描述的长度,p(wj|wi)是词的条件概率,cw表示词

w的上下文的集合;其中,词的条件概率p(wj|wi)由下式得到:

其中,向量vw为由词w转化而来的词向量,所述词向量长度为一定值。在词

向量中,每一个词都会被转化为一个固定长度a的向量vi.本实施例中,长度a取400。

步骤1.3、分别计算所述缺陷报告的标题加权词向量和描述加权词向量:

在步骤1.1和步骤1.2中,计算的是缺陷报告标题或者描述中单个词的词向量,所述单个词的向量集合用于准确地表示完整的标题和描述。

首先分别对标题和描述中的词,根据词的tf-idf值从高到低排序;此时获得具有新顺序的标题和描述;

然后由下式分别计算标题词向量vt和描述词向量vd:

vt=(weightt1v1,weightt2v2,...,weighttwvw,...,weighttpvp)

vc=(weightc1v1,weightc2v2,...,weightcwvw,...,weightcqvq)

其中weightw是词w的权重,由词的tf-idf值表示,weighttw为词w在标题中的权重,weightcw为词w在描述中的权重;vw是词w的词向量;p为标题中词的数量,q为描述中词的数量。

步骤1.4、分别计算缺陷报告之间的标题加权相似度sim1和描述加权相似度sim2:

其中,vt1,vc1分别为来自其中一个缺陷报告的标题加权词向量和描述加权词向量,vt2,vc2分别为来自其中另一个缺陷报告的标题加权词向量和描述加权词向量;vt1、vt2的向量长度相同;vc1,vc2的向量长度相同;若所述向量的长度不同,取较长向量的长度,并且在较短的向量后面补0直到两个向量长度相同。

步骤二、分别计算每个缺陷报告的lsi向量;然后根据所述lsi向量计算缺陷报告的相似度:

步骤2.1、由步骤一中词的tf-idf值组成的向量通过奇异值分解得到lsi向量;

步骤2.2、计算两缺陷报告之间的余弦相似度,其中标题相似度sim3和描述相似度sim4为

其中,v′t1和v′c1分别为来自其中一个缺陷报告的标题lsi向量值和描述lsi向量值;v′t2和v′c2分别为来自其中另一个缺陷报告的标题lsi向量值和描述lsi向量值。

步骤三、计算不同缺陷报告所涉及的产品和组件之间的相似度sim5:

其中,set1和set2分别是产品和组件的集合。由上式可以看出,若两者都相同,则sim5取值为1。若两者都不相同则sim5为0;产品和组件其中一个相同则sim5为0.5。

步骤四、根据步骤一至步骤三所得的相似度,计算缺陷报告之间的总相似度;

总相似度sim=(sim1+sim2+sim3+sim4)*sim5。

步骤五、计算要查询的缺陷报告和各候选缺陷报告之间的总相似度并进行升序排序,从候选缺陷报告中选出与要查询的缺陷报告总相似度最高的缺陷报告。在选择时,选取相似度最高的前5个缺陷报告作为相似的报告。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1