通过 Azure 流分析和机器学习工作室(经典)进行情绪分析

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源(工作区和 Web 服务计划)。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)试验和 Web 服务。

ML 工作室(经典)文档即将停用,将来可能不会更新。

本文介绍如何设置简单的 Azure 流分析作业,该作业使用机器学习工作室(经典)进行情绪分析。 使用 Cortana Intelligence Gallery 中的工作室(经典)情绪分析模型来分析流式处理文本数据并确定情绪分数。

可以将从本文学习的知识应用于诸如下列方案:

  • 在流式处理 Twitter 数据时分析实时情绪。
  • 分析客户与支持人员之间的聊天记录。
  • 评估论坛、博客和视频上的评论。
  • 许多其他实时的预测性评分方案。

你创建的流分析作业将情绪分析模型用作用户定义的函数 (UDF),用于处理来自 blob 存储的示例文本数据。 输出(情绪分析的结果)写入到同一 blob 存储中的另一个 CSV 文件中。

先决条件

在开始之前,请确保具有以下各项:

  • 一个有效的 Azure 订阅。

  • 其中包含某些 Twitter 数据的 CSV 文件。 可以从 GitHub 下载示例文件,也可以创建自己的文件。 在实际方案中,将直接从 Twitter 数据流获取数据。

创建一个存储容器并上传 CSV 输入文件

在此步骤中,将 CSV 文件上传到存储容器。

  1. 在 Azure 门户中,选择“创建资源”>“存储”>“存储帐户” 。

  2. 使用以下详细信息填写“基础”选项卡,并为其余字段保留默认值:

    字段
    订阅 选择订阅。
    资源组 选择资源组。
    存储帐户名称 为存储帐户输入名称。 该名称在 Azure 中必须唯一。
    位置 选择一个位置。 所有资源应使用相同的位置。
    帐户类型 BlobStorage

    provide storage account details

  3. 选择“查看 + 创建” 。 然后选择“创建”,创建存储帐户。

  4. 部署完成后,导航到存储帐户。 在“Blob 服务”下,选择“容器”。 然后选择“+ 容器”以创建新容器。

    Create blob storage container for input

  5. 为容器提供名称,并验证“公共访问级别”是否设置为“专用” 。 完成后,选择“创建”。

    specify blob container details

  6. 导航到新创建的容器,然后选择“上传”。 上传之前下载的 sampleinput.csv 文件。

    'Upload' button for a container

现在,示例数据已在 blob 中,可以启用 Cortana Intelligence 库中的情绪分析模型了。

  1. 转到 Cortana Intelligence 库中的预测情绪分析模型页面。

  2. 选择“在工作室(经典)中打开”。

    Stream Analytics Machine Learning Studio (classic), open Studio (classic)

  3. 登录并转到工作区。 选择一个位置。

  4. 选择页面底部的“运行”。 进程将运行,这将花费大约一分钟。

    Run experiment in Studio (classic)

  5. 在进程成功运行后,在页面底部选择“部署 Web 服务”。

    Deploy experiment in Studio (classic) as a web service

  6. 若要验证情绪分析模型是否可供使用,请选择“测试”按钮。 提供文本输入,例如“I love Microsoft”。

    Test experiment in Studio (classic)

    如果测试正常运行,将显示类似于以下示例的结果:

    Test results in Studio (classic)

  7. 在“应用”列中,选择“Excel 2010 或更低版本的工作簿”链接以下载 Excel 工作簿 。 该工作簿包含稍后设置流分析作业时所需的 API 密钥和 URL。

    Stream Analytics Machine Learning Studio (classic), quick glance

创建使用工作室(经典)模型的流分析作业

现在可以创建一个从 blob 存储中的 CSV 文件读取示例推文的流分析作业。

创建作业

转到 Azure 门户并创建流分析作业。 如果你不熟悉此过程,请参阅使用 Azure 门户创建流分析作业

配置作业输入

该作业从之前上传到 blob 存储的 CSV 文件获取其输入。

  1. 导航到流分析作业。 在“作业拓扑”下,选择“输入”选项 。 选择“添加流输入”>“Blob 存储” 。

  2. 使用以下值填写“Blob 存储”详细信息:

    字段
    输入别名 为输入命名。 编写查询时,请记住此别名。
    订阅 选择订阅。
    存储帐户 选择在上一步中创建的存储帐户。
    容器 选择在上一步中创建的容器。
    事件序列化格式 CSV
  3. 选择“保存”。

配置作业输出

作业将结果发送到它从中获取输入的同一 blob 存储。

  1. 导航到流分析作业。 在“作业拓扑”下,选择“输出”选项 。 选择“添加”>“Blob 存储” 。

  2. 使用以下值填写“Blob 存储”表单:

    字段
    输入别名 为输入命名。 编写查询时,请记住此别名。
    订阅 选择订阅。
    存储帐户 选择在上一步中创建的存储帐户。
    容器 选择在上一步中创建的容器。
    事件序列化格式 CSV
  3. 选择“保存”。

添加工作室(经典)函数

之前,已将工作室(经典)模型发布到 Web 服务。 在此方案中,当流分析作业运行时,它将来自输入的每个示例推文发送到用于情绪分析的 Web 服务。 工作室(经典)Web 服务返回一种情绪(positiveneutralnegative)和推文为正面内容的概率。

在本部分中,将在流分析作业中定义一个函数。 可以调用该函数来将推文发送到 Web 服务并返回响应。

  1. 请确保具有之前在 Excel 工作簿中下载的 Web 服务 URL 和 API 密钥。

  2. 导航到流分析作业。 然后选择“函数”>“+ 添加”>“Azure ML 工作室”

  3. 使用以下值填写“Azure 机器学习函数”表单:

    字段
    函数别名 使用名称 sentiment 并选择“手动提供 Azure 机器学习函数设置”,该选项会提供输入 URL 和密钥的选项。
    URL 粘贴 Web 服务 URL。
    Key 粘贴 API 密钥。
  4. 选择“保存”。

创建查询来转换数据

流分析使用声明性的、基于 SQL 的查询来检查输入,并对其进行处理。 本部分将创建一个查询,该查询先读取输入中的每条推文,然后调用工作室(经典)函数来执行情绪分析。 然后,该查询将结果发送到你定义的输出(blob 存储)。

  1. 返回到流分析作业概述。

  2. 在“作业拓扑”下选择“查询”。

  3. 输入以下查询:

    WITH sentiment AS (  
    SELECT text, sentiment1(text) as result 
    FROM <input>  
    )  
    
    SELECT text, result.[Score]  
    INTO <output>
    FROM sentiment  
    

    该查询调用前面创建的函数 (sentiment),以对输入中的每条推文执行情绪分析。

  4. 选择“保存”以保存查询。

启动流分析作业并检查输出

现在可以启动流分析作业。

启动作业

  1. 返回到流分析作业概述。

  2. 在页面顶部选择“保存”。

  3. 在“启动作业”中,选择“自定义”,然后选择将 CSV 文件上传到 blob 存储之前的某一天 。 完成后,选择“启动”

检查输出

  1. 让作业运行几分钟,直到在“监视”框中看到活动。

  2. 如果你有通常用来观察 blob 存储内容的工具,可使用该工具来观察容器。 另外,也可以在 Azure 门户中执行以下步骤:

    1. 在 Azure 门户中,找到存储帐户,然后在该帐户中找到容器。 可以在该容器中看到两个文件:包含示例推文的文件和由流分析作业生成的 CSV 文件。
    2. 右键单击生成的文件并选择“下载”。
  3. 打开生成的 CSV 文件。 可以看到类似以下示例的内容:

    Stream Analytics Machine Learning Studio (classic), CSV view

查看指标

还可以查看与工作室(经典)函数相关的指标。 作业概述中的“监视”框中会显示以下与函数相关的指标:

  • “函数请求数”表示发送到工作室(经典)Web 服务的请求数。
  • 函数事件指示请求中的事件数。 默认情况下,发送到工作室(经典)Web 服务的每个请求最多包含 1000 个事件。

后续步骤