垃圾邮件,也称为垃圾邮件,一次性发送给大量用户,通常包含欺诈、钓鱼内容或晦涩的信息。垃圾邮件有时是由人工手动发送的,但更常见的是使用机器人发送。垃圾邮件的例子包括假广告、连锁邮件和冒充尝试。有一种风险,即特别伪装的垃圾邮件可能会出现在您的收件箱中,如果点击可能会很危险。为了保护您的设备和敏感信息,需要采取额外的预防措施。
随着技术的不断进步,垃圾邮件的检测变得越来越具有挑战性,因为其性质在不断变化。垃圾邮件与其他类型的安全威胁相当不同。它可能一开始看起来只是一条令人讨厌的消息,并不构成威胁,但它具有即时的影响。此外,垃圾邮件发送者经常采用新技术。提供电子邮件服务的组织希望尽量减少垃圾邮件,以避免对其终端客户造成任何损害。
在本文中,我们展示了使用Amazon SageMaker构建电子邮件垃圾邮件检测器有多么简单。内置的BlazingText算法提供了Word2vec和文本分类算法的优化实现。Word2vec对于各种自然语言处理(NLP)任务非常有用,例如情感分析、命名实体识别和机器翻译。文本分类对于诸如网络搜索、信息检索、排名和文档分类等应用非常重要。
解决方案概述
本文演示了如何使用SageMaker设置电子邮件垃圾邮件检测器并过滤垃圾邮件。让我们看看垃圾邮件检测器通常如何工作,如下图所示。
电子邮件通过垃圾邮件检测器发送。如果垃圾邮件检测器将其检测为垃圾邮件,则邮件被发送到垃圾邮件文件夹。否则,邮件被发送到客户的收件箱。
我们将为您介绍以下设置我们的垃圾邮件检测器模型的步骤:
- 从GitHub存储库下载示例数据集。
- 在Amazon SageMaker Studio笔记本中加载数据。
- 为模型准备数据。
- 训练、部署和测试模型。
先决条件
在进行此用例之前,请完成以下先决条件:
- 设置一个AWS账户。
- 设置一个SageMaker域。
- 创建一个Amazon Simple Storage Service(Amazon S3)存储桶。有关说明,请参见创建您的第一个S3存储桶。
下载数据集
从GitHub下载email_dataset.csv,并将文件上传到S3存储桶。
BlazingText算法期望一个包含用空格分隔的标记的单个预处理文本文件。文件中的每一行应该包含一个句子。如果您需要在多个文本文件上进行训练,请将它们连接到一个文件中,并将该文件上传到相应的通道中。
在SageMaker Studio中加载数据
要执行数据加载,请完成以下步骤:
- 从GitHub下载
spam_detector.ipynb
文件,并将文件上传到SageMaker Studio。 - 在Studio笔记本中打开
spam_detector.ipynb
笔记本。 - 如果提示选择一个内核,请选择Python 3(数据科学3.0)内核并选择选择。否则,请验证是否已自动选择了正确的内核。
- 导入所需的Python库并设置角色和S3存储桶。指定您上传email_dataset.csv的S3存储桶和前缀。
- 在笔记本中运行数据加载步骤。
- 根据类别标签检查数据集是否平衡。
我们可以看到数据集是平衡的。
准备数据
BlazingText算法期望数据格式如下:
__label__<label> "<features>"
这是一个示例:
__label__0 “This is HAM"
__label__1 "This is SPAM"
检查BlazingText算法的训练和验证数据格式。
现在在笔记本中运行数据准备步骤。
- 首先,您需要将类别列转换为整数。以下单元格将SPAM值替换为1,将HAM值替换为0。
- 下一个单元格将每个类别值添加前缀
__label__
并对消息列进行标记化。
- 下一步是将数据集拆分为训练集和验证集,并将文件上传到S3存储桶。
训练模型
要训练模型,在笔记本中完成以下步骤:
- 设置BlazingText估算器并创建一个传递容器镜像的估算器实例。
- 将学习模式超参数设置为supervised。
BlazingText具有无监督和有监督两种学习模式。我们的用例是文本分类,属于有监督学习。
- 创建训练和验证数据通道。
- 开始训练模型。
- 获取训练和验证数据集的准确性。
部署模型
在这一步中,我们将训练好的模型部署为一个端点。选择您喜欢的实例
测试模型
让我们提供三个电子邮件的示例,我们希望对其进行预测:
- 点击下面的链接,提供您的详细信息并赢得此奖励
- 最佳夏季优惠在这里
- 周五在办公室见
对电子邮件进行分词,并在调用REST API时指定要使用的有效负载。
现在,我们可以预测每封电子邮件的分类。调用文本分类器的预测方法,将经过分词的句子实例(有效负载)传递给数据参数。
清理
最后,您可以删除端点以避免任何意外费用。
还要从S3存储桶中删除数据文件。
结论
在本文中,我们介绍了使用SageMaker BlazingText算法创建电子邮件垃圾邮件检测器的步骤。使用BlazingText算法,您可以处理大型数据集。BlazingText用于文本分析和文本分类问题,并具有无监督和监督学习模式。您可以将该算法用于客户情感分析和文本分类等用例。
要了解有关BlazingText算法的更多信息,请查看BlazingText算法。