科技制作朴素贝叶斯文本分类系统_第1页
科技制作朴素贝叶斯文本分类系统_第2页
科技制作朴素贝叶斯文本分类系统_第3页
科技制作朴素贝叶斯文本分类系统_第4页
科技制作朴素贝叶斯文本分类系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

科技制作课程设计报告方案名称基于朴素贝叶斯算法的文本分类系统学院网络与信息安全学院专业网络工程学生姓名*****学号15180********目录TOC\o"1-5"\h\z\o"CurrentDocument"第一章方案背景与意义1\o"CurrentDocument"1.1方案背景1\o"CurrentDocument"1.2方案意义2\o"CurrentDocument"第二章方案原理2\o"CurrentDocument"2.1数学原理2\o"CurrentDocument"2.2朴素贝叶斯算法原理2\o"CurrentDocument"2.3改进方法3\o"CurrentDocument"第三章方案基本流程4\o"CurrentDocument"3.1文本分类的流程4\o"CurrentDocument"3.2数据清洗4\o"CurrentDocument"3.3中文切词4\o"CurrentDocument"3.4删除停用词4\o"CurrentDocument"3.5文本向量化表示5\o"CurrentDocument"3.6文本特征选择6\o"CurrentDocument"3.7特征权重计算6\o"CurrentDocument"3.8构造分类器模型7\o"CurrentDocument"3.9分类器效果测试7\o"CurrentDocument"第四章方案实现过程及结果8\o"CurrentDocument"4.1数据集选择8\o"CurrentDocument"4.2中文分词9\o"CurrentDocument"4.3数据集变量表示9\o"CurrentDocument"4.4结构化表示-向量空间模型10\o"CurrentDocument"4.5构建分类器11\o"CurrentDocument"4.6提升分类器性能12\o"CurrentDocument"第五章实验总结与收获13\o"CurrentDocument"附录14第一章方案背景与意义1.1方案背景近现代以来电子信息技术的高速发展以及国家对网络的建设使得越来越多的人可以接触到互联网,特别是近几年移动互联网的爆发更是使每年产生的数据信息量呈指数级增长。2004年,全球数据信息总量是30EB,随后,2005年则达到了50EB,2006年达到了161EB,到2015年,居然达到了惊人的7900EB,到2020年,将达到44000EB。信息的存储方法也由过去的纸质存储变为现在的电子信息存储,面对如此海量的信息,用户如何从海量数据中快速获得目标数据就显得尤为重要。企业将大量数据进行快速精确的分类更有利于获取商业利益。由此诞生了通过算法来自动进行文本分类的方法。■朝数据茵韵(莲)图L1全球数据总量1.2方案意义因特网中的数据主要包含文本、音频、图片几大类数据类型,但主要以文本信息为主,因此分类数据信息的关键就是分类文本类信息。通过使用文本分类技术可以自动分类垃圾邮件垃圾短信等文本信息,可以大大提高工作效率。文本分类是指计算机在一定的数学基础之上通过某种自动分类的算法实现对给定文本信息进行自动分类的过程,这种方法可以使人们充分的发掘文本的信息价值,利用文本中的信息。文本分类技术在企业和政府工作中有重要的意义,可以大大节约人力成本并提高准确率,它可以利用在比如新闻主题分类中:根据文章的内容来给新闻确定一个主题比如财经类、体育类、军事类等等,还可以用于情感分析比如正面和负面两种,在信息检索领域同样有着很高的地位,通过对文本的快速分类可以大大提高检索速度。其它相关的应用领域还有舆情分析、邮件过滤等。第二章方案原理2.1数学原理贝叶斯公式如下:(2.1)P(A)称为"先验概率",之所以称之为“先验”,是因为它不考虑任何B方面的影响。P(AIB)表示"后验概率",也就是在事件B发生之后对事件A概率的重新判断°P(BIA)/P(B)表示"可能性函数",可以当成调整因子,它使得预估概率更加接近真实概率。因此条件概率可以理解为:后验概率=先验概率*调整因子。如果"可能性函数">1,意味着"先验概率"被增强,事件A的发生的可能性变大;如果"可能性函数"<1,意味着"先验概率"被削弱,事件A的可能性变小;如果"可能性函数"二1,意味着B事件无助于判断事件A的可能性。2.2朴素贝叶斯算法原理现有数据集表示为D={DpD2,D3,…,Dn},即有n个待分类文本;每一个文本的属性集表示为X={X],X2,X3,…,Xm},即表示每个文本有m个单词特征;类标签Y={Y1,Y2,Y3,…,Yd},表示可以将数据集D自动分类到Yd个类别中。将X和Y视为随机变量.,对于文本向量X,对其进行分类,预测目标为找到类标签k,使得计算公式P(Y=klX)=P(XIY=k)P(Y=k)/P(X)取最大。对于一个样本,先验概率P(X)的取值不变,因此预测P(Y=kIX)的最大值等价于预测P(XIY=k)P(Y=k)的最大值。条件独立性简化了P(XIY=k)的估计为P(X|Y=k)=P(X1,X2,...,XmIY=k)=P(X1IY=k)-P(X2|Y=k)_p(XmIY=k)。估计上述等式一般采用极大似然估计。类别特征类别特征类别(2.2)特征2.3改进方法虽然朴素贝叶斯算法的确有着很好的分类优势,但是如果直接将上述公式应用于实际还是有很多的问题。贝叶斯公式分子为一个乘法公式,要计算多个特征词概率的乘积以获得文档属于某个类别的概率,P(XmIY=k)表示在类别标签为k的情况下特征词为Xm的概率,显然当训练集中至少有一个特征词没和类别标签一起出现时,那么这个概率P(XmIY=k)结果为0,从而整个分子为0,导致整个结果为0,这显然是不合理的。因为即使训练集足够大,可能也不一定能全部包含测试集中的所有特征词汇。为了降低这种情况的影响,可以将所有词的出现数初始化为1,当数据集很大时,1并不会对结果产生质的变化。这种做法就叫拉普拉斯平滑(LaplaceSmoothing),这是一种比较常用的解决平滑问题的方法,就是为了解决0概率的问题。除了零概率问题另一个问题就是下溢出,这是由于很多非常小的数相乘造成的。当我们计算一个乘积时,如果绝大部分因子都非常小,那么最后的结果也会变得很小,最终导致下溢出甚至结果错误。通常我们可以对乘积的最终结果取自然对数,从而避免浮点数舍入导致的错误和下溢出问题。与此同时,采用自然对数处理并不会有任何损失。图2.1为函数f(x)和ln(f(x))的曲线图,可以看出这两条曲线在相同区域内单调性相同,并且在相同的点取极值。第三章方案基本流程3.1文本分类的流程文本分类过程主要包括下列几个步骤:数据清洗、中文切词、去除停用词、文本向量化表示、文本特征选择、特征权重计算、构造分类模型和分类效果测试等步骤。3.2数据清洗数据清洗是文本分类任务的开端,是后面步骤进行的基础,也是提升文本分类效率的必须操作。我们一般获取原始数据的方式都是从网页上获取,或者直接通过爬虫技术获取,通常得到的数据称为原始数据。在进行文本分类时是利用文本中具有代表意义的词来进行分类的,而这些标签对于文本分类没有任何作用,反而还会增加词向量的维度。因此这些标签被称之为“非法字符”,所以在数据清洗阶段要去除这些标签。除此之外,文本中的标点符号、数字、URL链接等所带的信息量很少,对最终文本分类效果的影响很小,所以通常为了训练模型的速度常常将这类非法字符去除。3.3中文切词英文的句子各个单词之间以空格分开,可以很容易的得到特征词。但是对于中文文本,一个句子是由一系列的独立的字,而通常一个词语由几个字来组成,之间并没有空格来分隔。因此只有进行人为分词,才可以进行下一步操作。中文分词就是将文本数据划分为一个单词集合,使之可以最大程度表示这个文本的语义。汉语博大精深,有很多一词多义,不同单词在不同语句中意思不同,断句方式也不尽相同。因此对中文文本进行分词操作是非常复杂的,同时分词结果的好坏对于最终分类器和预测结果的影响是很大的。目前中文分词主要有三种方法:机械分词法,基于数学概率统计的分词方法,基于语义理解的分词方法。3.4删除停用词无论是中文还是英文,文本中都一定含有一些对分类毫无意义的词语,如语气词“吗、吧、啊”和人称代词“你、他、他们、我们”等词语,这类词称之为停用词。这类停用词对文本主题没有任何作用,去除停用词可以降低待处理单词量,减少特征向量的维度从而可以提高代码的运行速度,提高分类效率和准确率。删除停用词通常都是由人工根据在相关领域的经验构建一个停用词表,通过导入停用词表来去除停用词。停用词库的好坏影响着分类的效率。3.5文本向量化表示原始文本数据是非结构化的,为了使计算机可以识别,需将其转化为二进制形式的结构化文本。通常进行文本表示有两种模型:向量空间模型(VSM)和布尔模型。向量空间模型(VSM)起源于上世纪60年代,最先在SMART信息检索系统有相关应用。区别于布尔模型最大的特点就是每个特征项的权值为0-1之间的一个值。VSM的核心思想是用待分类文本中的一些特殊词用作索引并为每个索引赋值表示它的权重,通过对比索引的大小就可以区分不同的文本。所有的文本数据集可以表示为D={d1,d2,d3,...,di},di表示一个文本,所有的特性项表示为一个特征集T={t1,t2,t3,...,ti},对于特征集中的每一个特征项有对应的权值,对应权值集为W={w1,w2,w3,...,wi},这样一来,对于文本数据集中的每一个文本都已可以用一个权值的向量来表示,权值可以表示每一个词对这个文档的影响程度。可以看出,向量空间模型不关注特征词在文档中的位置,而是统计各特征词出现的次数。因此向量空间模型表示的文档比布尔模型表示的更加精确。3.6文本特征选择对初始文本进行分词之后得到的就是初步的特征集,但是这个集合肯定非常大,即特征向量太大,而且并非所有的词都是有用的词,有些词语对文本分类没有任何意义。在停用词的去除阶段已经处理了一些无关紧要的词语来降低维度。特征选择就是选择那些可以很好表示文档特性的词语作为特征词,而无关的词语则剔除掉以降低特征向量的维度,这样不仅可以提升分类效率,而且可以提升分类的准确度。如何确定哪些词语是“无用”的,需要有一个评估标准,因此我们需要一个评估函数来对所有的词语进行权重计算,然后通过降序选择出比较合适的特征集。3.7特征权重计算特征权重是体现特征项重要性的一组数据,是判断区分能力的级别。特征选择通常需要一个评估标准,而在文本分类中最长使用的是用词频-逆文档频率TF-IDF(termfrequency-inversedocumentfrequency)。某一单词的重要性与它在某一文档中出现的次数成正比,与这个词在所有文档中出现的次数成反比。TF即词频,表示单词在某一文档中出现的频率。计算公式如下:其中TFd,t代表词汇t在文本d中出现的频率,nd,t代表词汇t在文本d中出现的次数,Zknd,k代表文档d中所包含的特征词的总个数。IDF即逆文档频率,用来表示某一特征词在所有待分类文本数据中的普遍程度。用总的文档数除以包含指定特征词的文档数,可以体现出某个特征词对文档的区分能力。计算公式如下:其中IDFt代表特征词t的逆文档频率,|D|代表总的文档数,1+DFt代表包含特征词t的文档数量。TF-IDF的计算公式如下:以TFIDFd,t来表示文档d中词汇t的特征权重。通过对权重进行降序排序,可以选取权重较大的特征词作为特征。3.8构造分类器模型构造分类器模型是文本分类问题的核心。通过训练集的TF-IDF空间模型训练出分类器,然后对分类器进行性能评估之后就可以进行分类了。本文主要讲解构建朴素贝叶斯分类器,朴素贝叶斯算法是基于贝叶斯定理和条件独立性假设的分类方法,根据贝叶斯公式:特征选择之后,所有的文本被表示为特征向量X(x1,x2,…,xn),分类器的作用就是根据特征向量X(x1,x2,…,xn)将对应的文本归类到它概率最大的所属的类别中。类别集合为C(c1,c2,…,cm)表示总共有m个类别。实际上就是利用贝叶斯公式计算向量X(x1,x2,…,xn)分别属于C(c1,c2,…,cm)中各个类别的概率,值记为P1,P2,…,Pm,概率值最大的那个就是文本X所属的类别。对于给定的输入x,利用贝叶斯公式求出最大的后验概率记为y。由于分母为全概率值不变,故求Pi的最大值等价于求上式分子的最大值。3.9分类器效果测试通常我们将数据集划分为两部分,一部分用于训练,而另一部分则用于测试分类效果。将利用测试文本得到的测试值与真实值进行对比计算出相应的指标。对于二元分类问题,比如垃圾短信和垃圾邮件的分类,通常使用准确率、召回率和F值来评估分类器性能。(1)准确率准确率是分类器正确判断为该类的样本数除以分类器判断属于该类的样本总数(包括正确判断的和误判的)所得的结果。计算公式如下:分类的正确文本数实际分类的文本数⑵召回率召回率是分类器正确判断为该类的样本数除以该类本来含有的所有样本总数。计算公式如下:分类的正确文本数应有文本数⑶F值通常希望准确率越高越好,同时召回率也越高越好,但实际上这两者是矛盾的。如果准确率高的话那么召回率就低,因此需要一个值来综合考虑,最常见的就是用F值来评估。F值即为准确率和召回率的调和平均值,计算公式如下:(4)混淆矩阵使用混淆矩阵来计算上述几个指标较为方便,可以结合Python的sklearn和seaborn库传入预测标签和实际标签即可画出清晰的混淆矩阵。混淆矩阵如表3.1所示。表3.1混淆矩阵真实情况正例负例预测情况正例AB负例CD第四章方案实现过程及结果4.1数据集选择本文主要以复旦大学李荣陆老师提供的语料库作为实验。该数据集的下载地址是:/download/xjhan/10749218,文件大小187MB。数据集包含训练集和测试集两个部分,都包含20个类别,分别为“艺术”、“体育”、“教育”、“法律”等20个类别的刊文,不同分类有不同的文件夹,每一个文本独立为一个txt文件。为了降低运行时间,本文选取其中的11个类别进行分类测试。经过计算,训练集包含7738篇文章,测试集包含7752篇文章,训练集和测试集基本按照1:1的比例来划分。训练集目录:./corpus/train_corpus,测试集目录:./corpus/test_corpus。实验环境选择:Windows10、Anaconda中文分词中文分词的难点就在于如何进行分词,而最近几年国内有很多学者研究了很多中文分词方法,现在比较好的分词算法都是基于条件随机场(CRF)来实现的。现在已经有了很多的开源分词工具,比如'Jieba”“SnowNLP”等。在实际分类中即使我们对分词算法不是很了解,我们可以直接使用相关库来实现,Python的第三方库Jieba(基于条件随机场)对于中文分词就有着很好的表现。本文所使用的是jieba分词工具的精确模式来分词。除了分词外,数字标点符号等对分类无用的信息也需要去除,我将这些无用符号添加到了停用词文件“stopwords.txt”中,停用词的去除既可以在分词阶段执行,也可以在构建向量空间模型时去除。对训练集和测试集都进行分词操作,分词后的结果放在文件夹./corpus/train_corpus_seg和./corpus/test_corpus_seg中。某一计算机类文本分词结果如图4.1所示,各个单词之间用空格分开。图4.2和图4.3分别为军事类和政治类文本的词云,通过词云可以直观地发现军事类文本含有“雷达”“导弹”等词汇较多,而政治类文本则含有“社会”“发展”等词汇较多,正式利用这些具有特征词汇对文本进行分类。订•件机叼火堵技木防火幡系统设汁本支防火堵系统沏相换木分析捉由防火墙系统.总年设计忠怛改订••,担过渣技木代理技术好份技盅和姑台也用防火堆毒it过就技术ft®技*身俗验江昉大垮世界普足网懦安全争得愈来愈橙入而榆惨改职肝基统K[据维护私用网帝计算机资源授役防火蜻系茨•修(JiX昉火墙技成片析琴考横俱斯火若化代分为耐X羹-美逐立网坪^过泄枝求昉火墙另一粪鹿立应出房代理技术防火瑞过迂技木陆火瑞过谴挂求KT火墙网络屋的火墙作用J-7过袖!昨由携相珪原理.到达过旋序ill器过花路由黑但头株忘包头协议花坦德地址H的地址端口耳目的皓口号标志峋息过浊踏由器债先制订过渡规扁粗告阻寤对包过请核心过潭坝JM(WiT谣接熟构知圈防火堵姑术优山简氓透明耻速畦网热杵能芯匝•成点正确建立管却过讶如州函推姓王市止削琵灯忻咬证对匪过迷蹄由器斯火墙累魏述接缩构代理技术防火堵代理技术防火堵应用尽防火墙作用向用罗概心运行防火堵主机代理IK务鄂过理I叫络用户E能代婢股钾器史际I-精定网络应用谣接两个网涪网凭一神成Hi旧行代理外梆网话内都网络之间注更连莅代理花瓶仇部网常按定代理雁答掘出服务必未拒鸵外怫网络连掖连援绊构山圈防火墙技术世.如挥甜池旧图4.1计算机类别下一个文本的分词结果130图4.2军事类文本词云图4.3政治类文本词云4.3数据集变量表示图4.1计算机类别下一个文本的分词结果130图4.2军事类文本词云图4.3政治类文本词云现在为止数据是以一个个txt文本的形式存放在各类别文件夹中,不方便程序使用。因此我们需要将所有的数据表示为变量并保存在一个文件中,这样后续就不用每次都遍历所有文件。我们采用的是Scikit-Learn库中的Bunch数据结构来表示这两个数据集。Bunch相当于Python中的字典,可以将数据一条一条的显示出来。如下图直观表示:ra^qet_name■filenamesl=ibelrDFlteitsarLtrain_ccn:u^_5eai'art/21txt努力刘作更丢敢无羹=伟大时代train-COfpuSL&eo/art/22txtsrt■关干垮昆至识钓忌者iramcoreusseo/arr/N3.1x1art■■-无非是指西方空浒责达匡素,■-compuse<traincorpu=_sea/Eornput曰邛1l.txtccmnuter■■■■tHiJLCJ■■-t^ain_i:orDU=^SE口/匚lieputcomputer……皿芸祥建设含三的……irain_ccirDUSw日wfonnmuccrncliter-取决于•舌ecanomict^ir\_corpLJ^ea.-ecanonMc/SL.ts<ieconon'-iicVain_coraus_seo/*&c0noriiic;62.lj<iecofiomictrain_corDU5_seQ^e€oriomic/63.t;<ceconomicsportstrain_ccrpu5__E,E-q.|rsport^'1-D1txtsqnrtstra1D2t>rtefartstrdin_corpu5L_s&g.i!5ports*,lC3txtsports图4.4Bunch数据结构实际上就是第一列为类别,也就是分类类别集合,设为target_name,第二列为文本文件名,设为filenames,第三列为文本标签,即对应每一个文本有一个类别标签,第四列为文本内容记为contents,即分词后的文本,实际上就是一行词袋。Bunch对象里包含四个成员,为4个list类型。完成后存储路径为:./corpus/test_word_bag/test_set.dat。4.4结构化表示-向量空间模型上一节中实现了数据集的变量表示,这一节需要建立向量空间模型。就是将所有的句子表示在一个空间坐标中,坐标轴就是上一节得到的词袋。为了节省空间,提升效率,首先要将文本中的垃圾词汇去掉,就是语气词标点符号和数字等,这些对分类没有意义。将这些词都添加在停用词表中,通过引用停用词表去除。接下来的代码就是构建词典和权重矩阵tdm,权重矩阵是一个二维矩阵,tdm[i][j]表示第j个词在第i个类别中的TF-IDF值。下面代码会生成词向量空间并存储在"./corpus/train_word_bag/tfidfspace.dat"中。TfidfVectorizer中的几个参数这里说明一下:stop_words传入停用词去除噪音;sublinear_tf指在计算tf值时采用亚线性策略,比如以前tf是词频,现在用1+log(tf)来充当词频;smooth_idf是指在计算idf时会出现分母为0的情况,smooth_idf会采用平滑策略来避免,默认开启;有些单词的文档频率太高,比如每篇文章都会有这个词,那么这个词对于分类也就没有了意义,因此我们设置一个阈值来确定哪些词对分类无用,实际就是临时停用词,我们用max_df来表示这个阈值。除此之外还可以设置min_df表示去除那些出现频率极低的词语,那些词同样对分类没有意义。如图4.5所示,这一类文本中含有大量的“文献号”“原文出处”“原期刊号”等频率超高的词汇,这些词并不会出现在停用词表中,但是他们对分类毫无意义,因此可以设置max_idf=0.8将这些词去除。而“因此”“但是”这种表转折、语气、人称等常用词则会通常在停用词列表中去除。就前法复卬期.号摄•械枝明5狠双献方螫黑普重壶阈地苍原刊炸买淄■但是纹*金洌如第三就前法复卬期.号摄•械枝明5狠双献方螫黑普重壶阈地苍原刊炸买淄■但是纹*金洌如第三-ym碓搭部滤原顼号卷/罄号二*总!;图4.5一类文本包含大量无用的词构建分类器阶段我使用的朴素贝叶斯分类器,关于朴素贝叶斯算法的原理前文都有论述。MultinomialNB会根据训练集的权重矩阵和标签进行训练,然后根据测试集的权重矩阵进行预测输出预测标签。将预测后的结果存储在result.csv文件中,并用1表示分类正确,0表示分类错误,部分结果如图4.6所示。预测出后将预测标签与实际标签进行对比即可算出精确度、召回率、F值等评估分类器性能的参数。可见第一次分类的效果并不理想,F值仅为0.910,因此需要对相关参数进行修改,分词的结果和TF-IDF的阈值等都对分类效果有很大的影响。文件名实际类别预测类别是否淮酢./corcus/iestcorpussea/C19-Coriwuter/C19-C0mputerOO31.txtC19-ComputerC19-ComDUter1,/corpus/iesLcorcus_seg/Cl9-Ccnwuter/Cl9-Coniauter0032.txtC19-ConiouterClS-Cornuuier1,/corpus/iesccorpus_seg/Cl9-Computer/Cl9-Computer0034.LxtC19-ComputerC19-Computer1,/corpus/lesLcorpU5_seg/Cl9-Ccmputer/Cl9-Comput&rCODfi.LxtC19-ComputerC19-Computer1,/corpus/lesLcorpU5_seg/Cl9-Computer/Cl9-Comput&rC038.LxtC19-ComputerC19-Computer1,/corpus/lesLcorpU5_seg/Cl9-Computer/C19-Comput&rOOlO.txtC19-ComputerC19-Computer1,/corpu5/test_corpus_s&g/Cl9-Computer/C19-Computer00L2.ixtCIS-ComputerCIS-Computer1,/corpu5/test_corpus_s&g/Cl9-Computer/Cl9-Computer00L4.D(tC19-ComputerC19-Computer1,/corpus/test_corpus_seg/Cl9Ccmputer/Cl9ComputerOOLB.ixtCl9ComputerCISComputer1,/corpus/test_corpU5_seg/Cl9Ccmputer/Cl9ComputerOOlS.ixtCl9ComputerCISComputer1,/corpu5/tes1_corpU3_seg/Cl9Ccmputer/Cl9ComputerOOSO.ixtCl9ComputerCl9Computer1,/corpus^test_corpus_seg/Cl9Ccmputer/Cl9Computer0022.txtCl9ComputerCISComputer1,/corpus/test_corpus_seg/Cl9-Ccmputer/Cl9Computer0024.ixtCl9ComputerCISComputer1Jcorpus^te5t_corpus_s&g/C19-Computer/Cl9-Comput&r0026.txtC19-ComputerCIS-Computer1,/corpus/test_corpus_s&g/Cl9-Computer/Cl9-Comput&r0028.ixtC19-ComputerC19-Computer1,/corpUE/teEt_corpU£_s&g/Cl9-Computer/Cl9-Comput&rOOSO.ixtC19-ComputerC19-Computer1,/corpuE/test_corpu5_seg/Cl9-Computer/Cl9-Computer0032.zxtC19-ComputerC19-Computer1,/corpus/test_corpus_s?g/Cl9-Computer/Cl。-ComputerOOSd.zxtC19-ComputerC19-Computer17corpus/test_corpus_s?g/Cl9-Computer/Cl9-Comput&r0036.zxtC19-ComputerC19-Computer1,/corpuE/tesLcQirius_seg/Cl9-Comput?r/Cl9-Compuit7?r003B.txtC19-ComputerC19-Computer1图4.6部分分类结果截图4.6提升分类器性能第一次预测结果的F1值为0.91,准确率为0.921,召回率为0.917,我们可以尝试通过调试参数进一步提升分类效果。影响准确率的参数主要有分类器部分的alpha值以及tf-idf模型构建阶段的max_df或min_df,分词效果的好坏对结果的影响也很大,因此如果对结果要求很高的话尽量选择自己构建分词库。通常情况下alpha值设置越小,迭代次数越多,精确率越高,通过实验比较,当alpha值设为0.0005,max_df设为0.8时,分类器表现效果最好,准确率达到0.932,召回率达到0.931,F值为0.930,表现效果相比最初要好一些。在TfidfVectorizer中配置的n-gram也会提高分类器效果,ngram-range表示词组切分的长度范围,通过设置ngram-range=(1,2)后使得分类效果进一步提升,设置n-gram会使模型参数变得很大,分类速度也会降低,但是会提升一定的准确率。准确率为0.943,召回率为0.942,F1值为0.939。显然,此时分类器的表现效果良好,分类结果报告如表4.1所示。除此之外,如果还需要提升分类效果可以自定义分词库。由结果可以观察出当某一类文本数量较少时,这一类的召回率就偏低,从而导致F1值偏低。表4.1朴素贝叶斯算法分类报告1.precisionrecallf1-scoresupport2.3.C19-Computer0.9920.9720.98213574.C23-Mine1.0000.2650.419345.C29-Transport0.9230.6100.735596.C31-Enviornment0.9850.9470.96612187.C32-Agriculture0.9130.9580.93510228.C34-Economy0.9020.9490.92516019.C35-Law0.8390.5000.6275210.C36-Medical0.9440.3210.4795311.C37-Military0.8600.5660.6837612.C38-Politics0.9130.9580.935102613.C39-Sports0.9580.9700.964125414.15.avg/total0.9430.9420.9397752第五章实验总结与收获这次科技制作主要研究了利用朴素贝叶斯算法对中文进行分类,并且对于英文文本分类和中文文本分类的区别进行了相关介绍。首先对朴素贝叶斯公式进行了推导,阐述了利用朴素贝叶斯算法进行文本分类的数学原理。接着第三章详细研究了文本分类的各个关键技术过程,包括分词方法和向量空间模型以及特征权重的计算方法等。在深入研究了朴素贝叶斯算法原理和相关的文本分类技术后,用Python语言对复旦大学数据集进行了实验操作,并且对实验进行改进。最终对实验结果进行分析对比,表明在使用朴素贝叶斯算法进行文本分类时,优点是不仅算法简单,计算复杂度小,而且可以达到很好的分类效果,缺点是文本必须要满足条件独立性假设,这在实际中是不成立的。本次完成的文本分类系统可以对中文文本进行分类,可以应用在很多有需求的领域,因此本次的实验具有很好的实际意义。附录文本实验部分所用主要代码及结果如下:导入训练集和测试集importsysimportosdirl="./corpus/train_corpus”dir2="./corpus/test_corpus”defgetNum(dir):dirs=os.listdir(dir)num=0foritemindirs:num=num+len(os.listdir(dir+'/'+item))returnnumprint("训练集文档数:",getNum(dir1))print("测试集文档数:”,getNum(dir2))13训练集文档数:773814测试集文档数:7752中文分词阶段'''''去掉一些停用词、数字、特殊符号'''defrm_tokens(words,stopword_path):words_list=list(words)stwlist=readfile(stopword_path).decode().splitlines()foriinrange(words_list.__len__())[::-1]:word=words_list[i]iflen(word)==1:#去除单个字符words_list.pop(i)elifword=="”:#去除空字符words_list.pop(i)elifwordinstwlist:#去除停用词words_list.pop(i)returnwords_listdefcorpus_segment(corpus_path,seg_path,stopword_path):importrecatelist=os.listdir(corpus_path)print("分词中...”)formydirincatelist:class_path=corpus_path+mydir+"/"seg_dir=seg_path+mydir+"/"ifnotos.path.exists(seg_dir):

os.makedirs(seg_dir)file_list=os.listdir(class_path)forfile_nameinfile_list:file_path=class_path+file_name#txt文件的路径content=readfile(file_path)r1='[a-zA-Z0-9’!"#$%&\'()*+,-./:;;<=>?()@,=。?★、...【】《》?"”‘’![\\]人_、{1}〜]+'content=re.sub(r1,'',content.decode())content=content.replace('\r\n',"").strip()#删除换行content_seg=jieba.cut(content)content_seg=rm_tokens(content_seg,stopword_path)savefile(seg_dir+file_name,”".join(content_seg).encode('utf-8'))print("分词结束”)3.构建Bunch对象结构importpicklefromsklearn.datasets.baseimportBunchdefcorpus2Bunch(wordbag_path,seg_path):catelist=os.listdir(seg_path)print("构建文本对象开始...”)bunch=Bunch(target_name=[],label=[],filenames=[],contents=[])bunch.target_name.extend(catelist)formydirincatelist:class_path=seg_path+mydir+"/"file_list=os.listdir(class_path)forfile__nameinfile_list:fullname=class_path+file_namebunch.label.append(mydir)bunch.filenames.append(fullname)bunch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论