主权项 |
一种软件重复缺陷报告检测的方法,其特征在于具体包括如下步骤:步骤一:从软件的缺陷报告数据库中提取训练样本集M和测试样本集W,训练样本集M={m<sub>1</sub>,m<sub>2</sub>,...m<sub>i</sub>...,m<sub>Q</sub>},i=1,2,...,Q,m<sub>i</sub>表示训练样本集中第i个训练样本,Q表示测试样本集中训练样本的数量;测试样本集W={w<sub>1</sub>,w<sub>2</sub>,...w<sub>j</sub>...,w<sub>P</sub>},j=1,2,...,P,w<sub>j</sub>表示测试样本集中第j个测试样本,P表示测试样本集中测试样本的数量,Q>P;步骤二:利用Mallet工具创建训练样本集M的主题模型;(一)将训练样本集M转化为特征向量集<img file="FDA0000513511280000011.GIF" wi="106" he="82" /><img file="FDA0000513511280000012.GIF" wi="637" he="102" />i=1,2,...,Q,其中<img file="FDA0000513511280000013.GIF" wi="71" he="81" />表示训练样本m<sub>i</sub>对应的训练样本特征向量;(二)预设Mallet工具对应的参数K,K表示训练样本集M的主题数目;(三)根据特征向量集<img file="FDA0000513511280000014.GIF" wi="66" he="78" />对训练样本集M进行训练,得到训练样本集M的主题模型;步骤三:计算测试样本集W中测试样本间的LDA相似度:(一)计算测试样本集W中测试样本w<sub>j</sub>和测试样本w<sub>x</sub>的主题相似度,具体如下:i)利用Mallet工具将测试样本集W转化为特征向量集<img file="FDA0000513511280000015.GIF" wi="110" he="84" /><img file="FDA0000513511280000016.GIF" wi="621" he="104" />j=1,2,...,P,其中<img file="FDA0000513511280000017.GIF" wi="74" he="91" />表示测试样本w<sub>j</sub>对应的测试样本特征向量;设测试样本w<sub>x</sub>也属于测试样本集W,w<sub>j</sub>,w<sub>x</sub>∈W,x=1,2,...,P;并且j≠x,<img file="FDA0000513511280000018.GIF" wi="75" he="82" />表示测试样本w<sub>x</sub>对应的测试样本特征向量;然后应用训练样本集M的主题模型建立测试样本的文档‑主题矩阵D,所述测试样本特征向量<img file="FDA0000513511280000019.GIF" wi="72" he="90" />对应在文档‑主题矩阵D中第ξ维向量表示为<img file="FDA00005135112800000110.GIF" wi="137" he="117" />所述向量<img file="FDA00005135112800000111.GIF" wi="113" he="118" />的值表示为d<sub>j,ξ</sub>,所述测试样本特征向量<img file="FDA00005135112800000112.GIF" wi="74" he="84" />对应在文档‑主题矩阵D中第ξ维向量表示为<img file="FDA00005135112800000113.GIF" wi="140" he="119" />所述向量<img file="FDA00005135112800000114.GIF" wi="114" he="122" />的值表示为d<sub>x,ξ</sub>;ii)利用公式(1)计算测试样本w<sub>j</sub>与w<sub>x</sub>的主题相似度:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>Sim</mi><mrow><mo>(</mo><msub><mi>w</mi><mi>j</mi></msub><mo>,</mo><msub><mi>w</mi><mi>x</mi></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>S</mi><mi>jx</mi></msub><mo>=</mo><mfrac><mrow><msub><mi>Σ</mi><mi>ξ</mi></msub><mrow><mo>(</mo><msub><mi>d</mi><mrow><mi>j</mi><mo>,</mo><mi>ξ</mi></mrow></msub><mo>*</mo><msub><mi>d</mi><mrow><mi>x</mi><mo>,</mo><mi>ξ</mi></mrow></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>Σ</mi><mi>ξ</mi></msub><msubsup><mi>d</mi><mrow><mi>j</mi><mo>,</mo><mi>ξ</mi></mrow><mn>2</mn></msubsup><mo>*</mo><msubsup><mi>d</mi><mrow><mi>x</mi><mo>,</mo><mi>ξ</mi></mrow><mn>2</mn></msubsup></msqrt></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000513511280000021.GIF" wi="1133" he="262" /></maths>其中,S<sub>jx</sub>表示w<sub>j</sub>与w<sub>x</sub>的主题相似度;(二)计算测试样本集W中测试样本w<sub>j</sub>和测试样本w<sub>x</sub>的分类信息相似度,具体如下:i)提取测试样本分类信息,并使测试样本的分类信息与相应的测试样本一一对应;ii)所述测试样本w<sub>j</sub>对应的分类信息为f<sub>j,τ</sub>,测试样本w<sub>x</sub>对应的分类信息为f<sub>x,τ</sub>,其中τ表示分类信息f<sub>j,τ</sub>和f<sub>x,τ</sub>的层数,τ=1,2,...,N;iii)计算测试样本w<sub>j</sub>与测试样本w<sub>x</sub>之间的分类信息相似度η<sub>jx</sub>,设η<sub>jx,τ</sub>表示测试样本w<sub>j</sub>的分类信息f<sub>j,τ</sub>的第τ层与测试样本w<sub>x</sub>的分类信息f<sub>x,τ</sub>的第τ层的相似度,具体如下;(1)令j=1;(2)令x=j+1;(3)令τ=1;(4)判断f<sub>j,τ</sub>的第τ层与f<sub>x,τ</sub>的第τ层是否相同,如果相同执行步骤(5),如果不同执行步骤(7);(5)将f<sub>j,τ</sub>与f<sub>x,τ</sub>之间的第τ层相似度η<sub>jx,τ</sub>设为a<sub>τ</sub>;(6)如果τ=N,则令η<sub>jx</sub>=η<sub>jx,τ</sub>,并执行步骤(9),否则执行步骤(8);(7)令η<sub>jx</sub>=E,E为经验值,并执行步骤(9);(8)令τ=τ+1,并执行步骤(4);(9)令x=x+1,如果x=P则执行步骤(10),否则执行步骤(2);(10)令j=j+1,如果j<P,则执行步骤(2),否则执行步骤(11);(11)保存分类信息相似度η<sub>jx</sub>;(三)根据公式(2)计算所述测试样本集W中测试样本间的LDA相似度θ<sub>jx</sub>:θ<sub>jx</sub>=S<sub>jx</sub>·η<sub>jx</sub> (2);步骤四:计算测试样本集W中测试样本间N‑gram相似度:(一)提取测试样本集W中的测试样本w<sub>j</sub>的N‑gram序列Y<sub>j</sub>和测试样本w<sub>x</sub>的N‑gram序列Y<sub>x</sub>,其中Y<sub>j</sub>={y<sub>1,1</sub>,y<sub>2,2</sub>,...y<sub>j,δ</sub>...,y<sub>P,A</sub>},y<sub>j,δ</sub>表示测试样本w<sub>j</sub>的N‑gram序列Y<sub>j</sub>中第δ个词,A表示测试样本w<sub>j</sub>的N‑gram序列Y<sub>j</sub>的总词数,Y<sub>x</sub>={y<sub>1,1</sub>,y<sub>2,2</sub>,...y<sub>x,ε</sub>...,y<sub>P,B</sub>},y<sub>x,ε</sub>表示测试样本w<sub>x</sub>的N‑gram序列Y<sub>x</sub>中第ε个词,B表示表示测试样本w<sub>x</sub>的N‑gram序列Y<sub>x</sub>的总词数;(二)计算测试样本集W中测试样本w<sub>j</sub>和测试样本w<sub>x</sub>的N‑gram相似度<img file="FDA0000513511280000031.GIF" wi="112" he="70" />具体如下:一)设测试样本w<sub>j</sub>的N‑gram序列Y<sub>j</sub>为匹配序列,测试样本w<sub>x</sub>的N‑gram序列Y<sub>x</sub>为被匹配序列;(1)令j=1;(2)令x=j+1;(3)令ε=1,δ=1;(4)如果y<sub>j,δ</sub>与y<sub>x,ε</sub>相同,则令α<sub>δ,ε</sub>=1,并执行步骤(5),并保存α<sub>δ,ε</sub>的值,否则执行步骤(7);(5)令δ=δ+1;(6)如果δ≤A,则执行步骤(4),否则执行步骤(9);(7)令α<sub>δ,ε</sub>=0,并ε=ε+1;(8)如果ε≤B,则执行步骤(4),否则执行步骤(9);(9)保存α<sub>δ,ε</sub>的值:二)利用公式(3)统计y<sub>j,δ</sub>与y<sub>x,ε</sub>比较时α<sub>δ,ε</sub>值的集合:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>α</mi><mo>=</mo><munderover><mi>Σ</mi><mrow><mi>δ</mi><mo>=</mo><mn>1</mn><mo>,</mo><mi>ϵ</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>δ</mi><mo>=</mo><mi>A</mi><mo>,</mo><mi>ϵ</mi><mo>=</mo><mi>B</mi></mrow></munderover><msub><mi>α</mi><mi>δϵ</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000513511280000041.GIF" wi="546" he="197" /></maths>三)设测试样本w<sub>x</sub>的N‑gram序列Y<sub>x</sub>为匹配序列,测试样本w<sub>j</sub>的N‑gram序列Y<sub>j</sub>为被匹配序列:(1)令x=1;(2)令j=x+1;(3)令ε=1,δ=1;(4)如果y<sub>x,ε</sub>与y<sub>j,δ</sub>相同,则令α<sub>ε,δ</sub>=1,并执行步骤(5),并保存α<sub>ε,δ</sub>的值,否则执行步骤(7);(5)令ε=ε+1;(6)如果ε≤B,则执行步骤(4),否则执行步骤(9);(7)令α<sub>ε,δ</sub>=0,并δ=δ+1;(8)如果δ≤A,则执行步骤(4),否则执行步骤(9);(9)保存α<sub>ε,δ</sub>的值;四)利用公式(4)统计y<sub>x,ε</sub>与y<sub>j,δ</sub>比较时α<sub>ε,δ</sub>值的集合:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>β</mi><mo>=</mo><munderover><mi>Σ</mi><mrow><mi>δ</mi><mo>=</mo><mn>1</mn><mo>,</mo><mi>ϵ</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>δ</mi><mo>=</mo><mi>A</mi><mo>,</mo><mi>ϵ</mi><mo>=</mo><mi>B</mi></mrow></munderover><msub><mi>α</mi><mrow><mi>ϵ</mi><mo>,</mo><mi>δ</mi></mrow></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000513511280000042.GIF" wi="529" he="197" /></maths>五)然后根据公式(5)计算测试样本w<sub>j</sub>与测试样本w<sub>x</sub>的N‑gram相似度<img file="FDA0000513511280000043.GIF" wi="116" he="83" /><img file="FDA0000513511280000044.GIF" wi="494" he="172" />步骤五:通过公式(6)计算测试样本集W中测试样本w<sub>j</sub>和测试样本w<sub>x</sub>之间整体相似度:<img file="FDA0000513511280000045.GIF" wi="548" he="90" />其中v,r分别表示加权求和时引入的参数,为经验值;步骤六:将测试样本w<sub>j</sub>和测试样本w<sub>x</sub>之间整体相似度T<sub>jx</sub>与相似度阀值F相比,如果T<sub>jx</sub>≥F,则认为测试样本w<sub>j</sub>和测试样本w<sub>x</sub>为重复的缺陷报告并对该一对测试样本分配一个ID,然后输出所述ID;否则为不同的缺陷报告。 |