恭喜中国人民解放军国防科技大学李姗姗获国家专利权
买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
龙图腾网恭喜中国人民解放军国防科技大学申请的专利基于两阶段模型对易混淆类别进行分类的方法获国家发明授权专利权,本发明授权专利权由国家知识产权局授予,授权公告号为:CN117113224B 。
龙图腾网通过国家知识产权局官网在2025-03-11发布的发明授权授权公告中获悉:该发明授权的专利申请号/专利号为:202311082422.3,技术领域涉及:G06F18/2415;该发明授权基于两阶段模型对易混淆类别进行分类的方法是由李姗姗;李佳颖;姜志杰;张元良;董威;陈立前;汪昌健;马迎伟;方寸谛;李星沛设计研发完成,并于2023-08-25向国家知识产权局提交的专利申请。
本基于两阶段模型对易混淆类别进行分类的方法在说明书摘要公布了:一种基于两阶段模型对易混淆类别进行分类的方法,技术方案是构建由预处理模块、第一阶段分类模块、易混淆类别识别模块、边界样本筛选模块和第二阶段分类模块构成的两阶段分类系统。构建训练集和测试集,预处理模块将训练集和测试集中的文本或源代码映射为词级别编码序列集合;第一阶段分类模块根据类别表对词级别编码序列集合进行分类,获得混淆矩阵;易混淆类别识别模块使用混淆矩阵获得易混淆类别二元组序列;对两阶段分类系统进行训练,训练好的两阶段分类系统对目标样本进行预处理、第一阶段分类,易混淆类别识别和边界样本识别。若为边界样本,则使用第二阶段分类模块进行再分类,得到分类结果。采用本发明可提高易混淆类别的分类准确率。
本发明授权基于两阶段模型对易混淆类别进行分类的方法在权利要求书中公布了:1.一种基于两阶段模型对易混淆类别进行分类的方法,其特征在于包括以下步骤:第一步,构建两阶段分类系统;两阶段分类系统由预处理模块、第一阶段分类模块、易混淆类别识别模块、边界样本筛选模块、第二阶段分类模块构成;预处理模块与第一阶段分类模块、第二阶段分类模块相连;训练时,读取第一训练集T或第二训练集RR,T={T1,T2,···Tm,···,TM},其中Tm表示T中的第m条文本序列,1≤m≤M,M为T中的文本总数,表示Tm的第i个词,I为Tm中词的总数;RR={R1,R2,···Rn,···,RN},其中Rn表示RR中的第n条源代码序列,1≤n≤N,N为RR中的源代码总数;表示Rn的第i个词,1≤i≤I;预处理模块利用词嵌入方法将训练集中每个词映射为词级别编码,得到训练集的词级别编码序列集合,预处理模块将训练集的词级别编码序列集合发送给第二阶段分类模块;当对用户输入的文本或源代码进行分类时,预处理模块接收用户输入的文本或源代码序列X,X={x1,x2,...,xj,...,xJ},其中xj表示X中的第j个词,1≤j≤J,J为X中的词个数,利用词嵌入方法将每个词映射为词级别编码,得到用户词级别编码序列集合GX,GX={Gx1,Gx2,...,Gxj,...,GxJ},其中Gxj表示xj经过词嵌入方法映射后的词级别编码,预处理模块将GX发送给第一阶段分类模块、第二阶段分类模块;当需要获取易混淆类别二元组时,预处理模块读取测试集,利用词嵌入方法将测试集中每个词映射为词级别编码,得到测试集的词级别编码序列集合,预处理模块将测试集的词级别编码序列集合发送给第一阶段分类模块;第一阶段分类模块与预处理模块、易混淆类别识别模块、边界样本筛选模块相连,接收用户输入的类别表,类别表由类别名称和类别下标两个域组成;第一阶段分类模块从预处理模块接收测试集词级别编码序列集合和GX,对测试集词级别编码序列集合进行分类,得到混淆矩阵,将混淆矩阵和类别表发送给易混淆类别识别模块;第一阶段分类模块对GX进行分类,得到X对应用户输入的类别表中每个类别的概率集合P,P={p1,p2,...,pu,...,pU},其中pu表示第一阶段分类模块预测GX属于下标u对应类别的概率,取最高概率对应的类别作为X的类别cat1,把P和cat1发送给边界样本筛选模块;易混淆类别识别模块与第一阶段分类模块、边界样本筛选模块相连,从第一阶段分类模块接收类别表和混淆矩阵,对混淆矩阵中所有非对角线上的数值由小到大进行排列,得到第三四分位数Q3,通过Q3计算得到判断易混淆类别的阈值,将混淆矩阵中所有非对角线元素与易混淆类别阈值进行比较,得到易混淆类别二元组序列,将易混淆类别二元组序列和类别表发送给边界样本筛选模块;边界样本筛选模块与第一阶段分类模块、易混淆类别识别模块、第二阶段分类模块相连,从第一阶段分类模块接收P和cat1,从易混淆类别识别模块接收易混淆类别二元组序列和类别表,设定再分类阈值为ω,将类别cat1与易混淆类别二元组序列进行比较,若类别cat1不属于易混淆类别二元组序列中某个二元组中的类别,则取cat1作为X的类别;若类别cat1属于易混淆类别二元组序列中某个二元组中的类别,则计算概率插值Δp;若Δpω,取类别cat1作为X的类别;若Δpω,则将需要对X进行再分类的信号flag置为1,将flag发送给第二阶段分类模块;第二阶段分类模块由前馈神经网络层和线性分类层构成;前馈神经网络层与预处理模块、线性分类层、边界样本筛选模块相连;训练时,前馈神经网络层从预处理模块接收训练集词级别编码序列集合,对训练集词级别编码序列集合中的每一条词级别编码进行非线性映射,得到训练集词级别编码序列集合非线性映射后的表示Attn,将Attn发送到线性分类层;当对用户输入的文本或源代码进行分类时,前馈神经网络层从边界样本筛选模块接收flag,从预处理模块接收GX,若信号flag值为1,对GX进行非线性映射,得到GX非线性映射后的表示Attn',将Attn'发送给线性分类层;线性分类层与前馈神经网络层相连,训练时,线性分类层从前馈神经网络层接收Attn,对Attn进行线性映射,得到第一预测向量即logits,对logits进行Softmax操作,得到训练集中每个样本对应类别表中每个类别的概率集合P',P'={p'1,p'2,...,p'u,...,p'U},其中p'u表示第二阶段分类模型预测Tm属于下标u对应类别的概率,取最高概率对应的类别作为训练集中每个样本的类别cat2,采用交叉损失熵函数计算损失Loss进行反向传播来更新模型参数;当对用户输入的文本或源代码进行分类时,线性分类层从前馈神经网络层接收Attn',对Attn'进行线性映射,得到第二预测向量logits',对logits'进行Softmax操作,得到GX对应类别表中每个类别的第二概率集合PP',PP'={pp'1,pp'2,...,pp'u,...,pp'U},其中pp'u表示第二阶段分类模型预测X属于下标u对应类别的概率,取最高概率对应的类别作为X的类别cat2',把类别cat2'输出;第二步,准备训练两阶段分类系统的数据集,方法是:2.1采用Polarity数据集中的文本数据构建软件工程情感分类任务的第一训练集、第一测试集;将Polarity数据集中的AA条样本放到第一训练集,BB条样本放到第一测试集;Polarity数据集的每条样本包含一条文本和其对应的实际标签;第一训练集中的文本集合构成第一训练集集合T,第一训练集中的实际标签序列集合构成第一训练集实际标签序列集合T#;令T={T1,T2,···Tm,···,TM},其中Tm表示T中的第m条文本序列,其中1≤m≤M,M为T中的文本总数;表示Tm的第i个词,1≤i≤I;第一测试集中的文本集合构成第一测试集集合V,V={V1,V2,···Vr,···,VR},其中Vr表示V中的第r条文本,其中1≤r≤R,R为V中的文本总数,其中表示Vr中的第q个词,1≤q≤Q,Q为Vr中的词个数;第一测试集样本中的实际标签序列集合构成第一测试集实际标签序列集合V#;AA和BB为正整数;2.2采用MSR数据集中的源代码数据构建软件工程情感分类任务的第二训练集、第二测试集;将MSR数据集中的CC条样本第二放到训练集,DD条样本放到第二测试集;MSR数据集的每条样本包含一条源代码和其对应的实际标签;第二训练集中的源代码集合构成第二训练集集合RR,第二训练集中的实际标签序列集合构成第二训练集实际标签序列集合RR#;令RR={R1,R2,···Rn,···,RN},其中Rn表示RR中的第n条源代码序列,1≤n≤N,N为RR中的源代码总数;表示Rn的第i个词;第二测试集中的源代码集合构成第二测试集集合S,S={S1,S2,···So,···,SO},其中So表示S中的第o条文本,其中1≤o≤O,O为S中的源代码总数,其中表示So中的第qq个词,1≤qq≤QQ,QQ为So中的词个数;第二测试集样本中的实际标签序列集合构成第二测试集实际标签序列集合S#;CC和DD为正整数;第三步,若需要对文本数据进行分类,转第四步;若需要对源代码数据进行分类,转第五步;第四步,预处理模块使用预处理方法,将T中的文本数据映射为第一训练集词级别编码序列集合GT,将V中的文本数据映射为第一测试集词级别编码序列集合GV,方法是:4.1采用词级别映射方法将T中的M条文本数据映射为GT,方法是:4.1.1令变量m=1;4.1.2读取T中的第m条文本Tm,采用词级别编码方法对Tm的中进行词映射,得到Tm的词级别编码序列GTm,方法是:4.1.2.1令变量i=1;4.1.2.2将Tm中的第i个词映射为词级别编码4.1.2.3令i=i+1,如果i≤I,转4.1.2.2;如果iI,说明Tm中的I个词都已经映射为了词级别编码,得到T中第m条文本数据的词级别编码序列表示Tm的第i个词,转4.1.3;4.1.3令m=m+1,如果m≤M,转4.1.2;如果mM,说明T的M个文本数据都已经映射为词级别编码序列,得到GT,GT={GT1,GT2,...,GTm,...,GTM},GTm表示T中第m条文本数据的词级别编码序列;4.2采用4.1所述词级别映射方法将V中的R条文本数据映射为第一测试集词级别编码集合GV;4.3将GT发送给第二阶段分类模块,将GV发送给第一阶段分类模块,转第六步;第五步,预处理模块采用第四步所述预处理方法,将RR中的源代码数据映射为第二训练集词级别编码序列集合GRR,将S中的源代码数据映射为第二测试集词级别编码序列集合GS,将GRR发送给第二阶段分类模块,将GS发送给第一阶段分类模块,转第七步;第六步,第一阶段分类模块接收用户输入的类别表,从预处理模块接收GV,采用分类方法对GV进行分类,获得第一混淆矩阵CM,方法是:6.1第一阶段分类模块接收用户输入的类别表,从预处理模块接收GV;类别表由类别名称和类别下标两个域组成,U是类别表中类别名称的总数;6.2第一阶段分类模块对GV进行分类,得到类别集合pred;6.3第一阶段分类模块使用confusion_matrix函数获得第一混淆矩阵CM,CM={p11,p12,...puu',...,pUU,},其中puu'表示第一阶段分类模块将下标u对应的类别预测为下标u'对应的类别的概率,1≤u≤U,1≤u'≤U;6.4第一阶段分类模块将CM和类别表发送给易混淆类别识别模块,转第八步;第七步,第一阶段分类模块接收用户输入的类别表,从预处理模块接收GS,使用第六步所述分类方法对GS进行分类,获得第二混淆矩阵CM',将CM'和类别表发送给易混淆类别识别模块,转第九步;第八步,易混淆类别识别模块采用识别方法,使用第一混淆矩阵CM获得第一易混淆类别二元组序列L,方法为:8.1初始化第一易混淆类别二元组序列L为空;8.2对第一混淆矩阵CM中所有非对角线上的数值由小到大进行排列;8.3计算排列后CM的第三四分位数Q3;8.4令易混淆类别阈值δ=2Q3;8.5令变量u=1;8.6令变量u'=1;8.7比较puu'和δ;若puu'δ,则下标u对应的类别和下标u'对应的类别是一组易混淆类别二元组,将二元组u对应的类别,u'对应的类别加入L;8.8令u'=u'+1,如果u'≤U,转8.7;如果u'U,说明CM中的一行已经遍历完成,转8.9;8.9令u=u+1,如果u≤U,转8.7;如果uU,说明CM已经全部遍历完成,得到了第一易混淆类别二元组序列L,L={l1,l2,...,le,...,lE},其中le为一对易混淆类别二元组,1≤e≤E,E为易混淆类别识别模块识别出的二元组个数,将L发送给边界样本筛选模块,转第十步;第九步,易混淆类别识别模块采用第八步所述识别方法,使用第二混淆矩阵CM'获得第二易混淆类别二元组序列LL,将LL发送给边界样本筛选模块,转第十一步;第十步,采用训练方法,使用T对两阶段分类系统进行有监督方式训练,得到第二阶段分类模块的前馈神经网络层及线性分类层网络权重参数,方法为:10.1初始化权重参数,将前馈神经网络层的参数集合WF中的元素初始化为[0,1]的随机数;将线性分类层的参数集合WY中的元素初始化为[0,1]的随机数;10.2设置网络训练超参数,包括词嵌入大小,网络模型学习速率,权重衰减率weight_decay,头数head,预热学习率warmup,批处理大小batch_size,编码丢弃率;10.3第二阶段分类模块从预处理模块接收GT,采用有监督方式迭代训练,每一轮训练得到第一预测标签序列T',计算T'与T#的分布差距,得到损失值,最小化损失值并更新前馈神经网络层和线性分类层的网络参数,直到满足迭代次数要求,得到前馈神经网络层和线性分类层的权重参数,方法如下:10.3.1初始化训练迭代参数epoch=1;初始化迭代阈值θ为正整数;10.3.2令变量m=1;10.3.3前馈神经网络层利用非线性映射方法对GTm进行非线性映射,得到GTm非线性映射后的表示Attn,将Attn作为句子级编码表示发送给线性分类层;10.3.4线性分类层将Attn映射为类别个数维度的第一预测向量logits,对logits进行softmax操作,得到Tm对应用户输入的类别表中每个类别的概率,取最高概率的类别作为Tm的类别cat2;10.3.5线性分类层采用交叉损失熵函数计算T’和T#之间的分布差距,得到损失值Loss,采用Adam优化算法对Loss最小化,通过反向传播以更新一次的前馈神经网络层、线性映射层的权重参数,得到更新后的WF和WY;10.3.6令m=m+1,如果m≤M,转10.3.3;如果mM,说明T的M个数据样本都已经参与训练,一次迭代训练已经完成,转10.3.7;10.3.7令epoch=epoch+1,如果epoch≤迭代阈值θ,转10.3.2;否则说明训练满足迭代次数要求,训练结束,得到了第二阶段分类模块中前馈神经网络层、线性映射层的权重参数,转第十二步;第十一步,采用第十步所述训练方法,使用第二训练集集合RR对两阶段分类系统进行有监督方式训练,得到第二阶段分类模块中前馈神经网络层及线性分类层网络权重参数,转第十二步;第十二步,将训练得到的权重参数赋值给第二阶段分类模块,即将训练得到的WF作为第二阶段分类模块前馈神经网络层的网络权重参数,将训练得到的WY作为第二阶段分类模块的线性分类层权重参数,得到训练好的两阶段分类系统;第十三步,若需要对文本数据进行分类,转第十四步;若需要对源代码数据进行分类,转第十五步;第十四步,训练好的两阶段分类系统对用户输入的文本X进行分类,得到文本X所属的类别,方法为:14.1预处理模块接收用户输入的文本X,X={x1,x2,···,xi,···,xI},此时xi代表输入源代码中的第i个词,使用4.1.2步所述词级别编码方法对X中的x1,x2,···,xi,···,xI进行词映射,得到X的词级别编码序列集合GX,GX={Gx1,Gx2,··Gxi,···,GxI},Gxi为xi的词级别级编码,将GX发送给第一阶段分类模块、第二阶段分类模块;14.2第一阶段分类模块从预处理模块接收GX,对GX进行分类,得到X对应用户输入的类别表中每个类别的概率集合P,P={p1,p2,...,pu,...,pU},其中pu表示第一阶段分类模型预测X属于下标u对应类别的概率,取最高概率对应的类别作为X的类别cat1,把得到的概率集合P和类别cat1发送给边界样本筛选模块;14.3边界样本筛选模块从第一分类模块接收P和cat1,从易混淆类别识别模块接收易混淆类别二元组序列L,通过L、P和cat1判断X是否需要使用第二阶段分类模块进行再分类;方法是:14.3.1令e=1,从L中取出二元组le;14.3.2若cat1不属于二元组le中的类别,转14.3.3;若类别cat1属于二元组le中的类别,说明u对应le中第一项类别的下标,u'对应le中的第二项类别的下标,转14.3.5;14.3.3令e=e+1,如果e≤E,转14.3.2;如果eE,说明已将cat1与L中每一个二元组对比,cat1不属于L中任何一对二元组,转14.3.4;14.3.4取cat1作为X的预测类别,输出cat1,转第十六步;14.3.5计算概率插值Δp=|pu-pu'|;14.3.6令再分类阈值ω为0到1之间的小数;若Δpω,取cat1作为X的类别,输出cat1,转第十六步;若Δpω,则将需要对GX进行再分类的信号flag取值为1,并发送给第二阶段分类模块,转14.4;14.4第二阶段分类模块从边界样本筛选模块接收信号flag,从预处理模块接收GX,若信号flag值为1,对GX进行分类,取最高概率对应的类别作为X的类别cat2,方法为:14.4.1前馈神经网络层从预处理模块接收词级别编码序列GX,利用非线性映射方法对GX进行非线性映射,得到GX非线性映射后的表示Attn',将Attn'作为句子级编码表示发送给线性分类层;14.4.2线性分类层将Attn'映射为类别个数维度的第二预测向量logits',对logits'进行softmax操作,得到X对应类别表中每个类别的概率,取最高概率的类别作为X的预测标签cat2,转第十六步;第十五步:训练好的两阶段分类系统对用户输入的源代码X进行分类,得到源代码X所属的类别,方法为:15.1预处理模块接收用户输入的源代码X,X={x1,x2,···,xi,···,xI},此时xi代表输入源代码中的第i个词,使用4.1.2步所述词级别编码方法对X中的x1,x2,···,xi,···,xI进行词映射,得到X的词别编码序列集合GX,GX={Gx1,Gx2,··Gxi,···,GxI},Gxi为xi的词级别级编码,将GX发送给第一阶段分类模块、第二阶段分类模块;15.2第一阶段分类模块从预处理模块接收X的词级别编码GX,对GX进行分类,得到X对应类别表中每个类别的概率集合P,P={p1,p2,...,pu,...,pU},pu表示第一阶段分类模型预测X属于下标u对应类别的概率,取最高概率对应的类别作为作为X的类别cat1,把得到的概率集合P和类别cat1发送给边界样本筛选模块;15.3边界样本筛选模块从第一分类模块接收P和cat1,从易混淆类别识别模块接收第二易混淆类别二元组序列LL,通过LL、P和cat1判断X是否需要使用第二阶段分类模块进行再分类;方法是:15.3.1令e=1,从LL中取出二元组lle;15.3.2若cat1不属于二元组le中的类别,转15.3.3;若类别cat1属于二元组le中的类别,说明u对应le中的第一项类别的下标,u'对应le中的第二项类别的下标,转15.3.5;15.3.3令e=e+1,如果e≤E,转15.3.2;如果eE,说明已将cat1与L中每一个二元组对比,cat1不属于L中任何一对二元组,转15.3.4;15.3.4取cat1作为X的预测类别,输出cat1,转第十六步;15.3.5计算概率插值Δp=|pu-pu'|;15.3.6令再分类阈值ω为0到1之间的小数;若Δpω,取cat1作为X的类别,输出cat1,转第十六步;若Δpω,则将需要对GX进行再分类的信号flag取值为1,并发送给第二阶段分类模块,转15.4;15.4第二阶段分类模块从边界样本筛选模块接收信号flag,从预处理模块接收GX,若信号flag值为1,对GX进行分类,得到X的预测类cat2,方法为:15.4.1前馈神经网络层从预处理模块接收词级别编码GX,利用非线性映射方法对GX进行非线性映射,得到非线性映射后的表示GX的表示Attn',将Attn'作为句子级编码表示发送给线性分类层;15.4.2线性分类层将Attn'映射为类别个数维度的第二预测向量logits',对logits'进行softmax操作,得到X对应类别表中每个类别的概率,取最高概率的类别作为X的预测标签cat2,转第十六步;第十六步,结束。
如需购买、转让、实施、许可或投资类似专利技术,可联系本专利的申请人或专利权人中国人民解放军国防科技大学,其通讯地址为:410073 湖南省长沙市开福区德雅路109号;或者联系龙图腾网官方客服,联系龙图腾网可拨打电话0551-65771310或微信搜索“龙图腾网”。
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。