基于朴素贝叶斯分类器的文本分类算法的实现过程分析

有关贝叶斯公式的基础知识参考资料:

数据源网站:http://archive.ics.uci.edu/ml/index.html

基于朴素贝叶斯分类器的文本聚类算法 (上) http://www.cnblogs.com/phinecos/archive/2008/10/21/1315948.html
基于朴素贝叶斯分类器的文本聚类算法 (下)http://www.cnblogs.com/phinecos/archive/2008/10/21/1316044.html
算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification) http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html


测试集:  
7月12日电 据外电报道,在离开克里夫兰骑士,前往迈阿密热火为追逐冠军4年之后,小皇帝詹姆斯宣布回家了!詹姆斯在《体育画报》网站上以第一人称发表了一份声明,小皇帝决定带着妻儿回家直到退役。 
  “我一直都相信我会回到克里夫兰,并在那里结束自己的职业生涯,”詹姆斯说道,“只是我不知道什么时候会回去。在赛季结束后,我并没有考虑过自由选择权。但我现在已经有两个儿子,我妻子又怀上了一个女孩,我开始想,如果能带着整个家庭回到家乡生活会是怎样。我也看到了其他的球队,但我从未想过离开迈阿密会去克里夫兰以外的地方。时间过得越久,我越觉得这个想法是正确的。这个决定让我很开心。” 
在连续四年闯入NBA总决赛并拿到两座总冠军之后,詹姆斯要与韦德和波什分别了。据悉,波什也在筹划离开热火。消息源称,就在詹姆斯宣布回归骑士后,火箭开始筹划交易林书豪,来为波什4年8800万美元的合同腾出薪金空间。 


简述处理过程: 
1、构造bayes分类器(引用jar包); 


2、中文分词处理ChineseSpliter.split(): 
7月, 12日, 电, 据外电报道, 离开, 克里夫兰, 骑士, 前往, 迈阿密, 热火, 追逐, 冠军, 4年, 之后, 小皇帝, 詹姆斯, 宣布, 回家, 詹姆斯, 体育, 画报, 网站, 第一人称, 发表, 一份, 声明, 小皇帝, 决定, 带着, 妻儿, 回家, 直到, 退役, , 一直都, 相信, 我会, 回到, 克里夫兰, 并在, 那里, 结束, 自己, 职业, 生涯, 詹姆斯, 说道, 只是, 我不, 知道, 什么时候, 会, 回去, 赛季, 结束, 我并, 没有, 考虑, 过, 自由选择, 权, 但我, 现在, 已经有, 两个, 儿子, , 妻子, 怀, 上了, 一个, 女孩, , 开始, 想, 如果能, 带着, 整个, 家庭, 回到, 家乡, 生活会, 怎样, 我也, 看到了, 其他, 球队, 但我, 从未, 想过, 离开, 迈阿密, 会去, 克里夫兰, 以外, 地方, 时间, 过得, 越久, 我, 越, 觉得, 这个, 想法, 正确, 这个, 决定, 让我, 开心, 连续, 四年, 闯入, nba, 总决赛, 拿到, 两座, 总, 冠军, 之后, 詹姆斯, 要, 韦德, 波什, 分别, 据悉, 波什, 也在, 筹划, 离开, 热火, 消息, 源, 称, 就在, 詹姆斯, 宣布, 回归, 骑士, 火箭, 开始, 筹划, 交易, 林书豪, 波什, 4年, 8800万, 美元, 合同, 腾出, 薪金, 空间 


3、删除常用停用词: 
stopWordsList[] ={"的", "我","我们","要","自己","之","将","“","”",",","(",")","后","应","到","某","后","个","是","位","新","一","两","在","中","或","有","更","好",""}; 

7月, 12日, 电, 据外电报道, 离开, 克里夫兰, 骑士, 前往, 迈阿密, 热火, 追逐, 冠军, 4年, 之后, 小皇帝, 詹姆斯, 宣布, 回家, 詹姆斯, 体育, 画报, 网站, 第一人称, 发表, 一份, 声明, 小皇帝, 决定, 带着, 妻儿, 回家, 直到, 退役, 一直都, 相信, 我会, 回到, 克里夫兰, 并在, 那里, 结束, 职业, 生涯, 詹姆斯, 说道, 只是, 我不, 知道, 什么时候, 会, 回去, 赛季, 结束, 我并, 没有, 考虑, 过, 自由选择, 权, 但我, 现在, 已经有, 两个, 儿子, 妻子, 怀, 上了, 一个, 女孩, 开始, 想, 如果能, 带着, 整个, 家庭, 回到, 家乡, 生活会, 怎样, 我也, 看到了, 其他, 球队, 但我, 从未, 想过, 离开, 迈阿密, 会去, 克里夫兰, 以外, 地方, 时间, 过得, 越久, 越, 觉得, 这个, 想法, 正确, 这个, 决定, 让我, 开心, 连续, 四年, 闯入, nba, 总决赛, 拿到, 两座, 总, 冠军, 之后, 詹姆斯, 韦德, 波什, 分别, 据悉, 波什, 也在, 筹划, 离开, 热火, 消息, 源, 称, 就在, 詹姆斯, 宣布, 回归, 骑士, 火箭, 开始, 筹划, 交易, 林书豪, 波什, 4年, 8800万, 美元, 合同, 腾出, 薪金, 空间


4、步骤3执行完毕算式得到了真正的测试样本x,根据给定的文本属性向量在给定的分类中计算分类条件概率,先取第一个分类——IT 
根据公式P(x|C=”IT”)= P(x=”7月”|C=”IT”) * P(x=”12月”|C=”IT”)* P(x=”电”|C=”IT”) * P(x=”据外电报道”|C=”IT”) * ……*P(x=”空间”|C=”IT”)?得到ans(因为文本属性向量相互独立) 

 /**
    * 计算给定的文本属性向量X在给定的分类Cj中的类条件概率
    * <code>ClassConditionalProbability</code>连乘值
    * @param X 给定的文本属性向量
    * @param Cj 给定的类别
    * @return 分类条件概率连乘值,即<br>
    */
    float calcProd(String[] X, String Cj) 
    {
        float ret = 1.0F;
        // 类条件概率连乘
        for (int i = 0; i <X.length; i++)                   //步骤4
        {
            String Xi = X[i];
            //因为结果过小,因此在连乘之前放大10倍,这对最终结果并无影响,因为我们只是比较概率大小而已
            ret *=ClassConditionalProbability.calculatePxc(Xi, Cj)*zoomFactor;
        }
        // 再乘以先验概率
        ret *= PriorProbability.calculatePc(Cj);                   //步骤5
        return ret;
    }

P(x=”?”|C=”IT”)的计算=(给定分类中包含关键字/词的训练文本的数目)/(训练文本集中在给定分类下的训练文本数目+训练文本类别) 


5、根据bayes公式,P(C=”IT”)P(x|C=”IT”)= P(C=”IT”)* ans=P((x)∩(C=”IT”)) 
P(C=”?”)的计算=(训练文本集中在给定分类下的训练文本数目)/(训练文本集中所有的文本数目) 


6、重复4、5,计算出P((x)∩(C=”汽车”))、P((x)∩(C=”健康”))、P((x)∩(C=”军事”))……最后取最大值,也就是最有可能的。

—————————————————————————————————————————————————————————————————————————————

1、2、3属于准备阶段 
4、5、6包含了分类器的训练阶段以及利用已训练好的分类器的应用阶段 
P(C=”?”)的计算就是分类器的训练过程,即计算先验概率 

/**
* 先验概率计算
* P(cj)=N(C=cj)/N
* 其中,N(C=cj)表示类别cj中的训练文本数量;
* N表示训练文本集总数量。
*/

public class PriorProbability 
{
    private static TrainingDataManager tdm =new TrainingDataManager();
    /**
    * 先验概率
    * @param c 给定的分类
    * @return 给定条件下的先验概率
    */
    public static float calculatePc(String c)
    {
        float ret = 0F;
        float Nc = tdm.getTrainingFileCountOfClassification(c);     //训练文本集中在给定分类下的训练文本数目
        float N = tdm.getTrainingFileCount();                            //训练文本集中所有的文本数目
        ret = Nc / N;
        return ret;
    }
}

训练样本为:TrainningSet文件夹,其中包含了各个类别的文本集。 

In process. 
IT:4.5137176E-26 
In process. 
体育:4.5942127E-8 
In process. 
健康:8.096193E-22 
In process. 
军事:2.7799264E-25 
In process. 
招聘:1.828473E-23 
In process. 
教育:6.3704085E-12 
In process. 
文化:1.114498E-25 
In process. 
旅游:2.8563375E-24 
In process. 
汽车:2.0799206E-14 
In process. 
财经:4.2796716E-22 
此项属于[体育] 


文件下载地址:

链接: http://pan.baidu.com/s/1i3yxtlz        密码: n2yy

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值