美食网站素材,wordpress动态页面,技能培训机构,电商运营必备技能概要 当今社会发展迅速#xff0c;网络邮件也愈加普及。但是随之产生的垃圾邮件问题#xff0c;也是的我们的邮件用户不堪其扰。对企业的工作以及个人用户的生活也造成了很大的影响。针对一些由于垃圾邮件导致的网络吞吐量异常和邮件系统无法正常使用的情况。建立一个机器学习…概要 当今社会发展迅速网络邮件也愈加普及。但是随之产生的垃圾邮件问题也是的我们的邮件用户不堪其扰。对企业的工作以及个人用户的生活也造成了很大的影响。针对一些由于垃圾邮件导致的网络吞吐量异常和邮件系统无法正常使用的情况。建立一个机器学习邮件过滤系统是很有必要的。本文阐述了垃圾邮件过滤系统的背景,现状和意义。接着还介绍了系统的需求分析以及数据库分析、功能模块具体设计。最后介绍了邮件过滤系统的实现以及项目测试。 机器学习邮件过滤系统使用idea开发工具 和MySQL数据库。使用改进后的TFIDF算法和朴素贝叶斯算法两种算法来进行邮件过滤。本系统主要实现的功能包括用户登录、数据预处理、模型性能评价、词典加载等功能模块。 关键词 邮件过滤TFIDF朴素贝叶斯MySQL
一、研究背景与意义
1.1课题研究的背景
在21世纪随着大家生活水平的提高计算机走入千家万户。网络化信息化已经成为了当代的重要特征。网络已经成为了我们这个时代的基础核心。网络已经逐渐成为了各行各业发展的基础。现如今我们国家也越来越重视网络市场。随着网络通讯技术的发展和完善电子邮件的用户也越来越多。随着商家也越来越重视告效应用户每天收到的垃圾邮件也是越来越多。垃圾邮件是我们用户在日常生活中接收到的不需要的、对我们没有任何帮助的邮件主要包括广告、商品推广、业务推广等。虽然目前市场上也是出现了一些垃圾邮件的过滤机制但是收效甚微。因为不仅垃圾邮件过滤算法机制在提高同时发送垃圾邮件的人也在想办法逃避检测他们通常通过修改邮件内容以及减少使用垃圾词汇的频率甚至使用其他谐音词汇来伪装成正常邮件。目前有很多比较常用的方法包括基于邮件规则的过滤方法、通过拦截黑白名单过滤方法、基于邮件智能统计学习的方法。但在这些机制对于垃圾邮件所导致的“网络吞吐量异常”和“邮件系统异常”问题是无法有效缓解的。所以开发一个服务器端的邮件过滤系统对于企业以及个人用户都是很有必要的。
1.2问题的提出及研究的意义 在网络邮件带来的一系列的便捷的情况下人们越来越青睐于邮件获取交换信息。与此同时网络广告邮件的广告效应也是越来越强。垃圾邮件对用户的困扰也与日俱增。目前用于处理垃圾邮件的方法主要有三种定制法律法规、更改收发邮件的协议以及通过过滤器过滤垃圾邮件。 然而对于现在巨量的垃圾邮件第一种方法仅仅是对人的约束可以说是收效甚微的由于可以遵守某些已定的规则或是钻了法律的空子一些人可以发送很多的广告邮件法律法规反而是某些人发送垃圾邮件的保护伞。而协议的改进是通过对收发邮件的方式做出改变从而减少垃圾邮件的发送例如对发送者进行检验一定时间内可以发送多少邮件超过规定数目就会追加收费或是验证邮件是否来自合法区域以及发送者和接收者协商通过核对某种密码进行邮件的收发等等。但是这些协议却经常因为需要对当前协议进行变更或升级协议的部署会经常受到限制从而很难在电子邮件用户中进行推广。所以目前我们需要研究的方向就是使用过滤器对大量的邮件进行过滤从而区分出那些是正常邮件哪些是垃圾邮件。 为了更加符合大众免受垃圾邮件困扰的需求。并且经过网上数据资料及调查结果的参考。垃圾邮件过滤类市场仍未饱和。但是用户对邮件过滤的即时性和操作方便性尤为看中。故编写一个机器学习邮件过滤系统是很有帮助的。
二、开发工具及相关技术概述
2.1开发工具介绍 本文开发的垃圾邮件过滤系统使用的开发工具主要是IntelliJ IDEA数据库使用MySQL界面采用Java Swing开发数据集使用trec06c。 IntelliJ IDEA是被认为当前Java开发效率最好的一款IDE工具它整合了开发过程中实用的很多功能[9]并且界面整洁、美观。使用它的一个重要原因是对于Java语言规范适配这对项目环境以及项目配置的搭建有着很大的帮助。其次是代码生成较好相比于其他工具IntelliJ IDEA功能更加强大并且在编写代码的过程中不易出错。而且还有很好的测试功能它会自动生成测试类并对应会生成测试方法。这对本系统的开发起了很的帮助。 MySQL是一个关系型数据库使用的是SQL语言进行增删改查的操作目前属于Oracle旗下的产品。它是目前最受欢迎的关系型数据库之一。它支持各种开发语言包括本系统所使用的Java语言这也是选择使用MySQL数据库的重要原因之一。
2.2相关知识概述
1.朴素贝叶斯 朴素贝叶斯分类是贝叶斯分类器的一种贝叶斯分类算法是统计学的一种分类方法利用概率统计知识进行分类其分类原理就是利用贝叶斯公式根据某对象的先验概率计算出其后验概率即该对象属于某一类的概率然后选择具有最大后验概率的类作为该对象所属的类[10]。总的来说当样本特征个数较多或者特征之间相关性较大时朴素贝叶斯分类效率比不上决策树模型当各特征相关性较小时朴素贝叶斯分类性能最为良好。另外朴素贝 叶斯的计算过程类条件概率等计算彼此是独立的因此特别适于分布式计算。 2.TFIDF是一种用于资讯检索与资讯探勘的常用加权技术它是一种统计方法用以评估一字词对于文章的重要程度。字词的重要性随着它在文件中出现的次数成正比增加但同时会随着它在语料库中出现的频率而成反比下降[11]。 3.SwingSwing是一个用于开发Java应用程序用户界面的开发工具包是为Java设计的一个GUI工具包是Java基础类的一部分。Swing组件的出现是为了解决AWT组件的移植性问题同时也提供了更多企业级应用程序所需要的界面功能。应用其中包含了图形用户界面(GUI)器件如文本框按钮分隔窗格和表。Swing提供了许多比AWT更好的屏幕显示元素。并且它们用纯Java写成所以也和Java一样可以跨平台运行这一点也不想AWT。它们是JFC的一部分。它们支持可变换的面板和主题各种操作系统默认的特有主题然而不是真的使用原生平台提供的设备而是仅仅在表面上模仿他们[12]。这意味着可以在任何的平台上使用Java支持的任意面板。轻量级的组件的缺点则是执行速度较慢优点是可以在所有平台是采用统一的行为[13]。
2.3机器学习简介
人类一直试图让机器具有智能也就是人工智能(Artificial Intelligence)。二十世纪五十年代到七十年代初人工智能研究处于“推理期”那时人们以为只要赋予机器逻辑推理能力机器就具有智能当时的AI程序能够证明一些著名的数学定理但由于机器缺乏知识远不能实现真正的智能。因此七十年代人工智能发展进入“知识期”即将人类的知识总结出来教给机器使机器获得智能。在这一时期大量的专家系统问世在很多领域取得大量成果但由于人类知识量巨大故出现“知识工程瓶颈”。 无论是“推理期”还是“知识期”机器都是按照人类设定的规则运作永远无法超越创造者其次人力成本太高。于是一些学者就想到如果机器能够自我学习问题不就迎刃而解了吗机器学习(Machine Learning)方法应运而生人工智能进入“机器学习时期”。“机器学习时期”也分三个阶段八十年代连接主义比较流行代表工作有感知机(Perceptron)和神经网络(Neural Network)。九十年代统计学期方法开始占据主流舞台代表性方法有支持向量机(Support Vector Machine)进入21世纪深度神经网络被提出连接主义卷土重来随着数据量和计算能力的不断提升以深度学习(Deep Learning)为基础的诸多AI应用逐渐成熟。整体来说人工智能是追求目标机器学习是实现手段深度学习是其中一种方法[14]。
三、系统总体设计
3.1需求分析 本系统目标是将给定的数据集分类对于给定的邮件数据集需要实现垃圾邮件过滤。根据参考国内外成熟的垃圾邮件过滤模式根据需求将系统划分为几个主要模块数据预处理模块、特征提取模块、模型获取模块、模型应用模块。 目前垃圾邮件过滤系统模型如下图3-1所示 图3-1邮件过滤系统模型 系统数据流图如下图3-2所示
图3-2邮件过滤系统数据流图
3.1.1数据预处理模块 在获取邮件样本之后会对邮件做一个预处理因为一封邮件中它里面的内容并不都是我所需要的所以需要先将邮件进行分词处理并将里面的停用词过滤掉随后对分出来的词进行词频统计。邮件过滤系统中的数据预 处理UML图如下图3-3所示
图3-3数据预处理UML图
3.2朴素贝叶斯算法 使用朴素贝叶斯来进行垃圾邮件过滤主要是因为其模型发展于古典数学理论有稳定的分类效率其次其对小规模数据表现很好能够处理多分类任务适合增量式训练尤其是数据量超出内存时可以一批一批的去训练最后它对缺失数据不敏感常用于文本分类。 P(A)称为“先验概率”(Prior probability)即在B事件发生之前我们对A事件概率的一个判断。 P(B)称为“后验概率”(Posterior probability)即在B事件发生后我们对A事件概率的重新评估。 P(B|A)/P(B)称为“可能性函数”(Likely hood)这是一个调整因子使得预估概率更接近真实概率。 所以条件概率可以理解为后验概率先验概率*调整因子。 如果“可能性函数”1意味着“先验概率”被增强事件A的发生的可能性变大 如果“可能性函数”1意味着B事件无助于判断事件A的可能性 如果“可能性函数”1意味着“先验概率”被削弱事件A的发生的可能性变小。 贝叶斯决策论(Bayesian decision theory)是概率框架下实施决策的基本方法。对分类任务来说在所有相关 概率都已知的情况下贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优标记。 朴素贝叶斯分类是贝叶斯分类中较简单的一种。其分类原理就是利用贝叶斯公式根据某特征的先验概率计算其 后验概率然后选择具有最大后验概率的类作为该特征所属的类。之所以称之为“朴素”是因为贝叶斯分类只做 最原始、最简单的假设所有的特征之间是独立统计的。 朴素贝叶斯算法流程图如图3-7所示
图3-7朴素贝叶斯算法流程图
3.3TFIDF算法 算法原理TF(Term Frequency缩写为TF)指的是词频即一个词在文中出现的次数统计出来就是词频TF。很显然当一个词在文章中出现了很多次那这个词一定很重要或者这个词可能是文章的关键词。但是如果只是单纯的提取出词频那么词频最高的肯定是‘的’这种词很显然这样的词对于分析和统计没什么帮助反而会干扰统计所以应该把这些没用的字和词去掉。去掉后对于剩下的词在多个词出现频率都很高的情况下需要对这些词进行排序对于一篇文章来说如果一个词比较冷门或者是某些术语那么这个词很有可能是该文章的关键词。 用统计学语言来表达就是在词频的基础上要对每一个词分配一个“重要性”权重。最常见的词例如“的”、“是”、“在”给予最小的权重较常见的词例如“发展”、“成绩”等给予较小的权重而对于一下不常出现的词或是术语例如“阴霾”、“数据库”等要给与较大的权重。这个权重叫做逆文档率(Inverse Document Frequency缩写为IDF)也就是说它的大小与一个词的常见程度成反比。当知道词频(TF)和逆文档率(IDF)后将这两个值相乘就得到了一个词的TF-IDF值。一个词对于一篇文章越重要那么它的TF-IDF越大。所以TF-IDF最大的词就是文章的关键词。
3.4数据库分析
垃圾邮件过滤系统的E-R图如下图3-8所示
图3-8垃圾邮件过滤系统系统E-R图
、
四、系统设计
4.1系统设计
这里描述了整个系统的整体设计。
4.1.1系统结构 邮件过滤系统的整体系统结构图如下图4-1所示
图4-1系统结构图 垃圾邮件过滤系统的流程图如下图4-2所示
图4-2流程图
邮件数据的预处理模块 系统对邮件数据集中的所有文件进行统一地邮件内容解析操作。通过这样的方式来获取邮件的具体内容。再通过进行“去掉非中文字符”、“中文分词”、“去掉停用词”等操作。这样来得到每一封邮件的所有的词汇然后系统将得到的词组信息来作为关键字来进行统计整理。最后就可以得到每一封邮件的所有的特征数据,也就是“关键词”和“词频”。
特征数据的选取模块 通过训练集得到的邮件数据的特征数据来进行计算并改进的在TFIDF算法中的“TF”、“频率差”、“IDF”、“TFIDF权值”、“权值差”进一步再通过表格来对关键字按照权值差来降序排序。然后系统通过选择指定的特征数目以及进行排序后的一些关键字将其作为特征词来进行应用和使用。同时,此模块还可以将权值差分类效果较小的词组加入到停用词词典里面去。系统也可以将之前已经移动到停用词词典内特征词来进行“删除”操作。
模型获取模块 整个系统的模型获取环节提供了两种特征词出现次数的计算方式 1.按照包含有特征词的文件的具体的数量来计算结果。 2.系统按照特征词在文件里面的出现的次数与数量来进行的计算。 利用M-估计值利用贝叶斯算法公式来进行和计算出特征词在每一个类别里面出现的条件概率。我将此概率来作为模型数据模型。首先是系统也会对具体的测试集的数据做一次预处理然后将会获取到每个词的词频数量同时利用贝叶斯算法来进行判断在测试数据集里面的每一封邮件的具体类型。再使用文本分类的标准里面的“正确率”、“精确率”、“召回率”、F值的公式计算数值进而得到了对模型分类的性能的测评
模型应用模块 在系统模型应用环节系统利用模型数据以及朴素贝叶斯算法来达到对未知类型的邮件进行类型判别的目的。如果判定是垃圾邮件就将该邮件移动到指定的文件夹里面。如果判定他不是垃圾邮件则不作任何操作。之后还可以对已经判定为垃圾邮件的邮件进行查看对其进行“删除”或者“还原”操作还原可以将邮件复原到之前的位置。在进行实际的模型应用时可以采取将模型数据转变成相对应的规则然后再将规则部署到设置在“SMTP”过滤器上。再利用它的过滤机制来进行垃圾邮件的过滤。进而实现邮件服务器端的过滤操作。
五、系统实现 5.1停用词典选择 在使用系统前需要加入停用词典停用词典是网上常用的中文停用词典。词典选择界面如图5-1所示
图5-1停用词典选择
5.2数据预处理模块
图片中展示的是在数据获取的模块过程当中被抽样的数据集中的邮件的内容和被划分后的内容还有就是文件的特征数据。数据预处理界面如下图5-2所示
图5-2数据预处理界面
5.3特征提取模块
展示的是在特征获取模块过程中通过训练集的特征数据来获取改进后的算法TFIDF算法的相关数据同时显示所选数据集以及那些被停用的关键字。特征提取过程如下图5-3所示
图5-3特征提取过程
六、 目录
目 录 摘要I AbstractII 基于机器学习的垃圾邮件过滤I Machine learning email filtering systemII 目 录III 第1章 绪论1 1.1 课题研究的背景1 1.2 问题的提出及研究的意义1 1.3 国内外研究现状分析2 1.4 论文研究的主要内容3 第2章 开发工具及相关技术概述4 2.1 开发工具介绍4 2.2 相关知识概述4 2.3 机器学习简介5 2.4 数据集简介6 2.5 本章小结6 第3章 系统总体设计7 3.1 需求分析7 3.1.1 数据预处理模块8 3.1.2 特征词提取模块10 3.1.3 模型获取模块12 3.1.4 模型应用模块13 3.2 朴素贝叶斯算法15 3.3 TFIDF算法17 3.4 数据库分析18 3.5 本章小结18 第4章 系统设计19 4.1 系统设计19 4.1.1 系统结构19 4.1.2 功能需求与程序的关系21 4.2 系统模块设计22 4.2.1 数据预处理模块22 4.2.2 特征提取模块23 4.2.3 模型获取模块24 4.2.4 模型应用模块24 4.3 数据库设计25 4.3.1 数据表设计25 4.4 本章小结30 第5章 系统实现31 5.1 停用词典选择31 5.2 数据预处理模块31 5.3 特征提取模块32 5.4 模型获取模块32 5.5 模型应用模块34 5.6 本章小结34 第6章 系统测试35 6.1 系统测试目的35 6.2 系统测试用例35 6.2.1 训练集数据获取详细说明35 6.2.2 特征数据获取详细说明36 6.2.3 模型数据获取详细说明37 6.2.4 模型性能评估详细说明38 6.2.5 模型应用评估详细说明39 6.3 本章小结41 结论42 致谢43 参考文献44 附录A46 附录B50