首页 > 编程语言 >基于朴素贝叶斯的垃圾邮件分类算法

基于朴素贝叶斯的垃圾邮件分类算法

时间:2022-08-18 10:34:21浏览次数:86  
标签:垃圾邮件 full trec06c 000 贝叶斯 算法 文件夹 data 邮件

 本篇文章的内容都是基于以下作者“等我复活再拆塔”的博客来写的,记录自己学完之后的总结以及学习过程中遇到的困惑。

 利用朴素贝叶斯原理过滤垃圾邮件(TF-IDF算法)_等我复活再拆塔的博客-CSDN博客

数据集我也是下载的trec06c,06表示是2006年发布的,c表示是(Chinese)中文,同时还有trec06p,这个版本的数据集是英文的邮件,我当时下载的时候没看清楚,下了两次都是下的英文版本的数据集。

下载完成后解压并打开trec06c文件夹,可以看到有三个文件夹,分别是data,delay和full,下面来介绍一下这三个文件夹里的东西是什么

​编辑

 

第一个文件夹data文件夹打开后可以看到有000-215子文件夹,这里的图片我只截取了一部分,再打开000这个子文件夹就可以看到邮件了,一个子文件夹下有0-299共300封邮件。整个data文件夹下的邮件大概有216*300=64800封邮件,将近6万封。

​编辑

 ​编辑

 由于邮件太多,我只选取了000,001这两个文件夹下的邮件,共600封邮件。

trec06c下的第二个文件夹delay在此算法中并没有用到,所以此处并不介绍,略过。

下面来介绍trec06c下的第三个文件夹full,打开full文件夹可以看到一个名为index的文件,此文件也并没有具体的文件格式,但是我们双击之后可以选择用记事本打开,可以看到一下内容:

​编辑

 可以看到内容是一行一行的,我们先来看第一行内容:spam ../data/000/000,这一行的内容分为两部分,第一部分是“spam”,第二部分是一个路径“../data/000/000”。

“../data/000/000”,下面来介绍一下这个的含义,当前的index文件处于full文件夹下,而"."这个就代表当前这个文件所处的文件夹,这里是full文件夹,而“..”代表当前文件夹的父目录,当前文件夹是full,full的父目录便是trec06c文件夹,..便回到了trec06c文件夹,通过/data/000/000便可找到一封邮件,“spam”则表示这封邮件为垃圾邮件。

这个文件的用处

介绍完数据集后,下面来介绍如何对数据集进行处理,分为三部分,提取正文,中文分词去除停用词,特征提取,这一部分的内容就不写了,在作者“等我复活再拆塔”的博客中写的很清楚。利用朴素贝叶斯原理过滤垃圾邮件(TF-IDF算法)_等我复活再拆塔的博客-CSDN博客

在博客中有这样一句话 通过在CSV文件中VLOOKUP一下,可以得到这样的一个文件,即把邮件正文和标注对应了,因为是生成了两个csv文件,但是作者的两个csv文件合到了一起,当初还以为是通过代码实现的,百度了半天也没找到方法,后来才发现是excel表格的vlookup方法实现的,下面介绍怎么使用vlookup函数将两个表格合到一起。

第一步,打开index_dic.csv文件,在文件的第三列,即字母C的下面,label的右边格子处写上main_content,然后再绿色框框中填入一下内容:=vlookup(A2,main_content_dic.csv!$A$2:$B$601.2.0),然后回车一下就完成一个正文的填写

​编辑

 再往下拖拽就可完成全部正文的填充。

标签:垃圾邮件,full,trec06c,000,贝叶斯,算法,文件夹,data,邮件
From: https://www.cnblogs.com/liuyujie-zhang/p/16597830.html

相关文章

  • 栈及其相关算法应用
    栈是一种简单但重要的数据结构栈支持两种操作,压栈和出栈S.push(e)、S.pop();为方便操作,可以在此基础上再定义以下方法:S.top()     在不移除栈顶元素的情况下,返......
  • 算法总结
    继续字符串的算法题:packagecom.chenghaixiang.jianzhi2.day12;importjava.util.Deque;importjava.util.LinkedList;/***@author程海翔*@school石家庄铁......
  • 港队系列算法、数据结构
    写在前面这两个东西其实并没有什么联系,但是因为都是由@dd_d首创的,所以写在一起。Update:不想新开博客了,所以以后dd_d有什么新发明就直接在这里更新了。港队线段......
  • 【算法基础】旋转卡壳算法理解
    前言 参考1.旋转卡壳系列博客;2. 旋转卡壳(1)--求凸包(点集)直径poj2187;完......
  • js数据结构与算法-队列的实现
    和栈的实现相似,但是这里使用对象的方式,对象的key是数字的实现,类似数组。/***队列*/classQueue{#count=0;//队列最大数量#lowestCount=0;//目前......
  • 虚拟DOM与Diff算法
    参考真实DOM的渲染在讲虚拟DOM之前,先说一下真实DOM的渲染。 浏览器真实DOM渲染的过程大概分为以下几个部分:构建DOM树。通过html parser解析处理html标记,将它们构......
  • js算法基础-栈结构的封装和进制转换
    先是栈结构的封装,使用es6的方式。#items为栈结构#表示类的私有属性,外部不能直接访问和修改。push压栈pop出栈peek查看栈顶isEmpty栈是否为空size栈内元素个数......
  • 递归算法的使用
    1packageIO;2importjava.io.File;34/**5*需求:给定一个路径,通过递归算法遍历该目录下所有内容;6*并将所有文件的绝对路径输出来;7*/8publicc......
  • 目标跟踪【1】-质心跟踪算法
    基本思路:1.通过某种方式获取目标的边界框,计算边界框的质心2.在后续帧中,同样获取边界框、质心3.重点来了,先验知识认为当前物体的质心和下一帧同一目标的质心的距离......
  • 算法工程师是做什么的?
    随着大数据和人工智能领域的不断深入发展,自然语言处理、机器学习等方向成为求职的大热门,算法工程师也自然而然成为目前最炙手可热的岗位。虽然算法工程师一直被频频提及,但......