发明名称 基于半监督概率潜在语义分析的软件变更日志分类方法
摘要 本发明提供了一种基于半监督概率潜在语义分析的软件变更日志分类方法,该方法结合了先验知识所确定的单词字典,并根据单词与单词之间的概率相关性、单词与变更日志类别之间的概率相关性、以及软件变更日志自身与变更日志类别之间的概率相关性,客观地对软件变更日志进行分类,避免了依据词频特性的权重值进行软件变更日志的分类,使得分类的准确性得以提升,有效地解决了现有技术中因人为设定权重值导致软件变更日志分类存在误差、准确性较低的问题。
申请公布号 CN103984756A 申请公布日期 2014.08.13
申请号 CN201410234156.6 申请日期 2014.05.29
申请人 重庆大学 发明人 张小洪;鄢萌;傅颖;徐玲;杨梦宁;洪明坚;葛永新;杨丹
分类号 G06F17/30(2006.01)I;G06F17/27(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 重庆博凯知识产权代理有限公司 50212 代理人 李明
主权项 基于半监督概率潜在语义分析的软件变更日志分类方法,其特征在于,包括如下步骤:A)根据先验知识,划分变更日志类别,并确定每个变更日志类别对应的关键单词,将各个变更日志类别对应的全部关键单词的集合作为单词字典;所述单词字典中每个变更日志类别对应的一个关键单词,是根据先验知识对属于相应变更日志类别的软件变更日志进行词干提取所获得的词干中的一个单词;所述变更日志类别具体划分为三类,即:第1个变更日志类别z<sub>1</sub>:修复软件损坏、错误或缺陷所产生的软件变更日志;第2个变更日志类别z<sub>2</sub>:新增软件功能或软件特征所产生的软件变更日志;第3个变更日志类别z<sub>3</sub>:对软件进行重新编辑或重新构建所产生的软件变更日志;B)获取若干个属于上述三个变更日志类别且所属变更日志类别已知的软件变更日志作为训练样本,所有训练样本的集合作为训练数据库;分别统计训练数据库中属于第k个变更日志类别z<sub>k</sub>的训练样本个数n<sub>k</sub>,k∈{1,2,...,K},K为变更日志类别数,即K=3,并对训练数据库中每个训练样本分别进行词干提取处理,得到每个训练样本的词干中所包含的各个单词;C)建立单词字典中的关键单词、软件变更日志与变更日志类别之间的概率潜在语义分析模型:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>P</mi><mrow><mo>(</mo><msub><mi>w</mi><mi>j</mi></msub><mo>,</mo><msub><mi>d</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>=</mo><mi>P</mi><mrow><mo>(</mo><msub><mi>d</mi><mi>i</mi></msub><mo>)</mo></mrow><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><mo>[</mo><mi>P</mi><mrow><mo>(</mo><msub><mi>z</mi><mi>k</mi></msub><mo>|</mo><msub><mi>d</mi><mi>i</mi></msub><mo>)</mo></mrow><mi>P</mi><mrow><mo>(</mo><msub><mi>w</mi><mi>j</mi></msub><mo>|</mo><msub><mi>z</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>]</mo><mo>;</mo></mrow>]]></math><img file="FDA0000513505700000011.GIF" wi="863" he="139" /></maths>其中,P(w<sub>j</sub>|z<sub>k</sub>)表示单词字典中第j个关键单词w<sub>j</sub>与第k个变更日志类别z<sub>k</sub>的概率关系,k∈{1,2,3};P(z<sub>k</sub>|d<sub>i</sub>)表示第k个变更日志类别z<sub>k</sub>与第i个软件变更日志d<sub>i</sub>的概率关系;P(d<sub>i</sub>)表示第i个软件变更日志d<sub>i</sub>相对于训练数据库的单词数量概率,即<img file="FDA0000513505700000012.GIF" wi="302" he="133" />n<sub>i</sub>表示第i个软件变更日志d<sub>i</sub>的词干中所包含的单词数,N<sub>bace</sub>表示训练数据库中所有训练样本的词干所包含的单词数量总和;D)构造概率潜在语义分析模型的似然函数L:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>L</mi><mo>=</mo><munderover><mi>&Pi;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></munderover><munderover><mi>&Pi;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mi>P</mi><mrow><mo>(</mo><msub><mi>d</mi><mi>i</mi></msub><mo>)</mo></mrow><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><mo>[</mo><mi>P</mi><mrow><mo>(</mo><msub><mi>z</mi><mi>k</mi></msub><mo>|</mo><msub><mi>d</mi><mi>i</mi></msub><mo>)</mo></mrow><mi>P</mi><msup><mrow><mo>(</mo><msub><mi>w</mi><mi>j</mi></msub><mo>|</mo><msub><mi>z</mi><mi>k</mi></msub><mo>)</mo></mrow><mrow><mi>n</mi><mrow><mo>(</mo><msub><mi>w</mi><mi>j</mi></msub><mo>,</mo><msub><mi>d</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></msup><mo>]</mo><mo>;</mo></mrow>]]></math><img file="FDA0000513505700000013.GIF" wi="963" he="151" /></maths>其中,i∈{1,2,...,M},M表示软件变更日志的总数量;j∈{1,2,...,N},N表示单词字典中关键单词的总数量;n(w<sub>j</sub>,d<sub>i</sub>)表示单词字典中第j个关键单词w<sub>j</sub>在软件变更日志d<sub>i</sub>中出现的次数;E)将训练数据库中的每个训练样本分别作为软件变更日志d<sub>i</sub>代入到步骤D构造的似然函数L中,采用期望最大化算法,对单词字典中各个关键单词w<sub>j</sub>与各个变更日志类别z<sub>k</sub>的概率关系以及各个变更日志类别z<sub>k</sub>与作为软件变更日志d<sub>i</sub>的各个训练样本的概率关系进行求解;将期望最大化算法收敛求解所得的单词字典中各个关键单词w<sub>j</sub>与各个变更日志类别z<sub>k</sub>的概率关系标记为P<sub>c</sub>(w<sub>j</sub>|z<sub>k</sub>),将期望最大化算法收敛求解所得的各个变更日志类别z<sub>k</sub>与作为软件变更日志d<sub>i</sub>的各个训练样本的概率关系标记为P<sub>c</sub>(z<sub>k</sub>|d<sub>i</sub>),j∈{1,2,...,N},i∈{1,2,...,M},k∈{1,2,...,K};并分别计算每个变更日志类别z<sub>k</sub>的样本中心概率关系,其中,第k个变更日志类别z<sub>k</sub>的样本中心概率关系<img file="FDA0000513505700000024.GIF" wi="135" he="73" />为:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mover><mi>P</mi><mo>&OverBar;</mo></mover><mi>c</mi></msub><mrow><mo>(</mo><msub><mi>z</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></munderover><msub><mi>P</mi><mi>c</mi></msub><mrow><mo>(</mo><mrow><msub><mi>z</mi><mi>k</mi></msub><mo>|</mo><msub><mi>d</mi><mi>i</mi></msub></mrow><mo>)</mo></mrow></mrow><mi>M</mi></mfrac><mo>;</mo></mrow>]]></math><img file="FDA0000513505700000021.GIF" wi="476" he="191" /></maths>此时软件变更日志的总数量M取值为训练数据库中训练样本的总数量;F)获取待确定所属变更日志类别的软件变更日志作为待测样本,所有待测样本的集合作为测试数据库;对测试数据库中每个待测样本分别进行词干提取处理,得到每个待测样本的词干中所包含的各个单词;G)将测试数据库中的每个待测样本分别作为软件变更日志d<sub>i</sub>代入到步骤D构造的似然函数L中,采用期望最大化算法,对各个变更日志类别z<sub>k</sub>与作为软件变更日志d<sub>i</sub>的各个待测样本的概率关系进行求解;H)根据步骤G中求得的各个变更日志类别z<sub>k</sub>与各个待测样本的概率关系,以及各个变更日志类别z<sub>k</sub>的样本中心概率关系<img file="FDA0000513505700000025.GIF" wi="161" he="73" />分别计算各个待测样本与各个变更日志类别z<sub>k</sub>样本中心概率的相似度Sim(d<sub>x,m</sub>,z<sub>k</sub>),从而确定各个待测样本所属的变更日志类别:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>X</mi><mi>m</mi></msub><mo>=</mo><mi>arg</mi><munder><mi>max</mi><mi>k</mi></munder><mo>[</mo><mi>Sim</mi><mrow><mo>(</mo><msub><mi>d</mi><mrow><mi>x</mi><mo>,</mo><mi>m</mi></mrow></msub><mo>,</mo><msub><mi>z</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>]</mo><mo>,</mo><mi>k</mi><mo>&Element;</mo><mo>{</mo><mn>1,2,3</mn><mo>}</mo><mo>;</mo></mrow>]]></math><img file="FDA0000513505700000022.GIF" wi="854" he="85" /></maths>其中,X<sub>m</sub>表示任意的第m个待测样本d<sub>x,m</sub>所属的变更日志类别;相似度Sim(d<sub>x,m</sub>,z<sub>k</sub>)为:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>Sim</mi><mrow><mo>(</mo><msub><mi>d</mi><mrow><mi>x</mi><mo>,</mo><mi>m</mi></mrow></msub><mo>,</mo><msub><mi>z</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><mo>[</mo><msub><mi>P</mi><mi>x</mi></msub><mrow><mo>(</mo><msub><mi>z</mi><mi>k</mi></msub><mo>|</mo><msub><mi>d</mi><mrow><mi>x</mi><mo>,</mo><mi>m</mi></mrow></msub><mo>)</mo></mrow><mo>&CenterDot;</mo><msub><mover><mi>P</mi><mo>&OverBar;</mo></mover><mi>c</mi></msub><mrow><mo>(</mo><msub><mi>z</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>]</mo></mrow><mrow><msqrt><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><msub><mi>P</mi><mi>x</mi></msub></msqrt><msup><mrow><mo>(</mo><mrow><msub><mi>z</mi><mi>k</mi></msub><mo>|</mo></mrow><msub><mi>d</mi><mrow><mi>x</mi><mo>,</mo><mi>m</mi></mrow></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>&CenterDot;</mo><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><msub><mover><mi>P</mi><mo>&OverBar;</mo></mover><mi>c</mi></msub><msup><mrow><mo>(</mo><msub><mi>z</mi><mi>k</mi></msub><mo>)</mo></mrow><mn>2</mn></msup></mrow></mfrac><mo>;</mo></mrow>]]></math><img file="FDA0000513505700000023.GIF" wi="929" he="284" /></maths>其中,P<sub>x</sub>(z<sub>k</sub>|d<sub>x,m</sub>)表示步骤G中求得的第k个变更日志类别z<sub>k</sub>与第m个待测样本d<sub>x,m</sub>的概率关系;由此,根据所确定的各个待测样本所属的变更日志类别,对各个作为待测样本的软件变更日志添加类别标记。
地址 400044 重庆市沙坪坝区沙正街174号