java朴素贝叶斯词频_利用朴素贝叶斯算法进行文档分类

本文利用 scikit-learn 里的朴素贝叶斯算法对文档进行分类,以便更深入地理解贝叶斯算法。本文的侧重点不是自然语言处理,所以语料库直接使用英文,以避免介绍中文分词技术。为了读者更好的理解原理,本文介绍了 TF-IDF ,这是一个表达词语权重信息的模型。

在 scikit-learn 里,朴素贝叶斯算法在 sklearn.naive_bayes 包里实现,包含了本章介绍的几种典型的概率分布算法。其中 GaussianNB 实现了高斯分布的朴素贝叶斯算法,MultinomialNB 实现了多项式分布的朴素贝叶斯算法,BernoulliNB 实现了伯努利分布的朴素贝叶斯算法。本文我们用 MultinomialNB 来实现文档自动分类。如果你不熟悉朴素贝叶斯算法,可参阅笔者的另外一篇博客零基础学习朴素贝叶斯算法。

1 获取数据集

本节使用的数据集来自 mlcomp.org 上的 20news-18828,免费注册后即可下载。下载完数据集后,可以解压解压到 ~/code/datasets/mlcomp/ 目录下,解压后会在 ~/code/datasets/mlcomp 下生成一个名为 379 的目录,其目录下包含三个子目录和一个名为 metadata 的介绍文件:

$ cd ~/code/datasets/mlcomp

$ ls 379

metadata raw test train

我们将使用 train 子目录下的文档进行模型训练,然后使用 test 子目录下的文档进行模型测试。train 子目录下包含 20 个子目录,每个子目录代表一种文档的类型,子目录下的所有文档都是属于目录名称所标识的文档类型。读者朋友可以随意浏览数据集,以便对数据集有一个感性的认识。比如 datasets/mlcomp/379/train/rec.autos/6652-103421 ,这是一个纯文本文件,可以使用任何文本编辑器打开。这是一个讨论汽车主题的帖子:

Hahahahahaha. gasp pant Hm, I'm not sure whether the above

was just a silly remark or a serious remark. But in case there are

some misconceptions, I think Henry Robertson hasn't updated his data

file on Korea since...mid 1970s. Owning a car in Korea is no longer

a luxury. Most middle class people in Korea can afford a car and do

have at least one car. The problem in Korea, especially in Seoul, is

that there are just so many privately-owned cars, as well as taxis and

buses, the rush-hour has become a 24 hour phenomenon and that there is

no place to park. Last time I heard, back in January, the Kim Administration

wanted to legislate a law requireing a potential car owner to provide

his or her own parking area, just like they do in Japan.

Also, Henry would be glad to know that Hyundai isn't the only

car manufacturer in Korea. Daewoo has always manufactured cars and

I believe Kia is back in business as well. Imported cars, such as

Mercury Sable are becoming quite popular as well, though they are still

quite expensive.

Finally, please ignore Henry's posting about Korean politics

and bureaucracy. He's quite uninformed.

2 文档的数学表达

怎么样把一个文档表达为计算机可以理解并处理的信息?这是自然语言处理里的一个重要课题,完整的内容可以写成鸿篇巨著。本节简单介绍 TF-IDF 的原理,以便读者更好地理解本文介绍的实例。

TF-IDF 是一种统计方法,用以评估一个词语对于一份文档的重要程度。TF 表示词频 (Term Frequency),对一份文档而言,词频为特定词语在这篇文档里出现的次数除以文档的词语总数。比如一篇文档总共有 1000 个词,其中 “朴素贝叶斯” 出现了 5 次,“的” 出现了 25 次,“应用” 出现了 12 次,那么它们的词频分别是 0.005, 0.025, 0.012。

IDF 表示一个词的逆向文档频率指数 (Inverse Document Frequency) ,可以由总文档数目除以包含该词语的文档的数目,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值