发明名称 一种软件重复缺陷报告检测的方法
摘要 本发明涉及一种软件重复缺陷报告检测的方法,它包括如下步骤,首先从软件的缺陷报告数据库中提取训练样本集和测试样本集,建立训练样本集的主题模型,然后对测试样本应用主题模型得到文档-主题矩阵,计算测试样本间的主题相似度,提取测试样本的分类信息计算分类信息相似度,将分类信息相似度和主题相似度相乘得到测试样本间的LDA相似度;其次提取测试样本N-gram序列计算N-gram相似度,将N-gram相似度和LDA相似度加权求和得测试样本间的整体相似度,最后如果整体相似度大于等于预设的阀值则认为两个测试样本为重复缺陷报告。本方法极大地提高了检测结果的准确性,尽量避免将重复缺陷报告派给开发人员,节省了人力资源。
申请公布号 CN103970666A 申请公布日期 2014.08.06
申请号 CN201410234198.X 申请日期 2014.05.29
申请人 重庆大学 发明人 徐玲;邹杰;葛永新;杨梦宁;洪明坚;张小洪;蒋欣志
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 重庆博凯知识产权代理有限公司 50212 代理人 王海凤;穆祥维
主权项 一种软件重复缺陷报告检测的方法,其特征在于具体包括如下步骤:步骤一:从软件的缺陷报告数据库中提取训练样本集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>&Sigma;</mi><mi>&xi;</mi></msub><mrow><mo>(</mo><msub><mi>d</mi><mrow><mi>j</mi><mo>,</mo><mi>&xi;</mi></mrow></msub><mo>*</mo><msub><mi>d</mi><mrow><mi>x</mi><mo>,</mo><mi>&xi;</mi></mrow></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>&Sigma;</mi><mi>&xi;</mi></msub><msubsup><mi>d</mi><mrow><mi>j</mi><mo>,</mo><mi>&xi;</mi></mrow><mn>2</mn></msubsup><mo>*</mo><msubsup><mi>d</mi><mrow><mi>x</mi><mo>,</mo><mi>&xi;</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>&alpha;</mi><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>&delta;</mi><mo>=</mo><mn>1</mn><mo>,</mo><mi>&epsiv;</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>&delta;</mi><mo>=</mo><mi>A</mi><mo>,</mo><mi>&epsiv;</mi><mo>=</mo><mi>B</mi></mrow></munderover><msub><mi>&alpha;</mi><mi>&delta;&epsiv;</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>&beta;</mi><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>&delta;</mi><mo>=</mo><mn>1</mn><mo>,</mo><mi>&epsiv;</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>&delta;</mi><mo>=</mo><mi>A</mi><mo>,</mo><mi>&epsiv;</mi><mo>=</mo><mi>B</mi></mrow></munderover><msub><mi>&alpha;</mi><mrow><mi>&epsiv;</mi><mo>,</mo><mi>&delta;</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;否则为不同的缺陷报告。
地址 400044 重庆市沙坪坝区沙正街174号
您可能感兴趣的专利