基于贝叶斯的文本分类系统的数据库设计


#博客


2015-05-25

本博客中贝叶斯相关的文章:

本文以使用多项式贝叶斯模型为例。该模型在文本分类这一领域的正确率一般都比较高,而且有一个很大的有点,就是支持增量训练。

在该模型下:

先验概率P(c)= 类c下单词总数/整个训练样本的单词总数

类条件概率P(tk|c)=(类c下单词tk在该类下各个文档中出现过的次数之和+1)/(类c下单词总数+|V|) 

|V|是整个数据集中单词去重后的数量。

下面的数据来自基于naive bayes的文本分类算法这篇文章中有一个小的计算失误(在计算新样本的类别时)。

文档ID 文档内容 文档类别
1 Chinese Beijing Chinese yes
2 Chinese Chinese Shanghai yes
3 Chinese Macao yes
4 Tokyo Japan Chinese no

由上面可以得到:

单词计数表:

单词\文档类别 yes no
Chinese 5 1
Beijing 1 0
Shanghai 1 0
Macao 1 0
Japan 0 1
Tokyo 0 1

汇总表:

属性
单词总数 11
单词去重总数 6
属于yes的文档下的单词总数 8
属于no的文档下的单词总数 3
属于yes的文档数 3
属于no的文档数 1

根据上面的公式,有

P(yes) = 8/11
p(no)  = 3/11
P(Chinese | yes)=(5+1)/(8+6)=6/14=3/7  
P(Japan | yes)=P(Tokyo | yes)= (0+1)/(8+6)=1/14  
P(Chinese|no)=(1+1)/(3+6)=2/9  
P(Japan|no)=P(Tokyo| no) =(1+1)/(3+6)=2/9

所以,对于新样本Chinese Chinese Chinese Tokyo Japan,有:

P(yes | d)
=P(Chinese|yes)×P(Japan|yes)×P(Tokyo|yes)*P(c)
=(3/7)^3×1/14×1/14×8/11
=216/739508
≈0.00029208  

P(no | d)
= P(Chinese|no)×P(Japan|no)×P(Tokyo|no)*P(c)
=(2/9)3×2/9×2/9×3/11
=96/649539
≈0.00014780

故新样本属于yes这个分类。

根据上面的思路,可知数据库中需要两个表,一个单词计数表,一个汇总表,这两个表和上面的两个表格相同。

伯努利模型类似。



( 本文完 )