垃圾邮件过滤算法原理(毕业设计-基于深度学习的垃圾邮件过滤系统的设计与实现)
目录
前言
课题背景和意义
实现技术思路
实现效果图样例
前言
📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力 。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战 。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路 。
🚀对毕设有任何疑问都可以问学长哦!
大家好,这里是海浪学长毕设专题,本次分享的课题是
🎯基于深度学习的垃圾邮件过滤
课题背景和意义
垃圾邮件一般具有批量发送的特征 。其内容包括赚钱信息 、成人广告 、商业或个人网站广告 、电子杂志 、连环信等 。垃圾邮件可以分为良性和恶性的 。良性垃圾邮件是各种宣传广告等对收件人影响不大的信息邮件 。恶性垃圾邮件是指具有破坏性的电子邮件 。
有些垃圾邮件发送组织或是非法信息传播者 ,为了大面积散布信息 ,常采用多台机器同时巨量发送的方式攻击邮件服务器 ,造成邮件服务器大量带宽损失 ,并严重干扰邮件服务器进行正常的邮件递送工作 。
随着互联网相关应用的快速发展,广告技术的进步和电子邮件的普及,越来越多的垃圾邮件充斥着我们的生活 。如何高效的区分垃圾邮件的研究也逐渐成为了热门课题 。因自然语言在结构上有着很强的前后相关性,而且对于中文邮件直接转化成向量会有过高的维度产生,影响最后分类的准确性 。基于内容和基于电子邮件源的识别技术现在是常用的两种垃圾邮件过滤方法。例如贝叶斯模型文本识别等就是基于内容的识别技术 。白名单与黑名单机制 、关键词匹配的是基于邮件来源的技术 。电子邮件的数量增加可观 、样式层出不穷,基于规则的方法不仅需要对邮件特征规则库进行不断的更新,同时还需要大量的人力。基于内容的方法当前已经取得令人可喜的成效,但随着科技的发展,现在垃圾邮件的制造者们开始大量的使用图像垃圾邮件,然后肆意的进行传播 。这种方式的垃圾邮件更加难以检测且消耗的网络宽带也更大 。
课题国内外研究现状
从上世纪开始 ,人们就参与到解决垃圾邮件的问题上来 ,比如反垃圾邮件的组织 MAPS , SPAMCORP ,ORBS ,Junckmail 等的成立 ,过去的几十年中在反垃圾邮件领域也有很多的方 法被提出 。总的来说从 3 个层面来处理这个问题:一是通过法律法规的渠道 ,二是通过改进 的协议 ,三是通过过滤的技术 。其中我们最常用的是使用过滤技术来筛除垃圾邮件,比如黑 名单过滤技术 ,概率统计分类技术[7]以及根据规则的过滤技术 。 从法律层面来看 ,目前已经有多个国家已经制定了或者正在制定有关垃圾邮件的法律文 件 。比如美国在 2003 年通过的《反垃圾邮件法》中的一些条文,如果不尊重用户发送垃圾邮 件将受到处罚 ,要求发件人必须包含色情内容 ,如邮件发出警告标签 ,禁止使用虚假标题或 无效返回地址发送垃圾邮件 ,如果违反这些规定 ,最多会被判处五年徒刑 ,罚款高达 600 美 元 。这些法律条文让滥发垃圾邮件者承担一定的法律责任 ,在一定程度上打击了发送垃圾邮 件的行为 。而我国也在 2002 年中国互联网协会颁布了《中国互联网协会反垃圾邮件规范》 , 尽管它早先开始了 ,但是缺少配套设置 ,对于惩处垃圾邮件制造者的实例少有耳闻 ,效果并 不能令人满意 。
另一方面从改进协议角度来看 ,主要是通过控制网络层协议来过滤垃圾邮件 。因为垃圾 邮件通常是批量发送的,通过监测同一个 IP 地址在一个很短的时间内简单邮件传输协议 (SMTP)的链接数量 ,如果数量特别大的话 ,这个 IP 地址很有可能是在发送垃圾邮件 。所以通 过限制单个 IP 在一段时间内简单邮件传输协议(SMTP)的链接数量来解决此问题 。 垃圾邮件过滤技术比较出名的有以下几种: 一是黑白名单过滤技术。首先基于白名单技术,它的原理比较简单 ,直接保存用户确认 过的地址 。当有人发送邮件时 ,先去地址列表里查询有无此发件人 ,如果有则正常接收 。这 种方法虽然可以很好的过滤了垃圾邮件 ,但是其缺点也很明显。当发送的正常邮件是第一次 发送给接受方 ,但是由于其在地址列表里找不到其发送人的地址 ,则直接丢弃 。之后白名单 机制也做了很多改进 ,比如采用询问机制[7]等 。后面又出现了黑名单机制 ,它与白名单原理相 同 ,当发送方的邮件地址可以在黑名单类别里找到 ,则认为该邮件是垃圾邮件 。它们都是通 过域名系统(DNS)查询由 IP 域名发送的电子邮件是否是垃圾邮件源 。如果是垃圾邮件源 , 它会将 IP 地址放在黑名单上;如果不是 ,它会将 IP 地址放在白名单上 。 二是基于内容的过滤技术 。这在垃圾邮件过滤技术中虽然耗时较长,但是一种相对有效 的技术 。该技术要求服务器使用机器学习算法来分析消息的内容 ,对其进行评级并确定它是 否是垃圾邮件 。如果是垃圾邮件 ,它将向客户端告警,它可能是一份垃圾邮件 。决策树和 boosting 方法属于基于规则的过滤方法 ,其中决策树算法使用较多 ,是根据训练集建立一颗完 整的分类树 ,树上的每个节点都是一个特征 ,最终的叶子结点表示了文本的类别 。而 Bayes 方 法 ,SVM 方法 ,KNN 方法 ,这 3 个方法都是训练完之后 ,对测试样本进行概率估算 ,如果 概率值大于设定的阈值 ,则判定为垃圾邮件 ,否则是正常邮件 。这三种方法都是包含在基于 统计的过滤技术中 。 三是关键字过滤技术。在黑白名单过滤技术之后使用 ,该技术基本上将垃圾邮件中出现 频率高的单词提取出来,作为关键字并用它们来判断新的电子邮件[8] 。 如果新的电子邮件中 检测到关键字 ,则判断其为垃圾邮件 。这项技术同时也会有较高的错误率。 四是多重图片识别技术 。该技术针对的是包含图像的垃圾邮件 ,而图像垃圾邮件发送者 通常使用 GIF 图像来避免通过添加一些文字或符号来进行关键词过滤 。但是,通过多种图像 识别技术可以识别图像中的文字 。通过该技术可以有效地对图像中的文本内容进行识别过滤 五是意图分析技术 。虽然邮件发送者经常修改 IP 地址 ,但他的目的仍然是一样的 。希望 收件人登录网站或拨打电话 ,登录网页等意图 ,这项技术主要是通过分析网页或链接等邮件 内容来确定 这封邮件的意图 ,通过这项技术来确定垃圾邮件的准确率可以达到 90%以上 。 六是 PSP 发送器特征识别技术 。一般垃圾邮件发送者会利用别人的服务器发送邮件 。因此提出了 PSP 技术 。它首先判断发送者的身份 ,然后在识别发送者之后判断行为 。现在已有 的产品是 Pick 防火墙[9] 。该方法利用发件人特征识别技术的过程 ,勾勒出垃圾邮件的特征 。 随着深度学习得不断发展 ,已经在计算机视觉上取得了显著得成果和商业价值[10-13]。同 时也有越来越多得研究人员把深度学习用于自然语言处理中 ,提取深度语言含义信息 。相比 于机器学习采用人工提出特征的方法 ,大大地减少了人员的工作量 ,而且还能学习到文本背 后的语义[14-16] 。其中主流的深度学习算法中 ,有卷积神经网络[17]和循环神经网络。前一个主 要学习局部特征 ,后一个主要处理相关序列的特征 。接下来,本文将利用深度学习模型 ,解 决垃圾邮件过滤问题 。
实现技术思路
邮件文本分类方法
文本预处理
它主要为后面的向量化和特征提取做准备 ,所以 预处理的过程,也直接影响到后面特征提取的好坏 。它主要包括去噪 、分词 、去停用词等过 程 。
非法字符的过滤
非法字符的过滤是文本分类中的一个重要的步骤 ,因为在我们收集的一些数据文本时 , 可能会有一些非结构化的文本或者网页文本 ,假设文本是从淘宝的网页收集过来的 ,其中的 数据包含的噪声如网页链接 、表情符号 、数字 、字符 、标点符号等 ,这些对于文本分类来说 都是无用信息 ,我们都需要首先过滤掉这些噪声信息 。此外 ,在中文的文本分类过程中 ,我 们还需要把文本统一编码 。
分词
它是将句子分割成为一个一个这样的词语 ,一般有中文分词和英文分词两种[19-20] 。在英文 文本中 ,空格或标点符号通常用于分词 ,而空格可以分割英语 ,这是一种自然的分隔符 。因 此,在中文分词中 ,没有像 Spaces 这样的分词 ,因此在分词过程中,中文分词比英语分词更 难 。在中文中一般使用的分词方法有基于词典法[21]、基于理解法 、基于统计法 。基于词典法 就是需要构造一定大小的词典 ,将分词文本和词典进行匹配 ,当词语为词典中所包含内容时 , 分词的效果较高 ,反之会很差;基于统计的分词方法最常用的就是 n-gram ,将文本中任意出 现的 n 个词进行统计 ,次数越高越可能是一个词;基于理解的分词方法通过模拟人脑进行分 析句子的方法 ,对句法和语义进行分析理解 ,处理句子中间出现的歧义部分 ,达到识别效果 。
去除停用词
停止词是对文本分类没有实际意义的词 ,但经常出现 ,如“它们 ,是,返回 ,因此 ”代词 , 介词等 。如果没有这些多余的词的话,分类效果会更好。我们可以通过构建一个停用词库 , 将文本数据和停用词库进行匹配比较 ,如果匹配正确 ,就应该删除这个停用词 。
替换相关词
以上的文本预处理的方法已经可以满足我们的需求 ,但是为了对文本数据集进行优化 , 比如一些英文字母和数字符号是一些无用的信息 ,并且出现的频率很低 ,这时我们就可以将 其中的数字统一进行替换为一个值 ,如 number ,这样减少了词典大小 ,加快算法计算效率的 同时提高了分类效果 。
词向量方法研究
在对数据进行完过滤 、分词、去除停用词等一系列的预处理之后 ,我们需要将数据转换 为模型能够识别的输入形式 ,将文本表示转换为数值表示[22-23]。通常用到的方法有:词袋模 型( Bag of Words,简称 BoW )和 One_hot 编码 。其中词袋模型( Bag of Words ,简称 BoW )仅 仅是建立一个词典表 ,通过统计文本在词典表中出现的频率来表示每个词的向量值,这种做 法只和词频有关 ,忽略了上下文信息和语义信息 ,是一种最简单的词向量模型 。One_hot 编码 是一种词集模型( Set of Words, 简称 SoW ) ,它和词袋模型的区别就是它计算单词是否出现 , 而不是出现的次数 。如果一次或多次 ,则计为 1 ,否则计为 0 。文本数据经过上述的预处理和 向量化表示之后 ,特征的原始维度可能很大 ,因此我们要从这原始的很多个特征中选取一部 分更有效的特征 ,这类特征可以更简洁 、更有效的对文本特征进行更好的表示 。其中有一些 我们比较常用的特征选择或者特征降维 ,特征降维一般采用 Hash Trick [24]方法 。特征选择通 常采用特征频率(TF) 、文档频率(DF) 、信息增益(IG) 、互信息(MI)和 2 x 统计 。
算法模型
Bayes 分类模型
朴素贝叶斯分类模型(Naive Bayes Classifier ,NBC)是一种基于贝叶斯原理的分类器[25] , 在大量的分类实验中表现出相当好的效果 。一般只要是以贝叶斯为基础的分类器我们都称之 为贝叶斯分类器 。我们最常见的贝叶斯分类器是朴素贝叶斯,它之所以最常见用的最广泛 , 主要是因为他是所有贝叶斯分类器中最简单且高效的 。 Bayes 定理:如果样本为类 y 的概率为 (p y) ,样本有特征的概率 x 为 (p x) ,则该样本属于 类 y 的概率公式如 2.1 所示:
Decision Tree 分类模型
在机器学习算法中 ,有一种是基于树结构对决策进行分类的 ,它就是决策树(Decision Tree) 算法[26] 。其核心思想是在数据集的所有特征中选择最优特征 ,然后选择最优候选分割值 从该 特征的选定值开始 ,然后根据最佳候选分割值将原始数据集分成两部分 ,并一直重复前面的 步骤 ,直到达到指定的要求 。图 2.3 展示了一个简单的决策树例子:
SVM 分类模型
支持向量机 ,它可以用于处理二分类的有监督问题 ,后来再加入了核方法就可以解决非线 性问题 ,同时它也可以用于多目标分类问题上。 它主要把分类过程转化为凸二次规划过程 ,通过求解基于凸二次规划的优化算法实现算 法的学习过程[29] 。基本思想可归纳如下:在样本中找到可以分离样本类别的分类超平面 ,且 该超平面使样本类别的分区间隔最大化 。支持向量机有许多核函数。由于所选内核函数的不 同 ,样本可能从低维度变为高维度,将非线性变为线性并完成非线性分类 。
实现效果图样例
我是海浪学长,创作不易,欢迎点赞 、关注 、收藏 、留言 。
毕设帮助 ,疑难解答 ,欢迎打扰!
最后
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!