转载请保留作者信息:
作者:88250
Blog:http:/blog.csdn.net/DL88250
MSN & E-mail & QQ:DL88250@gmail.com
作者:zy
Blog:http:/blog.csdn.net/zyofprogrammer
作者:Sindy
E-Mail:sindybanana@gmail.com
上次说到了效率的问题,现在已经解决了,还修复了不少的Bugs :-) 不过,查阅了一些文献后,发现了一个新的
理论问题。
理论问题
朴素贝叶斯文本分类模型分为两种:
都是使用下式计算进行分类:
cNB=arg Max( P(cj) * ∏1C P(xi|cj) )
其中,P(cj)为类别j的先验概率,P(xi|cj)为特征量 xi在类别cj的类条件概率
上次的分类模型属于文档型的,正确率约为50%左右,理论上朴素贝叶斯分类的正确率可以达到80%以上。文档型的正确率很低,主要原因是训练库的以分文本质量低下。目前我们已经在着手自己收集训练数据了,提高训练库的质量。
先验概率计算
先验概率计算方式有两种:
- 文档型
不考虑词频在各分类下的出现次数,仅考虑各分类下文档的数目。如下式计算:
P(cj)=N(C=cj)/N
其中,N(C=cj)表示类别cj中的训练文本数量; N表示训练文本集总数量。
- 词频型
考虑单词在各分类文档中出现的频次,如下式计算:
P(cj)=V∑k=1TF(X=xk, C=cj)/W∑m=1V∑ k=1TF(X=xk, C=cm)
其中,V表示特征词表中总单词(属性)数,TF(X=xi, C=cj) 表示属性xi在类cj中出现次数之和,W表示总类别数目。
注意:类条件概率的计算方式必须与先验概率的计算方式匹配,如果先验概率是用文档型 计算的,那么类条件概率也必须使用文档型计算方式,反之亦然。
类条件概率
类条件概率的计算有两种方式:
- 文档型
不考虑单词在文档中的出现频次,仅考虑单词在文档中是否出现。 0表示未出现,1表示出现。 如下式计算:
P(xj|cj)=( N(X=xi, C=cj )+1 ) / ( N(C=cj)+V )
其中,N(X=xi, C=cj)表示类别cj中包含属性x i的训练文本数量;N(C=cj)表示类别cj中的训练文本数量;V表示类别的总数。
- 词频型
考虑单词在文档中出现的频次,如下式计算:
P(xj|cj)=( TF(X=xi, C=cj)+1) / ( V+V∑k=1TF(X=xk, C=cj) )
其中,V表示特征词表中总单词(属性)数,TF(X=xi, C=cj) 表示属性xi在类cj中出现次数之和。
注意:
- 类条件概率的计算方式必须与先验概率的计算方式匹配,如果先验概率是用文档型 计算的,那么类条件概率也必须使用文档型计算方式,反之亦然
- 为避免类条件概率结果为0,采用了拉普拉斯概率估计
关于训练库的预处理
为了提高分类的效率和准确率,必须对训练库进行预处理。主要预处理步骤如下:
- 读取某一分类下的所有训练文本
- 对这些文本进行分词处理
- 通过词性、词长过滤无用词
- 将剩下的词作为这一分类的特征结果并保存成文本
目前实现的训练库预处理器主要是针对词频分类模型的。
当前技术上的问题
现在词频型的分类也做好了,不过有个技术上的问题还在解决,就是Java的中文分词组件。原来用的是极易中文分词组件,虽然分词效果还不错,但是没有词性标注。zy在研究中科院那个
ICTCLAS分词组件,
ICTCLAS3.0的试用申请发给作者3天了,没回信- -!。1.0版本的在搞JNI调用,也很麻烦。。。。
下一篇文章将对我们的朴素贝叶斯分类器进行评估,请大家耐心等待 :-)
分享到:
相关推荐
朴素贝叶斯算法文本分类JAVA实现
人工智能_项目实践_朴素贝叶斯分类器_朴素贝叶斯文本分类器 **数据:**搜狗文本分类语料库 **分类器:**朴素贝叶斯分类器 NBC(Naive Bayesian Classifier) **编程语言:**Python+jieba分词库+nltk+sklearn
基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯...
基于传统机器学习(朴素贝叶斯 逻辑斯蒂回归 lightGBM)实现中文文本分类python源码+文本数据集+项目说明.zip 【项目介绍】 中文文本分类 传统机器学习 目录及文件说明 bert_pretrain存放bert预训练的参数及模型 ...
本程序实现了基于朴素贝叶斯方法的文本分类,附有源代码、实验报告、可执行程序以及语料库(包括训练集和测试集)
用python实现的朴素贝叶斯,部分分类正确率达到95%以上,对于部分主题敏感度不高。
这是基于朴素贝叶斯的文本分类代码,内涵老师给的数据集,最终输出精确度,F1,召回率及混淆矩阵,只需修改文本路径即可使用。
朴素贝叶斯python版本,内容很详细,直接可用,可以从代码更容易理解朴素贝叶斯背后的原理。
人工智能大作业基于TF-IDF+手写朴素贝叶斯实现文本分类python源码+实验报告.zip 人工智能大作业基于TF-IDF+手写朴素贝叶斯实现文本分类python源码+实验报告.zip 人工智能大作业基于TF-IDF+手写朴素贝叶斯实现文本...
基于权重的朴素贝叶斯分类器设计与实现 论文
朴素贝叶斯文本分类器 将微博信息分类为正向情感和负向情感 类标签为表情符号 工程中包含源数据 数据预处理程序 具体使用方法参见readme
实现朴素贝叶斯分类器算法基本功能,代码有注释,还包括一个垃圾邮件过滤的实例。另外我这次用的是python2.7版,如果用python3的可能需要根据提示修改几个语法(sorted函数的参数)。
基于朴素贝叶斯分类器的文本分类程序 python
朴素贝叶斯模型是文本分类模型中的一种简单但性能优越的的分类模型。为了简化计算过程,假定各待分类文本特征变量是相互独立的,即“朴素贝叶斯模型的假设”。相互独立表明了所有特征变量之间的表述是没有关联的。
用matlab实现的朴素贝叶斯分类器,比较简单,有助于理解朴素贝叶斯。代码直接可用。
该论文中详细介绍了基于朴素贝叶斯的垃圾邮件分类过程,以及五折交叉验证的评价指标,并包含完整的代码,python格式,是一个学习朴素贝叶斯方法不错的实例。
用朴素被一丝丝方法实现对文本进行分类的算法。对训练集进行训练得到特征向量,测试集根据特征向量,判断属于哪一个类的概率最大,就属于哪一个类。
朴素贝叶斯文本分类的Python实现代码