技术领域
本发明涉及短文本分类技术领域,具体涉及一种基于NB-Bagging的短文本分类方法。
背景技术
在面对短文本的分类问题的时候,由于短文本长度短、词项特征稀疏等特点,导致传统的长文本分类方法不再适用于短文本分类。在文本分类领域中取得较成功的长文本分类方法难以直接应用到短文本分类中,短文本分类技术(Short Text Classification)在一定程度上可以解决上述短文本应用中面临的挑战,该技术是近年来国内外众多学者的研究热点之一,也是自然语言处理(NLP)领域中一项至关重要的任务,针对短文本的分类算法已经成为目前研究者亟待解决的一个研究难题。
现如今,比较主流的机器学习方法有朴素贝叶斯(Naïve Bayes, NB)、支持向量机(Support Vector Machine, SVM)、逻辑回归(Logistic Regression, LR)、多类逻辑回归(Softmax Regression, SR)、随机森林(Random Forest, RF)、深度神经网络(Deep NeuralNetwork, DNN)等。
传统的短文本分类方法主要是利用朴素贝叶斯单个弱分类器进行分类,其存在两个问题:1)分类过程中容易过拟合,过拟合会导致模型在预测时准确率低;2)样本属性关联性差,,忽略了数据之间的关联性;3.分类决策存在错误率。
发明内容
发明目的:针对现有技术中存在的问题,本发明提供一种基于NB-Bagging的短文本分类方法,利用NB-Bagging算法对文本进行有监督训练测试,实现较高准确度的文本分类,优化了泛化能力和过拟合问题,提高了短文本分类的准确度。
技术方案:本发明提供了一种基于NB-Bagging的短文本分类方法,包括如下步骤:
步骤1:对文本数据集预处理,将数据分为训练集G1和测试集H1,通过结巴分词方法对所述训练集G1和测试集H1进行分词处理,得到文本数据集G2和H2,对所述文本数据集G2和H2进行 Bunch类数据化处理,得到Bunch数据类型G2'和H2';
步骤2:通过词向量空间模型处理G2'中的文本内容,建立词向量空间V1,再映射到H2'中的文本内容,得到词向量空间V2;
步骤3:通过TF-IDF权重策略处理词向量空间V1和V2,得到权重矩阵T1和T2,将T1矩阵中的权重值和其对应的标签输入用Bagging集成的朴素贝叶斯模型中训练,再输入T2矩阵中的权重值和其对应的标签进行测试,得到预测标签F;
步骤4:通过少数服从多数的投票方式处理预测标签F,得到最终短文本分类的结果。
进一步地,所述步骤1的具体方法为:
步骤1.1:定义Text为单类文本集,定义label、text、name分别为标签、单个文本和名称,并且满足Text={(label,text1, name1),(label,text2, name2),…,(label,textN,nameN)},texta为Text中第a个文本,namea为Text中第a个文本名称,其中,变量a∈[1,N];
步骤1.2:定义训练集和测试集分别为G1和H1,G1={Text1,Text2,…,TextA},H1={Text1,Text2,…,TextB};
步骤1.3:使用结巴分词方法对G1和H1处理,去掉结巴分词库里的常用词和符号,得到分词后的文本数据集G2和H2,G2={Text1,Text2,…,TextP},H2={Text1,Text2,…,TextQ}。
步骤1.4: 定义target_name,labels,filenames,contents分别为数据集类别集合、文本标签集合、文本文件名字集合和文本内容集合,满足target_name={labels,filenames,contents};
步骤1.5:对G2和H2 Bunch类数据化处理,得到Bunch数据类型G2'和H2',G2'={target_name1,target_name2,…,target_nameA},H2'={target_name1,target_name2,…,target_nameB}。
进一步地,所述步骤2的具体方法为:
步骤2.1:使用常用停用词表对G2'和H2'中的文本内容进行停用词过滤处理,得到过滤后的Bunch类数据集G2''和H2'';
步骤2.2:通过词向量空间模型建立G2''中文本内容的词向量空间V1,使用权重策略TF-IDF对V1进行处理,得到训练集的二维权重矩阵T1,T1=[v1,v2,…,vm];
步骤2.3:将V1词向量空间映射到H2''文本内容上,得到测试集词向量空间V2,使用TF-IDF权重策略处理V2,得到测试集的二维权重矩阵T2,T2=[v1,v2,…,vn]。
进一步地,所述步骤3的具体方法为:
步骤3.1:定义R1={r
步骤3.2:定义R2={r
步骤3.3:定义n_estimators=35,max_features=0.7,max_samples=0.7,其中n_estimators为模型集成的数量,max_features表示每次随机抽取特征的数量,max_samples表示每次随机抽取样本的数量;
步骤3.4:按指定参数抽取R1中的样本输入朴素贝叶斯分类器进行训练;
步骤3.5:按指定参数抽取R2的样本进行测试,得到预测标签F,满足F={forecast1,forecast2,…,forecasts…,forecastn_e},其中,forecasts={label1,label2,…,labeln_e},变量s∈(1,n_e)。
进一步地,所述步骤4的具体方法为:
步骤4.1:对预测标签F进行少数服从多数投票;
步骤4.2:预测分类多数的标签输出Forecast1;
步骤4.3:预测分类少数的标签输出Forecast2;
步骤4.4:得到最终短文本分类的结果。
有益效果:
1、本发明方法基于已有的综合文本标签集,利用NB和Bagging方法集成进行短文本有效分类。本发明利用结巴分词法对短文本数据进行分词,该算法基本python自带的字典,能够精准的切开文本;利用词向量空间模型和TF-IDF算法,对文本进行特征提取和权重矩阵的计算;利用NB-Bagging算法对文本进行有监督训练测试,实现较高准确度的文本分类,优化了泛化能力和过拟合问题,提高了准确度。
2、本发明多个朴素贝叶斯模型集成,每次放入的特征和样本都可以作为输入,可充分克服单个弱分类器过拟合和样本属性关联性差的问题,采用少数服从多数的投票方式得到最终分类,增强了模型的泛化能力。
附图说明
图1为本发明基于NB-Bagging短文本分类方法整体流程图;
图2 为本发明投票得到最终结果流程图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明公开了一种基于NB-Bagging的短文本分类方法,解决了传统的短文本分类方法利用单个弱分类器进行分类时,分类过程中容易过拟合且样本属性关联性差等问题。
现如今,比较主流的机器学习方法有朴素贝叶斯(Naïve Bayes, NB)、支持向量机(Support Vector Machine, SVM)、逻辑回归(Logistic Regression, LR)、多类逻辑回归(Softmax Regression, SR)、随机森林(Random Forest, RF)、深度神经网络(Deep NeuralNetwork, DNN)等。
朴素贝叶斯法(Naive Bayes)是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入 x ,利用贝叶斯定理求出后验概率最大的输出 y 。
Bagging独立的、并行的生成多个基本分类器,然后通过投票方式决定分类的类。其中当n_estimators设置为35,max_features和max_samples都设置为0.7时,文本分类的效果呈现大幅度提升。相对于其他集成算法而言,Bagging算法独立和并行运算,速度比较快,同时也能保证一定的准确度,能够较好的满足短文本分类的要求。
本发明一种基于NB-Bagging的短文本分类方法,包括如下步骤:
步骤1:对文本数据集预处理,将数据分为训练集G1和测试集H1,通过结巴分词方法对所述训练集G1和测试集H1进行分词处理,得到文本数据集G2和H2,对所述文本数据集G2和H2进行 Bunch类数据化处理,得到Bunch数据类型G2'和H2'。
步骤1.1:定义Text为单类文本集,定义label、text、name分别为标签、单个文本和名称,并且满足Text={(label,text1, name1),(label,text2, name2),…,(label,textN,nameN)},texta为Text中第a个文本,namea为Text中第a个文本名称,其中,变量a∈[1,N];
步骤1.2:定义训练集和测试集分别为G1和H1,G1={Text1,Text2,…,TextA},H1={Text1,Text2,…,TextB};
步骤1.3:使用结巴分词方法对G1和H1处理,去掉结巴分词库里的常用词和符号,得到分词后的文本数据集G2和H2,G2={Text1,Text2,…,TextP},H2={Text1,Text2,…,TextQ}。
步骤1.4: 定义target_name,labels,filenames,contents分别为数据集类别集合、文本标签集合、文本文件名字集合和文本内容集合,满足target_name={labels,filenames,contents};
步骤1.5:对G2和H2 Bunch类数据化处理,得到Bunch数据类型G2'和H2',G2'={target_name1,target_name2,…,target_nameA},H2'={target_name1,target_name2,…,target_nameB}。
步骤2:通过词向量空间模型处理G2'中的文本内容,建立词向量空间V1,再映射到H2'中的文本内容,得到词向量空间V2。
步骤2.1:使用常用停用词表对G2'和H2'中的文本内容进行停用词过滤处理,得到过滤后的Bunch类数据集G2''和H2'';
步骤2.2:通过词向量空间模型建立G2''中文本内容的词向量空间V1,使用权重策略TF-IDF对V1进行处理,得到训练集的二维权重矩阵T1,T1=[v1,v2,…,vm];
步骤2.3:将V1词向量空间映射到H2''文本内容上,得到测试集词向量空间V2,使用TF-IDF权重策略处理V2,得到测试集的二维权重矩阵T2,T2=[v1,v2,…,vn]。
步骤3:通过TF-IDF权重策略处理词向量空间V1和V2,得到权重矩阵T1和T2,将T1矩阵中的权重值和其对应的标签输入用Bagging集成的朴素贝叶斯模型中训练,再输入T2矩阵中的权重值和其对应的标签进行测试,得到预测标签F。
步骤3.1:定义R1={r
步骤3.2:定义R2={r
步骤3.3:定义n_estimators=35,max_features=0.7,max_samples=0.7,其中n_estimators为模型集成的数量,max_features表示每次随机抽取特征的数量,max_samples表示每次随机抽取样本的数量;
步骤3.4:按指定参数抽取R1中的样本输入朴素贝叶斯分类器进行训练;
步骤3.5:按指定参数抽取R2的样本进行测试,得到预测标签F,满足F={forecast1,forecast2,…,forecasts…,forecastn_e},其中,forecasts={label1,label2,…,labeln_e},变量s∈(1,n_e)。
步骤4:通过少数服从多数的投票方式处理预测标签F,得到最终短文本分类的结果。
步骤4.1:对预测标签F进行少数服从多数投票;
步骤4.2:预测分类多数的标签输出Forecast1;
步骤4.3:预测分类少数的标签输出Forecast2;
步骤4.4:得到最终短文本分类的结果。
本发明通过对270000条带文本标签的化工数据处理,利用结巴分词文本分词方法得到分词数据集, 结合Bagging方法对朴素贝叶斯进行了集成。改进的集成算法在保证文本分类速度的同时进一步提高了分类的准确度,在一共270000、8类的化工数据的分类中达到了81.9%的精确度,相比朴素贝叶斯提高了1.4%的精确度;本发明在10000的新闻类公共数据集的分类中达到了91.5%的准确率,相比朴素贝叶斯提高了10.0%的精确度。
上述实施方式只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
机译: 短文本分类方法和系统
机译: 一种基于用户兴趣的信息分类方法和装置以及一种基于用户兴趣的存储信息记录程序
机译: 燃料即柴油,一种用于内燃机的分类方法,涉及确定频率分量,并基于分配给分量的相位的特性将燃料分配为一种燃料类别。