使用 Twitter、Amazon SageMaker 和 Hugging Face PlatoBlockchain Data Intelligence 构建基于新闻的实时警报系统。 垂直搜索。 哎。

使用 Twitter、Amazon SageMaker 和 Hugging Face 构建基于新闻的实时警报系统

今天,社交媒体是一个巨大的新闻来源。 用户依靠 Facebook 和 Twitter 等平台来消费新闻。 对于某些行业,例如保险公司、第一批受访者、执法部门和政府机构,能够快速处理有关发生的相关事件的新闻可以帮助他们在这些事件仍在发生时采取行动。

对于试图从文本数据中提取价值来寻找不涉及复杂 NLP(自然语言处理)模型训练的解决方案的组织来说,这种情况并不少见。 对于这些组织,使用预训练的 NLP 模型更为实用。 此外,如果所选模型不能满足其成功指标,组织希望能够轻松选择另一个模型并重新评估。

目前,由于以下原因,从文本数据中提取信息比以往任何时候都容易:

  • 最先进的通用 NLP 架构(如 Transformer)的兴起
  • 开发人员和数据科学家必须具备在云上快速构建、训练和部署机器学习 (ML) 模型的能力,并提供以下服务: 亚马逊SageMaker
  • 以数百种语言提供数千个预训练 NLP 模型,并支持社区在平台等平台上提供的多种框架 拥抱脸中心

在这篇文章中,我们将向您展示如何构建一个实时警报系统,该系统使用来自 Twitter 的新闻并使用来自 Hugging Face Hub 的预训练模型对推文进行分类。 您可以将此解决方案用于零样本分类,这意味着您可以对几乎任何类别的推文进行分类,并使用 SageMaker 部署模型以进行实时推理。

或者,如果您希望通过分析社交媒体互动来深入了解客户的对话并加深品牌知名度,我们建议您查看 人工智能驱动的社交媒体仪表板. 该解决方案使用 亚马逊领悟,一种完全托管的 NLP 服务,无需机器学习经验即可发现文本中有价值的见解和联系。

零镜头学习

NLP 和自然语言理解 (NLU) 领域已迅速发展,以解决涉及文本分类、问答、摘要、文本生成等的用例。 这种演变是可能的,部分原因是由于最先进的通用架构(如转换器)的兴起,以及可用于训练此类模型的更多和更好质量的文本语料库的可用性。

Transformer 架构是一个复杂的神经网络,需要领域专业知识和大量数据才能从头开始训练。 一种常见的做法是采用经过预训练的最先进的变压器,如 BERT、RoBERTa、T5、GPT-2 或 DistilBERT,并将模型微调(迁移学习)以适应特定的用例。

然而,即使在预训练的 NLP 模型上执行迁移学习也常常是一项具有挑战性的任务,需要大量标记的文本数据和专家团队来管理数据。 这种复杂性使大多数组织无法有效地使用这些模型,但零样本学习有助于 ML 从业者和组织克服这一缺点。

零样本学习是一项特定的 ML 任务,其中分类器在训练期间在一组标签上学习,然后在推理期间在分类器从未见过的另一组标签上进行评估。 在 NLP 中,您可以使用经过自然语言推理 (NLI) 任务训练的零样本序列分类器来对文本进行分类,而无需进行任何微调。 在这篇文章中,我们使用流行的 NLI BART 模型 bart-large-mnli 对推文进行分类。 这是一个大型预训练模型 (1.6 GB),可在 Hugging Face 模型中心获得。

Hugging Face 是一家管理开源平台(Hugging Face Hub)的 AI 公司,该平台拥有数千个预训练的 NLP 模型(转换器),使用 100 多种不同的语言,并支持不同的框架,如 TensorFlow 和 PyTorch。 Transforms 库可帮助开发人员和数据科学家开始处理复杂的 NLP 和 NLU 任务,例如分类、信息提取、问答、摘要、翻译和文本生成。

AWS 和拥抱脸 一直在合作简化和加速 NLP 模型的采用。 一组用于在 PyTorch 或 TensorFlow 中进行训练和推理的深度学习容器 (DLC) 以及用于 SageMaker Python SDK 的 Hugging Face 估计器和预测器现已推出。 这些功能可帮助具有各种专业知识水平的开发人员轻松开始使用 NLP。

解决方案概述

我们提供了一个有效的解决方案,可以从选定的 Twitter 帐户中实时获取推文。 为了演示我们的解决方案,我们使用了三个帐户,Amazon Web Services (@awscloud), AWS 安全 (@AWSSecurityInfo) 和亚马逊科学 (@亚马逊科学),并将其内容分类为以下类别之一:安全性、数据库、计算、存储和机器学习。 如果模型返回置信度分数大于 40% 的类别,则会发送通知。

在以下示例中,模型将来自 Amazon Web Services 的推文分类为机器学习类别,置信度得分为 97%,从而生成警报。

该解决方案依赖于 Hugging Face 预训练的 Transformer 模型(来自 Hugging Face Hub),根据推理时提供的一组标签对推文进行分类——该模型不需要训练。 以下屏幕截图显示了更多示例以及它们的分类方式。
一些相关的例子
我们鼓励您自己尝试解决方案。 只需从以下网址下载源代码 GitHub存储库 并按照 README 文件中的部署说明进行操作。

解决方案架构

该解决方案保持与 Twitter 端点的开放连接,并在新推文到达时将消息发送到队列。 消费者从队列中读取消息,调用分类端点,并根据结果通知最终用户。

以下是该解决方案的体系结构图。
解决方案的范围
解决方案工作流程由以下组件组成:

  1. 该解决方案依赖 Twitter 的 Stream API 来实时获取与配置规则匹配的推文(来自感兴趣帐户的推文)。 为此,在容器内运行的应用程序保持与 Twitter 端点的开放连接。 参考 推特API 以获得更多细节。
  2. 容器运行在 亚马逊弹性容器服务 (Amazon ECS),一种完全托管的容器编排服务,可让您轻松部署、管理和扩展容器化应用程序。 单个任务在由管理的无服务器基础架构上运行 AWS 法门.
  3. Twitter Bearer 令牌安全地存储在 AWS Systems Manager参数存储, 的能力 AWS系统经理 为配置数据和机密提供安全的分层存储。 容器映像托管在 Amazon Elastic Container注册 (Amazon ECR),一个提供高性能托管的完全托管的容器注册表。
  4. 每当有新推文到达时,容器应用程序都会将该推文放入 Amazon Simple Queue服务 (Amazon SQS) 队列。 Amazon SQS 是一项完全托管的消息队列服务,使您能够分离和扩展微服务、分布式系统和无服务器应用程序。
  5. 解决方案的逻辑在于 AWS Lambda 功能。 Lambda 是一种无服务器、事件驱动的计算服务。 该函数使用队列中的新推文并通过调用端点对它们进行分类。
  6. 端点依赖于 Hugging Face 模型并托管在 SageMaker 上。 端点运行推理并输出推文的类别。
  7. 根据分类,该函数通过以下方式生成通知 亚马逊简单通知服务 (Amazon SNS),一种完全托管的消息传递服务。 您可以订阅 SNS 主题,并且多个目的地可以接收该通知(请参阅 Amazon SNS 事件目标)。 例如,您可以将通知作为电子邮件发送到收件箱(请参阅 电子邮件通知).

使用 SageMaker 部署拥抱脸模型

您可以从 10,000 多个公开可用的模型中选择任何一个 拥抱脸模型中心 并使用 SageMaker 部署它们 拥抱面部推理 DLC.

使用时 AWS CloudFormation, 你选择一个公开的 拥抱人脸推理容器 并配置模型和任务。 该解决方案使用 脸书/巴特-大-mnli 模型和零样本分类任务,但您可以选择下面的任何模型 零样本分类 在拥抱脸模型中心。 您可以通过在 CloudFormation 模板中设置 HF_MODEL_ID 和 HF_TASK 环境变量来配置它们,如以下代码所示:

SageMakerModel:
  Type: AWS::SageMaker::Model
  Properties:
    ExecutionRoleArn: !GetAtt SageMakerModelRole.Arn
    PrimaryContainer:
      Image: 763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-inference:1.7-transformers4.6-cpu-py36-ubuntu18.04
      Environment:
        HF_MODEL_ID: facebook/bart-large-mnli
        HF_TASK: zero-shot-classification
        SAGEMAKER_CONTAINER_LOG_LEVEL: 20
        SAGEMAKER_REGION: us-east-1

或者,如果您不使用 AWS CloudFormation,则可以使用几行代码实现相同的结果。 参考 将模型部署到 Amazon SageMaker 以获得更多细节。

要对内容进行分类,您只需调用 SageMaker 端点。 以下是 Python 代码片段:

endpoint_name = os.environ['ENDPOINT_NAME']
labels = os.environ['ENDPOINT_NAME']

data = {
    'inputs': tweet,
    'parameters': {
        'candidate_labels': labels,
        'multi_class': False
    }
}

response = sagemaker.invoke_endpoint(EndpointName=endpoint_name,
                                     ContentType='application/json',
                                     Body=json.dumps(data))

response_body = json.loads(response['Body'].read())

注意 的价值 多类 参数表示每个类的所有概率之和将加起来为 1。

解决方案改进

您可以通过存储推文和模型结果来增强此处提出的解决方案。 亚马逊简单存储服务 (Amazon S3),一种对象存储服务,是一种选择。 您可以将推文、结果和其他元数据作为 JSON 对象写入 S3 存储桶。 然后,您可以使用对该内容执行临时查询 亚马逊雅典娜,一种交互式查询服务,可以使用标准 SQL 轻松分析 Amazon S3 中的数据。

您不仅可以使用历史记录来提取见解,还可以训练自定义模型。 您可以使用 Hugging Face 支持通过 SageMaker 使用您自己的数据训练模型。 了解更多 在 Amazon SageMaker 上运行训练.

实际用例

客户已经在 SageMaker 上试用 Hugging Face 模型。 塞古罗斯玻利瓦尔一家成立于 1939 年的哥伦比亚金融和保险公司就是一个例子。

“我们为客户和保险经纪人开发了威胁通知解决方案。 我们使用 Hugging Face 预训练的 NLP 模型对来自相关帐户的推文进行分类,以近乎实时地为我们的客户生成通知,作为帮助减轻索赔的预防策略。 发生索赔是因为客户不知道他们所面临的风险水平。 该解决方案使我们能够提高客户的意识,将风险转化为在具体情况下可衡量的东西。”

– Seguros Bolívar 研究与知识主管 Julian Rico。

Seguros Bolívar 与 AWS 合作重新构建他们的解决方案; 它现在依赖于 SageMaker,与本文中描述的类似。

结论

当您训练自定义文本分类器的数据很少或无法训练自定义 NLP 模型时,零样本分类是理想的选择。 对于专门的用例,当文本基于特定的单词或术语时,最好使用基于自定义训练集的监督分类模型。

在这篇文章中,我们向您展示了如何在 AWS 上使用 Hugging Face 零样本模型构建新闻分类器。 我们使用 Twitter 作为我们的新闻来源,但您可以选择更适合您特定需求的新闻来源。 此外,您可以轻松更改模型,只需在 CloudFormation 模板中指定您选择的模型。

有关源代码,请参阅 GitHub存储库 它包括完整的设置说明。 您可以自己克隆、更改、部署和运行它。 您还可以将其用作起点并自定义类别和警报逻辑,或为类似的用例构建另一个解决方案。

请尝试一下,让我们知道您的想法。 与往常一样,我们期待您的反馈。 您可以将其发送给您通常的AWS支持联系人,或者在 适用于SageMaker的AWS论坛.


关于作者

使用 Twitter、Amazon SageMaker 和 Hugging Face PlatoBlockchain Data Intelligence 构建基于新闻的实时警报系统。 垂直搜索。 哎。大卫·拉雷多 是拉丁美洲 AWS Envision Engineering 的原型架构师,帮助开发了多个机器学习原型。 此前,他曾担任机器学习工程师,从事机器学习工作超过 5 年。 他感兴趣的领域是 NLP、时间序列和端到端 ML。

使用 Twitter、Amazon SageMaker 和 Hugging Face PlatoBlockchain Data Intelligence 构建基于新闻的实时警报系统。 垂直搜索。 哎。拉斐尔·韦内克 是位于巴西的 AWS Envision Engineering 的高级原型设计架构师。 此前,他曾在 Amazon.com.br 和 Amazon RDS Performance Insights 担任软件开发工程师。

使用 Twitter、Amazon SageMaker 和 Hugging Face PlatoBlockchain Data Intelligence 构建基于新闻的实时警报系统。 垂直搜索。 哎。维克拉姆·埃兰戈 是位于美国弗吉尼亚州的 Amazon Web Services 的 AI/ML 专家解决方案架构师。 Vikram 以设计和思想领导力帮助金融和保险行业客户大规模构建和部署机器学习应用程序。 他目前专注于自然语言处理、负责任的 AI、推理优化和在整个企业中扩展 ML。 在业余时间,他喜欢和家人一起旅行、远足、烹饪和露营。

时间戳记:

更多来自 AWS机器学习