1.问题描述用高效朴素贝叶斯算法对Web新闻文本进行分类模型的设计2.算法结构我们要判别一个文本的类别,就要计算出该文本属于各类别条件概率,根据贝叶斯原理可以得出:)(p)(p)|(p)|(piiiiiidccddc(1.1)然后比较各类别条件概率大小,选择类别条件概率最大者为该文本分类,如下)}|}(max{iidcpc(1.2)而要计算出)|(piidc,先要先验概率)|(piicd,其计算方法如下:先将id展开其变成由一个由词语为单位组成的词组向量,即},...,,,{d321ni,然后得出:niiiiniiwwpc)|()|,...,,,()|(p(1.3)而)(pic则是训练样本各类别文本数量与训练样本总数之比,计算公式如下:||)()(pCcamountcii(1.4)至于)(pid它是表示每篇训练文档出现的概率,因为都一样,所以在实际计算时可以不用考虑。所以实际计算)|(pdci的公式可以估算为)()|()|(1iniiiicpcwpdcp(1.5)由式(1.5)可知)()|()...|()|()|(21iiniiicpcwpcwpcwpdcp,然而)|()...|()|(21iniicwpcwpcwp这样多个小数连续相乘最后的结果会非常小导致出现下溢问题,令计算结果无效。为解决这个问题,我们在使用式(1.5)计算)|(pdci时需要做一些数学转换来防止出现这个数值下溢问题,而这些数学处理就令等式1.5两边取对数,如下:))((ln))|((ln))|((ln1iniiiicpcwpdcp(1.6)3.特征提取本文将采用jieba分词模块来对文本进行分词及提取有代表性的关键词作为特征,jieba分词模块自带的词库中包含着每个词的词频(TF)及反文档频率(IDF),每个词的TF值,IDF值均由原作者通过大量文本训练统计出来的,所以具有一般性,使用该方法得到的关键词用人工标准来判断能反映出文本主题。当使用jieba分词模块的提取关键词功能时,它会对在对文本进行分词的同时会利用每个词的TF值及IDF值计算出每个词的权重(Weight=TF*IDF),然后根据权重大小对词进行排序,至于返回前多少歌词则由用户设定。另外,在使用提取特征词功能的时候还能去除标点符号及对文本主题无意义的停用词。根据jieba分词模块提取关键词的方法可知,它直接可以对单个文本提取关键词,利用这个特点,在对待分类文本也作关键词提取处理,只保留当中有代表性的关键词,这样既能大大减少生成词向量的时间又能提高分类准确率。4.设计算法采用朴素贝叶斯算法作为文本分类算法时,因其每个特征出现概率相互独立且每个特征重要程度相等的假设,所以选择一种高效的特征选择方法显得尤为重要。本文运用jieba中文分词模块的TF-IDF标准对训练新闻文本进行特征选择,实现一个基于朴素贝叶斯的文本分类模型。5.训练算法模型的训练是利用已转换为词向量的训练文本计算出每类文本的先验概率)|(piicd,其计算过程的伪代码如下:foreachdocument∈trainingdataset:foreachclass∈trainingdataset:ifawordappear∈document:increasethecountforthewordforeachclass∈trainingdataset:foreachword∈document:dividedthecountofeachwordbytotalcountofwordstogetthepriorprobabilityreturnthepriorprobability训练结果为四个由四类文本所包含的词在该类文本所出现的概率组成的长度为23368数组,如下:军事类:[−8.69962585−9.10509096−9.79823814…,−9.10509096−9.10509096]财经类:[−9.79823814−9.79823814−9.79823814...,−9.79823814−9.79823814]体育类:[−9.78588575−9.78588575−9.78588575...,−9.78588575−9.78588575]社会类:[−9.79695969−9.79695969−8.18752178...,−9.79695969−9.79695969]注:因为各个词出现的概率都作了取自然对数的处理,所以均为负值。6.总结表1军事类新闻财经类新闻体育类新闻社会类新闻查全率98.82%99.02%96.13%97.10%查准率99.44%99.11%98.50%96.74%调和平均值99.13%99.06%97.30%96.92%注:调和平均值=查全率×查准率×2/查全率+查准率。表2军事类新闻财经类新闻体育类新闻社会类新闻查全率97.73%98.26%95.04%95.10%查准率96.35%97.51%87.04%90.70%调和平均值97.04%97.88%90.86%92.84%先对待分类文本进行关键词提取,每篇提取前20个权重最大的词,再转换成词向量,然后与模型训练计算出来的先验概率)|d(piic一起计算出文本属于每一类文本的概率)|(piidc,然后比较大小,选择概率最大的并判别文本属于哪个类别,输出类别标签。实验测试结果如表1所示。从实验结果可以看出,对待分类文本采用TF-IDF算法提取关键字后,再运用朴素贝叶斯算法对文本进行分类,各类新闻文本都取得不错的分类效果,尤其军事类与财经类新闻的查准率调和平均值都超过了99%。分类速度约为900篇/min。如不对待分类文本进行关键词提取,直接利用模型进行分类,其测试结果如表2所示。从表2各指标来看均比表1有所下降,尤其是体育类新闻的查准率下降最为明显,约下降了11.4%,不仅如此,又因生成词向量速度大大降低,其平均分类速度也大幅下降,只有89篇/min,下降了约90%。