searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

基于机器学习的邮件检测

2023-03-01 06:08:44
31
0

1.摘要

针对目前垃圾邮件泛滥,严重影响了人们的日常生活,提出一种基于机器学习的垃圾邮件检测方法。首先,采用开源中文垃圾邮件数据集TREC06C,其次,对数据集进行预处理,然后,采用Word2Vec和embedding层对处理后的数据样本进行分词嵌入,最后,采用卷积神经网络搭建垃圾邮件检测模型,实验表明,本文所提模型可完成垃圾邮件的有效检测。

2.算法实现

本文研究内容采用自制数据集,源于开源数据TREC06C,且数据预处理对后期模型训练意义重大,因此,本章将介绍数据采集、数据清洗、特征处理及归一化以及基于nltk分词的样本向量化。
数据采集


为保证本文研究的法律可行性,研究采用数据集开源数据TREC06C,采集样本为utf8文件,包括两个类别,垃圾邮件样本和正常样本,其中,垃圾邮件样本为utf8文件样本,正常样本为正常的utf8文件样本。其中的数量表示每一行代表一封邮件,垃圾邮件样本数量为5000行,如图3-1所示,正常样本数量为5000行,其中,垃圾邮件样本来源于部分企业在github开源的邮件数据,正常样本来源于部分开发人员开源的正常utf8代码文件。

数据清洗


(1)过滤字符
为了保证模型训练的稳定性,在数据清洗时去除所有的非中文字符,如图3-2所示,具体采用正则匹配的方式

(2)分词与词嵌入
为了训练Word2Vec模型,需要先对训练文本进行分词。这里为了方便起见,直接对每个中文字符进行分隔,最后采用word2vec模型将文本数据转换为embedding向量。如图3-3所示。

Python的中文分词库有很多,常见的有:jieba(结巴分词)、THULAC(清华大学自然语言处理与社会人文计算实验室)、pkuseg(北京大学语言计算与机器学习研究组)、SnowNLP、pynlpir、CoreNLP、pyltp。本文采用结巴分词,可以精确模式,试图将句子最精确地切开,适合文本分析;把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
特征对齐与数据集打乱
中文垃圾邮件数据集中,各个邮件存在长度不一的问题,为使得模型可以更好的收敛,因此,采用样本对齐的方式,将训练样本进行对齐操作,处理为同一维度,即最大邮件长度的维度。同时,为保证模型的泛化性,将数据集进行打乱


模型设计
基于机器学习的垃圾邮件检测方法采用卷积神经网络,包括卷积层、池化层、全连接层、激活函数、损失函数,其中,卷积层采用conv2d,池化层采用最大池化,激活函数采用relu激活函数和softmax激活函数,损失函数采用交叉熵损失函数,如图所示。

图中,输入为经Word2Vec模型转换的embeddeing向量,首先,采用堆叠卷积的方式对数据进行特征提取,然后,卷积之后采用relu激活函数进行非线性映射,同时采用最大池化,最后,经过最大池化和droupt层输出预测结果。

为了验证本文所提算法的性能,可视化训练过程,如图4-1所示,迭代次数较小时,模型准确率提升较快,当迭代次数达140次之后,模型整体性能提升较慢,准确率在95%附近,最后,经过200次迭代训练后,本文所提模型准确率基本保持稳定,达98.7%。

0条评论
0 / 1000
嘎嘎嘎嘎
15文章数
0粉丝数
嘎嘎嘎嘎
15 文章 | 0 粉丝
原创

基于机器学习的邮件检测

2023-03-01 06:08:44
31
0

1.摘要

针对目前垃圾邮件泛滥,严重影响了人们的日常生活,提出一种基于机器学习的垃圾邮件检测方法。首先,采用开源中文垃圾邮件数据集TREC06C,其次,对数据集进行预处理,然后,采用Word2Vec和embedding层对处理后的数据样本进行分词嵌入,最后,采用卷积神经网络搭建垃圾邮件检测模型,实验表明,本文所提模型可完成垃圾邮件的有效检测。

2.算法实现

本文研究内容采用自制数据集,源于开源数据TREC06C,且数据预处理对后期模型训练意义重大,因此,本章将介绍数据采集、数据清洗、特征处理及归一化以及基于nltk分词的样本向量化。
数据采集


为保证本文研究的法律可行性,研究采用数据集开源数据TREC06C,采集样本为utf8文件,包括两个类别,垃圾邮件样本和正常样本,其中,垃圾邮件样本为utf8文件样本,正常样本为正常的utf8文件样本。其中的数量表示每一行代表一封邮件,垃圾邮件样本数量为5000行,如图3-1所示,正常样本数量为5000行,其中,垃圾邮件样本来源于部分企业在github开源的邮件数据,正常样本来源于部分开发人员开源的正常utf8代码文件。

数据清洗


(1)过滤字符
为了保证模型训练的稳定性,在数据清洗时去除所有的非中文字符,如图3-2所示,具体采用正则匹配的方式

(2)分词与词嵌入
为了训练Word2Vec模型,需要先对训练文本进行分词。这里为了方便起见,直接对每个中文字符进行分隔,最后采用word2vec模型将文本数据转换为embedding向量。如图3-3所示。

Python的中文分词库有很多,常见的有:jieba(结巴分词)、THULAC(清华大学自然语言处理与社会人文计算实验室)、pkuseg(北京大学语言计算与机器学习研究组)、SnowNLP、pynlpir、CoreNLP、pyltp。本文采用结巴分词,可以精确模式,试图将句子最精确地切开,适合文本分析;把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
特征对齐与数据集打乱
中文垃圾邮件数据集中,各个邮件存在长度不一的问题,为使得模型可以更好的收敛,因此,采用样本对齐的方式,将训练样本进行对齐操作,处理为同一维度,即最大邮件长度的维度。同时,为保证模型的泛化性,将数据集进行打乱


模型设计
基于机器学习的垃圾邮件检测方法采用卷积神经网络,包括卷积层、池化层、全连接层、激活函数、损失函数,其中,卷积层采用conv2d,池化层采用最大池化,激活函数采用relu激活函数和softmax激活函数,损失函数采用交叉熵损失函数,如图所示。

图中,输入为经Word2Vec模型转换的embeddeing向量,首先,采用堆叠卷积的方式对数据进行特征提取,然后,卷积之后采用relu激活函数进行非线性映射,同时采用最大池化,最后,经过最大池化和droupt层输出预测结果。

为了验证本文所提算法的性能,可视化训练过程,如图4-1所示,迭代次数较小时,模型准确率提升较快,当迭代次数达140次之后,模型整体性能提升较慢,准确率在95%附近,最后,经过200次迭代训练后,本文所提模型准确率基本保持稳定,达98.7%。

文章来自个人专栏
深度学习-lsm
7 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
1