朴素贝叶斯中文文本分类器的研究与实现(2)[88250、zy、Sindy原创]

转载请保留作者信息:

作者: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 :-) 不过,查阅了一些文献后,发现了一个新的 理论问题

理论问题

朴素贝叶斯文本分类模型分为两种:
  • 文档型
  • 词频型
都是使用下式计算进行分类:
  • c
NB=arg Max( P(c j) * ∏ 1 C P(x i|c j) )
其中,P(c j)为类别j的先验概率,P(x i|c j)为特征量 x i在类别c j的类条件概率 上次的分类模型属于文档型的,正确率约为50%左右,理论上朴素贝叶斯分类的正确率可以达到80%以上。文档型的正确率很低,主要原因是 训练库的以分文本质量低下。目前我们已经在着手自己收集训练数据了,提高训练库的质量。

先验概率计算

先验概率计算方式有两种:
  • 文档型 不考虑词频在各分类下的出现次数,仅考虑各分类下文档的数目。如下式计算:
    P(c
j)=N(C=c j) /N
其中,N(C=c j)表示类别c j中的训练文本数量; N表示训练文本集总数量。 词频型 考虑单词在各分类文档中出现的频次,如下式计算:
P(c j)= Vk=1TF(X=x k, C=c j) / Wm=1 Vk=1TF(X=x k, C=c m)
其中,V表示特征词表中总单词(属性)数,TF(X=x i, C=c j) 表示属性x i在类c j中出现次数之和,W表示总类别数目。

注意:类条件概率的计算方式必须与先验概率的计算方式匹配,如果先验概率是用文档型 计算的,那么类条件概率也必须使用文档型计算方式,反之亦然。


类条件概率

类条件概率的计算有两种方式:
  • 文档型 不考虑单词在文档中的出现频次,仅考虑单词在文档中是否出现。 0表示未出现,1表示出现。 如下式计算:
    P(x
j|c j)=( N(X=x i, C=c j )+1 ) / ( N(C=c j)+V )
其中,N(X=x i, C=c j)表示类别c j中包含属性x i的训练文本数量;N(C=c j)表示类别c j中的训练文本数量;V表示类别的总数。 词频型 考虑单词在文档中出现的频次,如下式计算:
P(x j|c j)=( TF(X=x i, C=c j)+1) / ( V+ Vk=1TF(X=x k, C=c j) )
其中,V表示特征词表中总单词(属性)数,TF(X=x i, C=c j) 表示属性x i在类c j中出现次数之和。

注意

  • 类条件概率的计算方式必须与先验概率的计算方式匹配,如果先验概率是用文档型 计算的,那么类条件概率也必须使用文档型计算方式,反之亦然
  • 为避免类条件概率结果为0,采用了拉普拉斯概率估计

关于训练库的预处理

为了提高分类的效率和准确率,必须对训练库进行预处理。主要预处理步骤如下:

  1. 读取某一分类下的所有训练文本
  2. 对这些文本进行分词处理
  3. 通过词性、词长过滤无用词
  4. 将剩下的词作为这一分类的特征结果并保存成文本
目前实现的训练库预处理器主要是针对 词频分类模型的。

当前技术上的问题

现在词频型的分类也做好了,不过有个 技术上的问题还在解决,就是Java的中文分词组件。原来用的是极易中文分词组件,虽然分词效果还不错,但是没有词性标注。zy在研究中科院那个 ICTCLAS分词组件, ICTCLAS3.0的试用申请发给作者3天了,没回信- -!。1.0版本的在搞JNI调用,也很麻烦。。。。

下一篇文章将对我们的朴素贝叶斯分类器进行 评估,请大家耐心等待 :-)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值