Python 朴素贝叶斯 垃圾短信分类

0.前言

没写完.有时间会更新

这是接着我的第一篇博客,搭建好Hadoop伪分布式后,完成的整个毕设.毕设的主要内容是完成对100W短信进行垃圾短信分类.其中80W是含有标签0/1的数据,还有20W是无标签数据.最后的效果评判主要是进行交叉验证.

1.总体思路

首先是用到的实验环境和相关技术

1.1实验环境

Python 3.6.5 + Anaconda3 + Pycharm + Hadoop + spark

伪分布式的Hadoop搭建参见我的博客

伪分布式Hadoop的搭建

其实,不用Hadoop + spark也能跑,我只是觉得毕设工作量太少,所以强行加的.

1,2思路

当初也很小白,简单的思路就是分离数据和标签文本分词套用已有的朴素贝叶斯库---->得出结果.

后来和实验室的老师交流的过程中才觉得缺了很多步骤.

Python 朴素贝叶斯 垃圾短信分类_第1张图片

总体就如图所示了.

2.关键技术

2.1 预处理

预处理主要是要完成四个任务:文本分离;文本分词;去停用词;去单字。

首先是文本分离,由于数据的形式是每一行代表一条数据,一共三列。第一列代表代表序号、第二列代表标签、第三列代表短信内容。进行文本分离时,我们的任务是将标签和短信内容进行分离。最后得到两个文件:标签文件内容文件。可以使用Pandas中的DataFrame读入,然后重新写入。

然后是文本分词,主要是使用jieba分词库,这里可以直接用官方的分词库,也可以自己去找。我自己是用的官方的分词库。

接下来的工作就是读取内容文件文件,并使用jieba分词库进行分词分词。得到分词结果,你会发现有很多问题,比如有些词很奇怪,有些词无意义,那么你就自然跳到了要做去停用词

其实去停用词一共分两步:

第一步:在分词前对wen'文本内的一些无用的词直接剔除,如x

第二步:在分词后,去掉一些人称谓词、助词、语气词等;还要去除一些特殊符号。

最后,一般单字表示的意义是不足够用来进行最后的预测的,所以我们还要把长度为1的词,去除。

2.2算法

使用的算法是比较简单且经典的朴素贝叶斯算法,由于这个问题比较简单,所以最后结果也还不错。

你可能感兴趣的:(Anaconda,Python,朴素贝叶斯,文本分类)