使用亚马逊 SageMaker 构建垃圾邮件检测器

垃圾邮件,也称为垃圾邮件,一次发送给大量用户,通常包含诈骗、网络钓鱼内容或隐秘消息。垃圾邮件有时由人类手动发送,但大多数情况下是使用机器人发送的。垃圾邮件的示例包括虚假广告、连锁电子邮件和冒充尝试。存在一封伪装得特别好的垃圾邮件进入你的收件箱的风险,如果点击,可能会很危险。请务必采取额外的预防措施来保护您的设备和敏感信息。

随着技术的进步,由于垃圾邮件的性质不断变化,检测垃圾邮件成为一项艰巨的任务。垃圾邮件与其他类型的安全威胁有很大不同。起初它可能看起来像是一条烦人的消息,而不是 威胁 ,但它会立即产生影响。此外,垃圾邮件发送者经常采用新技术。提供电子邮件服务的组织希望尽可能减少垃圾邮件,以避免对最终客户造成任何损害。

在这篇文章中,我们将展示使用 Amazon S ageMaker构建垃圾邮件检测器是多么简单。内置的 BlazingText 算法 提供了 Word2vec 和文本 分类算法的优化实现。Word2vec 可用于各种自然语言处理 (NLP) 任务,例如情感分析、命名实体识别和机器翻译。文本分类对于 Web 搜索、信息检索、排名和文档分类等应用程序至关重要。

解决方案概述

这篇文章演示了如何使用 SageMaker 设置垃圾邮件检测器和筛选垃圾邮件。让我们看看垃圾邮件检测器通常是如何工作的,如下图所示。

电子邮件通过垃圾邮件检测器发送。如果垃圾邮件检测器将电子邮件检测为垃圾邮件,则会将其发送到垃圾邮件文件夹。否则,它会发送到客户的收件箱。

我们将引导您完成以下步骤来设置我们的垃圾邮件检测器模型:

  1. 从 GitHub 存储库下载示例数据集。
  2. 将数据加载到 亚马逊 Sage Maker Studio 笔记本电脑中。
  3. 为模型准备数据。
  4. 训练、部署和测试模型。

先决条件

在深入研究此用例之前,请完成以下先决条件:

  1. 设置一个 亚马逊云科技 账户
  2. 设置 SageMaker 域名
  3. 创建 亚马逊 Simple Storage Servic e (Amazon S3) 存储桶。有关说明,请参阅 创建您的第一个 S3 存储桶

下载数据集

GitHub 下载 email_dataset.csv 并将 文件 上传到 S3 存储桶

BlazingText 算法需要一个带有空格分隔标记的预处理文本文件。文件中的每一行都应包含一个句子。如果您需要对多个文本文件进行训练,请将它们连接成一个文件,然后将文件上传到相应的频道中。

在 SageMaker Studio 中加载数据

要执行数据加载,请完成以下步骤:

  1. 从 GitHub 下载 spam_detector.ipynb 文件并将该文件上传到 SageMaker St u dio。
  2. 在你的 Studio 笔记本电脑中,打开 spam_detector.ipy nb 笔记本电脑。
  3. 如果系统提示你选择内核,请选择 Python 3(数据科学 3.0)内核, 然后选择 “选择” 。如果没有,请验证是否已自动选择正确的内核。

  1. 导入所需的 Python 库并设置角色和 S3 存储桶。指定您上传 email_dataset.csv 的 S3 存储桶和前缀。

  1. 在笔记本中运行数据加载步骤。

  1. 根据类别标签检查数据集是否平衡。

我们可以看到我们的数据集是平衡的。

准备数据

BlazingText 算法期望数据采用以下格式:

__label__<label> "<features>"

下面是一个例子:

__label__0 “This is HAM"
__label__1 "This is SPAM"

检查 BlazingText 算法的 训练和验证数据格式

现在,您在笔记本中运行数据准备步骤。

  1. 首先,你需要将类别列转换为整数。以下单元格将 SPAM 值替换为 1,将 HAM 值替换为 0。

  1. 下一个单元格将前缀 __label__ 添加到每个类别值中,并对消息列进行标记化。

  1. 下一步是将数据集拆分为训练和验证数据集,并将文件上传到 S3 存储桶。

训练模型

要训练模型,请在笔记本中完成以下步骤:

  1. 设置 BlazingText 估算器并创建一个传递容器图像的估算器实例。

  1. 将学习模式超参数设置为监督。

BlazingText 既有无监督学习模式,也有监督学习模式。我们的用例是文本分类,即监督学习。

  1. 创建训练和验证数据通道。

  1. 开始训练模型。

  1. 获取训练和验证数据集的准确性。

部署模型

在此步骤中,我们将训练后的模型部署为端点。选择您的首选实例

测试模型

让我们举一个我们想要预测的三封电子邮件的示例:

  • 点击下面的链接,提供您的详细信息并赢取此奖项
  • 这里最优惠的夏季优惠
  • 星期五在办公室见。

对电子邮件进行标记化并指定调用 REST API 时要使用的负载。

现在我们可以预测每封电子邮件的电子邮件分类。调用文本分类器的预测方法,将分词化的句子实例(有效负载)传递到数据参数中。

清理

最后,您可以删除端点以避免任何意外费用。

此外, 从 S3 存储桶中删除 数据文件

结论

在这篇文章中,我们向您介绍了使用 SageMaker Blaz ingText算法创建电子邮件垃圾邮件检测器的步骤。 使用 BlazingText 算法,您可以扩展到大型数据集。BlazingText 用于文本分析和文本分类问题,具有无监督和监督学习模式。您可以将该算法用于客户情感分析和文本分类等用例。

要了解有关 BlazingText 算法的更多信息,请查看 BlazingText 算法。


作者简介

Dhiraj Thakur 是亚马逊网络服务的解决方案架构师。他与 亚马逊云科技 客户和合作伙伴合作,提供有关企业云采用、迁移和战略的指导。他对技术充满热情,喜欢在分析和人工智能/机器学习领域进行构建和试验。